Page tree
Skip to end of metadata
Go to start of metadata

Доступно с версии EasyWRT 2.4.0

Шаблон скрипта custom доступен по ссылке: скачать

Шаблон скрипта my_update.sh доступен по ссылке: скачать


Что такое EasyCustom?


EasyCustom - сервис ручной кастомизации ПО EasyWRT, состоящий из архива с набором файлов, команд и скриптов.


Позволяет провести ручное изменение настроек EasyWRT без сборки прошивки, и записать измененные параметры в постоянную память маршрутизатора через загрузку собранного архива.

При загрузке EasyCustom, системные файлы будут заменены на аналогичные файлы из архива, а при сбросе роутера к заводским настройкам - настройки будут взяты из загруженного архива, что позволяет оставлять записанные настройки "заводскими".

Для базовой настройки доступен web-конфигуратор по ссылке https://data.nag.wiki/private/WiFi_Routers/Doc/easycustom.html

Структура EasyCustom


EasyCustom представляет собой архив .tar.gz, его cодержимое:

Обязательное:

  1. Каталоги - /etc/ezcustom

  2. Скрипт (текстовый файл без расширения) - custom

Необязательное (вносится при необходимости):

  1. Скрипт обновления архива EasyCustom my_update.sh

  2. Собственные shell-скрипты

  3. Файл ограничений элементов WEB-UI luci.acl

Команды для скрипта "custom"


Файл custom - linux shell скрипт, с помощью которого можно изменить базовую конфигурацию роутера и модифицировать логику выполнения скриптов (своих или штатных).

Для ознакомления с доступными параметрами, введите с cli роутера:

uci show

Для их применения нужно указывать полный путь до нужного параметра uci, например:

  • 'firewall' - конфигурационный файл
  • 'ssh' - секция конфига

Нижеперечисленные команды используются для внесения изменения в конфигурационные файлы, без необходимости ручного изменения файла, по аналогии с базовой логикой uci.

Файл custom должен быть создан в Unix-формате. В ОС Linux это выполняется по умолчанию.

После установки собранных настроек на роутер, стандартный сброс к заводским настройкам их не удалит. Если вы хотите изменить какие-либо настройки в конфигурации ezcustom, но в custom-скрипте не предусмотрели обновление архива с сервера, вы можете воспользоваться командой в cli:

firstboot -y && reboot

Команды для сборки скрипта custom не будут работать в cli и предназначены только для easycustom. Ниже описаны все доступные команды:

RELEASE_IS

Проверяет версию ПО. Можно использовать с оператором if

Пример использования
if RELEASE_IS "2.3.1"
then
CONFIG_SET network.lan.ipaddr='192.168.10.1'
fi

MODEL_IS

Проверяет имя модели. Можно использовать с оператором if

Пример использования
if MODEL_IS "SNR-CPE-ME2-Lite"
then
CONFIG_SET system.@system[0].hostname='ME2-Lite-Router'
fi

CONFIG_SET

Устанавливает значение в конфигурации uci

Пример использования
CONFIG_SET system.@system[0].hostname='ME2-Lite-Router'

CONFIG_GET

Получает значение из конфигурации uci

Пример использования
LOG_SIZE="$(CONFIG_GET system.@system[0].log_size)"

CONFIG_DELETE

Удаляет значение в конфигурации uci

Пример использования
CONFIG_DELETE system.@system[0].hostname

CONFIG_ADD

Создать анонимную секцию конфигурации uci

Пример использования
MY_RULE="$(CONFIG_ADD firewall rule)"
CONFIG_SET "firewall.${MY_RULE}.name=Allow-DHCP-Renew"
CONFIG_SET "firewall.${MY_RULE}.src=wan"

CONFIG_ADD_LIST

Добавляет значение в список конфигурации uci

Пример использования
CONFIG_ADD_LIST uhttpd.main.listen_http='127.0.0.1:80'

INSTALL_LOGO

Устанавливает логотип в систему

Пример использования
INSTALL_LOGO "logo.svg"

INSTALL_STYLES

Устанавливает файл css стилей в систему

Пример использования
INSTALL_STYLES "styles.css"

WIFI_SET_2GHZ

