add domain timeout support and update examples #3
@@ -36,12 +36,12 @@ git clone gitea@gitea.lan:pyrschtjag/xray-manager.git /opt/.xray-manager
|
|||||||
```bash
|
```bash
|
||||||
git clone https://gitea.oyacoi.ru/pyrschtjag/xray-manager.git /opt/.xray-manager
|
git clone https://gitea.oyacoi.ru/pyrschtjag/xray-manager.git /opt/.xray-manager
|
||||||
```
|
```
|
||||||
### 3. Создание симлинков
|
### 3. Интеграция скрипта
|
||||||
|
|
||||||
Для интеграции скрипта в систему выполните следующие команды:
|
Для интеграции скрипта в систему выполните следующие команды:
|
||||||
```Bash
|
```Bash
|
||||||
# Конфигурационный файл
|
# Конфигурационный файл
|
||||||
ln -s /opt/.xray-manager/config/xray-manager /etc/config/xray-manager
|
cp /opt/.xray-manager/config/xray-manager.example /etc/config/xray-manager
|
||||||
# Инит-скрипт для управления сервисом
|
# Инит-скрипт для управления сервисом
|
||||||
ln -s /opt/.xray-manager/init.d/xray-manager /etc/init.d/xray-manager
|
ln -s /opt/.xray-manager/init.d/xray-manager /etc/init.d/xray-manager
|
||||||
# Команда в PATH для быстрого доступа из любой папки
|
# Команда в PATH для быстрого доступа из любой папки
|
||||||
@@ -54,7 +54,7 @@ ln -s /opt/.xray-manager/xray-manager.sh /usr/sbin/xray-manager
|
|||||||
|
|
||||||
* **/etc/init.d/xray-manager start** — **Холодный запуск** <br> Полная инициализация системы: создание таблиц nftables, цепочек и правил. При первом запуске скрипт автоматически скачает все списки из URL. Если списки уже есть в кэше — применит их.
|
* **/etc/init.d/xray-manager start** — **Холодный запуск** <br> Полная инициализация системы: создание таблиц nftables, цепочек и правил. При первом запуске скрипт автоматически скачает все списки из URL. Если списки уже есть в кэше — применит их.
|
||||||
|
|
||||||
* **/etc/init.d/xray-manager reload** — **Локальное обновление** <br> Применяет изменения, внесенные в конфигурационный файл /etc/config/xray-manager (например, изменение портов или добавление новых секций), но не обращается к сети. Если вы изменили URL в конфиге, скрипт выдаст предупреждение о необходимости запуска update.
|
* **/etc/init.dИ отредактируйте/xray-manager reload** — **Локальное обновление** <br> Применяет изменения, внесенные в конфигурационный файл /etc/config/xray-manager (например, изменение портов или добавление новых секций), но не обращается к сети. Если вы изменили URL в конфиге, скрипт выдаст предупреждение о необходимости запуска update.
|
||||||
|
|
||||||
* **/etc/init.d/xray-manager update** — **Умная синхронизация** <br> Скрипт опрашивает все внешние URL. Благодаря системе хеширования (Hashing), загрузка и пересборка правил произойдет только для тех списков, которые реально изменились на удаленном сервере. Это экономит трафик и минимизирует нагрузку на процессор роутера.
|
* **/etc/init.d/xray-manager update** — **Умная синхронизация** <br> Скрипт опрашивает все внешние URL. Благодаря системе хеширования (Hashing), загрузка и пересборка правил произойдет только для тех списков, которые реально изменились на удаленном сервере. Это экономит трафик и минимизирует нагрузку на процессор роутера.
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ config xray-list
|
|||||||
option name 'proxyserver'
|
option name 'proxyserver'
|
||||||
option direction 'dst'
|
option direction 'dst'
|
||||||
option exclude '1'
|
option exclude '1'
|
||||||
list ip '178.173.249.148'
|
list ip ''
|
||||||
|
|
||||||
config xray-list
|
config xray-list
|
||||||
option name 'local'
|
option name 'local'
|
||||||
@@ -42,13 +42,6 @@ config xray-list
|
|||||||
option exclude '0'
|
option exclude '0'
|
||||||
list ip '192.168.1.0/24'
|
list ip '192.168.1.0/24'
|
||||||
|
|
||||||
config xray-list
|
|
||||||
option name 'cf-dns'
|
|
||||||
option direction 'dst'
|
|
||||||
option exclude '1'
|
|
||||||
list ip '1.1.1.1'
|
|
||||||
list ip '1.0.0.1'
|
|
||||||
|
|
||||||
config xray-list
|
config xray-list
|
||||||
option name 'refilter'
|
option name 'refilter'
|
||||||
option direction 'dst'
|
option direction 'dst'
|
||||||
+9
-3
@@ -18,13 +18,14 @@ _init_vars() {
|
|||||||
TPROXY_PORT=$(uci -q get xray-manager.$s.tproxy_port)
|
TPROXY_PORT=$(uci -q get xray-manager.$s.tproxy_port)
|
||||||
TPROXY_MARK=$(uci -q get xray-manager.$s.tproxy_mark)
|
TPROXY_MARK=$(uci -q get xray-manager.$s.tproxy_mark)
|
||||||
CLIENT_MARK=$(uci -q get xray-manager.$s.client_mark)
|
CLIENT_MARK=$(uci -q get xray-manager.$s.client_mark)
|
||||||
|
TIMEOUT=$(uci -q get xray-manager.$s.timeout)
|
||||||
IPNET_DIR=$(uci -q get xray-manager.$s.ipnet_dir)
|
IPNET_DIR=$(uci -q get xray-manager.$s.ipnet_dir)
|
||||||
DNSMASQ_DIR=$(uci -q get xray-manager.$s.dnsmasq_dir)
|
DNSMASQ_DIR=$(uci -q get xray-manager.$s.dnsmasq_dir)
|
||||||
CACHE_DIR=$(uci -q get xray-manager.$s.cache_dir)
|
CACHE_DIR=$(uci -q get xray-manager.$s.cache_dir)
|
||||||
ACTIVE_LIST=$(uci -q get xray-manager.$s.active_list)
|
ACTIVE_LIST=$(uci -q get xray-manager.$s.active_list)
|
||||||
ROUTE_LOCAL=$(uci -q get xray-manager.$s.route_local)
|
ROUTE_LOCAL=$(uci -q get xray-manager.$s.route_local)
|
||||||
|
|
||||||
local required_vars="TABLE TPROXY_PORT TPROXY_MARK CLIENT_MARK IPNET_DIR DNSMASQ_DIR CACHE_DIR ACTIVE_LIST ROUTE_LOCAL"
|
local required_vars="TABLE TPROXY_PORT TPROXY_MARK CLIENT_MARK TIMEOUT IPNET_DIR DNSMASQ_DIR CACHE_DIR ACTIVE_LIST ROUTE_LOCAL"
|
||||||
|
|
||||||
for var in $required_vars; do
|
for var in $required_vars; do
|
||||||
eval val=\$$var
|
eval val=\$$var
|
||||||
@@ -112,9 +113,14 @@ _nft_apply_data() {
|
|||||||
|
|
||||||
local nft_sname="s_$sname"
|
local nft_sname="s_$sname"
|
||||||
local flags="interval"
|
local flags="interval"
|
||||||
[ "$type" = "dom" ] || [ "$type" = "udom" ] && flags="interval,timeout"
|
local set_params="type ipv4_addr; flags $flags; auto-merge;"
|
||||||
|
|
||||||
nft add set ip "$TABLE" "$nft_sname" { type ipv4_addr \; flags $flags \; auto-merge \; } 2>/dev/null
|
if [ "$type" = "dom" ] || [ "$type" = "udom" ]; then
|
||||||
|
flags="interval,timeout"
|
||||||
|
set_params="type ipv4_addr; flags $flags; timeout $TIMEOUT; auto-merge;"
|
||||||
|
fi
|
||||||
|
|
||||||
|
nft add set ip "$TABLE" "$nft_sname" { $set_params } 2>/dev/null
|
||||||
|
|
||||||
if [ "$changed" = "1" ] && [ -s "$file" ] && [[ "$type" == *"ip"* ]]; then
|
if [ "$changed" = "1" ] && [ -s "$file" ] && [[ "$type" == *"ip"* ]]; then
|
||||||
_log "Syncing '$nft_sname' to NFT..."
|
_log "Syncing '$nft_sname' to NFT..."
|
||||||
|
|||||||
Reference in New Issue
Block a user