Initial release of Kaskad

Каскадная маршрутизация русских сайтов через свой набор RU-серверов
с failover, Telegram-ботом и веб-интерфейсом.

- bin/        — failover-script, route/domain helpers, ams/ru bootstrap
- bot/        — Telegram-бот (Python, long-poll)
- webui/      — Flask single-page dashboard
- docs/       — установка, архитектура, API бота и WebUI
- examples/   — шаблоны конфигов
This commit is contained in:
andrey271192
2026-05-02 09:13:10 +03:00
parent 7a2a41510c
commit 209caa81a8
22 changed files with 2802 additions and 0 deletions

25
bin/ru-set.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/bash
set -u
ID="${1:-}"
[ -z "$ID" ] && { echo "usage: $0 <server_id>"; exit 1; }
DATA=$(python3 -c "
import json, sys
try:
data = json.load(open('/etc/wireguard/ru-servers.json'))
except Exception as e:
print('ERR: '+str(e), file=sys.stderr); sys.exit(2)
for s in data['servers']:
if s['id'] == sys.argv[1]:
print(s['pubkey'] + '|' + s['endpoint'] + '|' + s['label']); sys.exit(0)
sys.exit(1)
" "$ID")
[ -z "$DATA" ] && { echo "unknown server: $ID"; exit 1; }
PK="${DATA%%|*}"; rest="${DATA#*|}"; EP="${rest%%|*}"; LABEL="${rest#*|}"
sed -i "s|^PublicKey = .*|PublicKey = $PK|" /etc/wireguard/ru.conf
sed -i "s|^Endpoint = .*|Endpoint = $EP|" /etc/wireguard/ru.conf
wg syncconf ru <(wg-quick strip ru)
/usr/local/bin/ru-routes.sh apply >/dev/null 2>&1 || true
mkdir -p /var/lib/ru-failover
date +%s > /var/lib/ru-failover/last_switch
echo 0 > /var/lib/ru-failover/test_started
echo "OK: ru → $LABEL ($EP)"