Задает параметры для конфига "/etc/wireles/mtXXXX..." Wi-Fi 2.4 ГГц

Пример использования
WIFI_SET_2GHZ "SSID1" "SSID-NAME-2GHz"

WIFI_SET_5GHZ

Задает параметры для конфига "/etc/wireles/mtXXXX..." Wi-Fi 5 ГГц в системе

Пример использования
WIFI_SET_ALL "SSID2" "SSID-NAME-5GHz"

WIFI_SET_ALL

Задает параметры для конфигов "/etc/wireles/mtXXXX..." всех диапазонов Wi-Fi в системе

Пример использования
WIFI_SET_ALL "SSID2" "SSID-NAME-ALL-GHz"

WIFI_SET_PMF_2GHZ

Задает параметр PMF только в 2.4 ГГц с возможными значениями: "off", "optional", "mandatory"

Пример использования
WIFI_SET_PMF_2GHZ "optional"

WIFI_SET_PMF_5GHZ

Задает параметр PMF только в 5 ГГц с возможными значениями: "off", "optional", "mandatory"

Пример использования
WIFI_SET_PMF_5GHZ "optional"

WIFI_SET_PMF_ALL

Задает параметр PMF во всех диапазонах с возможными значениями: "off", "optional", "mandatory"

Пример использования
WIFI_SET_PMF_ALL "optional"

WIFI_SET_BW_2GHZ

Задает параметр ширины канала только для 2.4 ГГц с возможными значениями: "20", "20/40", "40"

Пример использования
WIFI_SET_BW_2GHZ "40"

WIFI_SET_BW_5GHZ

Задает параметр ширины канала только для 5 ГГц с возможными значениями: "20", "20/40", "40", "80", "160"

Пример использования
WIFI_SET_BW_5GHZ "80"

WIFI_SET_SSID_UNIQ_2GHZ

Задает уникальный SSID только для 2.4 ГГц. Для уникальности в SSID подставляются 4 последние символа MAC-адреса

Пример использования
WIFI_SET_SSID_UNIQ_2GHZ "SSID-NAME-2GHz"

WIFI_SET_SSID_UNIQ_5GHZ

Задает уникальный SSID только для 5 ГГц. Для уникальности в SSID подставляются 4 последние символа MAC-адреса

Пример использования
WIFI_SET_SSID_UNIQ_5GHZ "SSID-NAME-5GHz"

WIFI_SET_SSID_UNIQ_ALL

Задает уникальный SSID для всех диапазонов Wi-Fi. Для уникальности в SSID подставляются 4 последние символа MAC-адреса

Пример использования
WIFI_SET_SSID_UNIQ_ALL "SSID-NAME-ALL-GHz"

ADMIN_USERNAME

Задает имя учетной записи администратора

Пример использования
ADMIN_USERNAME "SuperAdmin"

USER_USERNAME

Задает имя учетной записи администратора

Пример использования
USER_USERNAME "JustUser"

SET_PASSWD

Задает пароль для учетной записи администратора или пользователя

Пример использования
SET_PASSWD "SuperAdmin" "SuperPassword"
SET_PASSWD "JustUser" "JustPassword"

SET_PASSWD_HASH

Задает пароль для учетной записи администратора или пользователя, скрывая под hash в конфиге. Позволяет включить учетную запись пользователя через custom-скрипт, для этого уберите "!" из начала hash

Чтобы узнать hash необходимого пароля, создайте пароль для пользователя через WEB-UI и посмотрите его hash через cli по пути /etc/shadow .

Копируйте символы от знака "$" до первого знака ":"

Пример использования
SET_PASSWD_HASH "SuperAdmin" '$1$mY4f0J6G$84QHY80iDhWcgymeWjQSR1'
SET_PASSWD_HASH "JustUser" '$1$mY4f0A7P$84QHY80iDhWcgymeWjQCP2'

SET_CRONTAB

Устанавливает файл crontab из stdin

Пример использования
SET_CRONTAB <<EOF
* */2 * * * sh "/lib/my_update.sh"
EOF

INSTALL_FILE

Устанавливает файл из архива easycustom.tar.gz в систему

Пример использования
INSTALL_FILE "passwd" "/etc/passwd"

Кастомные скрипты


Кроме системных команд, EasyCustom позволяет интегрировать пользовательские shell-скрипты и внедрить свою уникальную логику в ПО EasyWRT. 

Для примера рассмотрим реализацию кода для обновления ezcustom-архива с выделенного сервера.

Cодержимое скрипта автоматического обновления. Для использования нужно изменить переменную "UPDATE_URL", указав ссылку на ваш сервер.

Содержимое скрипта my_update
#!/bin/sh
 
my_curl() {
    timeout 60 curl $@
}
 
my_log() {
    logger -t "my_custom_updater" "$@"
}
 
die() {
    my_log "$@"
    exit
}
 
UPDATE_URL="<вставьте ссылку на сервер с архивом EasyCustom>"
LAST_MODIFIED_FILE="/etc/ezcustom/.last_modified"
NEW_CUSTOM="/tmp/custom.tar.gz"
 
my_log "check '$UPDATE_URL' for updates..."
HEADERS="$(my_curl -I "$UPDATE_URL")"
LAST_MODIFIED="$(echo "$HEADERS" | grep -e '^Last-Modified:')"
test -z "$LAST_MODIFIED" && die "unable to check for updates"
my_log "last modified date: '$LAST_MODIFIED'"
test "$LAST_MODIFIED" = "$(cat "$LAST_MODIFIED_FILE")" && die "already at last configuration version"
 
my_log "downloading new version"
my_curl -o "$NEW_CUSTOM" "$UPDATE_URL" || die "unable to download new configuration"
sysupgrade --restore-backup "$NEW_CUSTOM" || die "unable to update configuration"
echo "$LAST_MODIFIED" >"$LAST_MODIFIED_FILE"
sync

В файле custom укажите блок кода для обращения роутера к прописанному серверу:

Пример CRON-скрипта
# check for configuration update every 5 min 
INSTALL_FILE "my_update.sh" "/etc/my_update.sh" 
SET_CRONTAB <<EOF
*/5 * * * * sh "/etc/my_update.sh" 
EOF  
  1. Для корректной работы необходим веб сервер который умеет отвечать на HEAD запросы и корректно передает заголовок Last-Modified
  2. Скрипт установит новый архив, если веб-сервер передаст заголовок Last-Modified с измененным значением. Иными словами - проверяется совпадение дата и времени модификации архива на сервере
  3. Чтобы скрипт проверял обновление периодически, установите скрипт в систему (например в директорию /etc) и включите периодический запуск скрипта через CRON, Блок кода в скрипте с проверкой обновлений раз в 5 минут:

Ограничение UI для учетных записей через luci-acl


Модуль позволяет установить правила ограничения доступа к определенным элементам web-интерфейса для отдельных пользователей.

Доступны 2 варианта внесения ограничений:

Установка файлом

Пример использования
# установка файла luci-acl из архива EasyCustom в каталог /etc/config/luci-acl
INSTALL_FILE "luci-acl" "/etc/config/luci-acl"

Редактирование напрямую:

Пример использования
# запрет на чтение и редактирование страницы cwmp для пользовательской учетной записи
CONFIG_SET luci-acl.@user[0].deny='admin/status/log' 'admin/services/easycwmp'
# запрет на редактирование страницы vlan для пользовательской учетной записи
CONFIG_SET luci-acl.@user[0].readonly='admin/network/vlan/advanced'

EasyWRT имеет два встроенных пользователя:

  • Admin - административная учетная запись, имеет цифровой идентификатор - 0
  • User - пользовательская учетная запись, имеет цифровой идентификатор - 2

Политики применяются к пользователям на основе цифрового идентификатора.  Конфигурация  /etc/config/luci-acl поддерживает две основные политики:

  • readonly - запрет только редактирования
  • deny - запрет и чтения и редактирования указанной страницы

Внешнее оформление UI


Для отображения новых стилей, после установки архива ezcustom, нужно обновить вкладку со сбросом кэша: Ctrl + F5

Для большей совместимости с новыми версиями ПО мы не рекомендуем глубокую кастомизацию, по этому рассмотрим пример кастомизации UI на основе изменения стилей интерфейса через style.css

