Advertisement
dizballanze

make city nginx

Oct 21st, 2011
647
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.71 KB | None | 0 0
  1. <?php
  2.     $file_to_update = './geo-city.conf';
  3.     set_time_limit(10000);
  4.    
  5.     // Ищем идентификаторы городов
  6.     $cities = file_get_contents('cities.txt');
  7.     $cities = mb_convert_encoding($cities, 'utf8', 'cp1251');
  8.     $cities = explode("\n", $cities);
  9.     $moscow = $piter = false;
  10.     foreach ($cities as $city){
  11.         $info = explode("\t", $city);
  12.         if ($info[1] == 'Москва'){
  13.             $moscow = $info[0];
  14.             if ($piter)
  15.                 break;
  16.         }
  17.         if ($info[1] == 'Санкт-Петербург'){
  18.             $piter = $info[0];
  19.             if ($moscow)
  20.                 break;
  21.         }
  22.     }
  23.    
  24.     // Ищем все диапазоны адресов
  25.     $db = file_get_contents('cidr_optim.txt');
  26.     $db = mb_convert_encoding($db, 'utf8', 'cp1251');
  27.     $db = explode("\n", $db);
  28.     $piter_addr = $moscow_addr = array();
  29.     foreach ($db as $key=>$row){
  30.         $rowset = explode("\t", $row);
  31.         if (!isset ($rowset[4]))
  32.             continue;
  33.         if ($rowset[4] == $moscow)
  34.             $moscow_addr[] = str_replace (' ', '', $rowset[2]);
  35.         elseif ($rowset[4] == $piter)
  36.             $piter_addr[] = str_replace (' ', '', $rowset[2]);
  37.     }
  38.     $config = '';
  39.     // Формируем текст конфигурационного файла
  40.     foreach ($moscow_addr as $addr){
  41.         $config .= $addr . "\t" . 'MSK;' . "\n";
  42.     }
  43.     foreach ($piter_addr as $addr){
  44.         $config .= $addr . "\t" . 'SPB;' . "\n";
  45.     }
  46.    
  47.     // Записываем изменения и перезапускаем nginx
  48.     if (strlen($file_to_update)){
  49.         file_put_contents($file_to_update, $config);
  50.     }
  51. ?>
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement