⚓
Liman Eklenti Geliştirme
  • Hoşgeldiniz!
  • Başlangıç
    • Geliştirme Ortamı Kurulumu
    • Yeni Eklenti Oluşturma
  • Genel Bilgiler
    • Dosya ve Dizin Yapısı
    • Kontrolcüler
    • Rotalar
    • Veritabanı Mantığı
    • Bileşen Mantığı
    • Paket Bağımlılığı Eklemek
    • PHP Yardımcı Fonksiyonları
    • JS Yardımcı Fonksiyonları
  • Geliştirme
    • Sunucuda Komut Çalıştırmak
    • Sunucuda Betik Çalıştırmak
    • Dosya Yükleme, İndirme
    • Protokol Bağlantıları (LDAP, SMB)
  • Arayüz Elemanları
    • Tablo
    • Modal
    • Dosya Yükleme
    • Görev (Task)
  • İleri Seviye
    • Toolkit Kullanımı
    • Yerelleştirme
    • Composer
    • DB Kütüphanesi
Powered by GitBook
On this page
  • Standart Komut Çalıştırmak ve Çıktı Almak
  • Toolkiti çağırmak
  • Komut çağırmak
  • Sudo olarak komut çağırmak
  • Dış requestler ve escaping kullanımı
  • Escaping kullanımı
  • Dış requestler
  • Fonksiyon Kullanım Parametreleri

Was this helpful?

Export as PDF
  1. Geliştirme

Sunucuda Komut Çalıştırmak

Eklentinizi eklediğiniz sunucu üzerinde nasıl komut çalıştırır ve çıktılarını nasıl alırsınız detaylıca bahsedeceğiz.

PreviousJS Yardımcı FonksiyonlarıNextSunucuda Betik Çalıştırmak

Last updated 3 years ago

Was this helpful?

Standart Komut Çalıştırmak ve Çıktı Almak

Sistem üzerinde komut çalıştırabilmek için içerisinden Command classını kullanmaktayız. Limanda en çok kullanılan şey olduğu için ayrı bir başlıkta anlatma gereği duyduk. Gelin şimdi nasıl çalıştırırız bakalım.

Toolkiti çağırmak

use Liman\Toolkit\Shell\Command;

Controller dosyamızı açtığımızda namespace satırının hemen altına bu komutu ekliyoruz. Bu sayede dosyamızda Liman Toolkitin Command classını kullanabilir hale geleceğiz.

Komut çağırmak

$command = Command::run("hostname");

Yukarıdaki kodu çalıştırdığımızda bize sistem üzerinde hostnamekomutunu çalıştıracaktır. $command değişkenini respond yardımcı fonksiyonumuz ile kullanarak döndürdüğümüzde hostname bilgisini problemsiz şekilde elde edebiliriz. kısmındaki eklenti şablonunda bu kullanımların örneği mevcuttur.

Sudo olarak komut çağırmak

Aslında yukarıdaki kullanımın benzerini gerçekleştireceğiz. Sadece run komutu yerine runSudo şeklinde değiştirdiğimizde yetkili kullanıcı kullanılarak çalıştırılacaktır.

$command = Command::runSudo("cat /etc/network/interfaces");

Dış requestler ve escaping kullanımı

Command classı üzerinde güvenlik için dış inputlara escaping kullanımı mevcuttur. Aynı zamanda validation yardımcı fonksiyonu da bulunduğundan dış komutlarda ister regexp, ister tür, isterseniz de uzunluk kontrolü yapabilirsiniz. Birlikte dış requestlerin kullanıldığı bir senaryoyu inceleyelim.

Command::runSudo("touch /home/liman/@{:filename}", [
    "filename" => request("filename")
]);

Escaping kullanımı

Yukarıdaki runSudo fonksiyonunun ilk argümanında göreceğimiz üzere @{:filename} tarzı bir kullanım mevcuttur. Bu kullanım escaping işlemi gerçekleştirmektedir. Escaping işleminin önem sebebi güvenliktir. Dışarıdan düşük yetkili bir kullanıcı sistemi yönetirken bu boşluğa ; rm -rf * şeklinde bir girdi gönderirse tüm klasör içeriği silinecektir. Burada escaping işlemi ile gönderim sağlarsak ; işareti işlevini kaybedecektir ve sistemimiz daha güvenli bir şekilde kullanıcı girdilerine açık hale gelecektir.

run ve runSudo fonksiyonları normalde tek argümana ihtiyaç duymaktadır ancak escaping yapıldığında ikinci argüman olarak bir array gönderimi de yapmalıyız.

Escaping yapabilmek için @{:degiskenAdi} şeklinde bir kullanım yapmalıyız. Burada degiskenAdi kısmı göndereceğiniz parametrelerin ismine göre değişmeli, ikinci argüman olan arrayinizde bu isimleri key olarak kullanmalısınız.

Dış requestler

Dış requestlerden girdi alabilmemiz için ilk önce escaping yapmamız gerekiyordu. Bu adımı gerçekleştirdikten sonra ikinci argüman olarak kullanılan arrayimizde gönderdiğimiz verinin ismini request() PHP yardımcı fonksiyonu ile alabiliriz. Aldıktan sonra yukarıdaki kod bloğunda görülebileceği üzere key olarak escape edilen değişken adını, değerine ise request fonksiyonumuzdan aldığımız değeri göndermekteyiz.

Fonksiyon Kullanım Parametreleri

Parametre

Açıklama

Veri Tipi

$command

Karşı sunucuda çalıştırılması gereken komut.

String

$variables

Eğer $command parametresi escape edilen kısımlar barındırıyorsa gönderilmesi gereken liste. (Opsiyonel)

Array

Bu değerleri gönderebilmek için ise sayfamızda bulunan fonksiyonunun detaylarını inceleyip, siz de kendi sayfanızdan request gönderimi yapabilirsiniz.

PHP Yardımcı Fonksiyonları
JS Yardımcı Fonksiyonları
Liman Toolkit
JS Yardımcı Fonksiyonları
Eklenti şablonları
OOP Training
request