refactor: module-based strategy architecture

- Add sync_from_upstream.sh: clones Flowseal repo, merges lists/hosts, auto-detects new .bat strategies
- Add strategies/*.conf config files (extracted from .bat)
- Rewrite run_strategy.sh: loads .conf, substitutes %BIN%/%LISTS%/%GAME_*% using sed (no envsubst)
- Rewrite update.sh: pipeline is now sync→rebuild→test→install
- Add ensure_wrappers.sh: auto-creates general_*.sh wrappers from .conf
- Fix all 'local outside function' runtime bugs
- install.sh now calls sync_from_upstream.sh first
This commit is contained in:
2026-05-10 19:46:14 +04:00
parent b75d75931d
commit 7aeb16856d
6 changed files with 477 additions and 535 deletions
+22
View File
@@ -0,0 +1,22 @@
# Strategy: general
# Description: Standard multisplit strategy
# Based on: general.bat (Flowseal 1.9.8c)
# Common rules
RULE1=--filter-udp=443 --hostlist="%LISTS%/list-general.txt" --hostlist="%LISTS%/list-general-user.txt" --hostlist-exclude="%LISTS%/list-exclude.txt" --hostlist-exclude="%LISTS%/list-exclude-user.txt" --ipset-exclude="%LISTS%/ipset-exclude.txt" --ipset-exclude="%LISTS%/ipset-exclude-user.txt" --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic="%BIN%/quic_initial_www_google_com.bin"
RULE2=--filter-udp=19294-19344,50000-50100 --filter-l7=discord,stun --dpi-desync=fake --dpi-desync-fake-discord="%BIN%/quic_initial_dbankcloud_ru.bin" --dpi-desync-fake-stun="%BIN%/quic_initial_dbankcloud_ru.bin" --dpi-desync-repeats=6
RULE3=--filter-tcp=2053,2083,2087,2096,8443 --hostlist-domains=discord.media --dpi-desync=multisplit --dpi-desync-split-seqovl=681 --dpi-desync-split-pos=1 --dpi-desync-split-seqovl-pattern="%BIN%/tls_clienthello_www_google_com.bin"
RULE4=--filter-tcp=443 --hostlist="%LISTS%/list-google.txt" --ip-id=zero --dpi-desync=multisplit --dpi-desync-split-seqovl=681 --dpi-desync-split-pos=1 --dpi-desync-split-seqovl-pattern="%BIN%/tls_clienthello_www_google_com.bin"
RULE5=--filter-tcp=80,443 --hostlist="%LISTS%/list-general.txt" --hostlist="%LISTS%/list-general-user.txt" --hostlist-exclude="%LISTS%/list-exclude.txt" --hostlist-exclude="%LISTS%/list-exclude-user.txt" --ipset-exclude="%LISTS%/ipset-exclude.txt" --ipset-exclude="%LISTS%/ipset-exclude-user.txt" --dpi-desync=multisplit --dpi-desync-split-seqovl=568 --dpi-desync-split-pos=1 --dpi-desync-split-seqovl-pattern="%BIN%/tls_clienthello_4pda_to.bin"
RULE6=--filter-udp=443 --ipset="%LISTS%/ipset-all.txt" --hostlist-exclude="%LISTS%/list-exclude.txt" --hostlist-exclude="%LISTS%/list-exclude-user.txt" --ipset-exclude="%LISTS%/ipset-exclude.txt" --ipset-exclude="%LISTS%/ipset-exclude-user.txt" --dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-fake-quic="%BIN%/quic_initial_www_google_com.bin"
RULE7=--filter-tcp=80,443,8443 --ipset="%LISTS%/ipset-all.txt" --hostlist-exclude="%LISTS%/list-exclude.txt" --hostlist-exclude="%LISTS%/list-exclude-user.txt" --ipset-exclude="%LISTS%/ipset-exclude.txt" --ipset-exclude="%LISTS%/ipset-exclude-user.txt" --dpi-desync=multisplit --dpi-desync-split-seqovl=568 --dpi-desync-split-pos=1 --dpi-desync-split-seqovl-pattern="%BIN%/tls_clienthello_4pda_to.bin"
RULE8=--filter-tcp=%GAME_TCP% --ipset="%LISTS%/ipset-all.txt" --ipset-exclude="%LISTS%/ipset-exclude.txt" --ipset-exclude="%LISTS%/ipset-exclude-user.txt" --dpi-desync=multisplit --dpi-desync-any-protocol=1 --dpi-desync-cutoff=n3 --dpi-desync-split-seqovl=568 --dpi-desync-split-pos=1 --dpi-desync-split-seqovl-pattern="%BIN%/tls_clienthello_4pda_to.bin"
RULE9=--filter-udp=%GAME_UDP% --ipset="%LISTS%/ipset-all.txt" --ipset-exclude="%LISTS%/ipset-exclude.txt" --ipset-exclude="%LISTS%/ipset-exclude-user.txt" --dpi-desync=fake --dpi-desync-repeats=12 --dpi-desync-any-protocol=1 --dpi-desync-fake-unknown-udp="%BIN%/quic_initial_dbankcloud_ru.bin" --dpi-desync-cutoff=n2