Формирования списка IP адрессов для Mikrotik

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Формирования списка IP адрессов для Mikrotik

Сообщение ya »

Формирования списка IP адрессов для Mikrotik

Код: Выделить всё

<?php
// Антизапрет Роскомнадзора
// Формирования списка IP адрессов для Mikrotik
// v 2.0 25.08.2016

// Данные
$ban_list_1 = 'http://api.antizapret.info/group.php';
$ban_list_2 = 'http://reestr.rublacklist.net/api/ips';

// Загрузка списка зрещённых сайтов
$open_ban_list_1 = file_get_contents($ban_list_1);
$open_ban_list_2 = file_get_contents($ban_list_2);

// Обработка списка antizapret.info
$data_ban_list_1 = str_replace("\n", ',', $open_ban_list_1);
$data_ban_list_1 = str_replace(',', '|', $data_ban_list_1);
$data_ban_list_array_1 = explode('|', $data_ban_list_1);

// Обработка списка rublacklist.net
$data_ban_list_2 = str_replace('"', '', $open_ban_list_2);
$data_ban_list_array_2 = explode(';', $data_ban_list_2);

// Потготовка полного списка IP адресов
$array_list = array_merge($data_ban_list_array_1, $data_ban_list_array_2);
$array_list_unique = array_unique($array_list);
$array_list_diff = array_diff ($array_list, $array_list_unique);
$array_list = array_merge($array_list_unique, $array_list_diff);
sort($array_list);

// Формирование скрипта для загрузки в Mikrotik
header('Content-Type: text/plain');
echo '/ip firewall address-list' . "\n";
for($i = 5; $i < count($array_list); $i++):
	if ($data_ban_list_array[$i] != "") echo "add address=" . $array_list[$i] . " list=list_roscomnadzor" . "\n";
endfor;

/* Скрипт для Mikrotik system -> script

## AntiZapret - Script for anti ROSCOMNADZORa
## @version 0.2 beta 25.08.2016
##
## Setup this Policy for script: [X] Read [X] Write [X] Policy [X] Test

:local hostScriptUrl "http://vash.domen/antizapret.php";
:local scriptName "anti_zapret.script";
:local logPrefix "[AZ]";

do {
:log info "Running script $logPrefix";
 /tool fetch mode=http url=$hostScriptUrl dst-path=("./".$scriptName);
 :if ([:len [/file find name=$scriptName]] > 0) do={
   :delay 1s;
     /ip firewall address-list remove [/ip firewall address-list find];
     /import file-name=$scriptName;
     /file remove $scriptName;
     :log info "Script $logPrefix execution is completed";
 } else={
   :log warning "$logPrefix download the script FAILED, script stopped";
 }
} on-error={
 :log warning "$logPrefix AD block script download FAILED";
};

*/

/* Настройка VPN для работы скрипта, всё что находится в |надо полностью заменить на ваше| вместе с скобками

/interface pppoe-client set |ваше PPPoE соединение| use-peer-dns=no
/ip dns set allow-remote-requests=yes servers=8.8.8.8,8.8.4.4
/interface l2tp-client add connect-to=|IP VPN сервера| disabled=no mrru=1600 name=|имя VPN соединнение| password=|VPN пароль| user=|VPN логин|
/ip firewall nat add action=masquerade chain=srcnat out-interface=|имя VPN соединнение|
/ip route add distance=1 gateway="|имя VPN соединнение|" routing-mark=mangle_list_roscomnadzor
/ip firewall mangle add action=mark-routing chain=prerouting dst-address-list=list_roscomnadzor in-interface=|ваш LAN| new-routing-mark=mangle_list_roscomnadzor
/ip firewall address-list add address=195.82.146.214 list=list_roscomnadzor
/ip firewall address-list add address=104.24.106.53 list=list_roscomnadzor
/ip firewall address-list add address=104.24.107.53 list=list_roscomnadzor

*/
?>
Ответить