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

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

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

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

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


Введение

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

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

Описание структуры и использования EasyCustom

Структура


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

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

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

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

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

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

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

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







Файл custom

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

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

firstboot -y && reboot

Команда удалит все настройки EasyCustom и вернет роутер в заводское состояние.

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

В ezcustom реализован набор команд, позволяющих менять конфигурацию маршрутизатора:

Команды учета модели и ПО

Команда

Описание

Пример

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

Команды внесения изменения в конфигурационные файлы

В каталоге роутера /etc/config/ находятся конфигурационные файлы, каждый из них отвечает за логику работы отдельной службы.

Для примера, разберём структуру секции 'ssh' из конфига 'firewall'.

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

далее идут параметры и их значения:

Команды CONFIG_GET, CONFIG_SET, CONFIG_DELETE, CONFIG_ADD_LIST, CONFIG_ADD используются для внесения изменения в конфигурационные файлы, без необходимости ручного изменения файла. Для их применения нужно указывать полный путь до нужного параметра.

Эти команды используются только в скрипте custom, в cli использовать их нельзя.

Команда

Описание

Пример

CONFIG_GET

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

LOG_SIZE="$(CONFIG_GET system.@system[0].log_size)"

CONFIG_SET

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

Для получения списка параметров uci, перейдите в cli через ssh и введите команду

uci show

Пример вывода параметров, отвечающих за настройки WAN:


CONFIG_SET system.@system[0].hostname='ME2-Lite-Router'

CONFIG_DELETE

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

CONFIG_DELETE system.@system[0].hostname

CONFIG_ADD_LIST

Добавить значение в список uci.

CONFIG_ADD_LIST uhttpd.main.listen_http='127.0.0.1:80'

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"

Команды персонализации WEB-UI

Команда

Описание

Пример

INSTALL_LOGO

Установить логотип в web ui.

  • использовать файл donut.svg из архива в качестве логотипа
INSTALL_LOGO "donut.svg"

INSTALL_STYLES

Установить файл стилей.

  • использовать файл pink.css из архива в качестве файла стилей web ui
INSTALL_STYLES "pink.css"

Команды настройки параметров Wi-Fi

Команда

Описание

Пример

WIFI_SET_2GHZ

Установить настройку WiFi для диапазона 2.4GHz.

Информация

Чтобы узнать переменную нужной настройки, ознакомьтесь с содержимым файла /etc/wireles/mtXXXX/mtXXXX.dat для каждого диапазона через cli (XXXX - обозначение чипа, отвечающего за диапазон)

  • установить имя сети "SNR-CPE-CUSTOM" для диапазона 2.4 ГГц
WIFI_SET_2GHZ "SSID1" "SNR-CPE-CUSTOM"

WIFI_SET_5GHZ

Установить настройку WiFi для диапазона 5GHz

Информация

Чтобы узнать переменную нужной настройки, ознакомьтесь с содержимым файла /etc/wireles/mtXXXX/mtXXXX.dat для каждого диапазона через cli (XXXX - обозначение чипа, отвечающего за диапазон)

  • установить имя сети "SNR-CPE-CUSTOM" для диапазона 5 ГГц
WIFI_SET_5GHZ "SSID1" "SNR-CPE-CUSTOM"

WIFI_SET_ALL

Установить настройку WiFi для всех диапазонов в системе

  • установить имя сети "SNR-CPE-CUSTOM" для диапазонов 2.4 ГГц и 5 ГГц
WIFI_SET_ALL "SSID2" "SNR-CPE-CUSTOM"

WIFI_SET_PMF_2GHZ

Возможные значения: "off", "optional", "mandatory".

Устанавливает значение для функции PMF в диапазоне 2.4 ГГц

  • установить PMF для диапазона 2.4 ГГц в "опциональный" режим
WIFI_SET_PMF_2GHZ "optional"

WIFI_SET_PMF_5GHZ

Возможные значения: "off", "optional", "mandatory".

Устанавливает значение для функции PMF в диапазоне 5 ГГц

  • установить PMF для диапазона 5 ГГц в "опциональный" режим
WIFI_SET_PMF_5GHZ "optional"

WIFI_SET_PMF_ALL

Возможные значения: "off", "optional", "mandatory".

Устанавливает значение для функции PMF во всех диапазонах

  • установить PMF для диапазонов 2.4 ГГц и 5 ГГц в "опциональный" режим
WIFI_SET_PMF_ALL "optional"

WIFI_SET_BW_2GHZ

Возможные значения: "20", "20/40", "40".

Устанавливает значение МГц ширины канала в диапазоне 2.4 ГГц

  • установить ширину канала для диапазона 2.4 ГГц в 20 МГц
WIFI_SET_BW_2GHZ "20/40"

WIFI_SET_BW_5GHZ

Возможные значения: "20", "20/40", "40", "80", "160".

Устанавливает значение МГц ширины канала в диапазоне 5 ГГц. 160 МГц - доступно только в AX2.

  • установить ширину канала для диапазона 5 ГГц в 160 МГц
WIFI_SET_BW_5GHZ "160"

WIFI_SET_SSID_UNIQ_2GHZ

При использовании WIFI_SET_SSID_UNIQ_2GHZ "<SSID>" получим уникальный SSID в виде "<SSID>-XXXX", где XXXX это последние четыре цифры MAC-адреса. По умолчанию используется идентификатор "SSID1" из конфига чипа 5 ГГц в /etc/wireles/mtXXXX/mtXXXX.dat.
  • установить уникальный SSID для диапазона 2.4 ГГц 
WIFI_SET_SSID_UNIQ_2GHZ "test2"

WIFI_SET_SSID_UNIQ_5GHZ

При использовании WIFI_SET_SSID_UNIQ_5GHZ "<SSID>" получим уникальный SSID в виде "<SSID>-XXXX", где XXXX это последние четыре цифры MAC-адреса. По умолчанию используется идентификатор "SSID1" из конфига чипа 5 ГГц в /etc/wireles/mtXXXX/mtXXXX.dat.
  • установить уникальный SSID для диапазона 5 ГГц 
WIFI_SET_SSID_UNIQ_5GHZ "test5"

WIFI_SET_SSID_UNIQ_ALL

При использовании WIFI_SET_SSID_UNIQ_ALL "<SSID>" получим один уникальный SSID в виде "<SSID>-XXXX", где XXXX это последние четыре цифры MAC-адреса. По умолчанию используется идентификатор "SSID1" из конфигов чипов 2.4 ГГц и 5 ГГц в /etc/wireles/mtXXXX/mtXXXX.dat.
  • установить один уникальный SSID для диапазона 2.4 ГГц и 5 ГГц 
WIFI_SET_SSID_UNIQ_ALL "test5"

Команды настройки учетных записей

Команда

Описание

Пример

ADMIN_USERNAME

Установить логин администратора

  • установить логин для администратора "SuperAdmin"
ADMIN_USERNAME "SuperAdmin"

USER_USERNAME

Установить логин пользователя

  • установить логин для пользователя "Support"
USER_USERNAME "Support"

SET_PASSWD

Установить пароль для администратора или пользователя

  • установить пароль для администратора "SuperPassword"
SET_PASSWD "SuperAdmin" "SuperPassword"

SET_PASSWD_HASH

Установить хэш пароля для администратора или пользователя.

Может применяться:

  • когда требуется включить учетную запись User по умолчанию. В этом случае, требуется убрать знак "!" из начала hash.
  • когда нужно скрыть от пользователя пароль учетной записи администратора.


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

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

  • установить пароль для администратора "SuperAdmin" в виде hash
ADMIN_USERNAME "SuperAdmin"

SET_PASSWD_HASH "SuperAdmin" '$1$mY4f0J6G$84QHY80iDhWcgymeWjQSR1'

Команды установки файлов

Команда

Описание

Пример

SET_CRONTAB

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


SET_CRONTAB <<EOF
* */2 * * * sh "/lib/my_update.sh"
EOF

INSTALL_FILE

Установить файл из архива в систему.

  • установить файл passwd из архива как /etc/passwd
INSTALL_FILE "passwd" "/etc/passwd"

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


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

Скрипт my_update.sh

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

#!/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 нужно указать блок кода для обращения роутера к прописанному серверу:

  1. Скрипт установит новый архив только если веб сервер передаст заголовок Last-Modified с измененным значением (если у файла на сервере дата модификации не будет совпадать с установленным файлом, то произойдет обновление).
  2. Для корректной работы необходим веб сервер который умеет отвечать на HEAD запросы и корректно передает заголовок Last-Modified
  3. Для того, чтобы скрипт проверял обновление периодически, необходимо установить скрипт в систему (например в директорию etc/) и включить периодический запуск скрипта через CRON, Блок кода в скрипте с проверкой обновлений раз в 5 минут:

# 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  

Модуль luci-acl - account manager


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

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

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

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

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

Политики применяются к пользователям на основе цифрового идентификатора приведенного выше. 

Пример управления элементами UI через luci-acl

Если вы подготовили и протестировали ограничения web-ui заранее, поэтому сейчас требуется загрузка этого файла в роутер вместе с архивом EasyCustom.

Для этого потребуется указать команду в файле custom.

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


Настройка ограничений командами EasyCustom, без файла luci-acl

Если вы не подготовили файл luci-acl, или вам нужно внести минимум изменений и вы не хотите загружать ограничения отдельным файлом, можно воспользоваться командой CONFIG_SET для файла custom.

# запрет на чтение и редактирование страницы 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'


Внешнее оформление UI. Файл style.css, редактирование и загрузка


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

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

Файл стилей style.css

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

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


  5. Перейдите в источники из инструментов разработчика, скачайте измененные стили.

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

 INSTALL_STYLES "style.css"

Файл logo.svg

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

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

INSTALL_LOGO "logo.svg"

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

Описание


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

  • Учетная записать администратора:
    • Логин: 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 минут

Написание файла custom


Создаем каталог /etc, в нем создаем каталог /ezcustom. В /etc/ezcustom создаем текстовый файл без расширения "custom", сохраняем с форматом окончания строк Unix.

По вышеописанным требованиям, отредактируем файл 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

ВНИМАНИЕ!

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

Сборка всех файлов в единый каталог


Соберем все необходимые и подготовленные файлы. 

Добавьте файлы логотипов, стилей, скрипт обновления и файл ограничений luci-acl в каталог /etc/ezcustom.

Полученный каталог и его содержимое на скриншоте:

Создаем tar.gz архив


Для архивации можно использовать программу 7zip, свободное программное обеспечение. В корень архива помещаем каталог /etc.

Загрузка архива и результат применения стилей


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

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

  1. через WEB-UI по пути Управление → Конфигурация → Восстановить резервную копию;
  2. через ACS, загрузив файл как обычный конфигурационный файл (по аналогии с резервной копией).
Результат применения стилей


  • No labels