Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Note
iconfalse

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

Status
colourGreen
title2.4.0

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

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

Table of Contents

...

...

Что такое EasyCustom?

...

Section


Column

EasyCustom -

...

сервис ручной кастомизации ПО EasyWRT,

...

состоящий из архива с набором файлов, команд и скриптов.


Позволяет провести ручное изменение настроек EasyWRT без

...

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

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

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

...

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

...

html


Column
width45%


Panel
borderColorgrey
borderWidth1
borderStyledashed

Image Added



Структура EasyCustom

...

Section


Column

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

Section


Column

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

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

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


Column

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

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

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

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

...




Column

...

width
Warning

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

Warning

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

Code Block
languagebash
themeRDark
firstboot -y && reboot

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

...

45%


Panel
borderColorgrey
borderWidth1
borderStyledashed

Image Added



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

...

Файл custom - linux shell скрипт, с помощью которого можно изменить базовую конфигурацию

...

роутера и модифицировать логику выполнения скриптов (своих или штатных).

...

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

...

Проверить текущий релиз на соответствие. Можно использовать с оператором if.Проверить текущую модель на соответствие. Можно использовать с оператором if.
Panel
borderStyledashed


Expand

Команда

Описание

Пример

RELEASE_IS

MODEL_IS

titleКак смотреть базовый конфиг роутера?

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

Code Block
languagebash
themeRDark
if RELEASE_IS "2.3.1"
then
CONFIG_SET network.lan.ipaddr='192.168.10.1'
fi
uci show

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

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

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

Image Added


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

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

if MODEL_IS "SNR-CPE-ME2-Lite
firstboot -y && reboot
Code Block
languagebash
themeRDark

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

Section
bordertrue


Column

RELEASE_IS


Column
width65%

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

Code Block
languagebash
titleПример использования
collapsetrue
if RELEASE_IS "2.3.1"
then
CONFIG_SET 
system.@system[0].hostname='ME2-Lite-Router
network.lan.ipaddr='192.168.10.1'
fi

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




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

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

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

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

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

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

Команда

Описание

Пример

CONFIG_GET

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


Column

MODEL_IS


Column
width65%

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

Code Block
languagebash
themeRDarkLOG_SIZE="$(CONFIG_GET
titleПример использования
collapsetrue
if MODEL_IS "SNR-CPE-ME2-Lite"
then
CONFIG_SET system.@system[0].
log_size)"
hostname='ME2-Lite-Router'
fi




RDark
Section
bordertrue


Column

CONFIG_SET

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

Info

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

Code Block
uci show

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

Image Removed


Column
width65%

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

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




Section
bordertrue


Column

CONFIG_

DELETEУдалить значение

GET


Column
width65%

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

.

Code Block
languagebash
titleПример использования
theme
collapse
RDark
true
LOG_SIZE="$(CONFIG_
DELETE
GET system.@system[0].
hostname
log_size)"




Section
bordertrue


Column

CONFIG_

ADD_LISTДобавить

DELETE


Column
width65%

Удаляет значение в

список

конфигурации uci

.

Code Block
languagebash
titleПример использования
theme
collapse
RDark
true
CONFIG_
ADD_LIST
DELETE 
uhttpd.main.listen_http='127.0.0.1:80'
system.@system[0].hostname




RDark
Section
bordertrue


Column

CONFIG_ADD


Column
width65%

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

.

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

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

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

Команда

Описание

Пример

INSTALL_LOGO

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





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


Column

CONFIG_ADD_LIST


Column
width65%

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

Code Block
languagebash
themeRDark
INSTALL_LOGO "donut.svg"

INSTALL_STYLES

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

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




Section
bordertrue


Column

INSTALL_LOGO


Column
width65%

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

Code Block
languagebash
titleПример использования
theme
collapse
RDark
true
INSTALL_
STYLES
LOGO "
pink
logo.
css"

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

Пример
Expand

Команда

Описание

svg"




Section
bordertrue


Column

INSTALL_STYLES


Column
width65%

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

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




Чтобы узнать переменную нужной настройки, ознакомьтесь с содержимым файла


Section
bordertrue


Column

WIFI_SET_2GHZ

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

Info
titleИнформация
Column
width65%

Задает параметры для конфига "/etc/wireles/mtXXXX

/mtXXXX.dat для каждого диапазона через cli (XXXX - обозначение чипа, отвечающего за диапазон)

Image Removed

