[PHP] Mikrotik Config Parser

Обсуждение общих вопросов, не касающихся настройки оборудования и ОС
Аватара пользователя
Dragon_Knight
Сообщения: 1724
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

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

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

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


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Круть )))

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


Есть интересная задача и бюджет? http://mikrotik.site
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

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


Есть интересная задача и бюджет? http://mikrotik.site
Аватара пользователя
Dragon_Knight
Сообщения: 1724
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

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


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


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

еще момент увидел. Если в конфиге присутствует скрипт то скрипт тяжело читается ибо он идет строчкой


Есть интересная задача и бюджет? http://mikrotik.site
Аватара пользователя
Dragon_Knight
Сообщения: 1724
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

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

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


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

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

/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="


Есть интересная задача и бюджет? http://mikrotik.site
Аватара пользователя
Dragon_Knight
Сообщения: 1724
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

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

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


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
Аватара пользователя
Dragon_Knight
Сообщения: 1724
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

Народ, проблема. Кто-то не добрый нашёл ссылку и сейчас меня неслабо ДДоСят...
...
Почему правила не работают?:
/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 порт.


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

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


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить