-
-
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 часов для обновления таймаутов и добавления новых записей.
Сам код: