-
Notifications
You must be signed in to change notification settings - Fork 0
155 lines (124 loc) · 5.34 KB
/
Copy pathupdate.yml
File metadata and controls
155 lines (124 loc) · 5.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
name: Build SingBox Configs
on:
schedule:
- cron: '0 * * * *'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Build configs
run: |
SUB=$(curl -s "https://raw.githack.com/igareck/vpn-configs-for-russia/main/Vless-Reality-White-Lists-Rus-Mobile.txt" | tr -d '\r')
ALL=$(echo "$SUB" | grep -E '^(vless|vmess|trojan)://')
RUSSIA=$(echo "$ALL" | grep -Ei 'russia' || true)
NON_RUSSIA=$(echo "$ALL" | grep -Evi 'russia' | shuf || true)
make_config () {
SIZE=$1
RU_PREF=$2
OUT=$3
# Берем указанное количество русских ключей
RU=$(echo "$RUSSIA" | head -n "$RU_PREF")
RU_COUNT=$(echo "$RU" | grep -c . || true)
# Если русских меньше, чем RU_PREF, добираем из NON_RUSSIA
NEED=$((SIZE - RU_COUNT))
NONRU=""
if [ "$NEED" -gt 0 ]; then
NONRU=$(echo "$NON_RUSSIA" | head -n "$NEED")
fi
# Финальный список (только русские, если хватает)
FINAL=$(printf "%s\n%s\n" "$RU" "$NONRU" | grep .)
echo "Building $OUT with $(echo "$FINAL" | grep -c .) nodes..."
echo " - Russian nodes: $RU_COUNT"
echo " - Non-Russian nodes: $(echo "$NONRU" | grep -c . || echo 0)"
jq -n --arg input "$FINAL" '{
core: "singbox",
input: $input,
options: {
addTun: true,
addSocks: true,
genClashSecret: false,
useExtended: false
}
}' \
| curl -sS -X POST "https://api.web2core.workers.dev/" \
-H "Content-Type: application/json" \
--data-binary @- \
> "$OUT"
}
make_foreign () {
SIZE=$1
OUT=$2
FOREIGN=$(echo "$NON_RUSSIA" | shuf | head -n "$SIZE")
jq -n --arg input "$FOREIGN" '{
core: "singbox",
input: $input,
options: {
addTun: true,
addSocks: true,
genClashSecret: false,
useExtended: false
}
}' \
| curl -sS -X POST "https://api.web2core.workers.dev/" \
-H "Content-Type: application/json" \
--data-binary @- \
> "$OUT"
}
# ---------------- RU HYBRID (только русские, NON-RU только если не хватает) ----------------
make_config 5 5 config5.json # 5 русских, если не хватает - добираем
make_config 7 7 config7.json # 7 русских
make_config 10 10 config10.json # 10 русских
# shuffled duplicates (та же логика)
make_config 5 5 config5_b.json
make_config 7 7 config7_b.json
make_config 10 10 config10_b.json
# ---------------- FOREIGN ONLY (только нерусские) ----------------
make_foreign 5 config5_foreign.json
make_foreign 10 config10_foreign.json
# ---------------- PATCH URLTEST ----------------
patch_interval () {
FILE=$1
INTERVAL=$2
echo "Patching $FILE -> interval=$INTERVAL"
jq --arg interval "$INTERVAL" '
(.outbounds[] | select(.type=="urltest") | .interval) = $interval |
(.outbounds[] | select(.type=="urltest") | .tolerance) = 50
' "$FILE" > tmp.json && mv tmp.json "$FILE"
}
# 5-series → 1m
patch_interval config5.json "1m"
patch_interval config5_b.json "1m"
patch_interval config5_foreign.json "1m"
# all others → 2m
patch_interval config7.json "2m"
patch_interval config7_b.json "2m"
patch_interval config10.json "2m"
patch_interval config10_b.json "2m"
patch_interval config10_foreign.json "2m"
- name: Commit configs
run: |
git config user.name "github-actions"
git config user.email "actions@github.com"
git add config*.json
git commit -m "auto update sing-box configs" || exit 0
git push
# === НОВЫЙ ШАГ ДЛЯ ЗАГРУЗКИ НА ЯНДЕКС.ДИСК ===
- name: Upload to Yandex Disk via WebDAV
env:
YA_LOGIN: ${{ secrets.YANDEX_NAME }}
YA_PASS: ${{ secrets.YANDEX_TOKEN }}
run: |
# Кодируем логин:пароль в base64 (правильный способ для WebDAV) [citation:3][citation:9]
AUTH_HEADER=$(echo -n "$YA_LOGIN:$YA_PASS" | base64)
# Создаём папку
curl -s -X MKCOL "https://webdav.yandex.ru/SingBox_Configs/" \
-H "Authorization: Basic $AUTH_HEADER"
# Загружаем файлы
for file in config*.json; do
echo "Uploading $file..."
curl -s -T "$file" "https://webdav.yandex.ru/SingBox_Configs/$file" \
-H "Authorization: Basic $AUTH_HEADER"
done