Для просмотра и редактирования стилей WEB-UI EasyWRT:

  1. Перейдите на страницу управления роутером в браузере
  2. Авторизуйтесь на роутере
  3. Перейдите в инструменты разработчика на странице (возможность и способ перехода может различаться в зависимости от браузера)
  4. Измените стили нужных элементов
  5. Перейдите в "источники" из инструментов разработчика, скачайте измененные стили.

Для загрузки новых стилей, укажите команду в файле custom с названием файла .css:

 INSTALL_STYLES "style.css"

Для изменения логотипа новый файл логотипа должен быть векторным изображением с расширением .svg

После выбора логотипа и проверки его расширения, укажите его загрузку командой в файле custom:

INSTALL_LOGO "logo.svg"

Пример кастомизации


Рассмотрим использование EasyCustom на примере тестового технического требования.

Загрузить созданный архив можно двумя способами:

  1. Через WEB-UI, по пути Управление → Конфигурация → Восстановить резервную копию;
  2. Через ACS, загрузив файл как обычный конфигурационный файл (по аналогии с резервной копией).
  • Учетная записать администратора:
    • Логин: Admin1
    • Пароль зашифрован: AdminPass
  • Учетная запись пользователя:
    • Логин: User1
    • Пароль зашифрован: UserPass
    • Ограничить доступ к пунктам WEB-UI:
      • CWMP: чтение и запись
      • Расширенная настройка VLAN: запись
  • NTP
  • Параметры удаленного доступа
    • Доступ на WAN по SSH: включить
      • Доступ с подсети 10.1.1.0/24
      • Доступ с адреса 10.10.10.10
      • Порт 23
    • Доступ на WAN по HTTP: включить
      • Доступ с подсети 10.1.1.0/24
      • Доступ с адреса 10.10.10.10
      • Порт 81
    • Доступ на WAN по HTTPS: включить
      • Доступ с подсети 10.1.1.0/24
      • Доступ с адреса 10.10.10.10
      • Порт 444
  • CWMP
    • Режим работы CWMP: static
    • Периодическое информирование ACS-сервера: включить
      • Интервал информирования ACS-сервера: 4000
    • Адрес ACS-сервера: http://10.1.1.6:7547/
    • CWMP-порт: 7547
  • STUN
    • STUN-запросы : включить
    • Адрес STUN-сервера: 192.168.1.1
    • Порт STUN-сервера: 19303
    • Порт STUN-клиента: 25565
    • Интервал отправки сообщений: 120
    • Имя пользователя STUN: Admin
    • Пароль: Admin
  • IGMP-proxy
    • IGMP-proxy: включить
    • fastleave: включить
    • respawn: включить
  • UPnP
    • UPnP: включить
    • Дополнительное журналирование: включить
    • Защищенный режим: включить
  • Сервисы деактивации аварий
    • Перезапуск WAN : включить
    • Проверка доступности шлюза: включить
      • Интервал проверки: 35
      • Количество попыток:  4
    • Обнаружение петель: включить
    • Время отключения порта при обнаружении петли: 10 секунд
  • Настройки сети
    • LAN
      • LAN-IP: 192.168.1.111
      • DHCP
        • Минимальный адрес аренды: 10
        • Максимальное количество адресов для аренды: 143
        • Максимальное время аренды: 11h
    • WAN
      • Тип соединения: static
      • Адрес: 10.1.1.111
      • Шлюз: 10.1.1.1
      • Маска: 255.255.255.0
      • DNS: 8.8.8.8, 8.8.4.4
      • Hostname: SNR-CPE-Router
      • MTU: 1500
    • Туннелированное подключение: включить
      • Тип: PPPoE
      • Логин: Admin
      • Пароль: Admin
      • Использовать маршрут по умолчанию: включить
  • Wi-Fi
    • Диапазон 2.4 Ghz
      • Имя сети: Network-2GHz
      • Тип шифрования: WPA2-PSK
      • Пароль: Password123
      • Автовыбор канала: включить
        • Тип: По количеству станций
        • Исключить каналы: 12, 13, 14
      • Ширина канала: 20 Mhz
      • PMF: Обязательно
    • Диапазон 5 Ghz
      • Имя сети: Network-5Ghz
      • Тип шифрования: WPA2-PSK
      • Пароль: Password123
      • Автовыбор канала: включить
        • Тип:  По количеству станций
        • Исключить каналы: 132, 136, 140, 144, 149, 153, 157, 161, 165
      • Ширина канала: 20 Mhz
      • PMF: Обязательный
  • Стили
    • W4N-N
      • Стиль интерфейса: Голубой
      • Логотип: Ягоды
    • MD2
      • Стиль интерфейса: Коричневый
      • Логотип: Арбуз
    • ME2-Lite
      • Стиль интерфейса: Розовый
      • Логотип: Пончик
    • AX1
      • Стиль интерфейса: Желтый
      • Логотип: Сыр
    • AX2
      • Стиль интерфейса: Серый
      • Логотип: Яблоко
  • Обновление архива
    • Проверка обновлений каждые 5 минут
  1. Создаем каталог /etc
  2. В /etc создаем каталог /ezcustom
  3. В /etc/ezcustom создаем текстовый файл "custom" без расширения , сохраняем с форматом окончания строк Unix.
  4. В /etc/ezcustom добавим подготовленные файлы стилей, логотипов и ограничений UI, по необходимости
  5. По вышеописанным требованиям, отредактируем файл custom, используя ранее перечисленные команды
Содержимое скрипта custom
# НАСТРОЙКА УЧЕТНОЙ ЗАПИСИ АДМИНИСТРАТОРА
# логин
ADMIN_USERNAME "Admin1"
# hash пароля
SET_PASSWD_HASH "Admin1" '$1$GyDkBMuw$DMAIDu9YL8DyDTaVkiahS1'

# НАСТРОЙКА УЧЕТНОЙ ЗАПИСИ ПОЛЬЗОВАТЕЛЯ
# логин
USER_USERNAME "User1"
# hash пароля
SET_PASSWD_HASH "User1" '$1$uhqRRzgo$LYXc1oYdHrHoh4BErjSEL/'

# УСТАНОВКА ФАЙЛА ОГРАНИЧЕНИЙ WEB-ИНТЕРФЕЙСА luci-acl
# установка файла  luci-acl ограничений в web-ui
INSTALL_FILE "luci-acl" "/etc/config/luci-acl"

#ИЗМЕНЕНИЕ КОНТАКТНЫХ ДАННЫХ В WEB-UI
# телефон службы поддержки клиентов оператора связи
CONFIG_SET system.@system[0].snr_custom_support_phone='8-800-123-45-67'
# сайт/интернет-ресурс оператора связи
CONFIG_SET system.@system[0].snr_custom_support_url='http://support.myisp.com'

# НАСТРОЙКИ NTP
# включение ntp-клиента
CONFIG_SET system.ntp.enabled='1'
# включение ntp-сервера
CONFIG_SET system.ntp.enable_server='1'
# замена стандартного ntp сервера (0.ru.pool.ntp.org)
CONFIG_SET system.ntp.server='new1.ntp.net'
# добавление еще двух ntp-серверов в список
CONFIG_ADD_LIST system.ntp.server='new2.ntp.net'
CONFIG_ADD_LIST system.ntp.server='new3.ntp.net'

# НАСТРОЙКА ПРАВИЛ ДЛЯ ДОСТУПА НА WAN ПО SSH
# название правила
CONFIG_SET firewall.ssh.name='Allow-SSH'
# включение доступа по SSH на wan
CONFIG_SET firewall.ssh.enabled='1'
# зона доступности
CONFIG_SET firewall.ssh.src='wan'
# указываем новый порт 23 в конфиге dropbear и firewall
CONFIG_SET dropbear.@dropbear[0].Port='23'
CONFIG_SET firewall.ssh.dest_port='23'
# протокол подключения
CONFIG_SET firewall.ssh.proto='tcp'
# тип правила
CONFIG_SET firewall.ssh.target='ACCEPT'
# разрешаем доступ с подсетей
CONFIG_ADD_LIST firewall.ssh.src_ip='10.10.10.10'
CONFIG_ADD_LIST firewall.ssh.src_ip='10.1.1.0/24'

