İyi Günler Arkadaşlar,
Bugün yaşadığım bir problemi sizlerle paylaşmak istiyorum. Çok araştırdım ve pek Türkçe kaynağın da olmadığını görünce bu konunun cevabını sizle paylaşayım istedim.
Şimdi bir entegrasyon sistemi düşünün. Mesela muhasebe programınız ile siteniz arasında stok entegrasyonu yapacaksınız. stokentegre.php sizin scriptiniz olsun. Bu scripte sadece belli IP aralıklarının ulaşmasını isteyebilirsiniz.
1 2 3 4 5 6 7 |
if (in_array($_SERVER['REMOTE_ADDR'],$allowedIPList)){ //giriş yetkisi ver. } else { //Yasakla } |
Script bu kadar basit. URL olarak yazın tıklayın direk olarak gireceksiniz. Dışardan giriş engelli. Peki size sorayım. SSH tarafı ne olacak ? Sonuçta Cron Job kısmını cpanel veya komut satırı ile tanımlayacağız.
İşte komut satırına php stokentegre.php yazdığımızda bize şöyle bir hata gelecek Unknown Index REMOTE_ADDR. Bu da doğal olarak sizin scriptinizin hata vermesine sebebiyet veriyor. Bu yüzden cron job yapamıyorsunuz. Hatta bunun için bir ara httpdocs değil de bir üst dizine dosyayı koy ve çalıştır yöntemini bile uyguladım.. Çünkü engel kodunu kaldıracaktım. Dışarıdan erişime kapatmak için bir üst dizine yüklemek gerekiyordu.
Peki şimdi ne yapacağız. Evet httpdocs içine IP kısıtlaması olacak şekilde kod yazmak mümkün. Şöyle ki…
1 2 3 4 5 6 7 8 9 |
public function is_allowedIP(){ if(php_sapi_name() === 'cli') { return TRUE; // You're running locally from the CLI } else { // You're running remotely, check against list of authorized ip addresses. $allowedIP = ('165.654.32.45','165.674.92.45') return (in_array($_SERVER['REMOTE_ADDR'],$allowedIP)) ? TRUE : FALSE; } |
Burada kilit fonksiyon php_sapi_name fonksiyonu. Bu fonksiyon bize HTTP sunucusu ile PHP arasındaki arayüzün türünü döndürür. Tamamı olmasa da olası değerler şunlardır: aolserver, apache, apache2filter, apache2handler, caudium, cgi (PHP 5.3’ten beri), cgi –fcgi, cli, continuity, embed, isapi, litespeed, milter, nsapi, phttpd,pi3web, roxen, thttpd, tux ve webjames.
İşte biz cli var mı diye sorgulatıyoruz. Bu bizim komut satırı vasıtası ile çalışıp çalışmadığımızı gösteriyor. Eğer böyle bir durum varsa direk TRUE dönderip hiç giriş izni karıştırmıyoruz. Eğer cli ye eşit değilse bu sefer dışarıdan erişim olduğunu varsayıp IP kontrolü yapacak.
Bu işlemlerden sonra cronjob ayarınızı cpanel’den veya pleskten yapabilirsiniz. Sıkıntısız çalışacaktır.