установить имя сети "SNR-CPE-CUSTOM" для диапазона

..." Wi-Fi 2.4 ГГц

Code Block
languagebash
titleПример использования
theme
collapse
RDark
true
WIFI_SET_2GHZ "SSID1" "
SNR
SSID-
CPE
NAME-
CUSTOM"
2GHz"




Чтобы узнать переменную нужной настройки, ознакомьтесь с содержимым файла


Section
bordertrue


Column

WIFI_SET_5GHZ

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

Info
titleИнформация
Column
width65%

Задает параметры для конфига "/etc/wireles/mtXXXX

/mtXXXX.dat для каждого диапазона через cli (XXXX - обозначение чипа, отвечающего за диапазон)

Image Removed

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

..." Wi-Fi 5 ГГц в системе

Code Block
languagebash
titleПример использования
theme
collapse
RDark
true
WIFI_SET_
5GHZ
ALL "
SSID1
SSID2" "
SNR
SSID-
CPE
NAME-
CUSTOM"
5GHz"




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


Section
bordertrue


Column

WIFI_SET_ALL

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

Code Block
languagebash
theme
Column
width65%

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

Code Block
languagebash
titleПример использования
collapsetrue
WIFI_SET_ALL "SSID2" "
SNR
SSID-NAME-
CPE
ALL-
CUSTOM
GHz"




RDark
Section
bordertrue


Column

WIFI_SET_PMF_2GHZ

Возможные значения


Column
width65%

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

".

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

установить PMF для диапазона 2.4 ГГц в

"

опциональный" режим

Code Block
languagebash
theme
titleПример использования
collapsetrue
WIFI_SET_PMF_2GHZ "optional"




RDark
Section
bordertrue


Column

WIFI_SET_PMF_5GHZ

Возможные значения


Column
width65%

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

".

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

установить PMF для диапазона 5 ГГц в "опциональный

"

режим

Code Block
languagebash
theme
titleПример использования
collapsetrue
WIFI_SET_PMF_5GHZ "optional"




Section
bordertrue


Column

WIFI_SET_PMF_ALL

Возможные значения


Column
width65%

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

.

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

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

Code Block
languagebash
titleПример использования
collapsetrue
WIFI_SET_PMF_ALL "optional"




RDark
Section
bordertrue


Column

WIFI_SET_BW_2GHZ

Возможные значения


Column
width65%

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

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

  • установить ширину канала для диапазона 2.4 ГГц в 20 МГц
Code Block
languagebash
theme
titleПример использования
collapsetrue
WIFI_SET_BW_2GHZ "
20/
40"




Section
bordertrue


Column

WIFI_SET_BW_5GHZ

Возможные значения


Column
width65%

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

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

  • установить ширину канала для диапазона 5 ГГц в 160 МГц
Code Block
languagebash
titleПример использования
theme
collapse
RDark
true
WIFI_SET_BW_5GHZ "
160
80"




установить уникальный SSID для диапазона 2.4 ГГц 


Section
bordertrue


Column

WIFI_SET_SSID_UNIQ_2GHZ

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

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

Code Block
languagebash
themeRDark
titleПример использования
collapsetrue
WIFI_SET_SSID_UNIQ_2GHZ "
test2
SSID-NAME-2GHz"




  • установить уникальный SSID для диапазона 5 ГГц 
Section
bordertrue


Column

WIFI_SET_SSID_UNIQ_5GHZ

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


Column
width65%

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

Code Block
languagebash
theme
title
RDark
Пример использования
collapsetrue
WIFI_SET_SSID_UNIQ_5GHZ "
test5"
SSID-NAME-5GHz"




Section
bordertrue


Column

WIFI_SET_SSID_UNIQ_ALL

При использовании


Column
width65%

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

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




Section
bordertrue


Column

ADMIN_USERNAME


Column
width65%

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

Code Block
languagebash
themeRDark
WIFI_SET_SSID_UNIQ_ALL "test5"

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

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

Команда

Описание

Пример

ADMIN_USERNAME

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

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




Section
bordertrue


Column

USER_USERNAME


Column
width65%

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

Code Block
languagebash
title
themeADMIN_USERNAME "SuperAdmin"
Пример использования
RDark
collapsetrue
USER_USERNAME

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

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




languagebash
Section
border
true


themeRDark
USER_USERNAME "Support"
Column

SET_PASSWD

Установить