# НАСТРОЙКА ПРАВИЛА ДЛЯ ДОСТУПА НА WAN ПО HTTP
# название правила
CONFIG_SET firewall.http.name='Allow-HTTP'
# включение доступа по HTTP на wan
CONFIG_SET firewall.http.enabled='1'
# зона доступности
CONFIG_SET firewall.http.src='wan'
# удаляем секцию стандартного конфига порта 80 в uhttpd для http
CONFIG_DELETE uhttpd.main.listen_http
# указываем новый порт 88 в конфиге uhttpd и firewall
CONFIG_ADD_LIST uhttpd.main.listen_http='0.0.0.0:88'
CONFIG_ADD_LIST uhttpd.main.listen_http='[::]:88'
CONFIG_SET firewall.http.dest_port='88'
# протокол подключения
CONFIG_SET firewall.http.proto='tcp'
# тип правила
CONFIG_SET firewall.http.target='ACCEPT'
# разрешаем доступ с подсетей
CONFIG_ADD_LIST firewall.http.src_ip='10.10.10.10'
CONFIG_ADD_LIST firewall.http.src_ip='10.1.1.0/24'

# НАСТРОЙКА ПРАВИЛА ДЛЯ ДОСТУПА НА WAN ПО HTTPS
# название правила
CONFIG_SET firewall.https.name='Allow-HTTPS'
# включение доступа по HTTPS на wan
CONFIG_SET firewall.https.enabled='1'
# зона доступности
CONFIG_SET firewall.https.src='wan'
# удаляем секцию стандартного конфига порта 443 в uhttpd для https
CONFIG_DELETE uhttpd.main.listen_https
# указываем новый порт 444 в конфиге uhttpd и firewall
CONFIG_ADD_LIST uhttpd.main.listen_https='0.0.0.0:444'
CONFIG_ADD_LIST uhttpd.main.listen_https='[::]:444'
CONFIG_SET firewall.https.dest_port='444'
# протокол подключения
CONFIG_SET firewall.https.proto='tcp'
# тип правила
CONFIG_SET firewall.https.target='ACCEPT'
# разрешаем доступ с подсетей
CONFIG_ADD_LIST firewall.https.src_ip='10.10.10.10'
CONFIG_ADD_LIST firewall.https.src_ip='10.1.1.0/24'

# НАСТРОЙКА CWMP-ДЕМОН
# включение CWMP-демона в режиме static
CONFIG_SET easycwmp.@local[0].enable='3'
# включение периодического информирования ACS-сервера
CONFIG_SET easycwmp.@acs[0].periodic_enable='1'
# адрес ACS-сервера
CONFIG_SET easycwmp.@acs[0].url='http://10.1.1.6:7547'
# CWMP-порт
CONFIG_SET easycwmp.@local[0].port='7547'
# интервал информирования ACS-сервера
CONFIG_SET easycwmp.@acs[0].periodic_interval='4000'

# НАСТРОЙКА STUN
# порт клиента stun
CONFIG_SET tr069_stun.stun.client_port='25565'
# включение stun-запросы
CONFIG_SET tr069_stun.stun.enable='1'
# интервал отправки stun-сообщений
CONFIG_SET tr069_stun.stun.min_keepalive='120'
# пароль stun
CONFIG_SET tr069_stun.stun.password='Admin'
# адрес stun-сервера
CONFIG_SET tr069_stun.stun.server_address='192.168.1.1'
# порт stun-сервера
CONFIG_SET tr069_stun.stun.server_port='19303'
# имя пользователя stun
CONFIG_SET tr069_stun.stun.username='Admin'

# НАСТРОЙКА IGMP-PROXY
# включение igmp-proxy
CONFIG_SET igmpproxy.@igmpproxy[0].enable='1'
# включение fastleave
CONFIG_SET igmpproxy.@igmpproxy[0].quickleave='1'
# включение respawn
CONFIG_SET igmpproxy.@igmpproxy[0].respawn='1'

# НАСТРОЙКА UPnP
# включение upnp
CONFIG_SET upnpd.config.enabled='1'
CONFIG_SET upnpd.config.enable_upnp='1'
# включить дополнительное журналирование upnp
CONFIG_SET upnpd.config.log_output='1'
# разрешить перенаправление только для запрашивающих IP-адресов
CONFIG_SET upnpd.config.secure_mode='1'

