initial commit
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
# xray-lists
|
||||
|
||||
Утилита для скачивания списков ip/cidr и доменов с последующей генерацией готовых файлов для nftables и dnsmasq
|
||||
|
||||
## Установка
|
||||
|
||||
1. Склонируйте репозиторий в /opt/xray-lists-src
|
||||
|
||||
2. Подготовьте окружение:
|
||||
|
||||
```bash
|
||||
apt install python3-venv
|
||||
python3 -m venv /opt/xray-lists/venv
|
||||
|
||||
/opt/xray-lists/venv/bin/pip install /opt/xray-lists-src
|
||||
/opt/xray-lists/venv/bin/pip install '/opt/xray-lists-src[socks]' # опционально, для socks прокси
|
||||
|
||||
mkdir -p /var/lib/xray-lists/
|
||||
cp /opt/xray-lists-src/config.example.yaml /var/lib/xray-lists/config.yaml
|
||||
```
|
||||
|
||||
3. Создаём скрипт хелпер `/var/lib/xray-lists/update.sh`:
|
||||
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
out=$(/opt/xray-lists/venv/bin/xray-lists)
|
||||
echo "$out"
|
||||
|
||||
dns_changed=0
|
||||
elements_changed=0
|
||||
|
||||
if echo "$out" | grep -A 10 "changed:" | grep -q "nftsets.conf"; then dns_changed=1; fi
|
||||
if echo "$out" | grep -A 10 "changed:" | grep -q "\.elements\.nft"; then elements_changed=1; fi
|
||||
|
||||
if [ "$dns_changed" -eq 1 ] && [ "$elements_changed" -eq 1 ]; then exit 12;
|
||||
elif [ "$dns_changed" -eq 1 ]; then exit 10;
|
||||
elif [ "$elements_changed" -eq 1 ]; then exit 11;
|
||||
fi
|
||||
|
||||
exit 0
|
||||
```
|
||||
|
||||
4. Делаем скрипт исполняемым:
|
||||
|
||||
```bash
|
||||
chmod +x /var/lib/xray-lists/update.sh
|
||||
```
|
||||
|
||||
## Использование
|
||||
|
||||
### Запуск программы:
|
||||
|
||||
```bash
|
||||
/opt/xray-lists/venv/bin/xray-lists
|
||||
```
|
||||
|
||||
#### Флаги
|
||||
|
||||
- `-h, --help` - список и опиание флаговё
|
||||
- `--config <path>` - кастомный путь к конфигу
|
||||
- `--only <id>` - обновление только конкретного списка по его ID (можно через запятую)
|
||||
- `--dry-run` - проверка загрузки и обработки без записи файлов на диск
|
||||
- `-v, --verbose` - подробные лог
|
||||
|
||||
### Автоматизация через systemd
|
||||
|
||||
Чтобы утилита запускалась автоматически по расписанию (например, раз в сутки или при старте системы), настроим пару юнитов systemd.
|
||||
|
||||
1. Создайте файл службы `/etc/systemd/system/xray-lists.service`:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=Update Xray lists
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/sh -c '\
|
||||
/var/lib/xray-lists/update.sh; \
|
||||
rc=$$?; \
|
||||
case "$$rc" in \
|
||||
10) systemctl restart dnsmasq ;; \
|
||||
11) nft -f /etc/nftables.conf ;; \
|
||||
12) nft -f /etc/nftables.conf && systemctl restart dnsmasq ;; \
|
||||
esac'
|
||||
```
|
||||
|
||||
2. Cоздайте файл таймера `/etc/systemd/system/xray-lists.timer`:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=Run xray-lists update daily and on boot
|
||||
|
||||
[Timer]
|
||||
OnBootSec=5min
|
||||
OnUnitActiveSec=12h
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
```
|
||||
|
||||
3. Включите и запустите таймер:
|
||||
|
||||
```bash
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now xray-lists.timer
|
||||
```
|
||||
|
||||
#### Проверить статус таймера и посмотреть, когда запланирован следующий запуск, можно командой:
|
||||
|
||||
```bash
|
||||
systemctl list-timers --all
|
||||
```
|
||||
#### Посмотреть логи работы скрипта можно через journalctl:
|
||||
|
||||
```bash
|
||||
journalctl -u xray-lists.service -b
|
||||
```
|
||||
Reference in New Issue
Block a user