Страница 1 из 2

[PHP] Mikrotik Config Parser

Добавлено: 26 апр 2014, 03:00
Dragon_Knight
Часто сижу на форуме и часто приходиться смотреть на результат команды 'export', но читабельность такого кода крайне мала...
Во общем решил написать парсер конфига с приведением его в более читаемый вид и подкраска кода, в стиле консоли MikroTik.

Во общем что говорить, сами смотрите: http://globalzone.su/mikrotik/ PS: Ссылка временная.

Готов выслушать любые предложения и пожелания :-):

Re: [PHP] Mikrotik Config Parser

Добавлено: 26 апр 2014, 04:28
vqd
Круть )))

Попрошу администрацию разместить это дело, весьма удобно

Re: [PHP] Mikrotik Config Parser

Добавлено: 26 апр 2014, 04:33
vqd
Еще здорово будет правила которые отключены (disable=yes) серым подсветить и опцию добавить которая эти строчки банально скрывает. А то периодически народ выкладывает конфиги с кучей мусора

Re: [PHP] Mikrotik Config Parser

Добавлено: 26 апр 2014, 04:44
Dragon_Knight
В реализации этого чуда пришлось вспомнить много топоров, т.к. ни разу не работал с таким видом обработки текста :-):
Что касается отключённого кода, я подумаю как это реализовать.


И пока писал, заметил баз экспорта настроек... Может это и не баг, а фича, но если честно, очень противная и ни разу не полезная...
Во общем повторить её просто. Заходим в настройки, например настройки профиля WiFi. Сначала указываем WPA2-PSK, заполняем пароль и сохраняем профиль. Потом редактируем и выключаем шифрование, сохраняем и делаем экспорт. Получаем кашу, в виде отключенного шифрования, но указанного WPA2 пароля и выбранного типа шифрования...

Re: [PHP] Mikrotik Config Parser

Добавлено: 26 апр 2014, 05:05
vqd
еще момент увидел. Если в конфиге присутствует скрипт то скрипт тяжело читается ибо он идет строчкой

Re: [PHP] Mikrotik Config Parser

Добавлено: 26 апр 2014, 06:19
Dragon_Knight
add: Добавил прозрачность отключённых правил и возможность отключить эту прозрачность. Примечательно то, что даже у отключённых правилах сохраняется раскраска.

vqd, да, со скриптами проблема, и самое страшное то, что я даже не представляю как её решить, т.к. конфиг имеет универсальный формат, а вот код скрипта нет...

Re: [PHP] Mikrotik Config Parser

Добавлено: 26 апр 2014, 06:25
vqd

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

/system script
add name=script1 policy=\
    ftp,reboot,read,write,policy,test,winbox,sniff,sensitive,api source="if ([/i\
    nterface lte find] != \"\")  do={\r\
    \nif ([/interface lte get [find ] mac-address] = \"32:AB:68:F7:01:07\") do={\
    \r\
    \n/system routerboard usb set type=USB-type-A\r\
    \n} \r\
    \n} \r\
    \n"
/tool mac


Можно попробовать по /system script и далее по source="

Re: [PHP] Mikrotik Config Parser

Добавлено: 26 апр 2014, 06:37
Dragon_Knight
Вся проблема в том, что в самом начале идёт сбор всех строк в одну (т.е. происходит вырезка '\\n' и ' '). После этого получаем строки конфигурации в одну линию, без слешей.
А вот дальше начинается драконья магия :mi_ga_et:
Каждая строчка, если у неё нету слеша в начале подлежит сначала делению на массив по пробелу а потом по знаку равенства (таким образом мы добираемся до структуры ключ=значение), после чего добавляются div и span и всё собирается обратно в длинную строку. И так с каждой строчкой конфигурации.

Если хотите могу показать код, посмеётесь на досуге ;;-)))

Re: [PHP] Mikrotik Config Parser

Добавлено: 29 апр 2014, 10:37
Dragon_Knight
Народ, проблема. Кто-то не добрый нашёл ссылку и сейчас меня неслабо ДДоСят...
...
Почему правила не работают?:
/ip firewall filter
add action=jump chain=forward dst-address=10.0.0.10 dst-limit=32,32,src-address dst-port=80 jump-target=ddos protocol=tcp
add action=drop chain=ddos dst-address=10.0.0.10 dst-port=80 protocol=tcp
По логике должен блокироваться пакет, если от данного адреса было уже более 32 пакетов в секунду, хотя на самом деле он блокирует вообще всё что приходит на 80 порт.

Re: [PHP] Mikrotik Config Parser

Добавлено: 29 апр 2014, 13:28
podarok66
У тебя там php-странички?
Хочешь, разместим для пробы у меня на сайте. У меня простаивает один адресок из бесплатных, можно временно загнать, пусть его корежат пока. Хостинг сам платный, должен выдержать. Если будут просаживать, будем думать...