# СЕРВИСЫ ДЕАКТИВАЦИИ АВАРИЙ
# восстановить работу WAN при поднятии интерфейса
CONFIG_SET cpe-tools.services.wan_arping_watchdog='1'
# проверка доступности шлюза через ARP-запросы и перезапрос реквизитов по dhcp
CONFIG_SET cpe-tools.services.wan_arping_interval='35'
# количество ARP-запросов
CONFIG_SET cpe-tools.services.wan_arping_attempts='4'
# включение режима обнаружения петель
CONFIG_SET cpe-tools.services.lpdet_interval='1'
# время в секундах до отключения порта при обнаружении петель
CONFIG_SET cpe-tools.services.lpdet_shutdown='10'

# НАСТРОЙКА LAN-ip
# изменение LAN-ip
CONFIG_SET network.lan.ipaddr='192.168.1.111'

# НАСТРОЙКА DHCP LAN
# минимальный адрес аренды
CONFIG_SET dhcp.lan.start='10'
# максимальное количество адресов для аренды
CONFIG_SET dhcp.lan.limit='143'
# максимальное время аренды (минимум 2m)
CONFIG_SET dhcp.lan.leasetime='11h'

# НАСТРОЙКИ WAN
# dns-серверы для wan
CONFIG_SET network.wan.dns='8.8.8.8 8.8.4.4'
# адрес шлюза
CONFIG_SET network.wan.gateway='10.1.1.1'
# адрес WAN
CONFIG_SET network.wan.ipaddr='10.1.1.111'
# маска
CONFIG_SET network.wan.netmask='255.255.255.0'
# тип соединения для WAN
CONFIG_SET network.wan.proto='static'
# hostname роутера
CONFIG_SET network.wan.hostname='SNR-CPE-ROUTER'

# НАСТРОЙКИ VPN PPPOE НА WAN
# маршрут по умолчанию
CONFIG_SET network.vpn.defaultroute='1'
# включение vpn на wan
CONFIG_SET network.vpn.disabled='0'
CONFIG_SET network.vpn.ifname='eth1'
# пароль пользователя в туннеле
CONFIG_SET network.vpn.password='Admin'
# тип vpn-соединения
CONFIG_SET network.vpn.proto='pppoe'
# логин  пользователя в туннеле
CONFIG_SET network.vpn.username='Admin'

# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ WAN
# mac-адрес WAN-порта
CONFIG_SET network.wan.macaddr='F8:F0:82:1E:8C:A3'
# изменение mtu на wan
CONFIG_SET network.wan.mtu='1500'

# НАСТРОЙКИ WI-FI 2.4Ghz
# изменение SSID 2.4Ghz
WIFI_SET_2GHZ "SSID1" "Network-2GHz"
# изменение пароля 2.4Ghz
WIFI_SET_2GHZ "WPAPSK1" "Password123"
# вкл. автовыбора 2.4Ghz (тип: 1-по количеству станций, 2-по уровню шума, 3-по загрузке QBSS)
# интервал указывается в часах
WIFI_SET_2GHZ "Channel1" "0"
WIFI_SET_2GHZ "AutoChannelSelect" "1"
WIFI_SET_2GHZ "ACSCheckTime" "24"
# исключение каналов из автовыбора (указывать каналы через ";")
WIFI_SET_2GHZ "AutoChannelSkipList" "12;13;14"
# ручной выбор канала (если выключен автовыбор)
WIFI_SET_2GHZ "Channel1" "10"
# тип шифрования 2.4Ghz
WIFI_SET_2GHZ "AuthMode" "WPA2PSK"
 
# PMF 2.4 GHz тип "обязательно" 
# ( Если "PMFMFPC = 1" + "PMFMFPR = 0", то будет тип "опционально".) 
# ( Если "PMFMFPC = 0" + "PMFMFPR = 0", то будет тип "выключить".)
WIFI_SET_2GHZ "PMFMFPC" "1"
WIFI_SET_2GHZ "PMFMFPR" "1"

# PMF 2.4 GHz тип "обязательно" (coming soon with next update)
WIFI_SET_PMF_2GHZ "mandatory"

