Fortigate güvenlik cihazlarında v4.3.11 den önceki sürümlerde açılan türkçe isimli objeler, firmware versiyonu yükseltildiğinde sıkıntı olmakta. Cihaz belli bir firmware versiyonundan sonra UTF-8 desteğine geçtiğinden, eskiden açılan türkçe karakterleri bir şekilde değiştirmek gerek.
3-5 adet obje olduğunda manuel değişim yapılabilir ama obje sayısı fazla olan cihazlarda bunu elle yapmak hem zaman alıyor hem de can sıkıcı.
Bende oturup bunu PHP ile nasıl otomatik yapabilirim diye düşünürken bu kodlar hayat buldu.
Cihazdan export ettiğimiz config dosyası içerisinden adres bölümünü ayrı bir dosyaya aldım.
Dosyadaki adres “name” alanını alarak düzeltme yapan fonksiyona gönderip, bir liste oluşmasını sağladım.
Son olarak eski ve yeni isimleri değiştireceğim rename komutu ile cihaza yükleyeceğimiz import dosyasını oluşturdum.
<?php
set_time_limit(0); // uzun dosyalarda zaman aşımını engellemiş olduk.
function duzelts($tr1) {
$turkce=array("ş","Ş","ü","Ü","ö","Ö","ç","Ç","ı","I",'İ','ğ','Ğ');
$duzgun=array("s","s","u","u","o","o","c","c","i","i",'i','g','g');
$tr1=str_replace($turkce,$duzgun,$tr1);
$tr1=strtolower($tr1);
$tr1 = preg_replace("@[^a-z0-9\-__1üç0^ÜÇ]+@i","_",$tr1);
return $tr1;
} // düzeltme işlemini yapan fonksiyonumuz
function dosya_al($dosya) {
if($temp_dosya=fopen("$dosya","r")) {
$icerik=fread($temp_dosya,filesize($dosya));
fclose($temp_dosya);
}
return $icerik;
} // dosya içeriğini okuyup bize gönderen fonksiyonumuz.
// İşlem kodları
$d=dosya_al("fortinet_adres.txt"); //dosyayı oku
// dosya içerisindeki adresleri parse ediyoruz.
preg_match_all("#config firewall address(.*)end#ismU", $d, $objects);
$agrup=$objects[1][0];
// aldığımız her satırdaki edit ile başlayan bölümden adres name kısmını çekiyoruz.
preg_match_all("/edit \"(.*)\"/ismU", $agrup, $adresgrups);
$sonuc=$adresgrups[1];
$cikti="config firewall address\n";
for ($i=0;$i<sizeof($sonuc);$i++){
$s=duzelts($sonuc[$i]);
$cikti.="rename \"$sonuc[$i]\" to \"$s\"\n";
}
$cikti.="end";
echo($cikti); // ekrana yazdırıyoruz.
?>
fortinet_adres.txt dosyamızın içeriği
config firewall address
edit "all"
next
edit "tuncay baş"
set subnet 192.168.1.39 255.255.255.255
next
edit "fırat cümbüş"
set subnet 192.168.1.27 255.255.255.255
next
end
Programdan sonraki çıktımız:
config firewall address
rename "all" to "all"
rename "tuncay baş" to "tuncay_bas"
rename "fırat cümbüş" to "firat_cumbus"
end
3,149 total views, 1 views today