Column
width65%

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

  • установить пароль для администратора "SuperPassword"
Code Block
languagebash
themeSET
title
RDark
Пример использования
collapsetrue
SET_PASSWD "SuperAdmin" "SuperPassword"
SET_PASSWD "JustUser" "JustPassword"




ADMIN_USERNAME
Section
bordertrue


Column

SET_PASSWD_HASH

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


Column
width65%

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

.

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

когда требуется включить учетную запись User по умолчанию. В этом случае, требуется убрать знак

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

.
  • когда нужно скрыть от пользователя пароль учетной записи администратора.
  • info

    Expand
    titleКак узнать hash?

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

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

    Image Modified

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


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

    ...




    КомандаПример
    Sectionexpand
    border
    true


    Описание

    Column

    SET_CRONTAB

    Установить


    Column
    width65%

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

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




    RDark
    Section
    bordertrue


    Column

    INSTALL_FILE

    Установить


    Column
    width65%

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

    .
    • установить файл passwd из архива как /etc/passwd
    Code Block
    languagebash
    theme

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



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

    ...

    Кроме

    ...

    системных команд, EasyCustom позволяет интегрировать пользовательские shell-скрипты

    ...

    и внедрить свою уникальную логику в ПО EasyWRT. 

    Для примера рассмотрим

    ...

    реализацию кода для обновления ezcustom-

    ...

    архива с выделенного сервера.

    ...

    Скрипт my_update.sh

    ...

    Section
    bordertrue


    Column

    Cодержимое скрипта автоматического обновления

    ...

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


    Column
    width65%


    Code Block
    languagebash

    ...

    titleСодержимое скрипта my_update
    collapsetrue
    #!/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




    Section
    bordertrue


    Column

    В файле custom

    ...

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

    ...


    Column
    width65%


    Code Block
    languagebash

    ...

    titleПример CRON-скрипта
    collapsetrue
    # check for configuration update every 5 min 
    INSTALL_FILE "my_update.sh" "/etc/my_update.sh" 
    SET_CRONTAB <<EOF
    */5 * * * * sh "/etc/

    ...

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

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

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

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

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

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

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

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

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

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

    RDark
    Code Block
    languagebash
    theme
    my_update.sh" 
    EOF  



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

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

    ...

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

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

    Section
    bordertrue


    Column

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


    Column
    width65%


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

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

    ...




    RDark
    Section
    bordertrue


    Column

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


    Column
    width65%


    Code Block
    languagebash
    theme
    titleПример использования
    collapsetrue
    # запрет на чтение и редактирование страницы 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'

    ...

    luci-acl.@user[0].readonly='admin/network/vlan/advanced'



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

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

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

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

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

    ...

    Warning

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

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

    ...

    Section
    bordertrue

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

    1. Перейдите на страницу управления роутером

    ...

    1. в браузере
    2. Авторизуйтесь на роутере

    ...

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

    ...

    1. Измените стили нужных элементов

    ...

    ...

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

    ...

    1. .
    Column
    Image Added


    Column

    Image Added


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

    Code Block
    languagebashthemeRDark
     INSTALL_STYLES "style.css"

    ...

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

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

    Code Block
    languagebash
    themeRDark
    INSTALL_LOGO "logo.svg"

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

    Описание

    ...

    INSTALL_LOGO "logo.svg"


    Section
    bordertrue


    Column

    Image Added


    Column

    Image Added


    Column

    Image Added


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

    ...

    Section
    bordertrue

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

    Column

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

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


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

    ...




    Column
    1. Создаем каталог /etc
    2. В /etc

    ...

    1. создаем каталог /ezcustom

    ...

    1. В /etc/ezcustom создаем текстовый файл

    ...

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

    ...

    Warning
    titleВНИМАНИЕ!
    Не добавляйте пробелы и комментарии после команд!  Это помешает роутеру выполнить команду.
    1. , отредактируем файл custom, используя ранее перечисленные команды
    Code Block
    languagebash

    ...

    titleСодержимое скрипта custom
    collapsetrue
    # НАСТРОЙКА УЧЕТНОЙ ЗАПИСИ АДМИНИСТРАТОРА
    # логин
    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

    ...

    Warning
    titleВНИМАНИЕ!

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

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

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

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

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

    Image Removed

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

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

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

    Warning

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

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

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

    ...

    Image RemovedImage RemovedImage Removed

    ...

     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


    Warning
    titleВНИМАНИЕ!

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