# ШИРИНА КАНАЛА 2.4 GHz = 20 Mhz
# ( Если "HT_BW = 1" + "VHT_BW = 0" + "HT_BSSCoexistence = 0", то будет ширина 40 Mhz )
WIFI_SET_2GHZ "HT_BW" "0"
WIFI_SET_2GHZ "VHT_BW" "0" 
WIFI_SET_2GHZ "HT_BSSCoexistence" "0"

# ширина канала 20 МГц (coming soon with next update)
WIFI_SET_BW_2GHZ "20"

# НАСТРОЙКИ WI-FI 5Ghz 
# изменение SSID 5Ghz
WIFI_SET_5GHZ "SSID1" "Network-5Ghz"
# изменение пароля 5GHz
WIFI_SET_5GHZ "WPAPSK1" "Password123"
# вкл/выкл автовыбора 5Ghz (тип: 1-по количеству станций, 2-по уровню шума, 3-по загрузке QBSS)
WIFI_SET_5GHZ "AutoChannelSelect" "1"
# исключение каналов из автовыбора (указывать каналы через ";")
WIFI_SET_5GHZ "AutoChannelSkipList" "132;136;140;144;149;153;157;161;165"
# ручной выбор канала (если выключен автовыбор)
WIFI_SET_5GHZ "Channel1" "36"

# PMF 5 GHz тип "обязательно" 
# ( Если "PMFMFPC = 1" + "PMFMFPR = 0", то будет тип "опционально".) 
# ( Если "PMFMFPC = 0" + "PMFMFPR = 0", то будет тип "выключить".)
WIFI_SET_5GHZ "PMFMFPC" "1" 
WIFI_SET_5GHZ "PMFMFPR" "1"

# PMF 5 GHz тип "обязательно" (coming soon with next update)
WIFI_SET_PMF_5GHZ "mandatory"

# ШИРИНА КАНАЛА 5 GHz = 20 Mhz
# ( Если "HT_BW = 1" + "VHT_BW = 0" + "HT_BSSCoexistence = 0", то будет ширина 40 Mhz.)
# ( Если "HT_BW = 1" + "VHT_BW = 0" + "HT_BSSCoexistence = 1", то будет ширина 20/40 Mhz. )
# ( Если "HT_BW = 1" + "VHT_BW = 1" + "HT_BSSCoexistence = 1", то будет ширина 80 Mhz. )
WIFI_SET_5GHZ "HT_BW" "0"
WIFI_SET_5GHZ "VHT_BW" "0"
WIFI_SET_5GHZ "HT_BSSCoexistence" "1"

# ширина канала 20 МГц (coming soon with next update)
WIFI_SET_BW_5GHZ "20"

# УСЛОВИЕ УЧЕТА МОДЕЛИ SNR-CPE
if MODEL_IS "SNR-CPE-ME2-Lite"
then
INSTALL_LOGO "donut.svg"
INSTALL_STYLES "pink.css"
fi

if MODEL_IS "SNR-CPE-MD2"
then
INSTALL_LOGO "arbuz.svg"
INSTALL_STYLES "brown.css"
fi

if MODEL_IS "SNR-CPE-W4N-N"
then
INSTALL_LOGO "yagoda.svg"
INSTALL_STYLES "blue.css"
fi

if MODEL_IS "SNR-CPE-AX1"
then
INSTALL_LOGO "cheese.svg"
INSTALL_STYLES "yellow.css"
fi

if MODEL_IS "SNR-CPE-AX2"
then
INSTALL_LOGO "apple.svg"
INSTALL_STYLES "dark.css"
fi

# УСТАНОВКА ФАЙЛА ПРОВЕРКИ ОБНОВЛЕНИЙ АРХИВА КАСТОМИЗАЦИИ
# check for configuration update every 5 min
# установка скрипта my_update.sh в каталог /etc
# проверка раз в 5 минут
INSTALL_FILE "my_update.sh" "/etc/my_update.sh"
SET_CRONTAB <<EOF
*/5 * * * * sh "/etc/my_update.sh"
EOF

ВНИМАНИЕ!

Не добавляйте пробелы и комментарии после команд!  Это помешает их выполнению