-
-
Save uablacklist/b0e73deb75f2a1c43f035c59e5401e8c to your computer and use it in GitHub Desktop.
:local apiPrefix "https://uablacklist.net/subnets_mikrotik_" | |
:local tempFile "uablacklist.txt" | |
:local listName "uablacklist" | |
/log info "removing existing '$listName'..." | |
:put "removing existing '$listName'..." | |
/ip firewall address-list remove [/ip firewall address-list find list=$listName] | |
# mikrotik can't load >4KB file inside a variable, so backend contains file pieces which we download and parse one by one | |
:local i 0 | |
:local isEnd false | |
:do { | |
:local apiPath "$apiPrefix$i.txt" | |
/log info "fetching UA blacklist registry piece ($apiPath)..." | |
:put "fetching UA blacklist registry piece ($apiPath)..." | |
:local contentLen 0 | |
:local content "" | |
:do { | |
/tool fetch url=$apiPath dst-path=$tempFile | |
:set content [/file get [/file find name=$tempFile] contents] | |
:set contentLen [:len $content] | |
} on-error={ | |
/log info "no more pieces"; | |
:put "no more pieces" | |
:set isEnd true | |
} | |
:local lineEnd 0 | |
:local line "" | |
:local lastEnd 0 | |
:local company "" | |
:while ($lastEnd < $contentLen) do { | |
:set lineEnd [:find $content "\n" $lastEnd ] | |
:set line [:pick $content $lastEnd $lineEnd] | |
:set lastEnd ($lineEnd+1) | |
:local entry [:pick $line 0 ($lineEnd-1)] | |
:if ([:pick $line 0 1] != "#") do={ | |
:if ([:len $entry ] > 0) do={ | |
/log info "add '$entry' subnet of '$company' to list '$listName'..."; | |
:put "add '$entry' subnet of '$company' to list '$listName'..."; | |
:do { | |
/ip firewall address-list add list=$listName address=$entry comment=$company | |
} on-error={ | |
/log info "failed to add '$entry' subnet of '$company' to list '$listName', probably, it's duplication error."; | |
:put "failed to add '$entry' subnet of '$company' to list '$listName', probably, it's duplication error." | |
} | |
} | |
} else={ | |
:set company [:pick $line 2 ($lineEnd) ] | |
} | |
} | |
:set i (i+1) | |
} while (!$isEnd) |
@A-I-Demidov проверил оба скрипта:
первый скрипт, после запуска список не обновляется:
fetching UA blacklist registry piece (https://uablacklist.net/subnets_mikrotik_0.txt)...
removing existing 'uablacklist'...
started to loading
no more pieces
второй скрипт:
Starting import of address-list: uablacklist
я подозреваю что /tool fetch
выпадает с таймаутом, хотя открыть врчную адрес https://uablacklist.net/subnets.txt
я могу
Скрипт автора я уже не использую, хотя работать он должен.
В моей версии скрипта в логи ничего не пишется, он отрабатывает, практически моментально создавая address list в firewall.
Проверьте на всякий случай, а есть ли от вас вообще возможность его скачать, так как я видел где-то обсуждения, что сам https://uablacklist.net может блокировать провайдер и тогда надо скачивание пускать сразу через используемый вами VPN.
Как вариант могу предложить не использовать скрипт, а использовать BGP с помощью ребят с https://antifilter.network
У них основное предназначение это обход блокировок в РФ, но и наш лист они тоже подтянули, можно пользоваться или им или вообще пускать весь российский сегмент через VPN, с оглядкой что никто не балуется в сети не балуется с торрентами, а то можно забить канал.
P.S. Свой скрипт именно в этом варианте проверил, все работает.
P.P.S. Проверьте права у скрипта, все-таки он должен иметь возможность читать и записывать переменные.
Что случилоась с uablacklist.net не работает сайт, соответственно и скрипт...
Что происходит с uablacklist.net не работает сайт, соответственно и скрипт...
Сайт работает.
Возможно, у вашего провайдера он заблокирован, проверьте как разолвится его DNS имя и попробуйте перенаправить роутинг к нему сразу в VPN.
Но вообще рекомендую не список, а перейти на BGP https://antifilter.network/bgp
В общем сам допилил.
Скрипт не задействует хранилище микротика, чем продлевает его жизнь.
Работает практически моментально по сравнению с оригиналом.
Скрипт теперь универсальный и кушает практически любые листы.
Изменен немного принцип действия.
Теперь лист создается с таймаутом в сутки, а я советую запускать его раз в 6-12 часов для обновления таймаутов и добавления новых записей.
Сам код: