Skip to content

Commit 6c0ea0c

Browse files
authored
Update update.yml
1 parent b1c3ba4 commit 6c0ea0c

1 file changed

Lines changed: 48 additions & 21 deletions

File tree

.github/workflows/update.yml

Lines changed: 48 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,31 @@ jobs:
2121
ALL=$(echo "$SUB" | grep -E '^(vless|vmess|trojan)://')
2222
2323
RUSSIA=$(echo "$ALL" | grep -Ei 'russia' || true)
24-
NON_RUSSIA=$(echo "$ALL" | grep -Evi 'russia' || true)
24+
25+
NON_RUSSIA=$(echo "$ALL" | grep -Evi 'russia' | shuf || true)
2526
2627
make_config () {
2728
SIZE=$1
2829
RU_PREF=$2
2930
OUT=$3
3031
31-
# Берём ТОЛЬКО русские узлы в количестве RU_PREF
32+
# Берем указанное количество русских ключей
3233
RU=$(echo "$RUSSIA" | head -n "$RU_PREF")
3334
RU_COUNT=$(echo "$RU" | grep -c . || true)
3435
35-
# Если русских не хватает до SIZE, добираем НЕ-русскими
36-
if [ "$RU_COUNT" -lt "$SIZE" ]; then
37-
NEED=$((SIZE - RU_COUNT))
38-
NONRU=$(echo "$NON_RUSSIA" | shuf | head -n "$NEED")
39-
FINAL=$(printf "%s\n%s\n" "$RU" "$NONRU" | grep .)
40-
else
41-
# Если русских достаточно — используем только их (обрезаем до SIZE)
42-
FINAL=$(echo "$RU" | head -n "$SIZE")
36+
# Если русских меньше, чем RU_PREF, добираем из NON_RUSSIA
37+
NEED=$((SIZE - RU_COUNT))
38+
NONRU=""
39+
if [ "$NEED" -gt 0 ]; then
40+
NONRU=$(echo "$NON_RUSSIA" | head -n "$NEED")
4341
fi
4442
43+
# Финальный список (только русские, если хватает)
44+
FINAL=$(printf "%s\n%s\n" "$RU" "$NONRU" | grep .)
45+
4546
echo "Building $OUT with $(echo "$FINAL" | grep -c .) nodes..."
47+
echo " - Russian nodes: $RU_COUNT"
48+
echo " - Non-Russian nodes: $(echo "$NONRU" | grep -c . || echo 0)"
4649
4750
jq -n --arg input "$FINAL" '{
4851
core: "singbox",
@@ -60,13 +63,6 @@ jobs:
6063
> "$OUT"
6164
}
6265
63-
# Все конфиги, кроме foreign, теперь используют ТОЛЬКО русские ключи,
64-
# добавляя NON-RU только если русских не хватает до требуемого размера
65-
make_config 5 5 config5.json
66-
make_config 7 7 config7.json
67-
make_config 10 10 config10.json
68-
69-
# PURE FOREIGN (без изменений — только иностранные узлы)
7066
make_foreign () {
7167
SIZE=$1
7268
OUT=$2
@@ -89,21 +85,52 @@ jobs:
8985
> "$OUT"
9086
}
9187
92-
make_foreign 5 config5_foreign.json
93-
make_foreign 10 config10_foreign.json
88+
# ---------------- RU HYBRID (только русские, NON-RU только если не хватает) ----------------
89+
make_config 5 5 config5.json # 5 русских, если не хватает - добираем
90+
make_config 7 7 config7.json # 7 русских
91+
make_config 10 10 config10.json # 10 русских
9492
95-
# shuffled duplicates (теперь тоже с приоритетом русских)
93+
# shuffled duplicates (та же логика)
9694
make_config 5 5 config5_b.json
9795
make_config 7 7 config7_b.json
9896
make_config 10 10 config10_b.json
9997
98+
# ---------------- FOREIGN ONLY (только нерусские) ----------------
99+
make_foreign 5 config5_foreign.json
100+
make_foreign 10 config10_foreign.json
101+
102+
# ---------------- PATCH URLTEST ----------------
103+
patch_interval () {
104+
FILE=$1
105+
INTERVAL=$2
106+
107+
echo "Patching $FILE -> interval=$INTERVAL"
108+
109+
jq --arg interval "$INTERVAL" '
110+
(.outbounds[] | select(.type=="urltest") | .interval) = $interval |
111+
(.outbounds[] | select(.type=="urltest") | .tolerance) = 50
112+
' "$FILE" > tmp.json && mv tmp.json "$FILE"
113+
}
114+
115+
# 5-series → 1m
116+
patch_interval config5.json "1m"
117+
patch_interval config5_b.json "1m"
118+
patch_interval config5_foreign.json "1m"
119+
120+
# all others → 2m
121+
patch_interval config7.json "2m"
122+
patch_interval config7_b.json "2m"
123+
patch_interval config10.json "2m"
124+
patch_interval config10_b.json "2m"
125+
patch_interval config10_foreign.json "2m"
126+
100127
- name: Commit configs
101128
run: |
102129
git config user.name "github-actions"
103130
git config user.email "actions@github.com"
104131
105132
git add config*.json
106133
107-
git commit -m "extended multi-config system" || exit 0
134+
git commit -m "auto update sing-box configs" || exit 0
108135
109136
git push

0 commit comments

Comments
 (0)