mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-17 08:49:00 +00:00
Compare commits
680 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a00022ea2 | ||
|
|
8f781874e3 | ||
|
|
b4363195f3 | ||
|
|
8bcaac1f66 | ||
|
|
e84bca30b9 | ||
|
|
81d6b36c51 | ||
|
|
0f96cc8c0e | ||
|
|
c5da0da08a | ||
|
|
ed635b871a | ||
|
|
a32b05a391 | ||
|
|
9e78370c5c | ||
|
|
c66c642ca2 | ||
|
|
bd9abee53f | ||
|
|
4f9b066015 | ||
|
|
2c9eda6cc6 | ||
|
|
a6cc498cbd | ||
|
|
d032742984 | ||
|
|
c373b0b7b0 | ||
|
|
31bf9915c6 | ||
|
|
cae9613225 | ||
|
|
02a342cbd1 | ||
|
|
1fbade025a | ||
|
|
65244e51da | ||
|
|
1087f57893 | ||
|
|
f5394120e1 | ||
|
|
0a52ef2531 | ||
|
|
24fc10a59f | ||
|
|
5d4fcc2271 | ||
|
|
8083166256 | ||
|
|
a15b431e97 | ||
|
|
0589bc7881 | ||
|
|
3b578c7988 | ||
|
|
7f73133657 | ||
|
|
952e1a8f63 | ||
|
|
2c6e23e54d | ||
|
|
b3ac793f6e | ||
|
|
37269ef851 | ||
|
|
f2ce2fb9b4 | ||
|
|
d86969bf9b | ||
|
|
cd170e9b27 | ||
|
|
1c1d2ddac2 | ||
|
|
e5489f3c91 | ||
|
|
93ad3c133c | ||
|
|
b6bc1e9f72 | ||
|
|
dfc6910bc3 | ||
|
|
1afb261d0e | ||
|
|
e693b7ad35 | ||
|
|
fa72c49f2f | ||
|
|
32d73c18c4 | ||
|
|
cb9d5a783b | ||
|
|
c4bdd18195 | ||
|
|
7f0b0fa870 | ||
|
|
d5d9fab8e0 | ||
|
|
053f05d394 | ||
|
|
fc1c3c4415 | ||
|
|
623414bfa9 | ||
|
|
09bbe6f402 | ||
|
|
524c8a4268 | ||
|
|
b883e20b3e | ||
|
|
347f4668b4 | ||
|
|
5e05fea6f0 | ||
|
|
77113c81a4 | ||
|
|
3f39be82c4 | ||
|
|
3aeaec6ae4 | ||
|
|
aad43f15b3 | ||
|
|
1b2521290f | ||
|
|
642ac95ae9 | ||
|
|
2fc3a18df4 | ||
|
|
abb7d462a1 | ||
|
|
6a1d4086f3 | ||
|
|
b59da3be8a | ||
|
|
76efd54d03 | ||
|
|
ace8b08407 | ||
|
|
f70e642fea | ||
|
|
614bc696bb | ||
|
|
cd7d4232b6 | ||
|
|
f8e4450222 | ||
|
|
c92355742e | ||
|
|
fd3cfe3881 | ||
|
|
6e83081865 | ||
|
|
901b4b30c0 | ||
|
|
3aaa8b6460 | ||
|
|
8a37ff52b6 | ||
|
|
a34dac4e22 | ||
|
|
70aa90f584 | ||
|
|
228badb65f | ||
|
|
dec6b6bf6f | ||
|
|
e244730f16 | ||
|
|
28eea7c2bc | ||
|
|
fd4ca02ff3 | ||
|
|
b3010958ae | ||
|
|
47e668152b | ||
|
|
6fc2adc9b0 | ||
|
|
25c48ecc4b | ||
|
|
ac088c1adf | ||
|
|
7d2e1c54c4 | ||
|
|
f3cd3ff18a | ||
|
|
1196557d4c | ||
|
|
1af6cf36d2 | ||
|
|
1f59a971cf | ||
|
|
9cad2c21e8 | ||
|
|
0b1d297622 | ||
|
|
0ca7bb8eb2 | ||
|
|
1bd16b5ca6 | ||
|
|
643cd7ccae | ||
|
|
65996d6a54 | ||
|
|
111b151cba | ||
|
|
b1366df6b1 | ||
|
|
de154158fa | ||
|
|
eac695a0f5 | ||
|
|
b65cd1f54c | ||
|
|
ce1295610d | ||
|
|
1f6535c532 | ||
|
|
84008a81bd | ||
|
|
5ea24d1ca4 | ||
|
|
a38c50fa1c | ||
|
|
be60423f08 | ||
|
|
88ae50bc43 | ||
|
|
fe27f4c3e4 | ||
|
|
8cab9b5419 | ||
|
|
41bd93766b | ||
|
|
7f52ee60d9 | ||
|
|
d7f93d1e62 | ||
|
|
346d480a13 | ||
|
|
89cf950490 | ||
|
|
ced3c3ac59 | ||
|
|
3682a99a79 | ||
|
|
70b2816c04 | ||
|
|
b348535414 | ||
|
|
8fc3f34ca8 | ||
|
|
1129eb79b5 | ||
|
|
4e96a8c9b1 | ||
|
|
dfae7195b3 | ||
|
|
b493fba176 | ||
|
|
6fd9f9df03 | ||
|
|
da23b70ca4 | ||
|
|
70bd8ed591 | ||
|
|
b17286b73b | ||
|
|
d63b75b790 | ||
|
|
2536cae8fe | ||
|
|
07920b35ce | ||
|
|
01174fa6d4 | ||
|
|
7aa4a49ec9 | ||
|
|
83bed2f3f3 | ||
|
|
2625d7f4e4 | ||
|
|
6fdc38b4b0 | ||
|
|
44907fb3a2 | ||
|
|
a5c2dcd482 | ||
|
|
7c7ce098cb | ||
|
|
6170a0461d | ||
|
|
48705a0dd9 | ||
|
|
4a2a982c8d | ||
|
|
1dadeb8d7a | ||
|
|
f128560d97 | ||
|
|
4f119380a4 | ||
|
|
17f30cba33 | ||
|
|
38d081f40a | ||
|
|
6e41971725 | ||
|
|
bbe711b1ce | ||
|
|
bae05042db | ||
|
|
ee523035a6 | ||
|
|
aae0bd1880 | ||
|
|
95909e84c2 | ||
|
|
847010399d | ||
|
|
517675ff53 | ||
|
|
178228d8ec | ||
|
|
b9a29a69a7 | ||
|
|
a0901b8083 | ||
|
|
399928f6ea | ||
|
|
13b291ccc7 | ||
|
|
f99d5f974b | ||
|
|
692f2590d5 | ||
|
|
243e51dd5c | ||
|
|
2b3720b8f3 | ||
|
|
0261e5ecd4 | ||
|
|
6d904eb297 | ||
|
|
d2d25a60eb | ||
|
|
5e58823cee | ||
|
|
215fc29c35 | ||
|
|
21366a0667 | ||
|
|
6077061ba4 | ||
|
|
62a54a458a | ||
|
|
e468129572 | ||
|
|
d00f558ae2 | ||
|
|
60bee9039d | ||
|
|
acff8898a2 | ||
|
|
019ab1bd07 | ||
|
|
a71ca7c362 | ||
|
|
27d7b0cdf1 | ||
|
|
3ae53623d7 | ||
|
|
1211c48dbd | ||
|
|
d98501fe66 | ||
|
|
828d70e4f8 | ||
|
|
0014c5c32a | ||
|
|
961aeb5bb1 | ||
|
|
daee138365 | ||
|
|
9029a2ce82 | ||
|
|
219279c165 | ||
|
|
89e6fe7faa | ||
|
|
64566495ff | ||
|
|
4a1e49e1f0 | ||
|
|
08afce3500 | ||
|
|
ccbe2468b8 | ||
|
|
7c91ab5c02 | ||
|
|
0ecfad2d2c | ||
|
|
71e4816020 | ||
|
|
f0eb2fc672 | ||
|
|
323b8cf61c | ||
|
|
241d3f2335 | ||
|
|
ca236f2651 | ||
|
|
7f403992b6 | ||
|
|
dc694f30c0 | ||
|
|
5a5b688ad5 | ||
|
|
b3fdf16591 | ||
|
|
4e0417c951 | ||
|
|
3759951575 | ||
|
|
e03be1f184 | ||
|
|
26fca6b359 | ||
|
|
aec40082b1 | ||
|
|
b93a63d94a | ||
|
|
3dcdd8a676 | ||
|
|
58508966de | ||
|
|
3188d08b34 | ||
|
|
022b78a4e3 | ||
|
|
a8f9aa4385 | ||
|
|
52070fbba3 | ||
|
|
ca72c5e1fc | ||
|
|
48ad7723ad | ||
|
|
60d945c3a2 | ||
|
|
a082c68a7b | ||
|
|
601c419154 | ||
|
|
3fe8f93500 | ||
|
|
ef07b31fd9 | ||
|
|
5647f60373 | ||
|
|
fed0bfeb90 | ||
|
|
358fd945f2 | ||
|
|
236fb8cd9a | ||
|
|
a91cfc44ca | ||
|
|
9ca503ec82 | ||
|
|
beab3386d2 | ||
|
|
8f60cc41e7 | ||
|
|
89975bdfff | ||
|
|
a45bd9c0d1 | ||
|
|
f4048b4b9c | ||
|
|
8fd77bb666 | ||
|
|
213eccc436 | ||
|
|
e8651591ff | ||
|
|
9b7c5e658c | ||
|
|
acf34714cc | ||
|
|
56cb4a327f | ||
|
|
a80c5b5c42 | ||
|
|
382a9b7be3 | ||
|
|
fc247210cb | ||
|
|
df6ea47e2e | ||
|
|
41595bb643 | ||
|
|
25c0680e3a | ||
|
|
90682a06f4 | ||
|
|
f7f39af5e3 | ||
|
|
a73efc839e | ||
|
|
8d82fcb88f | ||
|
|
f9be142dfa | ||
|
|
148251bb7f | ||
|
|
de7b57330e | ||
|
|
8902a742a2 | ||
|
|
496467332a | ||
|
|
7fc043ec49 | ||
|
|
3d01ec827d | ||
|
|
7336e73354 | ||
|
|
ce4953ba75 | ||
|
|
cb0142785a | ||
|
|
4f5a037cc4 | ||
|
|
b39311d0a7 | ||
|
|
0d002eb957 | ||
|
|
83139a4936 | ||
|
|
dfaf2da168 | ||
|
|
4f9d543e46 | ||
|
|
1b3e4892a1 | ||
|
|
f18d0e4f6f | ||
|
|
7bf661ee3d | ||
|
|
c98180fc4e | ||
|
|
950afe955d | ||
|
|
48ee1ba07b | ||
|
|
a4d2a3d7d6 | ||
|
|
d33fef974a | ||
|
|
77687d4581 | ||
|
|
e25be4fafc | ||
|
|
6b9f416315 | ||
|
|
4dc170bf4a | ||
|
|
966b59692e | ||
|
|
8fe56b622e | ||
|
|
4f9ffbb7d7 | ||
|
|
01848bdeea | ||
|
|
100dee42be | ||
|
|
1dd48baca2 | ||
|
|
3f6b38b5fb | ||
|
|
09d794083c | ||
|
|
8b2bff3b03 | ||
|
|
bd5b9b315e | ||
|
|
b5a314ce67 | ||
|
|
98a610eb58 | ||
|
|
8a9a294604 | ||
|
|
de9c890559 | ||
|
|
02129b3109 | ||
|
|
023e0caeb9 | ||
|
|
d0aca38039 | ||
|
|
7e3ec496be | ||
|
|
d023479daf | ||
|
|
599dcdb15b | ||
|
|
48fd622ba2 | ||
|
|
6aa56b0c29 | ||
|
|
bdc2505570 | ||
|
|
c72840d813 | ||
|
|
e028260a65 | ||
|
|
11498c1517 | ||
|
|
d26f724621 | ||
|
|
de3f4b4254 | ||
|
|
477eb3d2aa | ||
|
|
c52327a30c | ||
|
|
5d0a61f496 | ||
|
|
9ba5a687af | ||
|
|
3232c73233 | ||
|
|
1d76570c2c | ||
|
|
6dca739c3e | ||
|
|
0fb8c21c14 | ||
|
|
180629c8dd | ||
|
|
b4bbaba73d | ||
|
|
588afd7381 | ||
|
|
a6e26c0bd6 | ||
|
|
5ee05aafb3 | ||
|
|
056e50dea2 | ||
|
|
6a0a31d76e | ||
|
|
25e998c34a | ||
|
|
013305e455 | ||
|
|
c4a7d7a005 | ||
|
|
fa81312609 | ||
|
|
9360363478 | ||
|
|
db71fcd04a | ||
|
|
7422a3f3c8 | ||
|
|
77f30626b3 | ||
|
|
e20b33046b | ||
|
|
e99695a2f1 | ||
|
|
42d9f6c0b7 | ||
|
|
040accdef0 | ||
|
|
f7b50209f0 | ||
|
|
23040b3570 | ||
|
|
14b6118ee4 | ||
|
|
66d848581a | ||
|
|
b98a996cb4 | ||
|
|
1cef94d23c | ||
|
|
18e3046aa4 | ||
|
|
0b8733f00e | ||
|
|
04c5f088ba | ||
|
|
28de722560 | ||
|
|
5223400684 | ||
|
|
24bff21259 | ||
|
|
a3a8e9aa86 | ||
|
|
0317d12e1d | ||
|
|
27aefb7699 | ||
|
|
bacdf4675f | ||
|
|
58dd51b483 | ||
|
|
ff4f8673fc | ||
|
|
0c9d110437 | ||
|
|
b3b72b4b85 | ||
|
|
9c7bf11cfa | ||
|
|
c816d97893 | ||
|
|
c84a92b2e5 | ||
|
|
0cb57d1d7b | ||
|
|
329db0d9f2 | ||
|
|
48c60b8ea0 | ||
|
|
bd036da990 | ||
|
|
496e353a11 | ||
|
|
2ca471a361 | ||
|
|
eee4f17947 | ||
|
|
ebf0186266 | ||
|
|
7d8279c9df | ||
|
|
461387eaac | ||
|
|
0c7cf39e29 | ||
|
|
da92996385 | ||
|
|
ed6b4432e7 | ||
|
|
4e971176d2 | ||
|
|
63e6daca22 | ||
|
|
d01b96bdb3 | ||
|
|
ba5a7a3a69 | ||
|
|
2461c93b9f | ||
|
|
70b5c22fc2 | ||
|
|
ff278298c9 | ||
|
|
c626085679 | ||
|
|
8cf3ab2228 | ||
|
|
5cd8122c46 | ||
|
|
3907be4c3f | ||
|
|
b5cfedf3dc | ||
|
|
5ccf102791 | ||
|
|
0fad4c0d3e | ||
|
|
bdd13aa91b | ||
|
|
b6d19a7ac4 | ||
|
|
e460df9ca6 | ||
|
|
b3d2c8af69 | ||
|
|
635dcd7ee3 | ||
|
|
cb38a98332 | ||
|
|
feb3c2a421 | ||
|
|
8ea6a38213 | ||
|
|
9aa6f3d5bb | ||
|
|
5154339546 | ||
|
|
2cad4ec818 | ||
|
|
4c16236823 | ||
|
|
422db97e87 | ||
|
|
174cbabb93 | ||
|
|
a5668dd94b | ||
|
|
16e3e7a489 | ||
|
|
31ea92516f | ||
|
|
e66bd832e1 | ||
|
|
7422f5dcc3 | ||
|
|
82f5fce989 | ||
|
|
3977565ad1 | ||
|
|
281595f79f | ||
|
|
602f3e2890 | ||
|
|
e048264d9e | ||
|
|
7c3039ea68 | ||
|
|
690db2fe73 | ||
|
|
26831994b1 | ||
|
|
88dffde53c | ||
|
|
f9af59a7a9 | ||
|
|
06656b5694 | ||
|
|
617b8cf4b8 | ||
|
|
e3789ea1ce | ||
|
|
e545b728b5 | ||
|
|
f833bb9ce7 | ||
|
|
22b8e04717 | ||
|
|
328466584b | ||
|
|
48fee3d36d | ||
|
|
893ddd7268 | ||
|
|
27906ee244 | ||
|
|
aef509de62 | ||
|
|
b2be8ab3fd | ||
|
|
08f346a6f4 | ||
|
|
739ee5d22c | ||
|
|
2d7fbdb443 | ||
|
|
3797d95174 | ||
|
|
7c33c24f80 | ||
|
|
0860d177a1 | ||
|
|
0cf5e798b3 | ||
|
|
0e6471c155 | ||
|
|
cf3b94424c | ||
|
|
e4efd439bf | ||
|
|
545ce0da20 | ||
|
|
d630f7534e | ||
|
|
ffce704f5e | ||
|
|
a1a9b10a85 | ||
|
|
98adc4dad5 | ||
|
|
56d8bbadc2 | ||
|
|
7676a3f607 | ||
|
|
55b8266dfd | ||
|
|
a544637651 | ||
|
|
51ff53f1d7 | ||
|
|
97de3c8fe8 | ||
|
|
da11c319b8 | ||
|
|
d797838378 | ||
|
|
093fffee05 | ||
|
|
ac60ba8001 | ||
|
|
2e150ca9d9 | ||
|
|
0712905fbe | ||
|
|
10e50dc244 | ||
|
|
d708f0e113 | ||
|
|
ff0fa89717 | ||
|
|
24ed96a618 | ||
|
|
3e331d786f | ||
|
|
cfa9c58451 | ||
|
|
26ae84afd5 | ||
|
|
85396a6b5d | ||
|
|
3147bb650d | ||
|
|
b065a7d4c8 | ||
|
|
903d0592ce | ||
|
|
d4646030a5 | ||
|
|
263792d0cf | ||
|
|
ad969c9f27 | ||
|
|
ea0bec152e | ||
|
|
167ab30b29 | ||
|
|
4760708248 | ||
|
|
64de8c8146 | ||
|
|
4003a80c56 | ||
|
|
2f796af178 | ||
|
|
1c4b936722 | ||
|
|
75302adb1c | ||
|
|
912f281730 | ||
|
|
270a5d68ab | ||
|
|
1e76dc11e8 | ||
|
|
cd7de527fa | ||
|
|
b428d4c786 | ||
|
|
f150d14f80 | ||
|
|
492a2fe898 | ||
|
|
a0df852611 | ||
|
|
a8f42ba443 | ||
|
|
b93ac17f2e | ||
|
|
da30e623ce | ||
|
|
75b69e91b6 | ||
|
|
2e1744a993 | ||
|
|
6b34654705 | ||
|
|
abfa3049b3 | ||
|
|
d98f6ccef5 | ||
|
|
bcfc55b89b | ||
|
|
233b75b6e2 | ||
|
|
9383b69a1a | ||
|
|
f72192e801 | ||
|
|
2c5dfe04c8 | ||
|
|
8ef30efa31 | ||
|
|
6d1b2a0a26 | ||
|
|
2619b0991c | ||
|
|
b636b49eb6 | ||
|
|
5f3cade963 | ||
|
|
60747987e9 | ||
|
|
e42182cde6 | ||
|
|
26130510fa | ||
|
|
5032cf6d8b | ||
|
|
1c2474cf9e | ||
|
|
0a0e5c0af9 | ||
|
|
43cf4a914b | ||
|
|
236292ac9f | ||
|
|
ecb10510cf | ||
|
|
5306c8d3da | ||
|
|
45b12fc70b | ||
|
|
0b8bf53299 | ||
|
|
333a553b28 | ||
|
|
364fd54ced | ||
|
|
2e85085cf7 | ||
|
|
8cda75e055 | ||
|
|
22cd7766cd | ||
|
|
27dfc69f50 | ||
|
|
ef3ff50fbf | ||
|
|
f46cdade4d | ||
|
|
1d7be3a3a0 | ||
|
|
098a70c067 | ||
|
|
3770a0ebaf | ||
|
|
981d6f7ec0 | ||
|
|
496a10264a | ||
|
|
cca59fe5d2 | ||
|
|
a48ad916d2 | ||
|
|
d3f751e876 | ||
|
|
50351fe6dc | ||
|
|
7c8b0874bd | ||
|
|
3dec4a0d65 | ||
|
|
3772593f66 | ||
|
|
93ac1b1da9 | ||
|
|
0e9a14cc9d | ||
|
|
2ef2a3e4ec | ||
|
|
f218be0ff5 | ||
|
|
d0c0fe63dc | ||
|
|
4360f6a702 | ||
|
|
8faeec6cd2 | ||
|
|
8632dd9cb1 | ||
|
|
e57ae68396 | ||
|
|
6108f66acc | ||
|
|
5eb7f0988b | ||
|
|
3b4f3220dc | ||
|
|
dc1bf88840 | ||
|
|
fd9593f536 | ||
|
|
40a01428a5 | ||
|
|
b35f483652 | ||
|
|
2cfb2e5c08 | ||
|
|
7e1e7fa98d | ||
|
|
4238c7d433 | ||
|
|
7b07509887 | ||
|
|
7e51c8bec0 | ||
|
|
4b12ae7a28 | ||
|
|
6979ba9c83 | ||
|
|
ea92f3e701 | ||
|
|
760458cd58 | ||
|
|
849fc928ed | ||
|
|
ecca342893 | ||
|
|
f83c46a99a | ||
|
|
389a24c139 | ||
|
|
ea2a56f871 | ||
|
|
4f31373c5f | ||
|
|
26567c0862 | ||
|
|
a4363080bb | ||
|
|
4eb4ac5871 | ||
|
|
5158b36b1a | ||
|
|
ba1bd75666 | ||
|
|
4cdcb39f86 | ||
|
|
e6ef71510e | ||
|
|
6324cee884 | ||
|
|
24d7dda41e | ||
|
|
eb97732930 | ||
|
|
7c01df50fe | ||
|
|
5aafe92198 | ||
|
|
abb90eb6f0 | ||
|
|
69acd4ce7a | ||
|
|
5e27b3fbd6 | ||
|
|
7f9d256294 | ||
|
|
e655259d14 | ||
|
|
a86c64cd86 | ||
|
|
639557be27 | ||
|
|
08fc32d63e | ||
|
|
442d9f8401 | ||
|
|
963da8b15c | ||
|
|
6fe1938809 | ||
|
|
805d75720f | ||
|
|
ebba797473 | ||
|
|
69aa869dcd | ||
|
|
aedcfa7403 | ||
|
|
3d29ba885d | ||
|
|
cbd028e6b0 | ||
|
|
504d7b39d4 | ||
|
|
3bcf432873 | ||
|
|
10bdd0fd53 | ||
|
|
3b17d3070b | ||
|
|
e225ef1b3a | ||
|
|
258267436b | ||
|
|
c7d5506b38 | ||
|
|
175d6a2b65 | ||
|
|
a5dd89ec56 | ||
|
|
31b1201dfe | ||
|
|
bbfcdbdd65 | ||
|
|
9cb99fbe76 | ||
|
|
63c34ea549 | ||
|
|
86aa280c94 | ||
|
|
41c3e5d4cc | ||
|
|
86c518d788 | ||
|
|
c9cb6d41ac | ||
|
|
ad19f96138 | ||
|
|
a13954fd61 | ||
|
|
bfd11543bd | ||
|
|
010ec5d24e | ||
|
|
ac6ccc7d0c | ||
|
|
9b4618a37a | ||
|
|
daa600dbea | ||
|
|
ecf99aac39 | ||
|
|
1a273ec274 | ||
|
|
8c7a5bec47 | ||
|
|
3dbb33f3a7 | ||
|
|
302e828c94 | ||
|
|
b792fc54f3 | ||
|
|
ab774251b0 | ||
|
|
91686c82da | ||
|
|
1f477a5934 | ||
|
|
0b3beca6a9 | ||
|
|
3153ea1acc | ||
|
|
d1c9bccfbe | ||
|
|
a1835b7113 | ||
|
|
17705d67f1 | ||
|
|
647b52e016 | ||
|
|
c415036f3f | ||
|
|
ed2b359ce8 | ||
|
|
3fd86538fd | ||
|
|
e62f485df4 | ||
|
|
1a4330cb86 | ||
|
|
6d64d3b2b3 | ||
|
|
bf2e730035 | ||
|
|
f1fcd58e34 | ||
|
|
6338110530 | ||
|
|
70eb022859 | ||
|
|
c4c1866178 | ||
|
|
18a829c101 | ||
|
|
d01adefd14 | ||
|
|
e0f2c20588 | ||
|
|
ada0ec70ea | ||
|
|
bf55553d63 | ||
|
|
1ed156f724 | ||
|
|
871ca7eb8a | ||
|
|
ac8f225c4f | ||
|
|
9a2d98a6b8 | ||
|
|
51f5795731 | ||
|
|
8d20c90900 | ||
|
|
455b97c9b5 | ||
|
|
e1e8aba4ee | ||
|
|
5ce80fdf3b | ||
|
|
972ddbafcc | ||
|
|
c42bd05603 | ||
|
|
417c15db60 | ||
|
|
2f6172f7b5 | ||
|
|
0aff2018ff | ||
|
|
9c8e9d65a5 | ||
|
|
951d93a055 | ||
|
|
9751ce9271 | ||
|
|
e204bf7bf5 | ||
|
|
602d454421 | ||
|
|
3c302d6e1f | ||
|
|
6ff3cc4f3e | ||
|
|
7bdd32459f | ||
|
|
c387fd4e76 | ||
|
|
45abeaf1db |
50
.github/workflows/core_auto_update.yml
vendored
50
.github/workflows/core_auto_update.yml
vendored
@@ -2,47 +2,35 @@ name: core_auto_update
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: 0 18 * * *
|
||||
- cron: 0 18 */3 * *
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
check_version:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: reF1nd/sing-box
|
||||
ref: reF1nd-dev
|
||||
fetch-depth: 0
|
||||
- name: Check version
|
||||
run: |
|
||||
git remote add sekai https://github.com/SagerNet/sing-box.git
|
||||
git fetch --tags sekai
|
||||
version_new=$(CGO_ENABLED=0 go run ./cmd/internal/read_tag)
|
||||
version_old=$(curl -sSl https://github.com/juewuy/ShellCrash/releases/download/singbox_core_reF1nd/version)
|
||||
if [ "$version_old" != "$version_new" ];then
|
||||
echo a=$version_old >> $GITHUB_ENV
|
||||
echo b=$version_new >> $GITHUB_ENV
|
||||
else
|
||||
echo "未检查到版本更新,已退出!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
auto_update_singboxp_with_wg:
|
||||
needs: check_version
|
||||
if: ${{ success() }}
|
||||
auto_update_singboxr_dev:
|
||||
permissions: write-all
|
||||
uses: juewuy/ShellCrash/.github/workflows/update_singbox_core.yaml@dev
|
||||
with:
|
||||
tag1: reF1nd/sing-box
|
||||
tag2: reF1nd-dev
|
||||
tag3: singbox_core_reF1nd
|
||||
tag5: with_quic,with_dhcp,with_wireguard,with_tailscale,with_shadowsocksr,with_utls,with_clash_api,with_gvisor
|
||||
tag2: reF1nd-testing
|
||||
tag4: singboxr
|
||||
tag5: with_gvisor,with_quic,with_dhcp,with_wireguard,with_utls,with_shadowsocksr,with_acme,with_clash_api,with_tailscale
|
||||
tag6: gz
|
||||
secrets: inherit
|
||||
|
||||
|
||||
auto_update_meta_alpha:
|
||||
permissions: write-all
|
||||
needs: auto_update_singboxr_dev
|
||||
uses: juewuy/ShellCrash/.github/workflows/update_meta_core.yaml@dev
|
||||
with:
|
||||
tag1: MetaCubeX/mihomo
|
||||
tag2: Alpha
|
||||
tag4: meta
|
||||
tag5: with_gvisor
|
||||
tag6: gz
|
||||
secrets: inherit
|
||||
|
||||
cleanup:
|
||||
needs: check_version
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: cleanup
|
||||
|
||||
90
.github/workflows/core_easy_update.yaml
vendored
Normal file
90
.github/workflows/core_easy_update.yaml
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
name: core_easy_update
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tag1:
|
||||
description: 'meta or singbox or singboxr'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
get_version:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
version: ${{ steps.get_version.outputs.version }}
|
||||
steps:
|
||||
- id: get_version
|
||||
run: |
|
||||
[ "${{ inputs.tag1 }}" = meta ] && repo="MetaCubeX/mihomo"
|
||||
[ "${{ inputs.tag1 }}" = singbox ] && repo="SagerNet/sing-box"
|
||||
[ "${{ inputs.tag1 }}" = singboxr ] && repo="SagerNet/sing-box"
|
||||
latest_tag=$(curl -s "https://api.github.com/repos/$repo/releases/latest" | jq -r .tag_name)
|
||||
[ "${{ inputs.tag1 }}" = singboxr ] && latest_tag="${latest_tag}-reF1nd"
|
||||
echo "version=$latest_tag" >> $GITHUB_OUTPUT
|
||||
|
||||
update_meta_upx:
|
||||
if: github.event.inputs.tag1 == 'meta'
|
||||
needs: get_version
|
||||
permissions: write-all
|
||||
uses: juewuy/ShellCrash/.github/workflows/update_meta_core.yaml@dev
|
||||
with:
|
||||
tag1: MetaCubeX/mihomo
|
||||
tag2: ${{ needs.get_version.outputs.version }}
|
||||
tag4: meta
|
||||
tag5: ""
|
||||
tag6: upx
|
||||
secrets: inherit
|
||||
|
||||
update_meta_tar:
|
||||
if: github.event.inputs.tag1 == 'meta'
|
||||
needs: [get_version, update_meta_upx]
|
||||
permissions: write-all
|
||||
uses: juewuy/ShellCrash/.github/workflows/update_meta_core.yaml@dev
|
||||
with:
|
||||
tag1: MetaCubeX/mihomo
|
||||
tag2: ${{ needs.get_version.outputs.version }}
|
||||
tag4: meta
|
||||
tag5: ""
|
||||
tag6: tar.gz
|
||||
secrets: inherit
|
||||
|
||||
update_singboxr_upx:
|
||||
if: github.event.inputs.tag1 == 'singboxr'
|
||||
needs: get_version
|
||||
permissions: write-all
|
||||
uses: juewuy/ShellCrash/.github/workflows/update_singbox_core.yaml@dev
|
||||
with:
|
||||
tag1: reF1nd/sing-box
|
||||
tag2: ${{ needs.get_version.outputs.version }}
|
||||
tag4: singboxr
|
||||
tag5: with_quic,with_utls,with_clash_api
|
||||
tag6: upx
|
||||
secrets: inherit
|
||||
|
||||
update_singboxr_tar:
|
||||
if: github.event.inputs.tag1 == 'singboxr'
|
||||
needs: [get_version, update_singboxr_upx]
|
||||
permissions: write-all
|
||||
uses: juewuy/ShellCrash/.github/workflows/update_singbox_core.yaml@dev
|
||||
with:
|
||||
tag1: reF1nd/sing-box
|
||||
tag2: ${{ needs.get_version.outputs.version }}
|
||||
tag4: singboxr
|
||||
tag5: with_gvisor,with_quic,with_wireguard,with_utls,with_clash_api,with_tailscale
|
||||
tag6: tar.gz
|
||||
secrets: inherit
|
||||
|
||||
update_singbox_upx:
|
||||
if: github.event.inputs.tag1 == 'singbox'
|
||||
needs: get_version
|
||||
permissions: write-all
|
||||
uses: juewuy/ShellCrash/.github/workflows/update_singbox_core.yaml@dev
|
||||
with:
|
||||
tag1: SagerNet/sing-box
|
||||
tag2: ${{ needs.get_version.outputs.version }}
|
||||
tag4: singbox
|
||||
tag5: with_quic,with_utls,with_clash_api
|
||||
tag6: upx
|
||||
secrets: inherit
|
||||
|
||||
114
.github/workflows/update_meta_core.yaml
vendored
114
.github/workflows/update_meta_core.yaml
vendored
@@ -23,6 +23,31 @@ on:
|
||||
description: 'build tags'
|
||||
required: false
|
||||
type: string
|
||||
tag6:
|
||||
description: 'ziptype(tar.gz|upx|gz)'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
workflow_call:
|
||||
inputs:
|
||||
tag1:
|
||||
required: true
|
||||
type: string
|
||||
tag2:
|
||||
required: true
|
||||
type: string
|
||||
tag3:
|
||||
required: false
|
||||
type: string
|
||||
tag4:
|
||||
required: false
|
||||
type: string
|
||||
tag5:
|
||||
required: false
|
||||
type: string
|
||||
tag6:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
go:
|
||||
@@ -39,8 +64,8 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: go
|
||||
env:
|
||||
REPO: ${{ github.event.inputs.tag1 }}
|
||||
TAGS: ${{ github.event.inputs.tag5 }}
|
||||
REPO: ${{ inputs.tag1 }}
|
||||
TAGS: ${{ inputs.tag5 }}
|
||||
outputs:
|
||||
version: ${{steps.meta.outputs.version}}
|
||||
tags: ${{steps.meta.outputs.tags}}
|
||||
@@ -49,7 +74,8 @@ jobs:
|
||||
- name: get meta version
|
||||
id: meta
|
||||
run: |
|
||||
version=${{ github.event.inputs.tag2 }}
|
||||
version=${{ inputs.tag2 }}
|
||||
[ "$version" = Alpha ] && version="Alpha-$(date +"%Y%m%d")"
|
||||
echo version=$version >> $GITHUB_OUTPUT
|
||||
if [ -z "$TAGS" ];then
|
||||
echo tags='' >> $GITHUB_OUTPUT
|
||||
@@ -111,30 +137,14 @@ jobs:
|
||||
- name: Checkout meta
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
repository: ${{ github.event.inputs.tag1 }}
|
||||
ref: ${{ github.event.inputs.tag2 }}
|
||||
repository: ${{ inputs.tag1 }}
|
||||
ref: ${{ inputs.tag2 }}
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: ${{needs.go.outputs.version}}
|
||||
|
||||
- name: Set variables
|
||||
run: |
|
||||
VERSION="${GITHUB_REF_NAME,,}-$(git rev-parse --short HEAD)"
|
||||
VERSION="${VERSION//\//-}"
|
||||
PackageVersion="$(curl -s "https://api.github.com/repos/MetaCubeX/mihomo/releases/latest" | jq -r '.tag_name' | sed 's/v//g' | awk -F '.' '{$NF = $NF + 1; print}' OFS='.').${VERSION/-/.}"
|
||||
if [ -n "${{ github.event.inputs.version }}" ]; then
|
||||
VERSION=${{ github.event.inputs.version }}
|
||||
PackageVersion="${VERSION#v}"
|
||||
fi
|
||||
echo "VERSION=${VERSION}" >> $GITHUB_ENV
|
||||
echo "PackageVersion=${PackageVersion}" >> $GITHUB_ENV
|
||||
echo "BUILDTIME=$(date)" >> $GITHUB_ENV
|
||||
echo "CGO_ENABLED=0" >> $GITHUB_ENV
|
||||
echo "BUILDTAG=-extldflags --static" >> $GITHUB_ENV
|
||||
echo "GOTOOLCHAIN=local" >> $GITHUB_ENV
|
||||
|
||||
- name: Update CA
|
||||
run: |
|
||||
@@ -145,13 +155,14 @@ jobs:
|
||||
- name: build core
|
||||
id: build
|
||||
run: |
|
||||
go env
|
||||
go build -v -tags "${TAGS}" -o meta -trimpath -ldflags "${BUILDTAG} -X 'github.com/metacubex/mihomo/constant.Version=${VERSION}' -X 'github.com/metacubex/mihomo/constant.BuildTime=${BUILDTIME}' -w -s -buildid="
|
||||
go build -v -tags "${TAGS}" -o meta -trimpath -ldflags "-extldflags --static -X 'github.com/metacubex/mihomo/constant.Version=${VERSION}' -X 'github.com/metacubex/mihomo/constant.BuildTime=$(date)' -w -s -buildid="
|
||||
|
||||
- name: Upload file to workspace
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.name }}
|
||||
path: meta
|
||||
overwrite: true
|
||||
|
||||
push_to_git:
|
||||
needs:
|
||||
@@ -159,8 +170,9 @@ jobs:
|
||||
- meta
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
RELEASE: ${{ github.event.inputs.tag3 }}
|
||||
PUSHDIR: ${{ github.event.inputs.tag4 }}
|
||||
RELEASE: ${{ inputs.tag3 }}
|
||||
PUSHDIR: ${{ inputs.tag4 }}
|
||||
ZIPTYPE: ${{ inputs.tag6 }}
|
||||
VERSION: ${{needs.meta.outputs.version}}
|
||||
steps:
|
||||
- name: Checkout ShellCrash
|
||||
@@ -174,7 +186,33 @@ jobs:
|
||||
with:
|
||||
path: ./tmp
|
||||
|
||||
- name: Zip core by upx
|
||||
if: env.ZIPTYPE == 'upx'
|
||||
run: |
|
||||
for upxv in 3.94 3.96 5.1.0;do
|
||||
wget https://github.com/upx/upx/releases/download/v$upxv/upx-$upxv-amd64_linux.tar.xz
|
||||
tar xf upx-$upxv-amd64_linux.tar.xz
|
||||
done
|
||||
for arch in amd64 armv5 armv7 arm64 386 mips-softfloat mipsle-hardfloat mipsle-softfloat;do
|
||||
[ ! -f ./tmp/linux-${arch}/meta ] && continue
|
||||
mv -f ./tmp/linux-${arch}/meta ./tmp/clash-linux-${arch}.upx
|
||||
chmod +x ./tmp/clash-linux-${arch}.upx
|
||||
case "${arch}" in
|
||||
armv5|mips* )
|
||||
./upx-3.94-amd64_linux/upx --no-lzma ./tmp/clash-linux-${arch}.upx
|
||||
;;
|
||||
armv7|386)
|
||||
./upx-3.96-amd64_linux/upx --no-lzma ./tmp/clash-linux-${arch}.upx
|
||||
;;
|
||||
*)
|
||||
./upx-5.1.0-amd64_linux/upx ./tmp/clash-linux-${arch}.upx
|
||||
;;
|
||||
esac
|
||||
done
|
||||
rm -rf upx-*
|
||||
|
||||
- name: Zip core by tar
|
||||
if: env.ZIPTYPE == 'tar.gz'
|
||||
run: |
|
||||
for arch in amd64 armv5 armv7 arm64 386 mips-softfloat mipsle-hardfloat mipsle-softfloat;do
|
||||
[ ! -f ./tmp/linux-${arch}/meta ] && continue
|
||||
@@ -183,15 +221,24 @@ jobs:
|
||||
tar --no-same-owner -zcvf ./tmp/clash-linux-${arch}.tar.gz -C ./tmp CrashCore
|
||||
done
|
||||
|
||||
- name: Zip core by gz
|
||||
if: env.ZIPTYPE == 'gz'
|
||||
run: |
|
||||
for arch in amd64 armv5 armv7 arm64 386 mips-softfloat mipsle-hardfloat mipsle-softfloat;do
|
||||
[ ! -f ./tmp/linux-${arch}/meta ] && continue
|
||||
mv -f ./tmp/linux-${arch}/meta ./tmp/clash-linux-${arch}
|
||||
chmod +x ./tmp/clash-linux-${arch}
|
||||
gzip ./tmp/clash-linux-${arch}
|
||||
done
|
||||
|
||||
- name: Commit and push
|
||||
if: ${{ env.PUSHDIR != '' }}
|
||||
run: |
|
||||
crashcore='meta'
|
||||
[ "${{ inputs.tag1 }}" = MetaCubeX/mihomo ] && crashcore='meta'
|
||||
mkdir -p ./bin/${crashcore}
|
||||
rm -fr ./bin/${crashcore}/*
|
||||
mv -f ./tmp/clash-linux-*.tar.gz ./bin/${crashcore}/
|
||||
mv -f ./tmp/clash-linux-* ./bin/${crashcore}/
|
||||
rm -fr ./tmp
|
||||
sed -i "s/${crashcore}_v=.*/${crashcore}_v=${VERSION}/" ./bin/version
|
||||
[ "${{ inputs.tag6 }}" = tar.gz ] && sed -i "s/${crashcore}_v=.*/${crashcore}_v=${VERSION}/" ./bin/version
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com" && git config --global user.name "github-actions[bot]"
|
||||
git add . && git commit -m "更新${crashcore}内核至${VERSION}" || exit 0
|
||||
git push
|
||||
@@ -206,9 +253,9 @@ jobs:
|
||||
if: ${{ env.RELEASE != '' && env.PUSHDIR == '' }}
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: ${{ github.event.inputs.tag3 }}
|
||||
name: ${{ github.event.inputs.tag3 }}
|
||||
body: "The ${{env.VERSION}} version of ${{ github.event.inputs.tag1 }} \n这是${{ github.event.inputs.tag1 }}的${{env.VERSION}}版本内核文件\nhttps://github.com/${{ github.event.inputs.tag1 }}/releases \nOnly support for ShellCrash\n仅适配ShellCrash项目"
|
||||
tag_name: ${{ inputs.tag3 }}
|
||||
name: ${{ inputs.tag3 }}
|
||||
body: "The ${{env.VERSION}} version of ${{ inputs.tag1 }} \n这是${{ inputs.tag1 }}的${{env.VERSION}}版本内核文件\nhttps://github.com/${{ inputs.tag1 }}/releases \nOnly support for ShellCrash\n仅适配ShellCrash项目"
|
||||
draft: false
|
||||
prerelease: true
|
||||
files: |
|
||||
@@ -219,3 +266,6 @@ jobs:
|
||||
with:
|
||||
retain_days: 1
|
||||
keep_minimum_runs: 2
|
||||
|
||||
|
||||
|
||||
|
||||
65
.github/workflows/update_singbox_core.yaml
vendored
65
.github/workflows/update_singbox_core.yaml
vendored
@@ -23,6 +23,11 @@ on:
|
||||
description: 'build tags'
|
||||
required: false
|
||||
type: string
|
||||
tag6:
|
||||
description: 'ziptype(tar.gz|upx|gz)'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
workflow_call:
|
||||
inputs:
|
||||
tag1:
|
||||
@@ -40,6 +45,9 @@ on:
|
||||
tag5:
|
||||
required: false
|
||||
type: string
|
||||
tag6:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
go:
|
||||
@@ -80,6 +88,7 @@ jobs:
|
||||
git fetch --tags sekai
|
||||
version=$(CGO_ENABLED=0 go run ./cmd/internal/read_tag)
|
||||
[ -z "$version" ] && version=${{ inputs.tag2 }}
|
||||
version=$(echo ${version%-*})
|
||||
echo version=$version >> $GITHUB_OUTPUT
|
||||
if [ -z "$TAGS" ];then
|
||||
if [ "$REPO" = 'SagerNet/sing-box' ];then
|
||||
@@ -117,11 +126,11 @@ jobs:
|
||||
goos: linux
|
||||
goarch: mips
|
||||
gomips: softfloat
|
||||
- name: linux-mipsel-softfloat
|
||||
- name: linux-mipsle-softfloat
|
||||
goos: linux
|
||||
goarch: mipsle
|
||||
gomips: softfloat
|
||||
- name: linux-mipsel-hardfloat
|
||||
- name: linux-mipsle-hardfloat
|
||||
goos: linux
|
||||
goarch: mipsle
|
||||
gomips: hardfloat
|
||||
@@ -171,6 +180,7 @@ jobs:
|
||||
with:
|
||||
name: ${{ matrix.name }}
|
||||
path: sing-box
|
||||
overwrite: true
|
||||
|
||||
push_to_git:
|
||||
needs:
|
||||
@@ -180,6 +190,7 @@ jobs:
|
||||
env:
|
||||
RELEASE: ${{ inputs.tag3 }}
|
||||
PUSHDIR: ${{ inputs.tag4 }}
|
||||
ZIPTYPE: ${{ inputs.tag6 }}
|
||||
VERSION: ${{needs.sing-box.outputs.version}}
|
||||
steps:
|
||||
- name: Checkout ShellCrash
|
||||
@@ -194,18 +205,51 @@ jobs:
|
||||
with:
|
||||
path: ./tmp
|
||||
|
||||
- name: Zip core by upx
|
||||
if: env.ZIPTYPE == 'upx'
|
||||
run: |
|
||||
for upxv in 3.94 3.96 5.1.0;do
|
||||
wget https://github.com/upx/upx/releases/download/v$upxv/upx-$upxv-amd64_linux.tar.xz
|
||||
tar xf upx-$upxv-amd64_linux.tar.xz
|
||||
done
|
||||
for arch in amd64 armv5 armv7 arm64 386 mips-softfloat mipsle-hardfloat mipsle-softfloat;do
|
||||
[ ! -f ./tmp/linux-${arch}/sing-box ] && continue
|
||||
mv -f ./tmp/linux-${arch}/sing-box ./tmp/singbox-linux-${arch}.upx
|
||||
chmod +x ./tmp/singbox-linux-${arch}.upx
|
||||
case "${arch}" in
|
||||
armv5|mips* )
|
||||
./upx-3.94-amd64_linux/upx --no-lzma ./tmp/singbox-linux-${arch}.upx
|
||||
;;
|
||||
armv7|386)
|
||||
./upx-3.96-amd64_linux/upx --no-lzma ./tmp/singbox-linux-${arch}.upx
|
||||
;;
|
||||
*)
|
||||
./upx-5.1.0-amd64_linux/upx ./tmp/singbox-linux-${arch}.upx
|
||||
;;
|
||||
esac
|
||||
done
|
||||
rm -rf upx-*
|
||||
|
||||
- name: Zip core by tar
|
||||
run: |
|
||||
for arch in amd64 armv5 armv7 arm64 386 mips-softfloat mipsel-hardfloat mipsel-softfloat;do
|
||||
if: env.ZIPTYPE == 'tar.gz'
|
||||
run: |
|
||||
for arch in amd64 armv5 armv7 arm64 386 mips-softfloat mipsle-hardfloat mipsle-softfloat;do
|
||||
[ ! -f ./tmp/linux-${arch}/sing-box ] && continue
|
||||
mv -f ./tmp/linux-${arch}/sing-box ./tmp/CrashCore
|
||||
chmod +x ./tmp/CrashCore
|
||||
tar --no-same-owner -zcvf ./tmp/singbox-linux-${arch}.tar.gz -C ./tmp CrashCore
|
||||
done
|
||||
mv -f ./tmp/singbox-linux-mipsel-hardfloat.tar.gz ./tmp/singbox-linux-mipsle-hardfloat.tar.gz
|
||||
mv -f ./tmp/singbox-linux-mipsel-softfloat.tar.gz ./tmp/singbox-linux-mipsle-softfloat.tar.gz
|
||||
echo ${VERSION} > ./tmp/version
|
||||
|
||||
|
||||
- name: Zip core by gz
|
||||
if: env.ZIPTYPE == 'gz'
|
||||
run: |
|
||||
for arch in amd64 armv5 armv7 arm64 386 mips-softfloat mipsle-hardfloat mipsle-softfloat;do
|
||||
[ ! -f ./tmp/linux-${arch}/sing-box ] && continue
|
||||
mv -f ./tmp/linux-${arch}/sing-box ./tmp/singbox-linux-${arch}
|
||||
chmod +x ./tmp/singbox-linux-${arch}
|
||||
gzip ./tmp/singbox-linux-${arch}
|
||||
done
|
||||
|
||||
- name: Commit and push
|
||||
if: ${{ env.PUSHDIR != '' }}
|
||||
run: |
|
||||
@@ -213,10 +257,9 @@ jobs:
|
||||
[ "${{ inputs.tag1 }}" = PuerNya/sing-box ] && crashcore='singboxp'
|
||||
[ "${{ inputs.tag1 }}" = reF1nd/sing-box ] && crashcore='singboxr'
|
||||
mkdir -p ./bin/${crashcore}
|
||||
rm -fr ./bin/${crashcore}/*
|
||||
mv -f ./tmp/singbox-linux-*.tar.gz ./bin/${crashcore}/
|
||||
mv -f ./tmp/singbox-linux-* ./bin/${crashcore}/
|
||||
rm -fr ./tmp
|
||||
sed -i "s/${crashcore}_v=.*/${crashcore}_v=${VERSION}/" ./bin/version
|
||||
[ "${{ inputs.tag6 }}" = tar.gz ] && sed -i "s/${crashcore}_v=.*/${crashcore}_v=${VERSION}/" ./bin/version
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com" && git config --global user.name "github-actions[bot]"
|
||||
git add . && git commit -m "更新${crashcore}内核至${VERSION}" || exit 0
|
||||
git push
|
||||
|
||||
@@ -57,8 +57,7 @@ RUN apk add --no-cache \
|
||||
ca-certificates \
|
||||
tzdata \
|
||||
nftables \
|
||||
iproute2 \
|
||||
dcron
|
||||
iproute2
|
||||
|
||||
RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
|
||||
echo "${TZ}" > /etc/timezone
|
||||
|
||||
176
README.md
176
README.md
@@ -1,24 +1,178 @@
|
||||
<h1 align="center">
|
||||
<br>ShellCrash<br>
|
||||
</h1>
|
||||
|
||||
|
||||
<p align="center">
|
||||
<h1 align="center">ShellCrash</h1>
|
||||
|
||||
<p align="center">
|
||||
<a target="_blank" href="https://github.com/MetaCubeX/mihomo/releases">
|
||||
<img src="https://img.shields.io/github/release/MetaCubeX/mihomo.svg?style=flat-square&label=Core">
|
||||
</a>
|
||||
<a target="_blank" href="https://github.com/juewuy/ShellCrash/releases">
|
||||
<img src="https://img.shields.io/github/release/juewuy/ShellCrash.svg?style=flat-square&label=ShellCrash&colorB=green">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
[中文](README_CN.md) | English
|
||||
<p align="center">
|
||||
<strong>A powerful script tool for the convenient deployment and management of mihomo/sing-box kernels in Shell environments.</strong>
|
||||
</p>
|
||||
|
||||
## Function introduction:
|
||||
<p align="center">
|
||||
<a href="README_CN.md">简体中文</a> | English
|
||||
</p>
|
||||
|
||||
~Convenient use in Shell environment through management script [Crash](https://github.com/Dreamacro/Crash)<br>~Support management of [Crash functions](https://lancellc.gitbook.io/Crash)<br>~Support online import [Crash](https://github.com/Dreamacro/Crash) supports sharing, subscription and configuration links<br>~Support configuration timing tasks, support configuration file timing updates<br>~Support online installation and Use local web panel to manage built-in rules<br>~Support routing mode, native mode and other mode switching<br>~Support online update<br>
|
||||
---
|
||||
|
||||
## Equipment support:
|
||||
## :rocket: Core Features
|
||||
|
||||
~Support various router devices based on OpenWrt or secondary custom development using OpenWrt<br>~Support various devices running standard Linux systems (such as Debian/CenOS/Armbian, etc.)<br>~Compatible with Padavan firmware (conservative mode), Pandora firmware<br>~Compatible with various types of devices customized and developed using the Linux kernel<br>——————————<br>~For more device support, please submit an issue or go to the TG group for feedback (the device name and the device core information returned by running uname -a must be provided)<br>
|
||||
- **Multi-Kernel Support**: Easily manage and switch between **mihomo** and **sing-box** kernels directly within the Shell environment.
|
||||
- **Flexible Configuration Management**: Supports online import of subscription links and configuration files to simplify the setup process.
|
||||
- **Automated Tasks**: Configure scheduled tasks for automatic updates of configuration files and rules.
|
||||
- **Graphical Dashboard**: Support for online installation and use of local Web Dashboards to intuitively manage built-in rules and traffic.
|
||||
- **Multiple Operation Modes**: Supports switching between various traffic forwarding modes, including Router mode and Local mode.
|
||||
- **One-Click Maintenance**: Built-in online update functionality to keep the script and features up to date.
|
||||
|
||||
## :computer: Device Support
|
||||
|
||||
ShellCrash is designed to be compatible with the vast majority of network devices based on the Linux kernel:
|
||||
|
||||
* **Router Devices**: Supports various firmwares based on OpenWrt or its derivatives (e.g., Xiaomi, Netgear etc.).
|
||||
* **Linux Servers**: Supports devices running standard Linux/GNU distributions (e.g., Debian, CentOS, Armbian, Ubuntu, etc.).
|
||||
* **Third-Party Firmware**: Compatible with Padavan (Conservative Mode), Pandora, and ASUS/Merlin firmware.
|
||||
* **Other Devices**: Compatible with other devices based on Linux/GNU or Linux/busybox.
|
||||
* **Docker**:Compatible with Docker environments (e.g., Synology, PVE, etc.).
|
||||
|
||||
> For additional device support, please submit an [Issue](https://github.com/juewuy/ShellCrash/issues) or provide feedback in the [Telegram Group](https://t.me/ShellClash) (please include the device model and the output of the `uname -a` command).
|
||||
|
||||
---
|
||||
|
||||
## :hammer_and_wrench: Installation Guide
|
||||
|
||||
> [!TIP]
|
||||
> If you encounter connection failures or SSL-related issues, please try switching to an alternative installation mirror.
|
||||
|
||||
### Prerequisites
|
||||
1. Ensure the device has **SSH** enabled and **Root privileges** obtained (Linux systems with a GUI can use the terminal directly).
|
||||
2. Connect to the device using an SSH tool (such as PuTTY, JuiceSSH, or the system's built-in terminal).
|
||||
|
||||
### :penguin: Standard Linux Device Installation
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Please perform the installation as the root user.
|
||||
|
||||
> Install via wget (jsDelivr CDN source)
|
||||
```sh
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@dev' \
|
||||
&& wget -q --no-check-certificate -O /tmp/install.sh $url/install_en.sh \
|
||||
&& bash /tmp/install.sh \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
> Or install via curl (Author's private source)
|
||||
|
||||
```sh
|
||||
export url='https://gh.jwsc.eu.org/dev' && bash -c "$(curl -kfsSl $url/install_en.sh)" && . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
### :satellite: Router Device Installation
|
||||
|
||||
**Installation via `curl`:**
|
||||
> GitHub Source (Recommended for overseas environments or environments with proxy access)
|
||||
```sh
|
||||
export url='https://raw.githubusercontent.com/juewuy/ShellCrash/dev' \
|
||||
&& sh -c "$(curl -kfsSl $url/install_en.sh)" \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
> Or jsDelivr CDN source
|
||||
|
||||
```sh
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@dev' \
|
||||
&& sh -c "$(curl -kfsSl $url/install_en.sh)" \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
> Or Author's private source
|
||||
```sh
|
||||
export url='https://gh.jwsc.eu.org/dev' && sh -c "$(curl -kfsSl $url/install_en.sh)" && . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
**Installation via `wget`:**
|
||||
> GitHub Source (Recommended for overseas environments or environments with proxy access)
|
||||
```sh
|
||||
export url='https://raw.githubusercontent.com/juewuy/ShellCrash/dev' \
|
||||
&& wget -q --no-check-certificate -O /tmp/install.sh $url/install_en.sh \
|
||||
&& sh /tmp/install.sh \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
> Or jsDelivr CDN source
|
||||
```sh
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@dev' \
|
||||
&& wget -q --no-check-certificate -O /tmp/install.sh $url/install_en.sh \
|
||||
&& sh /tmp/install.sh \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
### :pager: Installation for Legacy Devices with Older `wget` Versions
|
||||
|
||||
> Author's private HTTP beta source
|
||||
```sh
|
||||
export url='http://t.jwsc.eu.org' \
|
||||
&& wget -q -O /tmp/install.sh $url/install_en.sh \
|
||||
&& sh /tmp/install.sh \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
|
||||
### :cloud: Virtual Machines
|
||||
- **Alpine Linux VM**: It is highly recommended to use an Alpine image for optimal compatibility.
|
||||
```sh
|
||||
# Install necessary dependencies
|
||||
apk add --no-cache wget openrc ca-certificates tzdata nftables iproute2 dcron
|
||||
# Execute installation command
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@dev' \
|
||||
&& wget -q --no-check-certificate -O /tmp/install.sh $url/install_en.sh \
|
||||
&& sh /tmp/install.sh \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
### :whale: Docker
|
||||
|
||||
Please visit the official Docker image:
|
||||
|
||||
- [ShellCrash on Docker Hub](https://hub.docker.com/r/juewuy/shellcrash)
|
||||
|
||||
|
||||
### :package: Local Installation
|
||||
|
||||
If online installation is not possible, please follow the guide for local installation:
|
||||
|
||||
- [Local ShellCrash Installation Tutorial | Juewuy's Blog](https://juewuy.github.io/bdaz)
|
||||
|
||||
---
|
||||
|
||||
## :book: Usage Instructions
|
||||
|
||||
After installation, enter the following commands in the terminal to launch the management interface:
|
||||
|
||||
```shell
|
||||
crash # Launch the interactive script menu
|
||||
crash -h # View the list of command help
|
||||
```
|
||||
|
||||
### Running Dependencies
|
||||
| Component | Necessity | Description |
|
||||
| :--- | :--- | :--- |
|
||||
| curl / wget | Mandatory | Required for node saving, online installation, and update operations. |
|
||||
| iptables / nftables | Critical | Without these, the script can only run in Pure Mode. |
|
||||
| crontab | Low | Required for scheduled tasks; otherwise, they will not function. |
|
||||
| net-tools | Very Low | Used for automatic port occupancy detection. |
|
||||
| ubus / iproute-doc | Very Low | Used for automatically obtaining the local Host address. |
|
||||
|
||||
---
|
||||
|
||||
## :link: Related Links
|
||||
- FAQ: [Juewuy's Blog](https://juewuy.github.io/chang-jian-wen-ti/)
|
||||
- Changelog: [Release History](https://github.com/juewuy/ShellCrash/releases)
|
||||
- Discussion: [Telegram Group](https://t.me/ShellClash)
|
||||
|
||||
## :scroll: License
|
||||
|
||||
This project is licensed under the [GNU General Public License v3.0](LICENSE.txt).
|
||||
|
||||
235
README_CN.md
235
README_CN.md
@@ -1,10 +1,7 @@
|
||||
<h1 align="center">
|
||||
<br>ShellCrash<br>
|
||||
</h1>
|
||||
<h1 align="center">ShellCrash</h1>
|
||||
|
||||
|
||||
<p align="center">
|
||||
<a target="_blank" href="https://github.com/MetaCubeX/mihomo/releases">
|
||||
<p align="center">
|
||||
<a target="_blank" href="https://github.com/MetaCubeX/mihomo/releases">
|
||||
<img src="https://img.shields.io/github/release/MetaCubeX/mihomo.svg?style=flat-square&label=Core">
|
||||
</a>
|
||||
<a target="_blank" href="https://github.com/juewuy/ShellCrash/releases">
|
||||
@@ -12,147 +9,183 @@
|
||||
</a>
|
||||
</p>
|
||||
|
||||
中文 | [English](README.md)
|
||||
<p align="center">
|
||||
<strong>一款在 Shell 环境下便捷部署与管理 mihomo/sing-box 内核的脚本工具</strong>
|
||||
</p>
|
||||
|
||||
功能简介:
|
||||
--
|
||||
<p align="center">
|
||||
简体中文 | <a href="README.md">English</a>
|
||||
</p>
|
||||
|
||||
~通过管理脚本在Shell环境下便捷使用Mihomo/Singbox内核<br>
|
||||
~支持在Shell环境下管理<br>
|
||||
~支持在线导入订阅及配置链接<br>
|
||||
~支持配置定时任务,支持配置文件定时更新<br>
|
||||
~支持在线安装及使用本地网页面板管理内置规则<br>
|
||||
~支持路由模式、本机模式等多种模式切换<br>
|
||||
~支持在线更新<br>
|
||||
---
|
||||
|
||||
设备支持:
|
||||
--
|
||||
## :rocket: 核心特性
|
||||
|
||||
~支持各种基于OpenWrt或使用OpenWrt二次定制开发的路由器设备<br>
|
||||
~支持各种运行标准Linux系统(如Debian/CenOS/Armbian等)的设备<br>
|
||||
~兼容Padavan固件(保守模式)、潘多拉固件以及华硕/梅林固件<br>
|
||||
~兼容各类使用Linux内核定制开发的各类型设备<br>
|
||||
- **多内核支持**:在 Shell 环境下便捷管理及切换 **mihomo** 与 **sing-box** 内核。
|
||||
- **灵活配置管理**:支持在线导入订阅连结及配置文件,简化配置流程。
|
||||
- **自动化任务**:支持配置定时任务,实现配置文件与规则的自动定时更新。
|
||||
- **图形化面板**:支持在线安装并使用本地 Web 面板(Dashboard),直观管理内置规则与流量。
|
||||
- **多模式运行**:支持路由模式、本机模式等多种流量转发模式切换。
|
||||
- **一键维护**:内置脚本在线更新功能,保持版本与功能的及时更迭。
|
||||
|
||||
——————————<br>
|
||||
~更多设备支持,请提issue或前往TG群反馈(需提供设备名称及运行uname -a返回的设备核心信息)<br>
|
||||
## :computer: 设备支持
|
||||
|
||||
## 常见问题:
|
||||
ShellCrash 旨在兼容绝大多数基于 Linux 内核的网络设备:
|
||||
|
||||
[ShellCrash常见问题 | Juewuy's Blog](https://juewuy.github.io/chang-jian-wen-ti/)
|
||||
* **路由器设备**:支持各种基于 OpenWrt 或其二次开发固件(如 小米路由、网件路由等设备)。
|
||||
* **Linux 服务器**:支持运行标准 Linux/GNU发行版(如 Debian、CentOS、Armbian、Ubuntu 等)的设备。
|
||||
* **第三方固件**:兼容 Padavan(保守模式)、潘多拉固件以及华硕/梅林固件。
|
||||
* **其他设备**:兼容各种基于Linux/GNU或者Linux/busybox开发的设备。
|
||||
* **Docker**:部分可能不兼容的设备(如群辉、PVE),支持docker环境运行。
|
||||
|
||||
## 使用方式:
|
||||
> 更多设备支持,请提交 [Issue](https://github.com/juewuy/ShellCrash/issues) 或前往 [Telegram 群组](https://t.me/ShellClash) 反馈(请附上设备型号及 `uname -a` 命令的输出信息)。
|
||||
|
||||
~确认设备已经开启SSH并获取root权限(带GUI桌面的Linux设备可使用自带终端安装)<br>
|
||||
~使用SSH连接工具(如putty,JuiceSSH,系统自带终端等)路由器或Linux设备的SSH管理界面或终端界面
|
||||
---
|
||||
|
||||
~之后在SSH界面执行目标设备对应的安装命令,并按照后续提示完成安装<br>
|
||||
## :hammer_and_wrench: 安装指南
|
||||
|
||||
### 在线安装:<br>
|
||||
> [!TIP]
|
||||
> 若遇到连接失败或SSL相关问题,请尝试切换至其他安装镜像站。
|
||||
|
||||
(**如无法连接或出现SSL连接错误,请尝试更换各种不同的安装源!**)<br>
|
||||
### 前置条件
|
||||
1. 确保设备已开启 **SSH** 并获得 **Root 权限**(带图形介面的 Linux 系统可直接使用终端)。
|
||||
2. 使用 SSH 工具(如 Putty、JuiceSSH、或系统自带终端)连接至设备。
|
||||
|
||||
~**标准Linux设备安装:**<br>
|
||||
### :penguin: 标准 Linux 设备安装
|
||||
|
||||
```shell
|
||||
sudo -i #切换到root用户,如果需要密码,请输入密码
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && bash /tmp/install.sh && source /etc/profile &> /dev/null
|
||||
```
|
||||
或者
|
||||
```shell
|
||||
sudo -i #切换到root用户,如果需要密码,请输入密码
|
||||
export url='https://gh.jwsc.eu.org/master' && bash -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
|
||||
> [!IMPORTANT]
|
||||
> 请以 root 用户进行安装。
|
||||
|
||||
> 使用 wget 安装(jsDelivr CDN 源)
|
||||
```sh
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' \
|
||||
&& wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh \
|
||||
&& bash /tmp/install.sh \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
~**路由设备使用curl安装**:<br>
|
||||
> 或使用 curl 安装(作者私人源)
|
||||
|
||||
```shell
|
||||
#GitHub源(可能需要代理)
|
||||
export url='https://raw.githubusercontent.com/juewuy/ShellCrash/master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
|
||||
```
|
||||
或者
|
||||
```shell
|
||||
#jsDelivrCDN源
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
|
||||
```
|
||||
或者
|
||||
```shell
|
||||
#作者私人源
|
||||
export url='https://gh.jwsc.eu.org/master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null
|
||||
```sh
|
||||
export url='https://gh.jwsc.eu.org/master' \
|
||||
&& bash -c "$(curl -kfsSl $url/install.sh)" \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
~**路由设备使用wget安装**:<br>
|
||||
### :satellite: 路由器设备安装
|
||||
|
||||
```Shell
|
||||
#GitHub源(可能需要代理)
|
||||
export url='https://raw.githubusercontent.com/juewuy/ShellCrash/master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null
|
||||
```
|
||||
或者
|
||||
```shell
|
||||
#jsDelivrCDN源
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null
|
||||
**使用 `curl` 安装:**
|
||||
> GitHub 源(推荐海外环境或具备代理环境使用)
|
||||
```sh
|
||||
export url='https://raw.githubusercontent.com/juewuy/ShellCrash/master' \
|
||||
&& sh -c "$(curl -kfsSl $url/install.sh)" \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
~**老旧设备使用低版本wge安装**:<br>
|
||||
> 或 jsDelivr CDN 源
|
||||
|
||||
```Shell
|
||||
#作者私人http内测源
|
||||
export url='http://t.jwsc.eu.org' && wget -q -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null
|
||||
```sh
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' \
|
||||
&& sh -c "$(curl -kfsSl $url/install.sh)" \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
##### ~**虚拟机安装:**<br>
|
||||
> 或作者私人源
|
||||
```sh
|
||||
export url='https://gh.jwsc.eu.org/master' \
|
||||
&& sh -c "$(curl -kfsSl $url/install.sh)" \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
虚拟机环境强烈建议使用Alpine镜像安装<br>
|
||||
**使用 `wget` 安装:**
|
||||
> GitHub 源(推荐海外环境或具备代理环境使用)
|
||||
```sh
|
||||
export url='https://raw.githubusercontent.com/juewuy/ShellCrash/master' \
|
||||
&& wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh \
|
||||
&& sh /tmp/install.sh \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
```shell
|
||||
#安装必要依赖
|
||||
> 或 jsDelivr CDN 源
|
||||
```sh
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' \
|
||||
&& wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh \
|
||||
&& sh /tmp/install.sh \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
### :pager: 老旧设备使用低版本 `wget` 安装
|
||||
|
||||
> 作者私人 http 内测源
|
||||
```sh
|
||||
export url='http://t.jwsc.eu.org' \
|
||||
&& wget -q -O /tmp/install.sh $url/install.sh \
|
||||
&& sh /tmp/install.sh \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
|
||||
### :cloud: 虚拟机
|
||||
- **Alpine Linux 虚拟机**:强烈建议使用 Alpine 镜像以获得最佳兼容性
|
||||
```sh
|
||||
# 安装必要依赖
|
||||
apk add --no-cache wget openrc ca-certificates tzdata nftables iproute2 dcron
|
||||
#执行安装命令
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null
|
||||
|
||||
# 执行安装命令
|
||||
export url='https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master' \
|
||||
&& wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh \
|
||||
&& sh /tmp/install.sh \
|
||||
&& . /etc/profile &> /dev/null
|
||||
```
|
||||
|
||||
##### ~Docker安装:<br>
|
||||
### :whale: Docker
|
||||
|
||||
请前往[ShellCrash官方Docker镜像](https://hub.docker.com/r/juewuy/shellcrash)
|
||||
请访问官方 Docker 镜像:
|
||||
|
||||
### **本地安装:**<br>
|
||||
- [ShellCrash on Docker Hub](https://hub.docker.com/r/juewuy/shellcrash)
|
||||
|
||||
如使用在线安装出现问题,请参考:[本地安装ShellCrash的教程 | Juewuy's Blog](https://juewuy.github.io/bdaz) 使用本地安装!<br>
|
||||
|
||||
### 使用脚本:<br>
|
||||
### :package: 本地安装
|
||||
|
||||
安装完成管理脚本后,执行如下命令使用~
|
||||
若无法进行在线安装,请参照以下指南执行本地安装:
|
||||
|
||||
```Shell
|
||||
crash #进入对话
|
||||
crash -h #帮助列表
|
||||
```
|
||||
- [本地安装ShellCrash教程 | Juewuy's Blog](https://juewuy.github.io/bdaz)
|
||||
|
||||
#### **运行时的额外依赖**:<br>
|
||||
---
|
||||
|
||||
> 大部分的设备/系统都已经预装了以下的大部分依赖,使用时如无影响可以无视之
|
||||
## :book: 使用说明
|
||||
|
||||
安装完成后,在终端输入以下指令即可启动管理界面:
|
||||
|
||||
```shell
|
||||
curl/wget 必须 全部缺少时无法在线安装及更新,无法使用节点保存功能
|
||||
iptables/nftables 重要 缺少时只能使用纯净模式
|
||||
crontab 较低 缺少时无法启用定时任务功能
|
||||
net-tools 极低 缺少时无法正常检测端口占用
|
||||
ubus/iproute-doc 极低 缺少时无法正常获取本机host地址
|
||||
crash # 启动脚本交互选单
|
||||
crash -h # 查看命令帮助列表
|
||||
```
|
||||
|
||||
### 运行依赖说明
|
||||
| 依赖组件 | 必要性 | 说明 |
|
||||
| :--- | :--- | :--- |
|
||||
| curl / wget | 必须 | 缺少时将无法进行节点保存、在线安装及更新操作 |
|
||||
| iptables / nftables | 重要 | 缺少时仅能运行于纯淨模式 |
|
||||
| crontab | 较低 | 缺少时定时任务功能将失效 |
|
||||
| net-tools | 极低 | 缺少时无法自动检测端口占用 |
|
||||
| ubus / iproute-doc | 极低 | 缺少时无法自动获取本机 Host 地址 |
|
||||
|
||||
---
|
||||
|
||||
更新日志:
|
||||
--
|
||||
## :link: 相关链接
|
||||
- 常见问题:[Juewuy's Blog](https://juewuy.github.io/chang-jian-wen-ti/)
|
||||
- 更新日志:[Release History](https://github.com/juewuy/ShellCrash/releases)
|
||||
- 交流反馈:[Telegram 讨论组](https://t.me/ShellClash)
|
||||
|
||||
### [点击查看](https://github.com/juewuy/ShellCrash/releases)
|
||||
---
|
||||
|
||||
交流反馈:
|
||||
--
|
||||
### [TG讨论组](https://t.me/ShellClash)
|
||||
## :scroll: 许可协议
|
||||
|
||||
机场推荐:
|
||||
--
|
||||
本项目采用[GNU通用公共许可证第3.0版](LICENSE.txt)授权。
|
||||
|
||||
#### [Dler-墙洞,多年稳定运行,功能齐全](https://dler.pro/auth/register?affid=89698)<br>
|
||||
---
|
||||
|
||||
#### [大米-群友力荐,流媒体解锁,月付推荐](https://1s.bigmeok.me/user#/register?code=2PuWY9I7)<br>
|
||||
## :airplane: 机场推荐
|
||||
|
||||
- [**大米**](https://1s.bigmeok.me/user#/register?code=2PuWY9I7),群友力荐,流媒体解锁,月付推荐。
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
meta_v=v1.19.17
|
||||
singboxr_v=1.13.0-alpha.27
|
||||
versionsh=1.9.3release
|
||||
versionsh=1.9.5alpha11
|
||||
GeoIP_v=20251205
|
||||
|
||||
@@ -15,7 +15,7 @@ docker run -d \
|
||||
--name shellcrash \
|
||||
-p 7890:7890 \
|
||||
-p 9999:9999 \
|
||||
shellcrash:latest
|
||||
juewuy/shellcrash:latest
|
||||
```
|
||||
|
||||
------
|
||||
@@ -57,9 +57,10 @@ docker run -d \
|
||||
--cap-add NET_ADMIN \
|
||||
--cap-add NET_RAW \
|
||||
--cap-add SYS_ADMIN \
|
||||
--sysctl net.ipv4.ip_forward=1 \
|
||||
--device /dev/net/tun:/dev/net/tun \
|
||||
--restart unless-stopped \
|
||||
shellcrash:latest
|
||||
juewuy/shellcrash:latest
|
||||
```
|
||||
|
||||
### 3. 配置需要路由的设备
|
||||
@@ -87,14 +88,10 @@ mkdir -p /root/ShellCrash
|
||||
```shell
|
||||
docker run -d \
|
||||
………………
|
||||
-v /root/ShellCrash:/etc/ShellCrash \
|
||||
-v shellcrash_configs:/etc/ShellCrash/configs \
|
||||
………………
|
||||
```
|
||||
|
||||
------
|
||||
|
||||
|
||||
|
||||
------
|
||||
|
||||
## Compose Deployment(Compose部署)
|
||||
@@ -102,8 +99,8 @@ docker run -d \
|
||||
### 1. 创建宿主机目录并进入目录
|
||||
|
||||
```shell
|
||||
mkdir -p /root/ShellCrash
|
||||
cd /root/ShellCrash
|
||||
mkdir -p /tmp/ShellCrash
|
||||
cd /tmp/ShellCrash
|
||||
```
|
||||
|
||||
### 2. 下载Compose模版
|
||||
@@ -126,8 +123,29 @@ docker compose up -d
|
||||
|
||||
------
|
||||
|
||||
### Notes
|
||||
## Delete(移除容器镜像或删除卷)
|
||||
|
||||
### Docker删除容器
|
||||
|
||||
```shell
|
||||
docker rm -f shellcrash
|
||||
```
|
||||
|
||||
### Docker删除卷
|
||||
|
||||
```shell
|
||||
docker volume rm shellcrash_configs
|
||||
```
|
||||
|
||||
### Compose删除容器&卷
|
||||
|
||||
```shell
|
||||
docker-compose down -v
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- 内置公网防火墙功能无法管理宿主机网络,请自行做好宿主机7890/9999端口的网络防护!
|
||||
- 旁路由模式需要宿主机支持 `TUN`
|
||||
- macvlan 网络下宿主机默认无法直接访问容器 IP
|
||||
- 透明代理场景可能需要额外的网络规划
|
||||
|
||||
@@ -2,8 +2,8 @@ version: "3.9"
|
||||
|
||||
services:
|
||||
shellclash:
|
||||
image: shellclash:latest
|
||||
container_name: shellclash
|
||||
image: juewuy/shellcrash:latest
|
||||
container_name: shellcrash
|
||||
networks:
|
||||
macvlan_lan:
|
||||
ipv4_address: 192.168.31.222
|
||||
@@ -14,11 +14,15 @@ services:
|
||||
devices:
|
||||
- "/dev/net/tun:/dev/net/tun"
|
||||
sysctls:
|
||||
net.ipv4.ip_forward: 1
|
||||
- net.ipv4.ip_forward: 1
|
||||
# - net.ipv6.conf.all.forwarding=1
|
||||
volumes:
|
||||
- /etc/ShellCrash:/root/ShellCrash
|
||||
- shellcrash_configs:/etc/ShellCrash/configs:rw
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
shellcrash_configs:
|
||||
|
||||
networks:
|
||||
macvlan_lan:
|
||||
name: macvlan_lan
|
||||
|
||||
535
install.sh
535
install.sh
@@ -1,20 +1,25 @@
|
||||
#! /bin/bash
|
||||
#!/bin/sh
|
||||
# Copyright (C) Juewuy
|
||||
|
||||
[ -z "$url" ] && url="https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@dev"
|
||||
type bash &>/dev/null && shtype=bash || shtype=sh
|
||||
[ -n "$(echo -e | grep e)" ] && echo=echo || echo='echo -e'
|
||||
echo "***********************************************"
|
||||
echo "** 欢迎使用 **"
|
||||
echo "** ShellCrash **"
|
||||
echo "** by Juewuy **"
|
||||
echo "***********************************************"
|
||||
#内置工具
|
||||
dir_avail() {
|
||||
df $2 $1 | awk '{ for(i=1;i<=NF;i++){ if(NR==1){ arr[i]=$i; }else{ arr[i]=arr[i]" "$i; } } } END{ for(i=1;i<=NF;i++){ print arr[i]; } }' | grep -E 'Ava|可用' | awk '{print $2}'
|
||||
|
||||
language=chs
|
||||
[ -z "$url" ] && url="https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master"
|
||||
|
||||
# 内置工具
|
||||
cecho() {
|
||||
printf '%b\n' "$*"
|
||||
}
|
||||
ckcmd() { #检查命令
|
||||
if command -v sh >/dev/null 2>&1;then
|
||||
dir_avail() {
|
||||
df -h >/dev/null 2>&1 && h="$2"
|
||||
df -P $h "${1:-.}" 2>/dev/null | awk 'NR==2 {print $4}'
|
||||
}
|
||||
ckcmd() {
|
||||
if command -v sh >/dev/null 2>&1; then
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
else
|
||||
type "$1" >/dev/null 2>&1
|
||||
@@ -26,7 +31,7 @@ webget() {
|
||||
if curl --version >/dev/null 2>&1; then
|
||||
[ "$3" = "echooff" ] && progress='-s' || progress='-#'
|
||||
[ -z "$4" ] && redirect='-L' || redirect=''
|
||||
result=$(curl -w %{http_code} --connect-timeout 5 $progress $redirect -ko $1 $2)
|
||||
result=$(curl -w %{http_code} --connect-timeout 5 "$progress" "$redirect" -ko "$1" "$2")
|
||||
[ -n "$(echo $result | grep -e ^2)" ] && result="200"
|
||||
else
|
||||
if wget --version >/dev/null 2>&1; then
|
||||
@@ -37,293 +42,331 @@ webget() {
|
||||
fi
|
||||
[ "$3" = "echoon" ] && progress=''
|
||||
[ "$3" = "echooff" ] && progress='-q'
|
||||
wget $progress $redirect $certificate $timeout -O $1 $2
|
||||
wget "$progress" "$redirect" "$certificate" "$timeout" -O "$1" "$2"
|
||||
[ $? -eq 0 ] && result="200"
|
||||
fi
|
||||
}
|
||||
error_down() {
|
||||
$echo "请参考 \033[32mhttps://github.com/juewuy/ShellCrash/blob/master/README_CN.md"
|
||||
$echo "\033[33m使用其他安装源重新安装!\033[0m"
|
||||
cecho "请参考 \033[32mhttps://github.com/juewuy/ShellCrash/blob/master/README_CN.md"
|
||||
cecho "\033[33m使用其他安装源重新安装!\033[0m"
|
||||
}
|
||||
#安装及初始化
|
||||
|
||||
# 安装及初始化
|
||||
set_alias() {
|
||||
echo "-----------------------------------------------"
|
||||
$echo "\033[36m请选择一个别名,或使用自定义别名:\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
$echo " 1 【\033[32mcrash\033[0m】"
|
||||
$echo " 2 【\033[32m sc \033[0m】"
|
||||
$echo " 3 【\033[32m mm \033[0m】"
|
||||
$echo " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字或自定义别名 > " res
|
||||
case "$res" in
|
||||
1) my_alias=crash ;;
|
||||
2) my_alias=sc ;;
|
||||
3) my_alias=mm ;;
|
||||
*) my_alias=$res ;;
|
||||
esac
|
||||
cmd=$(ckcmd "$my_alias" | grep 'menu.sh')
|
||||
ckcmd "$my_alias" && [ -z "$cmd" ] && {
|
||||
$echo "\033[33m此别名和当前系统内置命令/别名冲突,请换一个!\033[0m"
|
||||
sleep 1
|
||||
set_alias
|
||||
}
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[36m请选择一个别名,或使用自定义别名:\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
cecho " 1 【\033[32mcrash\033[0m】"
|
||||
cecho " 2 【\033[32m sc \033[0m】"
|
||||
cecho " 3 【\033[32m mm \033[0m】"
|
||||
cecho " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字或自定义别名 > " res
|
||||
case "$res" in
|
||||
0)
|
||||
echo "安装已取消"
|
||||
exit 1
|
||||
;;
|
||||
1)
|
||||
my_alias=crash
|
||||
;;
|
||||
2)
|
||||
my_alias=sc
|
||||
;;
|
||||
3)
|
||||
my_alias=mm
|
||||
;;
|
||||
*)
|
||||
my_alias=$res
|
||||
;;
|
||||
esac
|
||||
cmd=$(ckcmd "$my_alias" | grep 'menu.sh')
|
||||
ckcmd "$my_alias" && [ -z "$cmd" ] && {
|
||||
cecho "\033[33m此别名和当前系统内置命令/别名冲突,请换一个!\033[0m"
|
||||
sleep 1
|
||||
continue
|
||||
}
|
||||
break
|
||||
done
|
||||
}
|
||||
gettar() {
|
||||
webget /tmp/ShellCrash.tar.gz "$url/ShellCrash.tar.gz"
|
||||
webget /tmp/ShellCrash.tar.gz "$url/ShellCrash.tar.gz" >/dev/null 2>&1
|
||||
if [ "$result" != "200" ]; then
|
||||
$echo "\033[33m文件下载失败!\033[0m"
|
||||
cecho "\033[33m文件下载失败!\033[0m"
|
||||
error_down
|
||||
exit 1
|
||||
else
|
||||
$CRASHDIR/start.sh stop 2>/dev/null
|
||||
#解压
|
||||
"$CRASHDIR"/start.sh stop 2>/dev/null
|
||||
# 解压
|
||||
echo "-----------------------------------------------"
|
||||
echo 开始解压文件!
|
||||
mkdir -p $CRASHDIR >/dev/null
|
||||
tar -zxf '/tmp/ShellCrash.tar.gz' -C $CRASHDIR/ || tar -zxf '/tmp/ShellCrash.tar.gz' --no-same-owner -C $CRASHDIR/
|
||||
if [ -s $CRASHDIR/init.sh ]; then
|
||||
echo "开始解压文件!"
|
||||
mkdir -p "$CRASHDIR" >/dev/null
|
||||
tar -zxf '/tmp/ShellCrash.tar.gz' -C "$CRASHDIR"/ || tar -zxf '/tmp/ShellCrash.tar.gz' --no-same-owner -C "$CRASHDIR"/
|
||||
if [ -s "$CRASHDIR"/init.sh ]; then
|
||||
set_alias
|
||||
. $CRASHDIR/init.sh >/dev/null
|
||||
[ "$?" != 0 ] && $echo "\033[33m初始化失败,请尝试本地安装!\033[0m" && exit 1
|
||||
. "$CRASHDIR"/init.sh >/dev/null
|
||||
[ "$?" != 0 ] && cecho "\033[33m初始化失败,请尝试本地安装!\033[0m" && exit 1
|
||||
else
|
||||
rm -rf /tmp/ShellCrash.tar.gz
|
||||
$echo "\033[33m文件解压失败!\033[0m"
|
||||
cecho "\033[33m文件解压失败!\033[0m"
|
||||
error_down
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
setdir() {
|
||||
set_usb_dir() {
|
||||
$echo "请选择安装目录"
|
||||
set_usb_dir() {
|
||||
while true; do
|
||||
cecho "请选择安装目录"
|
||||
du -hL /mnt | awk '{print " "NR" "$2" "$1}'
|
||||
read -p "请输入相应数字 > " num
|
||||
dir=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p)
|
||||
if [ -z "$dir" ]; then
|
||||
$echo "\033[31m输入错误!请重新设置!\033[0m"
|
||||
set_usb_dir
|
||||
cecho "\033[31m输入错误!请重新设置!\033[0m"
|
||||
continue
|
||||
fi
|
||||
}
|
||||
set_asus_dir() {
|
||||
echo -e "请选择U盘目录"
|
||||
du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print " "NR" "$2" "$1}'
|
||||
read -p "请输入相应数字 > " num
|
||||
dir=$(du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print $2}' | sed -n "$num"p)
|
||||
if [ ! -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ]; then
|
||||
echo -e "\033[31m未找到下载大师自启文件:$dir/asusware.arm/etc/init.d/S50downloadmaster,请检查设置!\033[0m"
|
||||
set_asus_dir
|
||||
fi
|
||||
}
|
||||
set_cust_dir() {
|
||||
break 1
|
||||
done
|
||||
}
|
||||
set_xiaomi_dir() {
|
||||
cecho "\033[33m检测到当前设备为小米官方系统,请选择安装位置\033[0m"
|
||||
[ -d /data ] && cecho " 1 安装到 /data 目录,剩余空间:$(dir_avail /data -h)(支持软固化功能)"
|
||||
[ -d /userdisk ] && cecho " 2 安装到 /userdisk 目录,剩余空间:$(dir_avail /userdisk -h)(支持软固化功能)"
|
||||
[ -d /data/other_vol ] && cecho " 3 安装到 /data/other_vol 目录,剩余空间:$(dir_avail /data/other_vol -h)(支持软固化功能)"
|
||||
cecho " 4 安装到自定义目录(不推荐,不明勿用!)"
|
||||
cecho " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/data
|
||||
;;
|
||||
2)
|
||||
dir=/userdisk
|
||||
;;
|
||||
3)
|
||||
dir=/data/other_vol
|
||||
;;
|
||||
4)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
set_asus_usb() {
|
||||
while true; do
|
||||
echo -e "请选择U盘目录"
|
||||
du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print " "NR" "$2" "$1}'
|
||||
read -p "请输入相应数字 > " num
|
||||
dir=$(du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print $2}' | sed -n "$num"p)
|
||||
if [ ! -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ]; then
|
||||
echo -e "\033[31m未找到下载大师自启文件:$dir/asusware.arm/etc/init.d/S50downloadmaster,请检查设置!\033[0m"
|
||||
sleep 1
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
set_asus_dir() {
|
||||
cecho "\033[33m检测到当前设备为华硕固件,请选择安装方式\033[0m"
|
||||
cecho " 1 基于U盘+下载大师安装(支持所有固件,限ARM设备,须插入U盘或移动硬盘)"
|
||||
cecho " 2 基于自启脚本安装(仅支持部分梅林固件)"
|
||||
cecho " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
echo -e "请先在路由器网页后台安装下载大师并启用,之后选择外置存储所在目录!"
|
||||
sleep 2
|
||||
set_asus_usb
|
||||
;;
|
||||
2)
|
||||
cecho "如开机无法正常自启,请重新使用U盘+下载大师安装!"
|
||||
sleep 2
|
||||
dir=/jffs
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
set_cust_dir() {
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
echo '可用路径 剩余空间:'
|
||||
echo '可用路径 剩余空间:'
|
||||
df -h | awk '{print $6,$4}' | sed 1d
|
||||
echo '路径是必须带 / 的格式,注意写入虚拟内存(/tmp,/opt,/sys...)的文件会在重启后消失!!!'
|
||||
read -p "请输入自定义路径 > " dir
|
||||
if [ "$(dir_avail $dir)" = 0 ] || [ -n "$(echo $dir | grep -E 'tmp|opt|sys')" ]; then
|
||||
$echo "\033[31m路径错误!请重新设置!\033[0m"
|
||||
set_cust_dir
|
||||
if [ "$(dir_avail "$dir")" = 0 ] || [ -n "$(echo "$dir" | grep -Eq '^/(tmp|opt|sys)(/|$)')" ]; then
|
||||
cecho "\033[31m路径错误!请重新设置!\033[0m"
|
||||
continue
|
||||
fi
|
||||
}
|
||||
echo "-----------------------------------------------"
|
||||
$echo "\033[33m注意:安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m"
|
||||
if [ -n "$systype" ]; then
|
||||
[ "$systype" = "Padavan" ] && dir=/etc/storage
|
||||
[ "$systype" = "mi_snapshot" ] && {
|
||||
$echo "\033[33m检测到当前设备为小米官方系统,请选择安装位置\033[0m"
|
||||
[ -d /data ] && $echo " 1 安装到 /data 目录,剩余空间:$(dir_avail /data -h)(支持软固化功能)"
|
||||
[ -d /userdisk ] && $echo " 2 安装到 /userdisk 目录,剩余空间:$(dir_avail /userdisk -h)(支持软固化功能)"
|
||||
[ -d /data/other_vol ] && $echo " 3 安装到 /data/other_vol 目录,剩余空间:$(dir_avail /data/other_vol -h)(支持软固化功能)"
|
||||
$echo " 4 安装到自定义目录(不推荐,不明勿用!)"
|
||||
$echo " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/data
|
||||
;;
|
||||
2)
|
||||
dir=/userdisk
|
||||
;;
|
||||
3)
|
||||
dir=/data/other_vol
|
||||
;;
|
||||
4)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
[ "$systype" = "asusrouter" ] && {
|
||||
$echo "\033[33m检测到当前设备为华硕固件,请选择安装方式\033[0m"
|
||||
$echo " 1 基于USB设备安装(限23年9月之前固件,须插入\033[31m任意\033[0mUSB设备)"
|
||||
$echo " 2 基于自启脚本安装(仅支持梅林及部分非koolshare官改固件)"
|
||||
$echo " 3 基于U盘+下载大师安装(支持所有固件,限ARM设备,须插入U盘或移动硬盘)"
|
||||
$echo " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
read -p "将脚本安装到USB存储/系统闪存?(1/0) > " res
|
||||
[ "$res" = "1" ] && set_usb_dir || dir=/jffs
|
||||
usb_status=1
|
||||
;;
|
||||
2)
|
||||
$echo "如无法正常开机启动,请重新使用USB方式安装!"
|
||||
sleep 2
|
||||
dir=/jffs
|
||||
;;
|
||||
3)
|
||||
echo -e "请先在路由器网页后台安装下载大师并启用,之后选择外置存储所在目录!"
|
||||
sleep 2
|
||||
set_asus_dir
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
[ "$systype" = "ng_snapshot" ] && dir=/tmp/mnt
|
||||
else
|
||||
$echo " 1 在\033[32m/etc目录\033[0m下安装(适合root用户)"
|
||||
$echo " 2 在\033[32m/usr/share目录\033[0m下安装(适合Linux系统)"
|
||||
$echo " 3 在\033[32m当前用户目录\033[0m下安装(适合非root用户)"
|
||||
$echo " 4 在\033[32m外置存储\033[0m中安装"
|
||||
$echo " 5 手动设置安装目录"
|
||||
$echo " 0 退出安装"
|
||||
echo "----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
#设置目录
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/etc
|
||||
;;
|
||||
2)
|
||||
dir=/usr/share
|
||||
;;
|
||||
3)
|
||||
dir=~/.local/share
|
||||
mkdir -p ~/.config/systemd/user
|
||||
;;
|
||||
4)
|
||||
set_usb_dir
|
||||
;;
|
||||
5)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
echo "安装已取消"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
break 1
|
||||
done
|
||||
}
|
||||
|
||||
if [ ! -w $dir ]; then
|
||||
$echo "\033[31m没有$dir目录写入权限!请重新设置!\033[0m" && sleep 1 && setdir
|
||||
else
|
||||
$echo "目标目录\033[32m$dir\033[0m空间剩余:$(dir_avail $dir -h)"
|
||||
read -p "确认安装?(1/0) > " res
|
||||
[ "$res" = "1" ] && CRASHDIR=$dir/ShellCrash || setdir
|
||||
fi
|
||||
setdir() {
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[33m注意:安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m"
|
||||
case "$systype" in
|
||||
Padavan) dir=/etc/storage ;;
|
||||
mi_snapshot) set_xiaomi_dir ;;
|
||||
asusrouter) set_asus_dir ;;
|
||||
ng_snapshot) dir=/tmp/mnt ;;
|
||||
*)
|
||||
cecho " 1 在\033[32m/etc目录\033[0m下安装(适合root用户)"
|
||||
cecho " 2 在\033[32m/usr/share目录\033[0m下安装(适合Linux系统)"
|
||||
cecho " 3 在\033[32m当前用户目录\033[0m下安装(适合非root用户)"
|
||||
cecho " 4 在\033[32m外置存储\033[0m中安装"
|
||||
cecho " 5 手动设置安装目录"
|
||||
cecho " 0 退出安装"
|
||||
echo "----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
# 设置目录
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/etc
|
||||
;;
|
||||
2)
|
||||
dir=/usr/share
|
||||
;;
|
||||
3)
|
||||
dir=~/.local/share
|
||||
mkdir -p ~/.config/systemd/user
|
||||
;;
|
||||
4)
|
||||
set_usb_dir
|
||||
;;
|
||||
5)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
echo "安装已取消"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ! -w "$dir" ]; then
|
||||
cecho "\033[31m没有$dir目录写入权限!请重新设置!\033[0m"
|
||||
sleep 1
|
||||
else
|
||||
cecho "目标目录\033[32m$dir\033[0m空间剩余:$(dir_avail "$dir" -h)"
|
||||
read -p "确认安装?(1/0) > " res
|
||||
if [ "$res" = "1" ]; then
|
||||
CRASHDIR="$dir"/ShellCrash
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
install() {
|
||||
echo "-----------------------------------------------"
|
||||
echo 开始从服务器获取安装文件!
|
||||
echo "开始从服务器获取安装文件!"
|
||||
echo "-----------------------------------------------"
|
||||
gettar
|
||||
echo "-----------------------------------------------"
|
||||
echo "ShellCrash 已经安装成功!"
|
||||
[ "$profile" = "~/.bashrc" ] && echo "请执行【. ~/.bashrc > /dev/null】命令以加载环境变量!"
|
||||
[ -n "$(ls -l /bin/sh | grep -oE 'zsh')" ] && echo "请执行【. ~/.zshrc > /dev/null】命令以加载环境变量!"
|
||||
[ "$profile" = "~/.bashrc" ] && echo "请执行【. ~/.bashrc > /dev/null】命令以更新环境变量!"
|
||||
[ -n "$(ls -l /bin/sh | grep -oE 'zsh')" ] && echo "请执行【. ~/.zshrc > /dev/null】命令以更新环境变量!"
|
||||
echo "-----------------------------------------------"
|
||||
$echo "\033[33m输入\033[30;47m $my_alias \033[0;33m命令即可管理!!!\033[0m"
|
||||
cecho "\033[33m输入\033[30;47m $my_alias \033[0;33m命令即可管理!!!\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
}
|
||||
setversion() {
|
||||
echo "-----------------------------------------------"
|
||||
$echo "\033[33m请选择想要安装的版本:\033[0m"
|
||||
$echo " 1 \033[32m公测版(推荐)\033[0m"
|
||||
$echo " 2 \033[36m稳定版\033[0m"
|
||||
$echo " 3 \033[31m开发版\033[0m"
|
||||
cecho "\033[33m请选择想要安装的版本:\033[0m"
|
||||
cecho " 1 \033[32m公测版(推荐)\033[0m"
|
||||
cecho " 2 \033[36m稳定版\033[0m"
|
||||
cecho " 3 \033[31m开发版\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
case "$num" in
|
||||
2)
|
||||
url=$(echo $url | sed 's/master/stable/')
|
||||
;;
|
||||
3)
|
||||
url=$(echo $url | sed 's/master/dev/')
|
||||
;;
|
||||
1) release_type=master ;;
|
||||
2) release_type=stable ;;
|
||||
3) release_type=dev ;;
|
||||
*) ;;
|
||||
esac
|
||||
url=$(echo "$url" | sed "s/master/$release_type/")
|
||||
}
|
||||
#特殊固件识别及标记
|
||||
[ -f "/etc/storage/started_script.sh" ] && {
|
||||
systype=Padavan #老毛子固件
|
||||
initdir='/etc/storage/started_script.sh'
|
||||
|
||||
# 安装检查
|
||||
check_systype() {
|
||||
[ -f "/etc/storage/started_script.sh" ] && {
|
||||
systype=Padavan #老毛子固件
|
||||
initdir='/etc/storage/started_script.sh'
|
||||
}
|
||||
[ -d "/jffs" ] && {
|
||||
systype=asusrouter #华硕固件
|
||||
[ -f "/jffs/.asusrouter" ] && initdir='/jffs/.asusrouter'
|
||||
[ -d "/jffs/scripts" ] && initdir='/jffs/scripts/nat-start'
|
||||
}
|
||||
[ -f "/data/etc/crontabs/root" ] && systype=mi_snapshot #小米设备
|
||||
[ -w "/var/mnt/cfg/firewall" ] && systype=ng_snapshot #NETGEAR设备
|
||||
}
|
||||
[ -d "/jffs" ] && {
|
||||
systype=asusrouter #华硕固件
|
||||
[ -f "/jffs/.asusrouter" ] && initdir='/jffs/.asusrouter'
|
||||
[ -d "/jffs/scripts" ] && initdir='/jffs/scripts/nat-start'
|
||||
check_user() {
|
||||
if [ "$USER" != "root" ] && [ -z "$systype" ]; then
|
||||
echo "当前用户:$USER"
|
||||
cecho "\033[31m请尽量使用root用户(不要直接使用sudo命令!)执行安装!\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "仍要安装?可能会产生未知错误!(1/0) > " res
|
||||
[ "$res" != "1" ] && exit 1
|
||||
fi
|
||||
}
|
||||
[ -f "/data/etc/crontabs/root" ] && systype=mi_snapshot #小米设备
|
||||
[ -w "/var/mnt/cfg/firewall" ] && systype=ng_snapshot #NETGEAR设备
|
||||
check_version() {
|
||||
echo "$url" | grep -q 'master' && setversion
|
||||
webget /tmp/version "$url/version" echooff
|
||||
[ "$result" = "200" ] && versionsh=$(cat /tmp/version)
|
||||
rm -rf /tmp/version
|
||||
|
||||
#检查root权限
|
||||
if [ "$USER" != "root" -a -z "$systype" ]; then
|
||||
echo 当前用户:$USER
|
||||
$echo "\033[31m请尽量使用root用户(不要直接使用sudo命令!)执行安装!\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "仍要安装?可能会产生未知错误!(1/0) > " res
|
||||
[ "$res" != "1" ] && exit 1
|
||||
fi
|
||||
# 输出
|
||||
cecho "最新版本:\033[32m$versionsh\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[44m如遇问题请加TG群反馈:\033[42;30m t.me/ShellClash \033[0m"
|
||||
cecho "\033[37m支持各种基于openwrt的路由器设备"
|
||||
cecho "\033[33m支持Debian、Centos等标准Linux系统\033[0m"
|
||||
}
|
||||
check_dir() {
|
||||
if [ -n "$CRASHDIR" ]; then
|
||||
echo "-----------------------------------------------"
|
||||
cecho "检测到旧的安装目录\033[36m$CRASHDIR\033[0m,是否覆盖安装?"
|
||||
cecho "\033[32m覆盖安装时不会移除配置文件!\033[0m"
|
||||
echo " 1 覆盖安装"
|
||||
echo " 2 卸载旧版本并安装"
|
||||
echo " 0 取消安装"
|
||||
read -p "请输入相应数字 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
install
|
||||
;;
|
||||
2)
|
||||
[ "$CRASHDIR" != "/" ] && rm -rf "$CRASHDIR"
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[31m 旧版本文件已卸载!\033[0m"
|
||||
setdir
|
||||
install
|
||||
;;
|
||||
9)
|
||||
echo "测试模式,变更安装位置 $CRASHDIR"
|
||||
setdir
|
||||
install
|
||||
;;
|
||||
*)
|
||||
cecho "\033[31m已取消安装!\033[0m"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
setdir
|
||||
install
|
||||
fi
|
||||
}
|
||||
|
||||
if [ -n "$(echo $url | grep master)" ]; then
|
||||
setversion
|
||||
fi
|
||||
#获取版本信息
|
||||
webget /tmp/version "$url/version" echooff
|
||||
[ "$result" = "200" ] && versionsh=$(cat /tmp/version)
|
||||
rm -rf /tmp/version
|
||||
|
||||
#输出
|
||||
$echo "最新版本:\033[32m$versionsh\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
$echo "\033[44m如遇问题请加TG群反馈:\033[42;30m t.me/ShellClash \033[0m"
|
||||
$echo "\033[37m支持各种基于openwrt的路由器设备"
|
||||
$echo "\033[33m支持Debian、Centos等标准Linux系统\033[0m"
|
||||
|
||||
if [ -n "$CRASHDIR" ]; then
|
||||
echo "-----------------------------------------------"
|
||||
$echo "检测到旧的安装目录\033[36m$CRASHDIR\033[0m,是否覆盖安装?"
|
||||
$echo "\033[32m覆盖安装时不会移除配置文件!\033[0m"
|
||||
read -p "覆盖安装/卸载旧版本?(1/0) > " res
|
||||
case "$res" in
|
||||
1)
|
||||
install
|
||||
;;
|
||||
0)
|
||||
rm -rf $CRASHDIR
|
||||
echo "-----------------------------------------------"
|
||||
$echo "\033[31m 旧版本文件已卸载!\033[0m"
|
||||
setdir
|
||||
install
|
||||
;;
|
||||
9)
|
||||
echo "测试模式,变更安装位置"
|
||||
setdir
|
||||
install
|
||||
;;
|
||||
*)
|
||||
$echo "\033[31m输入错误!已取消安装!\033[0m"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
setdir
|
||||
install
|
||||
fi
|
||||
check_systype
|
||||
check_user
|
||||
check_version
|
||||
check_dir
|
||||
|
||||
372
install_en.sh
Normal file
372
install_en.sh
Normal file
@@ -0,0 +1,372 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) Juewuy
|
||||
|
||||
echo "***********************************************"
|
||||
echo "** Welcome to **"
|
||||
echo "** ShellCrash **"
|
||||
echo "** by Juewuy **"
|
||||
echo "***********************************************"
|
||||
|
||||
language=en
|
||||
[ -z "$url" ] && url="https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master"
|
||||
|
||||
# Internal Tools
|
||||
cecho() {
|
||||
printf '%b\n' "$*"
|
||||
}
|
||||
dir_avail() {
|
||||
df -h >/dev/null 2>&1 && h="$2"
|
||||
df -P $h "${1:-.}" 2>/dev/null | awk 'NR==2 {print $4}'
|
||||
}
|
||||
ckcmd() {
|
||||
if command -v sh >/dev/null 2>&1; then
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
else
|
||||
type "$1" >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
webget() {
|
||||
# Parameter [$1] Download Path, [$2] Online URL
|
||||
# Parameter [$3] Display Output, [$4] Disable Redirects
|
||||
if curl --version >/dev/null 2>&1; then
|
||||
[ "$3" = "echooff" ] && progress='-s' || progress='-#'
|
||||
[ -z "$4" ] && redirect='-L' || redirect=''
|
||||
result=$(curl -w %{http_code} --connect-timeout 5 "$progress" "$redirect" -ko "$1" "$2")
|
||||
[ -n "$(echo $result | grep -e ^2)" ] && result="200"
|
||||
else
|
||||
if wget --version >/dev/null 2>&1; then
|
||||
[ "$3" = "echooff" ] && progress='-q' || progress='-q --show-progress'
|
||||
[ "$4" = "rediroff" ] && redirect='--max-redirect=0' || redirect=''
|
||||
certificate='--no-check-certificate'
|
||||
timeout='--timeout=3'
|
||||
fi
|
||||
[ "$3" = "echoon" ] && progress=''
|
||||
[ "$3" = "echooff" ] && progress='-q'
|
||||
wget "$progress" "$redirect" "$certificate" "$timeout" -O "$1" "$2"
|
||||
[ $? -eq 0 ] && result="200"
|
||||
fi
|
||||
}
|
||||
error_down() {
|
||||
cecho "Please refer to \033[32mhttps://github.com/juewuy/ShellCrash/blob/master/README.md"
|
||||
cecho "\033[33mUse an alternative source to reinstall!\033[0m"
|
||||
}
|
||||
|
||||
# Installation and Initialization
|
||||
set_alias() {
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[36mPlease select an alias or enter a custom one:\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
cecho " 1 【\033[32mcrash\033[0m】"
|
||||
cecho " 2 【\033[32m sc \033[0m】"
|
||||
cecho " 3 【\033[32m mm \033[0m】"
|
||||
cecho " 0 Exit Installation"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "Enter number or custom alias > " res
|
||||
case "$res" in
|
||||
0)
|
||||
echo "Installation cancelled"
|
||||
exit 1
|
||||
;;
|
||||
1)
|
||||
my_alias=crash
|
||||
;;
|
||||
2)
|
||||
my_alias=sc
|
||||
;;
|
||||
3)
|
||||
my_alias=mm
|
||||
;;
|
||||
*)
|
||||
my_alias=$res
|
||||
;;
|
||||
esac
|
||||
cmd=$(ckcmd "$my_alias" | grep 'menu.sh')
|
||||
ckcmd "$my_alias" && [ -z "$cmd" ] && {
|
||||
cecho "\033[33mThis alias conflicts with a system command; please choose another!\033[0m"
|
||||
sleep 1
|
||||
continue
|
||||
}
|
||||
break
|
||||
done
|
||||
}
|
||||
gettar() {
|
||||
webget /tmp/ShellCrash.tar.gz "$url/ShellCrash.tar.gz" >/dev/null 2>&1
|
||||
if [ "$result" != "200" ]; then
|
||||
cecho "\033[33mFile download failed!\033[0m"
|
||||
error_down
|
||||
exit 1
|
||||
else
|
||||
"$CRASHDIR"/start.sh stop 2>/dev/null
|
||||
# Extract
|
||||
echo "-----------------------------------------------"
|
||||
echo "Starting file extraction!"
|
||||
mkdir -p "$CRASHDIR" >/dev/null
|
||||
tar -zxf '/tmp/ShellCrash.tar.gz' -C "$CRASHDIR"/ || tar -zxf '/tmp/ShellCrash.tar.gz' --no-same-owner -C "$CRASHDIR"/
|
||||
if [ -s "$CRASHDIR"/init.sh ]; then
|
||||
set_alias
|
||||
. "$CRASHDIR"/init.sh >/dev/null
|
||||
[ "$?" != 0 ] && cecho "\033[33mInitialization failed, try local installation!\033[0m" && exit 1
|
||||
else
|
||||
rm -rf /tmp/ShellCrash.tar.gz
|
||||
cecho "\033[33mFile extraction failed!\033[0m"
|
||||
error_down
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
set_usb_dir() {
|
||||
while true; do
|
||||
cecho "Please select installation directory"
|
||||
du -hL /mnt | awk '{print " "NR" "$2" "$1}'
|
||||
read -p "Enter number > " num
|
||||
dir=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p)
|
||||
if [ -z "$dir" ]; then
|
||||
cecho "\033[31mInvalid input! Please try again!\033[0m"
|
||||
continue
|
||||
fi
|
||||
break 1
|
||||
done
|
||||
}
|
||||
set_xiaomi_dir() {
|
||||
cecho "\033[33mXiaomi device detected, please select installation location\033[0m"
|
||||
[ -d /data ] && cecho " 1 Install to /data, Free space: $(dir_avail /data -h) (Supports soft-hardening)"
|
||||
[ -d /userdisk ] && cecho " 2 Install to /userdisk, Free space: $(dir_avail /userdisk -h) (Supports soft-hardening)"
|
||||
[ -d /data/other_vol ] && cecho " 3 Install to /data/other_vol, Free space: $(dir_avail /data/other_vol -h) (Supports soft-hardening)"
|
||||
cecho " 4 Custom directory (Not recommended for beginners!)"
|
||||
cecho " 0 Exit"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "Enter number > " num
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/data
|
||||
;;
|
||||
2)
|
||||
dir=/userdisk
|
||||
;;
|
||||
3)
|
||||
dir=/data/other_vol
|
||||
;;
|
||||
4)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
set_asus_usb() {
|
||||
while true; do
|
||||
echo -e "Please select USB directory"
|
||||
du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print " "NR" "$2" "$1}'
|
||||
read -p "Enter number > " num
|
||||
dir=$(du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print $2}' | sed -n "$num"p)
|
||||
if [ ! -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ]; then
|
||||
echo -e "\033[31mDownload Master startup file not found: $dir/asusware.arm/etc/init.d/S50downloadmaster. Check settings!\033[0m"
|
||||
sleep 1
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
set_asus_dir() {
|
||||
cecho "\033[33mAsus firmware detected, please select installation method\033[0m"
|
||||
cecho " 1 Via USB + Download Master (Supports all firmware, ARM only, USB required)"
|
||||
cecho " 2 Via startup script (Merlin firmware only)"
|
||||
cecho " 0 Exit"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "Enter number > " num
|
||||
case "$num" in
|
||||
1)
|
||||
echo -e "Please install and enable Download Master in the router web UI first, then select the storage directory!"
|
||||
sleep 2
|
||||
set_asus_usb
|
||||
;;
|
||||
2)
|
||||
cecho "If auto-start fails after reboot, please use USB + Download Master method instead!"
|
||||
sleep 2
|
||||
dir=/jffs
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
set_cust_dir() {
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
echo 'Path | Free Space:'
|
||||
df -h | awk '{print $6,$4}' | sed 1d
|
||||
echo 'Path must start with "/". Files in virtual memory (/tmp, /opt, /sys...) will be lost on reboot!!!'
|
||||
read -p "Enter custom path > " dir
|
||||
if [ "$(dir_avail "$dir")" = 0 ] || [ -n "$(echo "$dir" | grep -Eq '^/(tmp|opt|sys)(/|$)')" ]; then
|
||||
cecho "\033[31mInvalid path! Please try again!\033[0m"
|
||||
continue
|
||||
fi
|
||||
break 1
|
||||
done
|
||||
}
|
||||
|
||||
setdir() {
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[33mNote: ShellCrash requires at least 1MB of disk space\033[0m"
|
||||
case "$systype" in
|
||||
Padavan) dir=/etc/storage ;;
|
||||
mi_snapshot) set_xiaomi_dir ;;
|
||||
asusrouter) set_asus_dir ;;
|
||||
ng_snapshot) dir=/tmp/mnt ;;
|
||||
*)
|
||||
cecho " 1 Install in \033[32m/etc\033[0m (Best for root users)"
|
||||
cecho " 2 Install in \033[32m/usr/share\033[0m (Standard Linux systems)"
|
||||
cecho " 3 Install in \033[32mUser Directory\033[0m (Best for non-root users)"
|
||||
cecho " 4 Install on \033[32mExternal Storage\033[0m"
|
||||
cecho " 5 Manual path entry"
|
||||
cecho " 0 Exit"
|
||||
echo "----------------------------------------------"
|
||||
read -p "Enter number > " num
|
||||
# Set Dir
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/etc
|
||||
;;
|
||||
2)
|
||||
dir=/usr/share
|
||||
;;
|
||||
3)
|
||||
dir=~/.local/share
|
||||
mkdir -p ~/.config/systemd/user
|
||||
;;
|
||||
4)
|
||||
set_usb_dir
|
||||
;;
|
||||
5)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
echo "Installation cancelled"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ! -w "$dir" ]; then
|
||||
cecho "\033[31mNo write permission for $dir! Please reset!\033[0m"
|
||||
sleep 1
|
||||
else
|
||||
cecho "Target directory: \033[32m$dir\033[0m | Free space: $(dir_avail "$dir" -h)"
|
||||
read -p "Confirm installation? (1/0) > " res
|
||||
if [ "$res" = "1" ]; then
|
||||
CRASHDIR="$dir"/ShellCrash
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
install() {
|
||||
echo "-----------------------------------------------"
|
||||
echo "Retrieving installation files from server..."
|
||||
echo "-----------------------------------------------"
|
||||
gettar
|
||||
echo "-----------------------------------------------"
|
||||
echo "ShellCrash installed successfully!"
|
||||
[ "$profile" = "~/.bashrc" ] && echo "Please run [. ~/.bashrc > /dev/null] to update environment variables!"
|
||||
[ -n "$(ls -l /bin/sh | grep -oE 'zsh')" ] && echo "Please run [. ~/.zshrc > /dev/null] to update environment variables!"
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[33mType \033[30;47m $my_alias \033[0;33m to start management dashboard!!!\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
}
|
||||
setversion() {
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[33mSelect version to install:\033[0m"
|
||||
cecho " 1 \033[32mBeta (Recommended)\033[0m"
|
||||
cecho " 2 \033[36mStable\033[0m"
|
||||
cecho " 3 \033[31mDev (Unstable)\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "Enter number > " num
|
||||
case "$num" in
|
||||
1) release_type=master ;;
|
||||
2) release_type=stable ;;
|
||||
3) release_type=dev ;;
|
||||
*) ;;
|
||||
esac
|
||||
url=$(echo "$url" | sed "s/master/$release_type/")
|
||||
}
|
||||
|
||||
# Pre-Install Checks
|
||||
check_systype() {
|
||||
[ -f "/etc/storage/started_script.sh" ] && {
|
||||
systype=Padavan # Padavan Firmware
|
||||
initdir='/etc/storage/started_script.sh'
|
||||
}
|
||||
[ -d "/jffs" ] && {
|
||||
systype=asusrouter # Asus Firmware
|
||||
[ -f "/jffs/.asusrouter" ] && initdir='/jffs/.asusrouter'
|
||||
[ -d "/jffs/scripts" ] && initdir='/jffs/scripts/nat-start'
|
||||
}
|
||||
[ -f "/data/etc/crontabs/root" ] && systype=mi_snapshot # Xiaomi device
|
||||
[ -w "/var/mnt/cfg/firewall" ] && systype=ng_snapshot # NETGEAR device
|
||||
}
|
||||
check_user() {
|
||||
if [ "$USER" != "root" ] && [ -z "$systype" ]; then
|
||||
echo "Current User: $USER"
|
||||
cecho "\033[31mPlease use the root user (do not use sudo directly!) to install!\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "Install anyway? Unknown errors may occur! (1/0) > " res
|
||||
[ "$res" != "1" ] && exit 1
|
||||
fi
|
||||
}
|
||||
check_version() {
|
||||
echo "$url" | grep -q 'master' && setversion
|
||||
webget /tmp/version "$url/version" echooff
|
||||
[ "$result" = "200" ] && versionsh=$(cat /tmp/version)
|
||||
rm -rf /tmp/version
|
||||
|
||||
# Output
|
||||
cecho "Latest Version: \033[32m$versionsh\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[44mFor issues, please join the TG group: \033[42;30m t.me/ShellClash \033[0m"
|
||||
cecho "\033[37mSupports various OpenWrt-based router devices"
|
||||
cecho "\033[33mSupports Debian, Centos and standard Linux systems\033[0m"
|
||||
}
|
||||
check_dir() {
|
||||
if [ -n "$CRASHDIR" ]; then
|
||||
echo "-----------------------------------------------"
|
||||
cecho "Old installation detected at \033[36m$CRASHDIR\033[0m. Overwrite?"
|
||||
cecho "\033[32mConfiguration files will NOT be removed during overwrite!\033[0m"
|
||||
echo " 1 Overwrite Installation"
|
||||
echo " 2 Uninstall old version and reinstall"
|
||||
echo " 0 Cancel"
|
||||
read -p "Enter number > " num
|
||||
case "$num" in
|
||||
1)
|
||||
install
|
||||
;;
|
||||
2)
|
||||
[ "$CRASHDIR" != "/" ] && rm -rf "$CRASHDIR"
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[31mOld version uninstalled!\033[0m"
|
||||
setdir
|
||||
install
|
||||
;;
|
||||
9)
|
||||
echo "Test Mode: Changing installation path $CRASHDIR"
|
||||
setdir
|
||||
install
|
||||
;;
|
||||
*)
|
||||
cecho "\033[31mInstallation cancelled!\033[0m"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
else
|
||||
setdir
|
||||
install
|
||||
fi
|
||||
}
|
||||
|
||||
check_systype
|
||||
check_user
|
||||
check_version
|
||||
check_dir
|
||||
@@ -72,6 +72,7 @@ localhost.ptlogin2.qq.com
|
||||
localhost.sec.qq.com
|
||||
#微信登录
|
||||
localhost.*.weixin.qq.com
|
||||
+.kk-rays.com
|
||||
#Game
|
||||
#Steam
|
||||
+.steamcontent.com
|
||||
@@ -154,4 +155,6 @@ ps.res.netease.com
|
||||
+.orayimg.com
|
||||
#LOL语音
|
||||
+.gcloudcs.com
|
||||
+.gcloudsdk.com
|
||||
+.gcloudsdk.com
|
||||
#ddns
|
||||
+.dynv6.net
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
101#$CRASHDIR/start.sh start#启动ShellCrash服务
|
||||
102#$CRASHDIR/start.sh stop#停止ShellCrash服务
|
||||
103#$CRASHDIR/start.sh restart#重启ShellCrash服务
|
||||
104#$CRASHDIR/start.sh update_config#更新在线订阅并重启服务
|
||||
105#$CRASHDIR/start.sh hotupdate#热更新在线订阅(不重启)
|
||||
106#$CRASHDIR/start.sh web_save#自动保存面板配置
|
||||
104#$CRASHDIR/task/task.sh update_config#更新在线订阅并重启服务
|
||||
105#$CRASHDIR/task/task.sh hotupdate#热更新在线订阅(不重启)
|
||||
106#$CRASHDIR/task/task.sh web_save_auto#自动保存面板配置
|
||||
107#$CRASHDIR/task/task.sh ntp#自动同步ntp时间
|
||||
|
||||
111#$CRASHDIR/task/task.sh update_core#自动更新内核
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
#DustinWin-geosite全分组规则+去广告
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, 👉 手动选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 全球直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 全球直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🌍 国外媒体, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎮 游戏平台, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🛡️ 直连域名, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 直连 IP, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, 🎯 全球直连]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 本地直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🕹️ 游戏平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 本地直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌍 国外媒体, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇨🇳 国内域名, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 国内 IP, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌎 国外域名, type: select, proxies: [🚀 节点选择, 🎯 本地直连]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 全球直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 全球直连]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 本地直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 本地直连]}
|
||||
- {name: 🛑 广告域名, type: select, proxies: [🔴 全球拦截, 🟢 全球绕过]}
|
||||
- {name: 🔴 全球拦截, type: select, proxies: [REJECT], hidden: true}
|
||||
- {name: 🟢 全球绕过, type: select, proxies: [PASS], hidden: true}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
|
||||
- {name: 👑 高级节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)"}
|
||||
- {name: 📉 省流节点, type: url-test, tolerance: 100, include-all: true, filter: "(0\\.[1-5]|低倍率|省流|大流量)"}
|
||||
@@ -39,15 +39,14 @@ rules:
|
||||
- GEOSITE,apple-cn,🍎 苹果服务
|
||||
- GEOSITE,google-cn,🇬 谷歌服务
|
||||
- GEOSITE,games-cn,🎮 游戏服务
|
||||
- GEOSITE,games,🕹️ 游戏平台
|
||||
- GEOSITE,media,🌍 国外媒体
|
||||
- GEOSITE,games,🎮 游戏平台
|
||||
- GEOSITE,ai,🤖 AI 平台
|
||||
- GEOSITE,networktest,📈 网络测试
|
||||
- GEOSITE,proxy,🧱 代理域名
|
||||
- GEOSITE,cn,🛡️ 直连域名
|
||||
- GEOSITE,proxy,🌎 国外域名
|
||||
- GEOSITE,cn,🇨🇳 国内域名
|
||||
- GEOIP,private,🔒 私有网络,no-resolve
|
||||
- GEOIP,cn,🀄️ 直连 IP
|
||||
- GEOIP,media,🌍 国外媒体
|
||||
- GEOIP,games,🎮 游戏平台
|
||||
- GEOIP,cn,🀄️ 国内 IP
|
||||
- GEOIP,telegram,📲 电报消息,no-resolve
|
||||
- GEOIP,media,🌍 国外媒体
|
||||
- MATCH,🐟 漏网之鱼
|
||||
@@ -1,22 +1,22 @@
|
||||
#DustinWin-geosite全分组规则
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, 👉 手动选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 全球直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 全球直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🌍 国外媒体, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎮 游戏平台, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🛡️ 直连域名, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 直连 IP, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, 🎯 全球直连]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 本地直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🕹️ 游戏平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 本地直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌍 国外媒体, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇨🇳 国内域名, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 国内 IP, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌎 国外域名, type: select, proxies: [🚀 节点选择, 🎯 本地直连]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 全球直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 全球直连]}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 本地直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 本地直连]}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
|
||||
- {name: 👑 高级节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)"}
|
||||
- {name: 📉 省流节点, type: url-test, tolerance: 100, include-all: true, filter: "(0\\.[1-5]|低倍率|省流|大流量)"}
|
||||
@@ -35,15 +35,14 @@ rules:
|
||||
- GEOSITE,apple-cn,🍎 苹果服务
|
||||
- GEOSITE,google-cn,🇬 谷歌服务
|
||||
- GEOSITE,games-cn,🎮 游戏服务
|
||||
- GEOSITE,games,🕹️ 游戏平台
|
||||
- GEOSITE,media,🌍 国外媒体
|
||||
- GEOSITE,games,🎮 游戏平台
|
||||
- GEOSITE,ai,🤖 AI 平台
|
||||
- GEOSITE,networktest,📈 网络测试
|
||||
- GEOSITE,proxy,🧱 代理域名
|
||||
- GEOSITE,cn,🛡️ 直连域名
|
||||
- GEOSITE,proxy,🌎 国外域名
|
||||
- GEOSITE,cn,🇨🇳 国内域名
|
||||
- GEOIP,private,🔒 私有网络,no-resolve
|
||||
- GEOIP,cn,🀄️ 直连 IP
|
||||
- GEOIP,media,🌍 国外媒体
|
||||
- GEOIP,games,🎮 游戏平台
|
||||
- GEOIP,cn,🀄️ 国内 IP
|
||||
- GEOIP,telegram,📲 电报消息,no-resolve
|
||||
- GEOIP,media,🌍 国外媒体
|
||||
- MATCH,🐟 漏网之鱼
|
||||
@@ -1,12 +1,12 @@
|
||||
#DustinWin-gesite轻量规则
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, 👉 手动选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🀄️ 直连 IP, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, 🎯 全球直连]}
|
||||
- {name: 🀄️ 国内 IP, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌎 国外域名, type: select, proxies: [🚀 节点选择, 🎯 本地直连]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [全球直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 全球直连]}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 本地直连]}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
|
||||
- {name: 👑 高级节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)"}
|
||||
- {name: 📉 省流节点, type: url-test, tolerance: 100, include-all: true, filter: "(0\\.[1-5]|低倍率|省流|大流量)"}
|
||||
@@ -20,9 +20,9 @@ proxy-groups:
|
||||
|
||||
rules:
|
||||
- GEOSITE,private,🔒 私有网络
|
||||
- GEOSITE,tld-proxy,🧱 代理域名
|
||||
- GEOSITE,proxy,🧱 代理域名
|
||||
- GEOSITE,tld-proxy,🌎 国外域名
|
||||
- GEOSITE,proxy,🌎 国外域名
|
||||
- GEOIP,private,🔒 私有网络,no-resolve
|
||||
- GEOIP,cn,🀄️ 直连 IP
|
||||
- GEOIP,cn,🀄️ 国内 IP
|
||||
- GEOIP,telegram,📲 电报消息,no-resolve
|
||||
- MATCH,🐟 漏网之鱼
|
||||
@@ -1,23 +1,23 @@
|
||||
#DustinWin-geosite标准规则+去广告
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, 👉 手动选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 全球直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 全球直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🛡️ 直连域名, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 直连 IP, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, 🎯 全球直连]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 本地直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 本地直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇨🇳 国内域名, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 国内 IP, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌎 国外域名, type: select, proxies: [🚀 节点选择, 🎯 本地直连]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 全球直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 全球直连]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 本地直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 本地直连]}
|
||||
- {name: 🛑 广告域名, type: select, proxies: [🔴 全球拦截, 🟢 全球绕过]}
|
||||
- {name: 🔴 全球拦截, type: select, proxies: [REJECT], hidden: true}
|
||||
- {name: 🟢 全球绕过, type: select, proxies: [PASS], hidden: true}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
|
||||
- {name: 👑 高级节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)"}
|
||||
- {name: 📉 省流节点, type: url-test, tolerance: 100, include-all: true, filter: "(0\\.[1-5]|低倍率|省流|大流量)"}
|
||||
@@ -39,9 +39,9 @@ rules:
|
||||
- GEOSITE,games-cn,🎮 游戏服务
|
||||
- GEOSITE,ai,🤖 AI 平台
|
||||
- GEOSITE,networktest,📈 网络测试
|
||||
- GEOSITE,proxy,🧱 代理域名
|
||||
- GEOSITE,cn,🛡️ 直连域名
|
||||
- GEOSITE,proxy,🌎 国外域名
|
||||
- GEOSITE,cn,🇨🇳 国内域名
|
||||
- GEOIP,private,🔒 私有网络,no-resolve
|
||||
- GEOIP,cn,🀄️ 直连 IP
|
||||
- GEOIP,cn,🀄️ 国内 IP
|
||||
- GEOIP,telegram,📲 电报消息,no-resolve
|
||||
- MATCH,🐟 漏网之鱼
|
||||
@@ -1,20 +1,20 @@
|
||||
#DustinWin-geosite标准规则
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, 👉 手动选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 全球直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 全球直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🛡️ 直连域名, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 直连 IP, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, 🎯 全球直连]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 本地直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 本地直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇨🇳 国内域名, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 国内 IP, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌎 国外域名, type: select, proxies: [🚀 节点选择, 🎯 本地直连]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 全球直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 全球直连]}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 本地直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 本地直连]}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
|
||||
- {name: 👑 高级节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)"}
|
||||
- {name: 📉 省流节点, type: url-test, tolerance: 100, include-all: true, filter: "(0\\.[1-5]|低倍率|省流|大流量)"}
|
||||
@@ -35,9 +35,9 @@ rules:
|
||||
- GEOSITE,games-cn,🎮 游戏服务
|
||||
- GEOSITE,ai,🤖 AI 平台
|
||||
- GEOSITE,networktest,📈 网络测试
|
||||
- GEOSITE,proxy,🧱 代理域名
|
||||
- GEOSITE,cn,🛡️ 直连域名
|
||||
- GEOSITE,proxy,🌎 国外域名
|
||||
- GEOSITE,cn,🇨🇳 国内域名
|
||||
- GEOIP,private,🔒 私有网络,no-resolve
|
||||
- GEOIP,cn,🀄️ 直连 IP
|
||||
- GEOIP,cn,🀄️ 国内 IP
|
||||
- GEOIP,telegram,📲 电报消息,no-resolve
|
||||
- MATCH,🐟 漏网之鱼
|
||||
@@ -1,25 +1,27 @@
|
||||
#DustinWin-ruleset全分组规则+去广告
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, 👉 手动选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 全球直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 全球直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🌍 国外媒体, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎮 游戏平台, type: select, proxies: [🚀 节点选择, 🎯 全球直连, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🛡️ 直连域名, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 直连 IP, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, 🎯 全球直连]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 本地直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🕹️ 游戏平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 本地直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🎥 奈飞视频, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📹 油管视频, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🌍 国外媒体, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇨🇳 国内域名, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 国内 IP, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌎 国外域名, type: select, proxies: [🚀 节点选择, 🎯 本地直连]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 全球直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 全球直连]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 本地直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 本地直连]}
|
||||
- {name: 🛑 广告域名, type: select, proxies: [🔴 全球拦截, 🟢 全球绕过]}
|
||||
- {name: 🔴 全球拦截, type: select, proxies: [REJECT], hidden: true}
|
||||
- {name: 🟢 全球绕过, type: select, proxies: [PASS], hidden: true}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
|
||||
- {name: 👑 高级节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)"}
|
||||
- {name: 📉 省流节点, type: url-test, tolerance: 100, include-all: true, filter: "(0\\.[1-5]|低倍率|省流|大流量)"}
|
||||
@@ -32,20 +34,20 @@ proxy-groups:
|
||||
- {name: 🇺🇸 美国节点, type: url-test, tolerance: 100, include-all: true, filter: "(?i)(🇺🇸|美|us|unitedstates|united states)"}
|
||||
|
||||
rule-providers:
|
||||
private:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/private.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/private.mrs"
|
||||
interval: 86400
|
||||
|
||||
ads:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/ads.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/ads.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/ads.mrs"
|
||||
interval: 86400
|
||||
|
||||
private:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/private.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/private.mrs"
|
||||
interval: 86400
|
||||
|
||||
trackerslist:
|
||||
@@ -53,7 +55,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/trackerslist.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/trackerslist.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/trackerslist.mrs"
|
||||
interval: 86400
|
||||
|
||||
microsoft-cn:
|
||||
@@ -61,7 +63,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/microsoft-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/microsoft-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/microsoft-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
apple-cn:
|
||||
@@ -69,7 +71,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/apple-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/apple-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/apple-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
google-cn:
|
||||
@@ -77,7 +79,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/google-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/google-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/google-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
games-cn:
|
||||
@@ -85,15 +87,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/games-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
media:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/media.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/media.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/games-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
games:
|
||||
@@ -101,7 +95,31 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/games.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/games.mrs"
|
||||
interval: 86400
|
||||
|
||||
netflix:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/netflix.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/netflix.mrs"
|
||||
interval: 86400
|
||||
|
||||
youtube:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/youtube.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/youtube.mrs"
|
||||
interval: 86400
|
||||
|
||||
media:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/media.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/media.mrs"
|
||||
interval: 86400
|
||||
|
||||
ai:
|
||||
@@ -109,7 +127,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/ai.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/ai.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/ai.mrs"
|
||||
interval: 86400
|
||||
|
||||
networktest:
|
||||
@@ -117,7 +135,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/networktest.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/networktest.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/networktest.mrs"
|
||||
interval: 86400
|
||||
|
||||
proxy:
|
||||
@@ -125,7 +143,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/proxy.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/proxy.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/proxy.mrs"
|
||||
interval: 86400
|
||||
|
||||
cn:
|
||||
@@ -133,7 +151,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
privateip:
|
||||
@@ -141,7 +159,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/privateip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/privateip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/privateip.mrs"
|
||||
interval: 86400
|
||||
|
||||
cnip:
|
||||
@@ -149,23 +167,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/cnip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cnip.mrs"
|
||||
interval: 86400
|
||||
|
||||
mediaip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/mediaip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/mediaip.mrs"
|
||||
interval: 86400
|
||||
|
||||
gamesip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/gamesip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/gamesip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cnip.mrs"
|
||||
interval: 86400
|
||||
|
||||
telegramip:
|
||||
@@ -173,7 +175,23 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/telegramip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/telegramip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/telegramip.mrs"
|
||||
interval: 86400
|
||||
|
||||
netflixip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/netflixip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/netflixip.mrs"
|
||||
interval: 86400
|
||||
|
||||
mediaip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/mediaip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/mediaip.mrs"
|
||||
interval: 86400
|
||||
|
||||
rules:
|
||||
@@ -184,15 +202,17 @@ rules:
|
||||
- RULE-SET,apple-cn,🍎 苹果服务
|
||||
- RULE-SET,google-cn,🇬 谷歌服务
|
||||
- RULE-SET,games-cn,🎮 游戏服务
|
||||
- RULE-SET,games,🕹️ 游戏平台
|
||||
- RULE-SET,netflix,🎥 奈飞视频
|
||||
- RULE-SET,youtube,📹 油管视频
|
||||
- RULE-SET,media,🌍 国外媒体
|
||||
- RULE-SET,games,🎮 游戏平台
|
||||
- RULE-SET,ai,🤖 AI 平台
|
||||
- RULE-SET,networktest,📈 网络测试
|
||||
- RULE-SET,proxy,🧱 代理域名
|
||||
- RULE-SET,cn,🛡️ 直连域名
|
||||
- RULE-SET,proxy,🌎 国外域名
|
||||
- RULE-SET,cn,🇨🇳 国内域名
|
||||
- RULE-SET,privateip,🔒 私有网络,no-resolve
|
||||
- RULE-SET,cnip,🀄️ 直连 IP
|
||||
- RULE-SET,mediaip,🌍 国外媒体
|
||||
- RULE-SET,gamesip,🎮 游戏平台
|
||||
- RULE-SET,cnip,🀄️ 国内 IP
|
||||
- RULE-SET,telegramip,📲 电报消息,no-resolve
|
||||
- MATCH,🐟 漏网之鱼
|
||||
- RULE-SET,netflixip,🎥 奈飞视频
|
||||
- RULE-SET,mediaip,🌍 国外媒体
|
||||
- MATCH,🐟 漏网之鱼
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
#DustinWin-ruleset全分组规则
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, 👉 手动选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 全球直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 全球直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🌍 国外媒体, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎮 游戏平台, type: select, proxies: [🚀 节点选择, 🎯 全球直连, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🛡️ 直连域名, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 直连 IP, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, 🎯 全球直连]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 本地直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🕹️ 游戏平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 本地直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🎥 奈飞视频, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📹 油管视频, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🌍 国外媒体, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇨🇳 国内域名, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 国内 IP, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌎 国外域名, type: select, proxies: [🚀 节点选择, 🎯 本地直连]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 全球直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 全球直连]}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 本地直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 本地直连]}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
|
||||
- {name: 👑 高级节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)"}
|
||||
- {name: 📉 省流节点, type: url-test, tolerance: 100, include-all: true, filter: "(0\\.[1-5]|低倍率|省流|大流量)"}
|
||||
@@ -34,7 +36,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/private.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/private.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/private.mrs"
|
||||
interval: 86400
|
||||
|
||||
trackerslist:
|
||||
@@ -42,7 +44,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/trackerslist.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/trackerslist.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/trackerslist.mrs"
|
||||
interval: 86400
|
||||
|
||||
microsoft-cn:
|
||||
@@ -50,7 +52,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/microsoft-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/microsoft-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/microsoft-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
apple-cn:
|
||||
@@ -58,7 +60,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/apple-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/apple-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/apple-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
google-cn:
|
||||
@@ -66,7 +68,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/google-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/google-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/google-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
games-cn:
|
||||
@@ -74,15 +76,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/games-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
media:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/media.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/media.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/games-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
games:
|
||||
@@ -90,7 +84,31 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/games.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/games.mrs"
|
||||
interval: 86400
|
||||
|
||||
netflix:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/netflix.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/netflix.mrs"
|
||||
interval: 86400
|
||||
|
||||
youtube:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/youtube.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/youtube.mrs"
|
||||
interval: 86400
|
||||
|
||||
media:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/media.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/media.mrs"
|
||||
interval: 86400
|
||||
|
||||
ai:
|
||||
@@ -98,7 +116,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/ai.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/ai.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/ai.mrs"
|
||||
interval: 86400
|
||||
|
||||
networktest:
|
||||
@@ -106,7 +124,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/networktest.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/networktest.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/networktest.mrs"
|
||||
interval: 86400
|
||||
|
||||
proxy:
|
||||
@@ -114,7 +132,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/proxy.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/proxy.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/proxy.mrs"
|
||||
interval: 86400
|
||||
|
||||
cn:
|
||||
@@ -122,7 +140,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
privateip:
|
||||
@@ -130,7 +148,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/privateip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/privateip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/privateip.mrs"
|
||||
interval: 86400
|
||||
|
||||
cnip:
|
||||
@@ -138,23 +156,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/cnip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cnip.mrs"
|
||||
interval: 86400
|
||||
|
||||
mediaip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/mediaip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/mediaip.mrs"
|
||||
interval: 86400
|
||||
|
||||
gamesip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/gamesip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/gamesip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cnip.mrs"
|
||||
interval: 86400
|
||||
|
||||
telegramip:
|
||||
@@ -162,7 +164,23 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/telegramip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/telegramip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/telegramip.mrs"
|
||||
interval: 86400
|
||||
|
||||
netflixip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/netflixip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/netflixip.mrs"
|
||||
interval: 86400
|
||||
|
||||
mediaip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/mediaip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/mediaip.mrs"
|
||||
interval: 86400
|
||||
|
||||
rules:
|
||||
@@ -172,15 +190,17 @@ rules:
|
||||
- RULE-SET,apple-cn,🍎 苹果服务
|
||||
- RULE-SET,google-cn,🇬 谷歌服务
|
||||
- RULE-SET,games-cn,🎮 游戏服务
|
||||
- RULE-SET,games,🕹️ 游戏平台
|
||||
- RULE-SET,netflix,🎥 奈飞视频
|
||||
- RULE-SET,youtube,📹 油管视频
|
||||
- RULE-SET,media,🌍 国外媒体
|
||||
- RULE-SET,games,🎮 游戏平台
|
||||
- RULE-SET,ai,🤖 AI 平台
|
||||
- RULE-SET,networktest,📈 网络测试
|
||||
- RULE-SET,proxy,🧱 代理域名
|
||||
- RULE-SET,cn,🛡️ 直连域名
|
||||
- RULE-SET,proxy,🌎 国外域名
|
||||
- RULE-SET,cn,🇨🇳 国内域名
|
||||
- RULE-SET,privateip,🔒 私有网络,no-resolve
|
||||
- RULE-SET,cnip,🀄️ 直连 IP
|
||||
- RULE-SET,mediaip,🌍 国外媒体
|
||||
- RULE-SET,gamesip,🎮 游戏平台
|
||||
- RULE-SET,cnip,🀄️ 国内 IP
|
||||
- RULE-SET,telegramip,📲 电报消息,no-resolve
|
||||
- MATCH,🐟 漏网之鱼
|
||||
- RULE-SET,netflixip,🎥 奈飞视频
|
||||
- RULE-SET,mediaip,🌍 国外媒体
|
||||
- MATCH,🐟 漏网之鱼
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#DustinWin-ruleset轻量规则
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, 👉 手动选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT, 🚀 节点选择]}
|
||||
- {name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, DIRECT]}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT, 🚀 节点选择]}
|
||||
- {name: 🌎 国外域名, type: select, proxies: [🚀 节点选择, DIRECT]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 全球直连]}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 本地直连]}
|
||||
|
||||
- {name: 👑 高级节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)"}
|
||||
- {name: 📉 省流节点, type: url-test, tolerance: 100, include-all: true, filter: "(0\\.[1-5]|低倍率|省流|大流量)"}
|
||||
@@ -22,7 +22,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
private:
|
||||
@@ -30,7 +30,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/private.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/private.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/private.mrs"
|
||||
interval: 86400
|
||||
|
||||
tld-proxy:
|
||||
@@ -38,7 +38,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/tld-proxy.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/tld-proxy.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/tld-proxy.mrs"
|
||||
interval: 86400
|
||||
|
||||
proxy:
|
||||
@@ -46,7 +46,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/proxy.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/proxy.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/proxy.mrs"
|
||||
interval: 86400
|
||||
|
||||
privateip:
|
||||
@@ -54,7 +54,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/privateip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/privateip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/privateip.mrs"
|
||||
interval: 86400
|
||||
|
||||
cnip:
|
||||
@@ -62,7 +62,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/cnip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cnip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cnip.mrs"
|
||||
interval: 86400
|
||||
|
||||
telegramip:
|
||||
@@ -70,15 +70,15 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/telegramip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/telegramip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/telegramip.mrs"
|
||||
interval: 86400
|
||||
|
||||
rules:
|
||||
- RULE-SET,private,DIRECT
|
||||
- RULE-SET,tld-proxy,🧱 代理域名
|
||||
- RULE-SET,proxy,🧱 代理域名
|
||||
- RULE-SET,cn,🎯 全球直连
|
||||
- RULE-SET,tld-proxy,🌎 国外域名
|
||||
- RULE-SET,proxy,🌎 国外域名
|
||||
- RULE-SET,cn,🎯 本地直连
|
||||
- RULE-SET,privateip,DIRECT,no-resolve
|
||||
- RULE-SET,cnip,🎯 全球直连
|
||||
- RULE-SET,cnip,🎯 本地直连
|
||||
- RULE-SET,telegramip,📲 电报消息,no-resolve
|
||||
- MATCH,🐟 漏网之鱼
|
||||
- MATCH,🐟 漏网之鱼
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
#DustinWin-ruleset标准规则+去广告
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, 👉 手动选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 全球直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 全球直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🛡️ 直连域名, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 直连 IP, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, 🎯 全球直连]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 本地直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 本地直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇨🇳 国内域名, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 国内 IP, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌎 国外域名, type: select, proxies: [🚀 节点选择, 🎯 本地直连]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 全球直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 全球直连]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 本地直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 本地直连]}
|
||||
- {name: 🛑 广告域名, type: select, proxies: [🔴 全球拦截, 🟢 全球绕过]}
|
||||
- {name: 🔴 全球拦截, type: select, proxies: [REJECT], hidden: true}
|
||||
- {name: 🟢 全球绕过, type: select, proxies: [PASS], hidden: true}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
|
||||
- {name: 👑 高级节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)"}
|
||||
- {name: 📉 省流节点, type: url-test, tolerance: 100, include-all: true, filter: "(0\\.[1-5]|低倍率|省流|大流量)"}
|
||||
@@ -35,7 +35,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/private.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/private.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/private.mrs"
|
||||
interval: 86400
|
||||
|
||||
ads:
|
||||
@@ -43,7 +43,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/ads.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/ads.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/ads.mrs"
|
||||
interval: 86400
|
||||
|
||||
trackerslist:
|
||||
@@ -51,7 +51,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/trackerslist.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/trackerslist.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/trackerslist.mrs"
|
||||
interval: 86400
|
||||
|
||||
microsoft-cn:
|
||||
@@ -59,7 +59,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/microsoft-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/microsoft-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/microsoft-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
apple-cn:
|
||||
@@ -67,7 +67,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/apple-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/apple-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/apple-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
google-cn:
|
||||
@@ -75,7 +75,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/google-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/google-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/google-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
games-cn:
|
||||
@@ -83,7 +83,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/games-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/games-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
ai:
|
||||
@@ -91,7 +91,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/ai.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/ai.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/ai.mrs"
|
||||
interval: 86400
|
||||
|
||||
networktest:
|
||||
@@ -99,7 +99,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/networktest.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/networktest.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/networktest.mrs"
|
||||
interval: 86400
|
||||
|
||||
proxy:
|
||||
@@ -107,7 +107,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/proxy.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/proxy.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/proxy.mrs"
|
||||
interval: 86400
|
||||
|
||||
cn:
|
||||
@@ -115,7 +115,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
privateip:
|
||||
@@ -123,7 +123,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/privateip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/privateip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/privateip.mrs"
|
||||
interval: 86400
|
||||
|
||||
cnip:
|
||||
@@ -131,7 +131,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/cnip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cnip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cnip.mrs"
|
||||
interval: 86400
|
||||
|
||||
telegramip:
|
||||
@@ -139,7 +139,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/telegramip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/telegramip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/telegramip.mrs"
|
||||
interval: 86400
|
||||
|
||||
rules:
|
||||
@@ -152,9 +152,9 @@ rules:
|
||||
- RULE-SET,games-cn,🎮 游戏服务
|
||||
- RULE-SET,ai,🤖 AI 平台
|
||||
- RULE-SET,networktest,📈 网络测试
|
||||
- RULE-SET,proxy,🧱 代理域名
|
||||
- RULE-SET,cn,🛡️ 直连域名
|
||||
- RULE-SET,proxy,🌎 国外域名
|
||||
- RULE-SET,cn,🇨🇳 国内域名
|
||||
- RULE-SET,privateip,🔒 私有网络,no-resolve
|
||||
- RULE-SET,cnip,🀄️ 直连 IP
|
||||
- RULE-SET,cnip,🀄️ 国内 IP
|
||||
- RULE-SET,telegramip,📲 电报消息,no-resolve
|
||||
- MATCH,🐟 漏网之鱼
|
||||
- MATCH,🐟 漏网之鱼
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
#DustinWin-ruleset标准规则
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, 👉 手动选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 全球直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 全球直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🛡️ 直连域名, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 直连 IP, type: select, proxies: [🎯 全球直连, 🚀 节点选择]}
|
||||
- {name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, 🎯 全球直连]}
|
||||
- {name: 📈 网络测试, type: select, proxies: [🎯 本地直连, 🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 👑 高级节点, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📋 Trackerslist, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🎮 游戏服务, type: select, proxies: [🎯 本地直连, 👑 高级节点, 🚀 节点选择]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🇨🇳 国内域名, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🀄️ 国内 IP, type: select, proxies: [🎯 本地直连, 🚀 节点选择]}
|
||||
- {name: 🌎 国外域名, type: select, proxies: [🚀 节点选择, 🎯 本地直连]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 全球直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 全球直连]}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [🎯 本地直连], hidden: true}
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇯🇵 日本节点, 🇸🇬 新加坡节点, 🇺🇸 美国节点, 👑 高级节点, 📉 省流节点, {providers_tags}, 🎯 本地直连]}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
|
||||
- {name: 👑 高级节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)"}
|
||||
- {name: 📉 省流节点, type: url-test, tolerance: 100, include-all: true, filter: "(0\\.[1-5]|低倍率|省流|大流量)"}
|
||||
@@ -32,7 +32,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/private.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/private.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/private.mrs"
|
||||
interval: 86400
|
||||
|
||||
trackerslist:
|
||||
@@ -40,7 +40,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/trackerslist.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/trackerslist.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/trackerslist.mrs"
|
||||
interval: 86400
|
||||
|
||||
microsoft-cn:
|
||||
@@ -48,7 +48,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/microsoft-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/microsoft-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/microsoft-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
apple-cn:
|
||||
@@ -56,7 +56,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/apple-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/apple-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/apple-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
google-cn:
|
||||
@@ -64,7 +64,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/google-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/google-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/google-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
games-cn:
|
||||
@@ -72,7 +72,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/games-cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games-cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/games-cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
ai:
|
||||
@@ -80,7 +80,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/ai.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/ai.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/ai.mrs"
|
||||
interval: 86400
|
||||
|
||||
networktest:
|
||||
@@ -88,7 +88,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/networktest.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/networktest.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/networktest.mrs"
|
||||
interval: 86400
|
||||
|
||||
proxy:
|
||||
@@ -96,7 +96,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/proxy.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/proxy.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/proxy.mrs"
|
||||
interval: 86400
|
||||
|
||||
cn:
|
||||
@@ -104,7 +104,7 @@ rule-providers:
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cn-lite.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cn.mrs"
|
||||
interval: 86400
|
||||
|
||||
privateip:
|
||||
@@ -112,7 +112,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/privateip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/privateip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/privateip.mrs"
|
||||
interval: 86400
|
||||
|
||||
cnip:
|
||||
@@ -120,7 +120,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/cnip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cnip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cnip.mrs"
|
||||
interval: 86400
|
||||
|
||||
telegramip:
|
||||
@@ -128,7 +128,7 @@ rule-providers:
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/telegramip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/telegramip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/telegramip.mrs"
|
||||
interval: 86400
|
||||
|
||||
rules:
|
||||
@@ -140,9 +140,9 @@ rules:
|
||||
- RULE-SET,games-cn,🎮 游戏服务
|
||||
- RULE-SET,ai,🤖 AI 平台
|
||||
- RULE-SET,networktest,📈 网络测试
|
||||
- RULE-SET,proxy,🧱 代理域名
|
||||
- RULE-SET,cn,🛡️ 直连域名
|
||||
- RULE-SET,proxy,🌎 国外域名
|
||||
- RULE-SET,cn,🇨🇳 国内域名
|
||||
- RULE-SET,privateip,🔒 私有网络,no-resolve
|
||||
- RULE-SET,cnip,🀄️ 直连 IP
|
||||
- RULE-SET,cnip,🀄️ 国内 IP
|
||||
- RULE-SET,telegramip,📲 电报消息,no-resolve
|
||||
- MATCH,🐟 漏网之鱼
|
||||
- MATCH,🐟 漏网之鱼
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ShellCrash-geosite极简规则
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [{providers_tags}], include-all: true}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT, 🚀 节点选择]}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT, 🚀 节点选择]}
|
||||
rules:
|
||||
- GEOIP,cn,🎯 全球直连
|
||||
- GEOIP,cn,🎯 本地直连
|
||||
- MATCH,🚀 节点选择
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#ShellCrash-ruleset全分组规则+去广告
|
||||
#ShellCrash-ruleset 全分组规则+去广告 For mihomo By Maozai 260111
|
||||
|
||||
#此版本为Maozai根据ACL4SSR规则修改优化而来,尽量在保持原有的基础上进行优化。
|
||||
#数据源采用了DustinWin/ruleset_geodata和MetaCubeX/meta-rules-dat两个开源项目的规则,感谢原作者的辛勤付出。
|
||||
@@ -8,49 +8,52 @@
|
||||
|
||||
#代理组
|
||||
proxy-groups:
|
||||
- { name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, ✨ 自动选择(去高倍率), 🛠️ 手动切换, ⚖️ 负载均衡, 🚑 故障转移, 🎯 全球直连, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 🛠️ 手动切换, type: select, include-all: true, exclude-type: direct }
|
||||
- { name: ♻️ 自动选择, type: url-test, interval: 600, tolerance: 50, include-all: true, exclude-type: direct }
|
||||
- { name: ✨ 自动选择(去高倍率), type: url-test, interval: 600, tolerance: 50, include-all: true, exclude-type: direct, filter: "(?i)^(?!.*(专线|专用|高级|高速|高倍率|IEPL|IPLC|x([2-9]|\\d{2,}))).*" }
|
||||
- { name: ⚖️ 负载均衡, type: load-balance, interval: 600, include-all: true, exclude-type: direct, hidden: true }
|
||||
- { name: 🚑 故障转移, type: fallback, interval: 600, include-all: true, exclude-type: direct, hidden: true }
|
||||
- {name: 🚀 节点选择, type: select, proxies: [♻️ 自动选择, ✨ 自动选择(去高倍率), 🛠️ 手动切换, ⚖️ 负载均衡, 🚑 故障转移, 🎯 本地直连, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🛠️ 手动切换, type: select, include-all: true, proxies: [🎯 本地直连, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: ♻️ 自动选择, type: url-test, interval: 1800, tolerance: 50, include-all: true, exclude-filter: "(?i)(剩余|重置|到期|防失联|官网|导航|客服|http|www)"}
|
||||
- {name: ✨ 自动选择(去高倍率), type: url-test, interval: 1800, tolerance: 50, include-all: true, exclude-filter: "(?i)(剩余|重置|到期|防失联|官网|导航|客服|http|www)`(?i)(专线|专用|高级|直连|急速|高速|高倍率|游戏|铂金|钻石|企业|VIP|Ultra|Game|IEPL|IPLC|AIA|BGP|GIA|CN2|CMI|HGC|HKT|CTM|CC|AC|x([2-9]|\\d{2,}))"}
|
||||
- {name: ⚖️ 负载均衡, type: load-balance, interval: 1800, include-all: true, hidden: true, exclude-filter: "(?i)(剩余|重置|到期|防失联|官网|导航|客服|http|www)"}
|
||||
- {name: 🚑 故障转移, type: fallback, interval: 1800, include-all: true, hidden: true, exclude-filter: "(?i)(剩余|重置|到期|防失联|官网|导航|客服|http|www)"}
|
||||
#
|
||||
- {name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 🤖 AI节点(过滤港澳), 🎯 本地直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🤖 AI节点(过滤港澳), type: url-test, interval: 3600, tolerance: 50, include-all: true, exclude-filter: "(?i)(剩余|重置|到期|防失联|官网|导航|客服|http|www)`(?i)(🇭🇰|港|🇲🇴|澳门|hk|hongkong|hong kong)", hidden: true}
|
||||
- {name: 🎬 奈飞视频, type: select, proxies: [🚀 节点选择, 🎬 奈飞节点, 🎯 本地直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎬 奈飞节点, type: url-test, interval: 1800, tolerance: 50, include-all: true, filter: "(?i)(NF|奈飞|解锁|Netflix|NETFLIX|Media)", hidden: true}
|
||||
- {name: ▶️ 油管视频, type: select, proxies: [🚀 节点选择, 🎯 本地直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📢 谷歌推送, type: select, proxies: [🚀 节点选择, 🎯 本地直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🎯 本地直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🌍 国际媒体, type: select, proxies: [🚀 节点选择, 🎯 本地直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🌐 国际流量, type: select, proxies: [🚀 节点选择, 🎯 本地直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🎮 外服游戏, type: select, proxies: [🚀 节点选择, 🎯 本地直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
|
||||
- { name: 🤖 AI 平台, type: select, proxies: [🚀 节点选择, 🤖 AI节点(过滤港澳), 🎯 全球直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 🤖 AI节点(过滤港澳), type: url-test, interval: 1800, tolerance: 50, include-all: true, filter: "(?i)^(?!.*(🇭🇰|港|🇲🇴|澳门|hk|hongkong|hong kong)).*", hidden: true }
|
||||
- { name: 📢 谷歌FCM, type: select, proxies: [🚀 节点选择, 🎯 全球直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 🎥 奈飞视频, type: select, proxies: [🚀 节点选择, 🎥 奈飞节点, 🎯 全球直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 🎥 奈飞节点, type: url-test, interval: 1800, tolerance: 50, include-all: true, filter: "(?i)(NF|奈飞|解锁|Netflix|NETFLIX|Media)", hidden: true }
|
||||
- { name: 📹 油管视频, type: select, proxies: [🚀 节点选择, 🎯 全球直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 📲 电报消息, type: select, proxies: [🚀 节点选择, 🎯 全球直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 🌍 国外媒体, type: select, proxies: [🚀 节点选择, 🎯 全球直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 🧱 代理域名, type: select, proxies: [🚀 节点选择, 🎯 全球直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 🎮 国外游戏, type: select, proxies: [🚀 节点选择, 🎯 全球直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- {name: 🕹 国服游戏, type: select, proxies: [🎯 本地直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, {providers_tags}]}
|
||||
- {name: 🦾 Steam平台, type: select, proxies: [🎯 本地直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🪟 微软服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🍎 苹果服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🇬 谷歌服务, type: select, proxies: [🎯 本地直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 🧲 BT下载, type: select, proxies: [🎯 本地直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: 📈 网络测速, type: select, proxies: [🎯 本地直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
- {name: ↔️ 直连软件, type: select, proxies: [🎯 本地直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, {providers_tags}]}
|
||||
- {name: 🀄️ 国内流量, type: select, proxies: [🎯 本地直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, {providers_tags}]}
|
||||
|
||||
- { name: 🕹 国内游戏, type: select, proxies: [🎯 全球直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, {providers_tags}] }
|
||||
- { name: 🪟 微软服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 🍎 苹果服务, type: select, proxies: [🎯 全球直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 💾 trackerslist, type: select, proxies: [🎯 全球直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 📈 网络测试, type: select, proxies: [🎯 全球直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: ↔️ 国外直连, type: select, proxies: [🎯 全球直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- { name: 🀄️ 国内直连, type: select, proxies: [🎯 全球直连, 🚀 节点选择, ♻️ 自动选择, 🛠️ 手动切换, {providers_tags}] }
|
||||
- {name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🎯 本地直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇺🇸 美国节点, 🇯🇵 日本节点, 🇪🇺 欧洲节点, 🇰🇷 韩国节点, 🇸🇬 狮城节点, 👑 高级节点, 📉 省流节点, {providers_tags}]}
|
||||
|
||||
- { name: 🐟 漏网之鱼, type: select, proxies: [🚀 节点选择, 🎯 全球直连, ♻️ 自动选择, 🛠️ 手动切换, 🇭🇰 香港节点, 🇹🇼 台湾节点, 🇸🇬 狮城节点, 🇯🇵 日本节点, 🇰🇷 韩国节点, 🇺🇸 美国节点, 🇪🇺 欧洲节点, 👑 高级节点, 📉 省流节点, {providers_tags}] }
|
||||
- {name: 🛑 广告拦截, type: select, proxies: [🔴 拦截, 🟢 放行]}
|
||||
- {name: 🔒 私有网络, type: select, proxies: [DIRECT], hidden: true}
|
||||
- {name: 🔴 拦截, type: select, proxies: [REJECT], hidden: true}
|
||||
- {name: 🟢 放行, type: select, proxies: [PASS], hidden: true}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT], hidden: true}
|
||||
|
||||
- { name: 🛑 广告拦截, type: select, proxies: [🔴 全球拦截, 🎯 全球直连] }
|
||||
- { name: 🔒 私有网络, type: select, proxies: [DIRECT], hidden: true }
|
||||
- { name: 🔴 全球拦截, type: select, proxies: [REJECT], hidden: true }
|
||||
- { name: 🎯 全球直连, type: select, proxies: [DIRECT], hidden: true }
|
||||
- {name: 🇭🇰 香港节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇭🇰|港|hk|hongkong|hong kong)"}
|
||||
- {name: 🇹🇼 台湾节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇹🇼|台|tw|taiwan|tai wan)", exclude-filter: "(?i)(仙台)"}
|
||||
- {name: 🇺🇸 美国节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇺🇸|美|洛杉矶|圣何塞|西雅图|纽约|波特兰|旧金山|休斯|达拉斯|硅谷|堪萨斯|迈阿密|凤凰城|芝加哥|奥勒姆|us|unitedstates|united states)", exclude-filter: "(?i)(南美|中美|拉美|亚美尼亚|美属)"}
|
||||
- {name: 🇯🇵 日本节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇯🇵|日|东京|大阪|埼玉|九州|仙台|jp|japan)", exclude-filter: "(?i)(尼日利亚|尼日尔|日内瓦)"}
|
||||
- {name: 🇪🇺 欧洲节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇪🇺|欧|德|英|法|荷|俄罗斯|西班牙|意大利|瑞士|瑞典|土耳其|挪威|芬兰|丹麦|比利时|爱尔兰|奥地利|波兰|葡萄牙|乌克兰|希腊|捷克|匈牙利|罗马尼亚|保加利亚|冰岛|克罗地亚|阿姆斯特丹)"}
|
||||
- {name: 🇰🇷 韩国节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇰🇷|韩|韓|首尔|kr|kor)"}
|
||||
- {name: 🇸🇬 狮城节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇸🇬|新加坡|狮城|sg|singapore)"}
|
||||
|
||||
- { name: 🇭🇰 香港节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇭🇰|港|hk|hongkong|hong kong)" }
|
||||
- { name: 🇹🇼 台湾节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇹🇼|台|tw|taiwan|tai wan)" }
|
||||
- { name: 🇸🇬 狮城节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇸🇬|新|坡|狮城|sg|singapore)" }
|
||||
- { name: 🇯🇵 日本节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇯🇵|日|东京|大阪|泉日|埼玉|jp|japan)" }
|
||||
- { name: 🇰🇷 韩国节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(KR|首尔|韩|韓|kor)" }
|
||||
- { name: 🇺🇸 美国节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇺🇸|美|us|unitedstates|united states)" }
|
||||
- { name: 🇪🇺 欧洲节点, type: url-test, tolerance: 50, include-all: true, filter: "(?i)(🇪🇺|欧|欧洲|eu|eur|德|英|瑞|法|荷|土耳|意大利|西班牙)" }
|
||||
|
||||
- { name: 👑 高级节点, type: url-test, interval: 1800, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)" }
|
||||
- { name: 📉 省流节点, type: url-test, interval: 1800, tolerance: 50, include-all: true, filter: "(0\\.[1-6]|低倍率|省流|大流量)" }
|
||||
- {name: 👑 高级节点, type: url-test, interval: 1800, tolerance: 50, include-all: true, filter: "(?i)(专线|专用|高级|直连|急速|高速|高倍率|游戏|铂金|钻石|企业|VIP|Ultra|Game|IEPL|IPLC|AIA|BGP|GIA|CN2|CMI|HGC|HKT|CTM|CC|AC|x([2-9]|\\d{2,}))"}
|
||||
- {name: 📉 省流节点, type: url-test, interval: 1800, tolerance: 50, include-all: true, filter: "(?i)(0\\.[1-6]|低倍率|省流|大流量|公益|免费|闲时|Low)"}
|
||||
|
||||
#规则提供者(更新mrs格式)
|
||||
rule-providers:
|
||||
@@ -59,185 +62,185 @@ rule-providers:
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/ai.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/ai.mrs"
|
||||
youtube:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/youtube.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/youtube.mrs"
|
||||
netflix:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/netflix.mrs"
|
||||
telegram:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@refs/heads/meta/geo/geosite/telegram.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/netflix.mrs"
|
||||
telegramip:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: ipcidr
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/telegramip.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/telegramip.mrs"
|
||||
trackerslist:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/trackerslist.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/trackerslist.mrs"
|
||||
applications:
|
||||
type: http
|
||||
format: text
|
||||
interval: 86400
|
||||
behavior: classical
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/applications.list"
|
||||
private:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/private.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/private.mrs"
|
||||
privateip:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: ipcidr
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/privateip.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/privateip.mrs"
|
||||
networktest:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/networktest.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/networktest.mrs"
|
||||
apple-cn:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/apple-cn.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/apple-cn.mrs"
|
||||
google-cn:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/google-cn.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/google-cn.mrs"
|
||||
googlefcm:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@refs/heads/meta/geo/geosite/googlefcm.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@refs/heads/meta/geo/geosite/googlefcm.mrs"
|
||||
steamcn:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@refs/heads/meta/geo/geosite/steam@cn.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@refs/heads/meta/geo/geosite/steam@cn.mrs"
|
||||
microsoft-cn:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/microsoft-cn.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/microsoft-cn.mrs"
|
||||
games-cn:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games-cn.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games-cn.mrs"
|
||||
games:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games.mrs"
|
||||
gamesip:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: ipcidr
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/gamesip.mrs"
|
||||
tld-proxy:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/tld-proxy.mrs"
|
||||
cn-lite:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cn-lite.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/games.mrs"
|
||||
mediaip:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: ipcidr
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/mediaip.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/mediaip.mrs"
|
||||
media:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/media.mrs"
|
||||
gfw:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/gfw.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/media.mrs"
|
||||
cnip:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: ipcidr
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cnip.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cnip.mrs"
|
||||
proxy:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/proxy.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/proxy.mrs"
|
||||
cn:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cn.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cn.mrs"
|
||||
ads:
|
||||
type: http
|
||||
format: mrs
|
||||
interval: 86400
|
||||
behavior: domain
|
||||
url: "https://fastly.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/ads.mrs"
|
||||
proxy: DIRECT
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/ads.mrs"
|
||||
|
||||
#规则顺序
|
||||
rules:
|
||||
- DOMAIN-SUFFIX,captive.apple.com,🍎 苹果服务
|
||||
- DOMAIN-SUFFIX,kamo.teracloud.jp,🀄️ 国内流量
|
||||
|
||||
- RULE-SET,privateip,🔒 私有网络,no-resolve
|
||||
- RULE-SET,private,🔒 私有网络
|
||||
- RULE-SET,ads,🛑 广告拦截
|
||||
- RULE-SET,networktest,📈 网络测试
|
||||
- RULE-SET,trackerslist,💾 trackerslist
|
||||
- RULE-SET,googlefcm,📢 谷歌FCM
|
||||
- RULE-SET,google-cn,↔️ 国外直连
|
||||
- RULE-SET,steamcn,↔️ 国外直连
|
||||
- RULE-SET,microsoft-cn,🪟 微软服务
|
||||
- RULE-SET,apple-cn,🍎 苹果服务
|
||||
- RULE-SET,telegramip,📲 电报消息,no-resolve
|
||||
- RULE-SET,telegram,📲 电报消息
|
||||
- RULE-SET,netflix,🎥 奈飞视频
|
||||
- RULE-SET,youtube,📹 油管视频
|
||||
- RULE-SET,ai,🤖 AI 平台
|
||||
- RULE-SET,ads,🛑 广告拦截
|
||||
|
||||
- RULE-SET,networktest,📈 网络测速
|
||||
- RULE-SET,applications,↔️ 直连软件
|
||||
- RULE-SET,trackerslist,🧲 BT下载
|
||||
- RULE-SET,apple-cn,🍎 苹果服务
|
||||
- RULE-SET,microsoft-cn,🪟 微软服务
|
||||
- RULE-SET,google-cn,🇬 谷歌服务
|
||||
- RULE-SET,steamcn,🦾 Steam平台
|
||||
- RULE-SET,games-cn,🕹 国服游戏
|
||||
|
||||
- RULE-SET,googlefcm,📢 谷歌推送
|
||||
- RULE-SET,netflix,🎬 奈飞视频
|
||||
- RULE-SET,youtube,▶️ 油管视频
|
||||
- RULE-SET,ai,🤖 AI 平台
|
||||
- RULE-SET,media,🌍 国际媒体
|
||||
- RULE-SET,games,🎮 外服游戏
|
||||
|
||||
- RULE-SET,proxy,🌐 国际流量
|
||||
- RULE-SET,cn,🀄️ 国内流量
|
||||
- RULE-SET,mediaip,🌍 国际媒体
|
||||
- RULE-SET,cnip,🀄️ 国内流量
|
||||
|
||||
- RULE-SET,games-cn,🕹 国内游戏
|
||||
- RULE-SET,gamesip,🎮 国外游戏
|
||||
- RULE-SET,games,🎮 国外游戏
|
||||
- RULE-SET,mediaip,🌍 国外媒体
|
||||
- RULE-SET,media,🌍 国外媒体
|
||||
- RULE-SET,tld-proxy,🧱 代理域名
|
||||
- RULE-SET,cn-lite,🀄️ 国内直连
|
||||
- RULE-SET,gfw,🧱 代理域名
|
||||
- RULE-SET,cnip,🀄️ 国内直连
|
||||
- RULE-SET,proxy,🧱 代理域名
|
||||
- RULE-SET,cn,🀄️ 国内直连
|
||||
- MATCH,🐟 漏网之鱼
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
#ShellCrash-ruleset极简规则
|
||||
proxy-groups:
|
||||
- {name: 🚀 节点选择, type: select, proxies: [{providers_tags}], include-all: true}
|
||||
- {name: 🎯 全球直连, type: select, proxies: [DIRECT, 🚀 节点选择]}
|
||||
- {name: 🎯 本地直连, type: select, proxies: [DIRECT, 🚀 节点选择]}
|
||||
rule-providers:
|
||||
cn:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
path: ./ruleset/cn.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cn.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cn.mrs"
|
||||
interval: 86400
|
||||
privateip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/privateip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/privateip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/privateip.mrs"
|
||||
interval: 86400
|
||||
cnip:
|
||||
type: http
|
||||
behavior: ipcidr
|
||||
format: mrs
|
||||
path: ./ruleset/cnip.mrs
|
||||
url: "https://testingcf.jsdelivr.net/gh//DustinWin/ruleset_geodata@refs/heads/mihomo-ruleset/cnip.mrs"
|
||||
url: "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@mihomo-ruleset/cnip.mrs"
|
||||
interval: 86400
|
||||
rules:
|
||||
- RULE-SET,privateip,🎯 全球直连,no-resolve
|
||||
- RULE-SET,cn,🎯 全球直连
|
||||
- RULE-SET,cnip,🎯 全球直连
|
||||
- RULE-SET,privateip,🎯 本地直连,no-resolve
|
||||
- RULE-SET,cn,🎯 本地直连
|
||||
- RULE-SET,cnip,🎯 本地直连
|
||||
- MATCH,🚀 节点选择
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
ShellCrash-ruleset极简规则 ShellCrash_RS_Nano.yaml
|
||||
ShellCrash-ruleset全分组规则+去广告 ShellCrash_RS_Full_BanAds.yaml
|
||||
DustinWin-ruleset轻量规则 DustinWin_RS_Light.yaml
|
||||
DustinWin-ruleset标准规则 DustinWin_RS_Lite_NoAds.yaml
|
||||
DustinWin-ruleset标准规则+去广告 DustinWin_RS_Lite.yaml
|
||||
|
||||
@@ -1,23 +1,27 @@
|
||||
//DustinWin-ruleset全分组规则+去广告
|
||||
{
|
||||
"outbounds": [
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ "♻️ 自动选择", "👉 手动选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", "🎯 全球直连", {providers_tags} ] },
|
||||
{ "tag": "📈 网络测试", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🤖 AI 平台", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点" ] },
|
||||
{ "tag": "📋 Trackerslist", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🎮 游戏服务", "type": "selector", "outbounds": [ "🎯 全球直连", "👑 高级节点", "🚀 节点选择" ] },
|
||||
{ "tag": "🪟 微软服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇬 谷歌服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🍎 苹果服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🌍 国外媒体", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🎮 游戏平台", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 全球直连", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🛡️ 直连域名", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🀄️ 直连 IP", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🧱 代理域名", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 全球直连" ] },
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ "♻️ 自动选择", "👉 手动选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", "🎯 本地直连", {providers_tags} ] },
|
||||
{ "tag": "📈 网络测试", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🕹️ 游戏平台", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🤖 AI 平台", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🎮 游戏服务", "type": "selector", "outbounds": [ "🎯 本地直连", "👑 高级节点", "🚀 节点选择" ] },
|
||||
{ "tag": "🪟 微软服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇬 谷歌服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🍎 苹果服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🎥 奈飞视频", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "📹 油管视频", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🌍 国外媒体", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "📋 Trackerslist", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇨🇳 国内域名", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🀄️ 国内 IP", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🌎 国外域名", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 本地直连" ] },
|
||||
{ "tag": "📲 电报消息", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags}, "🎯 全球直连" ] },
|
||||
{ "tag": "🎯 全球直连", "type": "selector", "outbounds": [ "DIRECT" ] },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": [ "🚀 节点选择", "DIRECT" ] },
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags}, "🎯 本地直连" ] },
|
||||
{ "tag": "🛑 广告域名", "type": "selector", "outbounds": [ "🔴 全球拦截", "🎯 本地直连" ] },
|
||||
{ "tag": "🔴 全球拦截", "type": "block" },
|
||||
{ "tag": "🎯 本地直连", "type": "direct" },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 本地直连" ] },
|
||||
{ "tag": "👑 高级节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)" },
|
||||
{ "tag": "📉 省流节点", "type": "urltest", "tolerance": 100, "use_all_providers": true, "include": "0\\.[1-5]|低倍率|省流|大流量" },
|
||||
{ "tag": "♻️ 自动选择", "type": "urltest", "tolerance": 100, "use_all_providers": true },
|
||||
@@ -30,153 +34,181 @@
|
||||
],
|
||||
"route": {
|
||||
"rules": [
|
||||
{ "rule_set": [ "private" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "ads" ], "action": "reject" },
|
||||
{ "rule_set": [ "private" ], "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "ads" ], "outbound": "🛑 广告域名" },
|
||||
{ "rule_set": [ "trackerslist" ], "outbound": "📋 Trackerslist" },
|
||||
{ "rule_set": [ "microsoft-cn" ], "outbound": "🪟 微软服务" },
|
||||
{ "rule_set": [ "apple-cn" ], "outbound": "🍎 苹果服务" },
|
||||
{ "rule_set": [ "google-cn" ], "outbound": "🇬 谷歌服务" },
|
||||
{ "rule_set": [ "games-cn" ], "outbound": "🎮 游戏服务" },
|
||||
{ "rule_set": [ "games" ], "outbound": "🕹️ 游戏平台" },
|
||||
{ "rule_set": [ "netflix" ], "outbound": "🎥 奈飞视频" },
|
||||
{ "rule_set": [ "youtube" ], "outbound": "📹 油管视频" },
|
||||
{ "rule_set": [ "media" ], "outbound": "🌍 国外媒体" },
|
||||
{ "rule_set": [ "games" ], "outbound": "🎮 游戏平台" },
|
||||
{ "rule_set": [ "ai" ], "outbound": "🤖 AI 平台" },
|
||||
{ "rule_set": [ "networktest" ], "outbound": "📈 网络测试" },
|
||||
{ "rule_set": [ "proxy" ], "outbound": "🧱 代理域名" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🛡️ 直连域名" },
|
||||
{ "rule_set": [ "privateip" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "proxy" ], "outbound": "🌎 国外域名" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🇨🇳 国内域名" },
|
||||
{ "ip_is_private": true, "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "telegramip" ], "outbound": "📲 电报消息" },
|
||||
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4"},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🀄️ 直连 IP" },
|
||||
{ "rule_set": [ "mediaip" ], "outbound": "🌍 国外媒体" },
|
||||
{ "rule_set": [ "gamesip" ], "outbound": "🎮 游戏平台" }
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4", "match_only": true},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🀄️ 国内 IP" },
|
||||
{ "rule_set": [ "netflixip" ], "outbound": "🎥 奈飞视频" },
|
||||
{ "rule_set": [ "mediaip" ], "outbound": "🌍 国外媒体" }
|
||||
],
|
||||
"rule_set": [
|
||||
{
|
||||
"tag": "private",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/private.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/private.srs"
|
||||
},
|
||||
{
|
||||
"tag": "ads",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/ads.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ads.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ads.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "private",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/private.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/private.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "trackerslist",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/trackerslist.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/trackerslist.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/trackerslist.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "microsoft-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/microsoft-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/microsoft-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/microsoft-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "apple-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/apple-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/apple-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/apple-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "google-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/google-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/google-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/google-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "games-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/games-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games-cn.srs"
|
||||
},
|
||||
{
|
||||
"tag": "media",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/media.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/media.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "games",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/games.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "netflix",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/netflix.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/netflix.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "youtube",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/youtube.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/youtube.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "media",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/media.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/media.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "ai",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/ai.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ai.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ai.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "networktest",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/networktest.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/networktest.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/networktest.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "proxy",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/proxy.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/proxy.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/proxy.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs"
|
||||
},
|
||||
{
|
||||
"tag": "privateip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/privateip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/privateip.srs"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs"
|
||||
},
|
||||
{
|
||||
"tag": "mediaip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/mediaip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/mediaip.srs"
|
||||
},
|
||||
{
|
||||
"tag": "gamesip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/gamesip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/gamesip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "telegramip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/telegramip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/telegramip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/telegramip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "netflixip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/netflixip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/netflixip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "mediaip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/mediaip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/mediaip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
}
|
||||
],
|
||||
"final": "🐟 漏网之鱼"
|
||||
|
||||
@@ -1,23 +1,25 @@
|
||||
//DustinWin-ruleset全分组规则
|
||||
{
|
||||
"outbounds": [
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ "♻️ 自动选择", "👉 手动选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", "🎯 全球直连", {providers_tags} ] },
|
||||
{ "tag": "📈 网络测试", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🤖 AI 平台", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点" ] },
|
||||
{ "tag": "📋 Trackerslist", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🎮 游戏服务", "type": "selector", "outbounds": [ "🎯 全球直连", "👑 高级节点", "🚀 节点选择" ] },
|
||||
{ "tag": "🪟 微软服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇬 谷歌服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🍎 苹果服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🌍 国外媒体", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🎮 游戏平台", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 全球直连", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🛡️ 直连域名", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🀄️ 直连 IP", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🧱 代理域名", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 全球直连" ] },
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ "♻️ 自动选择", "👉 手动选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", "🎯 本地直连", {providers_tags} ] },
|
||||
{ "tag": "📈 网络测试", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🕹️ 游戏平台", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🤖 AI 平台", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🎮 游戏服务", "type": "selector", "outbounds": [ "🎯 本地直连", "👑 高级节点", "🚀 节点选择" ] },
|
||||
{ "tag": "🪟 微软服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇬 谷歌服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🍎 苹果服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🎥 奈飞视频", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "📹 油管视频", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🌍 国外媒体", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "📋 Trackerslist", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇨🇳 国内域名", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🀄️ 国内 IP", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🌎 国外域名", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 本地直连" ] },
|
||||
{ "tag": "📲 电报消息", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags}, "🎯 全球直连" ] },
|
||||
{ "tag": "🎯 全球直连", "type": "selector", "outbounds": [ "DIRECT" ] },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": [ "🚀 节点选择", "DIRECT" ] },
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags}, "🎯 本地直连" ] },
|
||||
{ "tag": "🎯 本地直连", "type": "direct" },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 本地直连" ] },
|
||||
{ "tag": "👑 高级节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)" },
|
||||
{ "tag": "📉 省流节点", "type": "urltest", "tolerance": 100, "use_all_providers": true, "include": "0\\.[1-5]|低倍率|省流|大流量" },
|
||||
{ "tag": "♻️ 自动选择", "type": "urltest", "tolerance": 100, "use_all_providers": true },
|
||||
@@ -30,25 +32,27 @@
|
||||
],
|
||||
"route": {
|
||||
"rules": [
|
||||
{ "rule_set": [ "private" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "private" ], "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "trackerslist" ], "outbound": "📋 Trackerslist" },
|
||||
{ "rule_set": [ "microsoft-cn" ], "outbound": "🪟 微软服务" },
|
||||
{ "rule_set": [ "apple-cn" ], "outbound": "🍎 苹果服务" },
|
||||
{ "rule_set": [ "google-cn" ], "outbound": "🇬 谷歌服务" },
|
||||
{ "rule_set": [ "games-cn" ], "outbound": "🎮 游戏服务" },
|
||||
{ "rule_set": [ "games" ], "outbound": "🕹️ 游戏平台" },
|
||||
{ "rule_set": [ "netflix" ], "outbound": "🎥 奈飞视频" },
|
||||
{ "rule_set": [ "youtube" ], "outbound": "📹 油管视频" },
|
||||
{ "rule_set": [ "media" ], "outbound": "🌍 国外媒体" },
|
||||
{ "rule_set": [ "games" ], "outbound": "🎮 游戏平台" },
|
||||
{ "rule_set": [ "ai" ], "outbound": "🤖 AI 平台" },
|
||||
{ "rule_set": [ "networktest" ], "outbound": "📈 网络测试" },
|
||||
{ "rule_set": [ "proxy" ], "outbound": "🧱 代理域名" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🛡️ 直连域名" },
|
||||
{ "rule_set": [ "privateip" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "proxy" ], "outbound": "🌎 国外域名" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🇨🇳 国内域名" },
|
||||
{ "ip_is_private": true, "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "telegramip" ], "outbound": "📲 电报消息" },
|
||||
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4"},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🀄️ 直连 IP" },
|
||||
{ "rule_set": [ "mediaip" ], "outbound": "🌍 国外媒体" },
|
||||
{ "rule_set": [ "gamesip" ], "outbound": "🎮 游戏平台" }
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4", "match_only": true},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🀄️ 国内 IP" },
|
||||
{ "rule_set": [ "netflixip" ], "outbound": "🎥 奈飞视频" },
|
||||
{ "rule_set": [ "mediaip" ], "outbound": "🌍 国外媒体" }
|
||||
],
|
||||
"rule_set": [
|
||||
{
|
||||
@@ -56,119 +60,144 @@
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/private.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/private.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/private.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "trackerslist",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/trackerslist.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/trackerslist.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/trackerslist.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "microsoft-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/microsoft-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/microsoft-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/microsoft-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "apple-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/apple-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/apple-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/apple-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "google-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/google-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/google-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/google-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "games-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/games-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games-cn.srs"
|
||||
},
|
||||
{
|
||||
"tag": "media",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/media.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/media.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "games",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/games.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "netflix",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/netflix.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/netflix.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "youtube",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/youtube.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/youtube.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "media",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/media.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/media.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "ai",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/ai.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ai.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ai.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "networktest",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/networktest.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/networktest.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/networktest.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "proxy",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/proxy.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/proxy.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/proxy.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs"
|
||||
},
|
||||
{
|
||||
"tag": "privateip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/privateip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/privateip.srs"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs"
|
||||
},
|
||||
{
|
||||
"tag": "mediaip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/mediaip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/mediaip.srs"
|
||||
},
|
||||
{
|
||||
"tag": "gamesip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/gamesip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/gamesip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "telegramip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/telegramip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/telegramip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/telegramip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "netflixip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/netflixip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/netflixip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "mediaip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/mediaip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/mediaip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
}
|
||||
],
|
||||
"final": "🐟 漏网之鱼"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
//DustinWin-ruleset轻量规则
|
||||
{
|
||||
"outbounds": [
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ "♻️ 自动选择", "👉 手动选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", "🎯 全球直连", {providers_tags} ] },
|
||||
{ "tag": "🧱 代理域名", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 全球直连" ] },
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ "♻️ 自动选择", "👉 手动选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", "🎯 本地直连", {providers_tags} ] },
|
||||
{ "tag": "🌎 国外域名", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 本地直连" ] },
|
||||
{ "tag": "📲 电报消息", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags}, "🎯 全球直连" ] },
|
||||
{ "tag": "🎯 全球直连", "type": "selector", "outbounds": [ "DIRECT" ] },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": [ "🚀 节点选择", "DIRECT" ] },
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags}, "🎯 本地直连" ] },
|
||||
{ "tag": "🎯 本地直连", "type": "direct" },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 本地直连" ] },
|
||||
{ "tag": "👑 高级节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)" },
|
||||
{ "tag": "📉 省流节点", "type": "urltest", "tolerance": 100, "use_all_providers": true, "include": "0\\.[1-5]|低倍率|省流|大流量" },
|
||||
{ "tag": "♻️ 自动选择", "type": "urltest", "tolerance": 100, "use_all_providers": true },
|
||||
@@ -19,15 +19,15 @@
|
||||
],
|
||||
"route": {
|
||||
"rules": [
|
||||
{ "rule_set": [ "private" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "tld-proxy" ], "outbound": "🧱 代理域名" },
|
||||
{ "rule_set": [ "proxy" ], "outbound": "🧱 代理域名" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "privateip" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "private" ], "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "tld-proxy" ], "outbound": "🌎 国外域名" },
|
||||
{ "rule_set": [ "proxy" ], "outbound": "🌎 国外域名" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🎯 本地直连" },
|
||||
{ "ip_is_private": true, "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "telegramip" ], "outbound": "📲 电报消息" },
|
||||
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4"},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🎯 全球直连" }
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4", "match_only": true},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🎯 本地直连" }
|
||||
],
|
||||
"rule_set": [
|
||||
{
|
||||
@@ -35,49 +35,48 @@
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "private",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/private.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/private.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/private.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "tld-proxy",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/tld-proxy.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/tld-proxy.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/tld-proxy.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "proxy",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/proxy.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/proxy.srs"
|
||||
},
|
||||
{
|
||||
"tag": "privateip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/privateip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/privateip.srs"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/proxy.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "telegramip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/telegramip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/telegramip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/telegramip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
}
|
||||
],
|
||||
"final": "🐟 漏网之鱼"
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
//DustinWin-ruleset标准规则+去广告
|
||||
{
|
||||
"outbounds": [
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ "♻️ 自动选择", "👉 手动选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", "🎯 全球直连", {providers_tags} ] },
|
||||
{ "tag": "📈 网络测试", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🤖 AI 平台", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点" ] },
|
||||
{ "tag": "📋 Trackerslist", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🎮 游戏服务", "type": "selector", "outbounds": [ "🎯 全球直连", "👑 高级节点", "🚀 节点选择" ] },
|
||||
{ "tag": "🪟 微软服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇬 谷歌服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🍎 苹果服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🛡️ 直连域名", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🀄️ 直连 IP", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🧱 代理域名", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 全球直连" ] },
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ "♻️ 自动选择", "👉 手动选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", "🎯 本地直连", {providers_tags} ] },
|
||||
{ "tag": "📈 网络测试", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🤖 AI 平台", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "📋 Trackerslist", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🎮 游戏服务", "type": "selector", "outbounds": [ "🎯 本地直连", "👑 高级节点", "🚀 节点选择" ] },
|
||||
{ "tag": "🪟 微软服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇬 谷歌服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🍎 苹果服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇨🇳 国内域名", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🀄️ 国内 IP", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🌎 国外域名", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 本地直连" ] },
|
||||
{ "tag": "📲 电报消息", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags}, "🎯 全球直连" ] },
|
||||
{ "tag": "🎯 全球直连", "type": "selector", "outbounds": [ "DIRECT" ] },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": [ "🚀 节点选择", "DIRECT" ] },
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags}, "🎯 本地直连" ] },
|
||||
{ "tag": "🛑 广告域名", "type": "selector", "outbounds": [ "🔴 全球拦截", "🎯 本地直连" ] },
|
||||
{ "tag": "🔴 全球拦截", "type": "block" },
|
||||
{ "tag": "🎯 本地直连", "type": "direct" },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 本地直连" ] },
|
||||
{ "tag": "👑 高级节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)" },
|
||||
{ "tag": "📉 省流节点", "type": "urltest", "tolerance": 100, "use_all_providers": true, "include": "0\\.[1-5]|低倍率|省流|大流量" },
|
||||
{ "tag": "♻️ 自动选择", "type": "urltest", "tolerance": 100, "use_all_providers": true },
|
||||
@@ -28,8 +30,8 @@
|
||||
],
|
||||
"route": {
|
||||
"rules": [
|
||||
{ "rule_set": [ "private" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "ads" ], "action": "reject" },
|
||||
{ "rule_set": [ "private" ], "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "ads" ], "outbound": "🛑 广告域名" },
|
||||
{ "rule_set": [ "trackerslist" ], "outbound": "📋 Trackerslist" },
|
||||
{ "rule_set": [ "microsoft-cn" ], "outbound": "🪟 微软服务" },
|
||||
{ "rule_set": [ "apple-cn" ], "outbound": "🍎 苹果服务" },
|
||||
@@ -37,112 +39,118 @@
|
||||
{ "rule_set": [ "games-cn" ], "outbound": "🎮 游戏服务" },
|
||||
{ "rule_set": [ "ai" ], "outbound": "🤖 AI 平台" },
|
||||
{ "rule_set": [ "networktest" ], "outbound": "📈 网络测试" },
|
||||
{ "rule_set": [ "proxy" ], "outbound": "🧱 代理域名" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🛡️ 直连域名" },
|
||||
{ "rule_set": [ "privateip" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "proxy" ], "outbound": "🌎 国外域名" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🇨🇳 国内域名" },
|
||||
{ "ip_is_private": true, "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "telegramip" ], "outbound": "📲 电报消息" },
|
||||
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4"},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🀄️ 直连 IP" }
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4", "match_only": true},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🀄️ 国内 IP" }
|
||||
],
|
||||
"rule_set": [
|
||||
{
|
||||
"tag": "private",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/private.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/private.srs"
|
||||
},
|
||||
{
|
||||
"tag": "ads",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/ads.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ads.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ads.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "private",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/private.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/private.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "trackerslist",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/trackerslist.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/trackerslist.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/trackerslist.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "microsoft-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/microsoft-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/microsoft-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/microsoft-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "apple-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/apple-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/apple-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/apple-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "google-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/google-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/google-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/google-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "games-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/games-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "ai",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/ai.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ai.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ai.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "networktest",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/networktest.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/networktest.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/networktest.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "proxy",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/proxy.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/proxy.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/proxy.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs"
|
||||
},
|
||||
{
|
||||
"tag": "privateip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/privateip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/privateip.srs"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "telegramip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/telegramip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/telegramip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/telegramip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
}
|
||||
],
|
||||
"final": "🐟 漏网之鱼"
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
//DustinWin-ruleset标准规则
|
||||
{
|
||||
"outbounds": [
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ "♻️ 自动选择", "👉 手动选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", "🎯 全球直连", {providers_tags} ] },
|
||||
{ "tag": "📈 网络测试", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🤖 AI 平台", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点" ] },
|
||||
{ "tag": "📋 Trackerslist", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🎮 游戏服务", "type": "selector", "outbounds": [ "🎯 全球直连", "👑 高级节点", "🚀 节点选择" ] },
|
||||
{ "tag": "🪟 微软服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇬 谷歌服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🍎 苹果服务", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🛡️ 直连域名", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🀄️ 直连 IP", "type": "selector", "outbounds": [ "🎯 全球直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🧱 代理域名", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 全球直连" ] },
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ "♻️ 自动选择", "👉 手动选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", "🎯 本地直连", {providers_tags} ] },
|
||||
{ "tag": "📈 网络测试", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🤖 AI 平台", "type": "selector", "outbounds": [ "🚀 节点选择", "👑 高级节点", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "📋 Trackerslist", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🎮 游戏服务", "type": "selector", "outbounds": [ "🎯 本地直连", "👑 高级节点", "🚀 节点选择" ] },
|
||||
{ "tag": "🪟 微软服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇬 谷歌服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🍎 苹果服务", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🇨🇳 国内域名", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🀄️ 国内 IP", "type": "selector", "outbounds": [ "🎯 本地直连", "🚀 节点选择" ] },
|
||||
{ "tag": "🌎 国外域名", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 本地直连" ] },
|
||||
{ "tag": "📲 电报消息", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags} ] },
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags}, "🎯 全球直连" ] },
|
||||
{ "tag": "🎯 全球直连", "type": "selector", "outbounds": [ "DIRECT" ] },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": [ "🚀 节点选择", "DIRECT" ] },
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": [ "🚀 节点选择", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇯🇵 日本节点", "🇸🇬 新加坡节点", "🇺🇸 美国节点", "👑 高级节点", "📉 省流节点", {providers_tags}, "🎯 本地直连" ] },
|
||||
{ "tag": "🎯 本地直连", "type": "direct" },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": [ "🚀 节点选择", "🎯 本地直连" ] },
|
||||
{ "tag": "👑 高级节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(专线|专用|高级|直连|急速|高倍率|游戏|game|IEPL|IPLC|AIA|CTM|CC|AC)" },
|
||||
{ "tag": "📉 省流节点", "type": "urltest", "tolerance": 100, "use_all_providers": true, "include": "0\\.[1-5]|低倍率|省流|大流量" },
|
||||
{ "tag": "♻️ 自动选择", "type": "urltest", "tolerance": 100, "use_all_providers": true },
|
||||
@@ -28,7 +28,7 @@
|
||||
],
|
||||
"route": {
|
||||
"rules": [
|
||||
{ "rule_set": [ "private" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "private" ], "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "trackerslist" ], "outbound": "📋 Trackerslist" },
|
||||
{ "rule_set": [ "microsoft-cn" ], "outbound": "🪟 微软服务" },
|
||||
{ "rule_set": [ "apple-cn" ], "outbound": "🍎 苹果服务" },
|
||||
@@ -36,13 +36,13 @@
|
||||
{ "rule_set": [ "games-cn" ], "outbound": "🎮 游戏服务" },
|
||||
{ "rule_set": [ "ai" ], "outbound": "🤖 AI 平台" },
|
||||
{ "rule_set": [ "networktest" ], "outbound": "📈 网络测试" },
|
||||
{ "rule_set": [ "proxy" ], "outbound": "🧱 代理域名" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🛡️ 直连域名" },
|
||||
{ "rule_set": [ "privateip" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "proxy" ], "outbound": "🌎 国外域名" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🇨🇳 国内域名" },
|
||||
{ "ip_is_private": true, "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "telegramip" ], "outbound": "📲 电报消息" },
|
||||
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4"},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🀄️ 直连 IP" }
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4", "match_only": true},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🀄️ 国内 IP" }
|
||||
|
||||
],
|
||||
"rule_set": [
|
||||
@@ -51,91 +51,96 @@
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/private.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/private.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/private.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "trackerslist",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/trackerslist.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/trackerslist.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/trackerslist.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "microsoft-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/microsoft-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/microsoft-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/microsoft-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "apple-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/apple-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/apple-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/apple-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "google-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/google-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/google-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/google-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "games-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/games-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games-cn.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/games-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "ai",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/ai.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ai.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/ai.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "networktest",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/networktest.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/networktest.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/networktest.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "proxy",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/proxy.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/proxy.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/proxy.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs"
|
||||
},
|
||||
{
|
||||
"tag": "privateip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/privateip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/privateip.srs"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "telegramip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/telegramip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/telegramip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/telegramip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
}
|
||||
],
|
||||
"final": "🐟 漏网之鱼"
|
||||
|
||||
263
rules/singbox_providers/ShellCrash_RS_Full_BanAds.json
Normal file
263
rules/singbox_providers/ShellCrash_RS_Full_BanAds.json
Normal file
@@ -0,0 +1,263 @@
|
||||
//ShellCrash-ruleset 全分组规则+去广告 For Sing-box By Maozai 260111
|
||||
{
|
||||
"outbounds": [
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": ["♻️ 自动选择", "✨ 自动选择(去高倍率)", "🛠️ 手动切换", "🎯 本地直连", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🛠️ 手动切换", "type": "selector", "use_all_providers": true, "outbounds": ["🎯 本地直连", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "♻️ 自动选择", "type": "urltest", "use_all_providers": true, "exclude": "(?i)(剩余|重置|到期|防失联|官网|导航|客服|http|www)" },
|
||||
{ "tag": "✨ 自动选择(去高倍率)", "type": "urltest", "use_all_providers": true, "exclude": "(?i)(剩余|重置|到期|防失联|官网|导航|客服|http|www|专线|专用|高级|直连|急速|高速|高倍率|游戏|铂金|钻石|企业|VIP|Ultra|Game|IEPL|IPLC|AIA|BGP|GIA|CN2|CMI|HGC|HKT|CTM|CC|AC|x([2-9]|[0-9][0-9]+))" },
|
||||
|
||||
{ "tag": "🤖 AI 平台", "type": "selector", "outbounds": ["🚀 节点选择", "🤖 AI节点(过滤港澳)", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🤖 AI节点(过滤港澳)", "type": "urltest", "use_all_providers": true, "exclude": "(?i)(剩余|重置|到期|防失联|官网|导航|客服|http|www|🇭🇰|港|🇲🇴|澳门|hk|hongkong|hong kong)" },
|
||||
{ "tag": "🎬 奈飞视频", "type": "selector", "outbounds": ["🚀 节点选择", "🎬 奈飞节点", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🎬 奈飞节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(NF|奈飞|解锁|Netflix|NETFLIX|Media)" },
|
||||
{ "tag": "▶️ 油管视频", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "📢 谷歌推送", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "📲 电报消息", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🌍 国际媒体", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🌐 国际流量", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🎮 外服游戏", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
|
||||
{ "tag": "🕹 国服游戏", "type": "selector", "outbounds": ["🎯 本地直连", "🚀 节点选择", "♻️ 自动选择", "🛠️ 手动切换", {providers_tags}] },
|
||||
{ "tag": "🦾 Steam平台", "type": "selector", "outbounds": ["🎯 本地直连", "🚀 节点选择", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🪟 微软服务", "type": "selector", "outbounds": ["🎯 本地直连", "🚀 节点选择", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🍎 苹果服务", "type": "selector", "outbounds": ["🎯 本地直连", "🚀 节点选择", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🇬 谷歌服务", "type": "selector", "outbounds": ["🎯 本地直连", "🚀 节点选择", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "🧲 BT下载", "type": "selector", "outbounds": ["🎯 本地直连", "🚀 节点选择", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "📈 网络测速", "type": "selector", "outbounds": ["🎯 本地直连", "🚀 节点选择", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
{ "tag": "↔️ 直连软件", "type": "selector", "outbounds": ["🎯 本地直连", "🚀 节点选择", "♻️ 自动选择", "🛠️ 手动切换", {providers_tags}] },
|
||||
{ "tag": "🀄️ 国内流量", "type": "selector", "outbounds": ["🎯 本地直连", "🚀 节点选择", "♻️ 自动选择", "🛠️ 手动切换", {providers_tags}] },
|
||||
|
||||
{ "tag": "🐟 漏网之鱼", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连", "♻️ 自动选择", "🛠️ 手动切换", "🇭🇰 香港节点", "🇹🇼 台湾节点", "🇺🇸 美国节点", "🇯🇵 日本节点", "🇪🇺 欧洲节点", "🇰🇷 韩国节点", "🇸🇬 狮城节点", "👑 高级节点", "📉 省流节点", {providers_tags}] },
|
||||
|
||||
{ "tag": "🛑 广告拦截", "type": "selector", "outbounds": ["⛔ 禁止连接", "🔀 规则放行", "🎯 本地直连"] },
|
||||
{ "tag": "⛔ 禁止连接", "type": "block" },
|
||||
{ "tag": "🔀 规则放行", "type": "pass" },
|
||||
{ "tag": "🎯 本地直连", "type": "direct" },
|
||||
{ "tag": "GLOBAL", "type": "selector", "outbounds": ["🚀 节点选择", "🎯 本地直连"] },
|
||||
|
||||
{ "tag": "🇭🇰 香港节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(🇭🇰|港|hk|hongkong|hong kong)" },
|
||||
{ "tag": "🇹🇼 台湾节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(🇹🇼|台|tw|taiwan|tai wan)", "exclude": "(?i)(仙台)" },
|
||||
{ "tag": "🇺🇸 美国节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(🇺🇸|美|洛杉矶|圣何塞|西雅图|纽约|波特兰|旧金山|休斯|达拉斯|硅谷|堪萨斯|迈阿密|凤凰城|芝加哥|奥勒姆|us|unitedstates|united states)", "exclude": "(?i)(南美|中美|拉美|亚美尼亚|美属)" },
|
||||
{ "tag": "🇯🇵 日本节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(🇯🇵|日|东京|大阪|埼玉|九州|jp|japan)", "exclude": "(?i)(尼日利亚|尼日尔|日内瓦)" },
|
||||
{ "tag": "🇪🇺 欧洲节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(🇪🇺|欧|德|英|法|荷|俄罗斯|西班牙|意大利|瑞士|瑞典|土耳其|挪威|芬兰|丹麦|比利时|爱尔兰|奥地利|波兰|葡萄牙|乌克兰|希腊|捷克|匈牙利|罗马尼亚|保加利亚|冰岛|克罗地亚|阿姆斯特丹)" },
|
||||
{ "tag": "🇰🇷 韩国节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(🇰🇷|韩|韓|首尔|kr|kor)" },
|
||||
{ "tag": "🇸🇬 狮城节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(🇸🇬|新加坡|狮城|sg|singapore)" },
|
||||
|
||||
{ "tag": "👑 高级节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(专线|专用|高级|直连|急速|高速|高倍率|游戏|铂金|钻石|企业|VIP|Ultra|Game|IEPL|IPLC|AIA|BGP|GIA|CN2|CMI|HGC|HKT|CTM|CC|AC|x([2-9]|[0-9][0-9]+))" },
|
||||
{ "tag": "📉 省流节点", "type": "urltest", "use_all_providers": true, "include": "(?i)(0[.][1-5]|低倍率|省流|大流量|公益|免费|闲时|Low)" }
|
||||
],
|
||||
"route": {
|
||||
"rules": [
|
||||
{ "domain_suffix": ["captive.apple.com"], "outbound": "🍎 苹果服务" },
|
||||
{ "domain_suffix": ["kamo.teracloud.jp"], "outbound": "🀄️ 国内流量" },
|
||||
|
||||
{ "rule_set": ["private"], "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": ["ads"], "outbound": "🛑 广告拦截" },
|
||||
|
||||
{ "rule_set": ["networktest"], "outbound": "📈 网络测速" },
|
||||
{ "rule_set": ["applications"], "outbound": "↔️ 直连软件" },
|
||||
{ "rule_set": ["trackerslist"], "outbound": "🧲 BT下载" },
|
||||
{ "rule_set": ["apple-cn"], "outbound": "🍎 苹果服务" },
|
||||
{ "rule_set": ["microsoft-cn"], "outbound": "🪟 微软服务" },
|
||||
{ "rule_set": ["google-cn"], "outbound": "🇬 谷歌服务" },
|
||||
{ "rule_set": ["steamcn"], "outbound": "🦾 Steam平台" },
|
||||
{ "rule_set": ["games-cn"], "outbound": "🕹 国服游戏" },
|
||||
|
||||
{ "rule_set": ["googlefcm"], "outbound": "📢 谷歌推送" },
|
||||
{ "rule_set": ["netflix"], "outbound": "🎬 奈飞视频" },
|
||||
{ "rule_set": ["youtube"], "outbound": "▶️ 油管视频" },
|
||||
{ "rule_set": ["ai"], "outbound": "🤖 AI 平台" },
|
||||
{ "rule_set": ["media"], "outbound": "🌍 国际媒体" },
|
||||
{ "rule_set": ["games"], "outbound": "🎮 外服游戏" },
|
||||
|
||||
{ "rule_set": ["proxy"], "outbound": "🌐 国际流量" },
|
||||
{ "rule_set": ["cn"], "outbound": "🀄️ 国内流量" },
|
||||
|
||||
{ "rule_set": ["privateip"], "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": ["telegramip"], "outbound": "📲 电报消息" },
|
||||
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4" },
|
||||
{ "rule_set": ["mediaip"], "outbound": "🌍 国际媒体" },
|
||||
{ "rule_set": ["cnip"], "outbound": "🀄️ 国内流量" }
|
||||
],
|
||||
"rule_set": [
|
||||
{
|
||||
"tag": "private",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/private.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/private.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "ads",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/ads.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/ads.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "networktest",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/networktest.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/networktest.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "applications",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/applications.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/applications.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "trackerslist",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/trackerslist.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/trackerslist.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "apple-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/apple-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/apple-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "microsoft-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/microsoft-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/microsoft-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "google-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/google-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/google-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "steamcn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/steamcn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@refs/heads/sing/geo/geosite/steam%40cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "games-cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/games-cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/games-cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "googlefcm",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/googlefcm.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@refs/heads/sing/geo/geosite/googlefcm.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "netflix",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/netflix.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/netflix.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "youtube",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/youtube.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/youtube.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "ai",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/ai.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/ai.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "media",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/media.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/media.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "games",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/games.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/games.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "proxy",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/proxy.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/proxy.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cn",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "privateip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/privateip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/privateip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "telegramip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/telegramip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/telegramip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "mediaip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/mediaip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/mediaip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@refs/heads/sing-box-ruleset/cnip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
}
|
||||
],
|
||||
"final": "🐟 漏网之鱼"
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,16 @@
|
||||
//ShellCrash-ruleset极简规则
|
||||
{
|
||||
"outbounds": [
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ {providers_tags}, "DIRECT" ], "use_all_providers": true },
|
||||
{ "tag": "🎯 全球直连", "type": "selector", "outbounds": [ "DIRECT", "🚀 节点选择" ] }
|
||||
{ "tag": "🚀 节点选择", "type": "selector", "outbounds": [ {providers_tags}, "🎯 本地直连" ], "use_all_providers": true },
|
||||
{ "tag": "🎯 本地直连", "type": "direct" }
|
||||
],
|
||||
"route": {
|
||||
"rules": [
|
||||
{ "rule_set": [ "privateip" ], "outbound": "🎯 全球直连" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🎯 全球直连" },
|
||||
{ "ip_is_private": true, "outbound": "🎯 本地直连" },
|
||||
{ "rule_set": [ "cn" ], "outbound": "🎯 本地直连" },
|
||||
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4"},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🎯 全球直连" }
|
||||
{ "action": "resolve", "server": "dns_proxy", "strategy": "prefer_ipv4", "match_only": true},
|
||||
{ "rule_set": [ "cnip" ], "outbound": "🎯 本地直连" }
|
||||
],
|
||||
"rule_set": [
|
||||
{
|
||||
@@ -18,21 +18,16 @@
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cn.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs"
|
||||
},
|
||||
{
|
||||
"tag": "privateip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/privateip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/privateip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cn.srs",
|
||||
"download_detour": "DIRECT"
|
||||
},
|
||||
{
|
||||
"tag": "cnip",
|
||||
"type": "remote",
|
||||
"format": "binary",
|
||||
"path": "./ruleset/cnip.srs",
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs"
|
||||
"url": "https://testingcf.jsdelivr.net/gh/DustinWin/ruleset_geodata@sing-box-ruleset/cnip.srs",
|
||||
"download_detour": "DIRECT"
|
||||
}
|
||||
],
|
||||
"final": "🚀 节点选择"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
ShellCrash-ruleset极简规则 ShellCrash_RS_Nano.json
|
||||
ShellCrash-ruleset全分组规则+去广告 ShellCrash_RS_Full_BanAds.json
|
||||
DustinWin-ruleset轻量规则 DustinWin_RS_Light.json
|
||||
DustinWin-ruleset标准规则 DustinWin_RS_Lite_NoAds.json
|
||||
DustinWin-ruleset标准规则+去广告 DustinWin_RS_Lite.json
|
||||
|
||||
324
scripts/init.sh
324
scripts/init.sh
@@ -1,161 +1,6 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) Juewuy
|
||||
|
||||
setdir() {
|
||||
dir_avail() {
|
||||
df $2 $1 | awk '{ for(i=1;i<=NF;i++){ if(NR==1){ arr[i]=$i; }else{ arr[i]=arr[i]" "$i; } } } END{ for(i=1;i<=NF;i++){ print arr[i]; } }' | grep -E 'Ava|可用' | awk '{print $2}'
|
||||
}
|
||||
set_usb_dir() {
|
||||
echo -e "请选择安装目录"
|
||||
du -hL /mnt | awk '{print " "NR" "$2" "$1}'
|
||||
read -p "请输入相应数字 > " num
|
||||
dir=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p)
|
||||
if [ -z "$dir" ]; then
|
||||
echo -e "\033[31m输入错误!请重新设置!\033[0m"
|
||||
set_usb_dir
|
||||
fi
|
||||
}
|
||||
set_asus_dir() {
|
||||
echo -e "请选择U盘目录"
|
||||
du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print " "NR" "$2" "$1}'
|
||||
read -p "请输入相应数字 > " num
|
||||
dir=$(du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print $2}' | sed -n "$num"p)
|
||||
if [ ! -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ]; then
|
||||
echo -e "\033[31m未找到下载大师自启文件:$dir/asusware.arm/etc/init.d/S50downloadmaster,请检查设置!\033[0m"
|
||||
set_asus_dir
|
||||
fi
|
||||
}
|
||||
set_cust_dir() {
|
||||
echo "-----------------------------------------------"
|
||||
echo "可用路径 剩余空间:"
|
||||
df -h | awk '{print $6,$4}' | sed 1d
|
||||
echo "路径是必须带 / 的格式,注意写入虚拟内存(/tmp,/opt,/sys...)的文件会在重启后消失!!!"
|
||||
read -p "请输入自定义路径 > " dir
|
||||
if [ "$(dir_avail $dir)" = 0 ] || [ -n "$(echo $dir | grep -E 'tmp|opt|sys')" ]; then
|
||||
echo "\033[31m路径错误!请重新设置!\033[0m"
|
||||
set_cust_dir
|
||||
fi
|
||||
}
|
||||
echo "-----------------------------------------------"
|
||||
if [ -n "$systype" ]; then
|
||||
[ "$systype" = "Padavan" ] && dir=/etc/storage
|
||||
[ "$systype" = "mi_snapshot" ] && {
|
||||
echo -e "\033[33m检测到当前设备为小米官方系统,请选择安装位置\033[0m"
|
||||
[ -d /data ] && $echo " 1 安装到 /data 目录,剩余空间:$(dir_avail /data -h)(支持软固化功能)"
|
||||
[ -d /userdisk ] && $echo " 2 安装到 /userdisk 目录,剩余空间:$(dir_avail /userdisk -h)(支持软固化功能)"
|
||||
[ -d /data/other_vol ] && $echo " 3 安装到 /data/other_vol 目录,剩余空间:$(dir_avail /data/other_vol -h)(支持软固化功能)"
|
||||
$echo " 4 安装到自定义目录(不推荐,不明勿用!)"
|
||||
echo " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/data
|
||||
;;
|
||||
2)
|
||||
dir=/userdisk
|
||||
;;
|
||||
3)
|
||||
dir=/data/other_vol
|
||||
;;
|
||||
4)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
[ "$systype" = "asusrouter" ] && {
|
||||
echo -e "\033[33m检测到当前设备为华硕固件,请选择安装方式\033[0m"
|
||||
echo -e " 1 基于USB设备安装(限23年9月之前固件,须插入\033[31m任意\033[0mUSB设备)"
|
||||
echo -e " 2 基于自启脚本安装(仅支持梅林及部分非koolshare官改固件)"
|
||||
echo -e " 3 基于U盘+下载大师安装(支持所有固件,限ARM设备,须插入U盘或移动硬盘)"
|
||||
echo -e " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
read -p "将脚本安装到USB存储/系统闪存?(1/0) > " res
|
||||
[ "$res" = "1" ] && set_usb_dir || dir=/jffs
|
||||
usb_status=1
|
||||
;;
|
||||
2)
|
||||
echo -e "如无法正常开机启动,请重新使用USB方式安装!"
|
||||
sleep 2
|
||||
dir=/jffs
|
||||
;;
|
||||
3)
|
||||
echo -e "请先在路由器网页后台安装下载大师并启用,之后选择外置存储所在目录!"
|
||||
sleep 2
|
||||
set_asus_dir
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
[ "$systype" = "ng_snapshot" ] && dir=/tmp/mnt
|
||||
else
|
||||
echo -e "\033[33m安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m"
|
||||
echo -e " 1 在\033[32m/etc目录\033[0m下安装(适合root用户)"
|
||||
echo -e " 2 在\033[32m/usr/share目录\033[0m下安装(适合Linux系统)"
|
||||
echo -e " 3 在\033[32m当前用户目录\033[0m下安装(适合非root用户)"
|
||||
echo -e " 4 在\033[32m外置存储\033[0m中安装"
|
||||
echo -e " 5 手动设置安装目录"
|
||||
echo -e " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
#设置目录
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/etc
|
||||
;;
|
||||
2)
|
||||
dir=/usr/share
|
||||
;;
|
||||
3)
|
||||
dir=~/.local/share
|
||||
mkdir -p ~/.config/systemd/user
|
||||
;;
|
||||
4)
|
||||
set_usb_dir
|
||||
;;
|
||||
5)
|
||||
echo "-----------------------------------------------"
|
||||
echo "可用路径 剩余空间:"
|
||||
df -h | awk '{print $6,$4}' | sed 1d
|
||||
echo "路径是必须带 / 的格式,注意写入虚拟内存(/tmp,/opt,/sys...)的文件会在重启后消失!!!"
|
||||
read -p "请输入自定义路径 > " dir
|
||||
if [ -z "$dir" ]; then
|
||||
echo -e "\033[31m路径错误!请重新设置!\033[0m"
|
||||
setdir
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "安装已取消"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ ! -w $dir ]; then
|
||||
echo -e "\033[31m没有$dir目录写入权限!请重新设置!\033[0m" && sleep 1 && setdir
|
||||
else
|
||||
echo -e "目标目录\033[32m$dir\033[0m空间剩余:$(dir_avail $dir -h)"
|
||||
read -p "确认安装?(1/0) > " res
|
||||
[ "$res" = "1" ] && CRASHDIR=$dir/ShellCrash || setdir
|
||||
fi
|
||||
}
|
||||
setconfig() { #脚本配置工具
|
||||
#参数1代表变量名,参数2代表变量值,参数3即文件路径
|
||||
[ -z "$3" ] && configpath="$CRASHDIR"/configs/ShellCrash.cfg || configpath="${3}"
|
||||
if grep -q "^${1}=" "$configpath"; then
|
||||
sed -i "s#^${1}=.*#${1}=${2}#g" "$configpath"
|
||||
else
|
||||
printf '%s=%s\n' "$1" "$2" >>"$configpath"
|
||||
fi
|
||||
}
|
||||
#特殊固件识别及标记
|
||||
[ -f "/etc/storage/started_script.sh" ] && { #老毛子固件
|
||||
systype=Padavan
|
||||
@@ -176,22 +21,26 @@ grep -qE '/(docker|lxc|kubepods|crio|containerd)/' /proc/1/cgroup || [ -f /run/.
|
||||
#检查环境变量
|
||||
[ "$systype" = 'container' ] && CRASHDIR='/etc/ShellCrash'
|
||||
[ -z "$CRASHDIR" ] && [ -n "$clashdir" ] && CRASHDIR="$clashdir"
|
||||
[ -z "$CRASHDIR" ] && [ -d /tmp/SC_tmp ] && setdir
|
||||
[ -z "$CRASHDIR" ] && [ -d /tmp/SC_tmp ] && . /tmp/SC_tmp/menus/set_crashdir.sh && set_crashdir
|
||||
#移动文件
|
||||
mkdir -p ${CRASHDIR}
|
||||
mv -f /tmp/SC_tmp/* ${CRASHDIR} 2>/dev/null
|
||||
|
||||
mkdir -p "$CRASHDIR"
|
||||
rm -rf /tmp/SC_tmp/menus/set_crashdir.sh
|
||||
mv -f /tmp/SC_tmp/* "$CRASHDIR" 2>/dev/null
|
||||
##############################
|
||||
#注意目录变更
|
||||
CFG_PATH="$CRASHDIR"/configs/ShellCrash.cfg
|
||||
. "$CRASHDIR"/libs/set_config.sh
|
||||
. "$CRASHDIR"/libs/set_profile.sh
|
||||
#初始化
|
||||
mkdir -p ${CRASHDIR}/configs
|
||||
[ -f "${CRASHDIR}/configs/ShellCrash.cfg" ] || echo '#ShellCrash配置文件,不明勿动!' >${CRASHDIR}/configs/ShellCrash.cfg
|
||||
mkdir -p "$CRASHDIR"/configs
|
||||
[ -f "$CFG_PATH" ] || echo '#ShellCrash配置文件,不明勿动!' >"$CFG_PATH"
|
||||
#判断系统类型写入不同的启动文件
|
||||
[ -w /usr/lib/systemd/system ] && sysdir=/usr/lib/systemd/system
|
||||
[ -w /etc/systemd/system ] && sysdir=/etc/systemd/system
|
||||
if [ -f /etc/rc.common -a "$(cat /proc/1/comm)" = "procd" ]; then
|
||||
#设为init.d方式启动
|
||||
cp -f ${CRASHDIR}/shellcrash.procd /etc/init.d/shellcrash
|
||||
cp -f "$CRASHDIR"/starts/shellcrash.procd /etc/init.d/shellcrash
|
||||
chmod 755 /etc/init.d/shellcrash
|
||||
rm -rf ${CRASHDIR}/shellcrash.openrc
|
||||
elif [ -n "$sysdir" -a "$USER" = "root" -a "$(cat /proc/1/comm)" = "systemd" ]; then
|
||||
#创建shellcrash用户
|
||||
userdel shellcrash 2>/dev/null
|
||||
@@ -204,41 +53,43 @@ elif [ -n "$sysdir" -a "$USER" = "root" -a "$(cat /proc/1/comm)" = "systemd" ];
|
||||
echo "shellcrash:x:0:7890::/home/shellcrash:/bin/sh" >>/etc/passwd
|
||||
fi
|
||||
#配置systemd
|
||||
mv -f ${CRASHDIR}/shellcrash.service $sysdir/shellcrash.service 2>/dev/null
|
||||
sed -i "s%/etc/ShellCrash%$CRASHDIR%g" $sysdir/shellcrash.service
|
||||
mv -f "$CRASHDIR"/starts/shellcrash.service "$sysdir"/shellcrash.service 2>/dev/null
|
||||
sed -i "s%/etc/ShellCrash%$CRASHDIR%g" "$sysdir"/shellcrash.service
|
||||
systemctl daemon-reload
|
||||
rm -rf "$CRASHDIR"/starts/shellcrash.procd
|
||||
elif rc-status -r >/dev/null 2>&1; then
|
||||
#设为openrc方式启动
|
||||
cp -f ${CRASHDIR}/shellcrash.openrc /etc/init.d/shellcrash
|
||||
mv -f "$CRASHDIR"/starts/shellcrash.openrc /etc/init.d/shellcrash
|
||||
chmod 755 /etc/init.d/shellcrash
|
||||
rm -rf ${CRASHDIR}/shellcrash.procd
|
||||
rm -rf "$CRASHDIR"/starts/shellcrash.procd
|
||||
else
|
||||
#设为保守模式启动
|
||||
setconfig start_old 已开启
|
||||
rm -rf "$CRASHDIR"/starts/shellcrash.procd
|
||||
fi
|
||||
rm -rf "$CRASHDIR"/starts/shellcrash.service
|
||||
rm -rf "$CRASHDIR"/starts/shellcrash.openrc
|
||||
|
||||
#修饰文件及版本号
|
||||
command -v bash >/dev/null 2>&1 && shtype=bash
|
||||
[ -x /bin/ash ] && shtype=ash
|
||||
for file in start.sh task.sh menu.sh; do
|
||||
sed -i "s|/bin/sh|/bin/$shtype|" ${CRASHDIR}/${file} 2>/dev/null
|
||||
chmod 755 ${CRASHDIR}/${file} 2>/dev/null
|
||||
#批量授权
|
||||
for file in start.sh starts/bfstart.sh starts/afstart.sh starts/fw_stop.sh menu.sh menus/task_cmd.sh menus/bot_tg.sh; do
|
||||
sed -i "s|/bin/sh|/bin/$shtype|" "$CRASHDIR/$file" 2>/dev/null
|
||||
chmod +x "$CRASHDIR/$file" 2>/dev/null
|
||||
done
|
||||
setconfig versionsh_l $version
|
||||
#生成用于执行启动服务的变量文件
|
||||
[ ! -f ${CRASHDIR}/configs/command.env ] && {
|
||||
TMPDIR='/tmp/ShellCrash'
|
||||
BINDIR=${CRASHDIR}
|
||||
touch ${CRASHDIR}/configs/command.env
|
||||
setconfig TMPDIR ${TMPDIR} ${CRASHDIR}/configs/command.env
|
||||
setconfig BINDIR ${BINDIR} ${CRASHDIR}/configs/command.env
|
||||
[ ! -f "$CRASHDIR"/configs/command.env ] && {
|
||||
echo 'TMPDIR=/tmp/ShellCrash' > "$CRASHDIR"/configs/command.env
|
||||
echo "BINDIR=$CRASHDIR" >> "$CRASHDIR"/configs/command.env
|
||||
}
|
||||
if [ -n "$(grep 'crashcore=singbox' ${CRASHDIR}/configs/ShellCrash.cfg)" ]; then
|
||||
if [ -n "$(grep 'crashcore=singbox' "$CFG_PATH")" ]; then
|
||||
COMMAND='"$TMPDIR/CrashCore run -D $BINDIR -C $TMPDIR/jsons"'
|
||||
else
|
||||
COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"'
|
||||
fi
|
||||
setconfig COMMAND "$COMMAND" ${CRASHDIR}/configs/command.env
|
||||
setconfig COMMAND "$COMMAND" "$CRASHDIR"/configs/command.env
|
||||
#设置防火墙执行模式
|
||||
grep -q 'firewall_mod' "$CRASHDIR/configs/ShellClash.cfg" 2>/dev/null || {
|
||||
firewall_mod=iptables
|
||||
@@ -246,22 +97,18 @@ grep -q 'firewall_mod' "$CRASHDIR/configs/ShellClash.cfg" 2>/dev/null || {
|
||||
setconfig firewall_mod $firewall_mod
|
||||
}
|
||||
#设置更新地址
|
||||
[ -n "$url" ] && setconfig update_url $url
|
||||
[ -n "$url" ] && setconfig update_url "$url"
|
||||
[ -n "$release_type" ] && setconfig release_type "$release_type"
|
||||
#设置语言
|
||||
[ -n "$language" ] && echo "$language" > "$CRASHDIR/configs/i18n.cfg"
|
||||
#设置环境变量
|
||||
[ -w /opt/etc/profile ] && profile=/opt/etc/profile
|
||||
[ -w /opt/etc/profile ] && [ "$systype" = "Padavan" ] && profile=/opt/etc/profile
|
||||
[ -w /jffs/configs/profile.add ] && profile=/jffs/configs/profile.add
|
||||
[ -z "$profile" ] && profile=/etc/profile
|
||||
set_profile() {
|
||||
[ -z "$my_alias" ] && my_alias=crash
|
||||
sed -i "/ShellCrash\/menu.sh/"d "$1"
|
||||
echo "alias ${my_alias}=\"$shtype $CRASHDIR/menu.sh\"" >>"$1" #设置快捷命令环境变量
|
||||
sed -i '/export CRASHDIR=*/'d "$1"
|
||||
echo "export CRASHDIR=\"$CRASHDIR\"" >>"$1" #设置路径环境变量
|
||||
}
|
||||
if [ -n "$profile" ]; then
|
||||
set_profile "$profile"
|
||||
#适配zsh环境变量
|
||||
zsh --version >/dev/null 2>&1 && [ -z "$(cat $HOME/.zshrc 2>/dev/null | grep CRASHDIR)" ] && set_profile '$HOME/.zshrc'
|
||||
zsh --version >/dev/null 2>&1 && [ -z "$(cat $HOME/.zshrc 2>/dev/null | grep CRASHDIR)" ] && set_profile "$HOME/.zshrc"
|
||||
setconfig my_alias "$my_alias"
|
||||
else
|
||||
echo -e "\033[33m无法写入环境变量!请检查安装权限!\033[0m"
|
||||
@@ -269,30 +116,39 @@ else
|
||||
fi
|
||||
#梅林/Padavan额外设置
|
||||
[ -n "$initdir" ] && {
|
||||
sed -i '/ShellCrash初始化/'d $initdir
|
||||
touch $initdir
|
||||
echo "$CRASHDIR/start.sh init & #ShellCrash初始化脚本" >>$initdir
|
||||
chmod a+rx $initdir 2>/dev/null
|
||||
setconfig initdir $initdir
|
||||
touch "$initdir"
|
||||
sed -i '/ShellCrash初始化/'d "$initdir"
|
||||
echo "$CRASHDIR/starts/general_init.sh & #ShellCrash初始化脚本" >>"$initdir"
|
||||
chmod 755 "$CRASHDIR"/starts/general_init.sh
|
||||
chmod a+rx "$initdir" 2>/dev/null
|
||||
setconfig initdir "$initdir"
|
||||
}
|
||||
#Padavan额外设置
|
||||
[ -f "/etc/storage/started_script.sh" ] && mount -t tmpfs -o remount,rw,size=45M tmpfs /tmp #增加/tmp空间以适配新的内核压缩方式
|
||||
#镜像化OpenWrt(snapshot)额外设置
|
||||
if [ "$systype" = "mi_snapshot" -o "$systype" = "ng_snapshot" ]; then
|
||||
chmod 755 ${CRASHDIR}/misnap_init.sh
|
||||
uci delete firewall.ShellClash 2>/dev/null
|
||||
chmod 755 "$CRASHDIR"/starts/snapshot_init.sh
|
||||
if [ "$systype" = "mi_snapshot" ];then
|
||||
path="/data/shellcrash_init.sh"
|
||||
sed -i "s#^CRASHDIR=.*#CRASHDIR=$CRASHDIR#" "$CRASHDIR"/starts/snapshot_init.sh
|
||||
mv -f "$CRASHDIR"/starts/snapshot_init.sh "$path"
|
||||
[ ! -f /data/auto_start.sh ] && echo '#用于自定义需要开机启动的功能或者命令,会在开机后自动运行' > /data/auto_start.sh
|
||||
else
|
||||
path="$CRASHDIR"/starts/snapshot_init.sh
|
||||
fi
|
||||
uci delete firewall.auto_ssh 2>/dev/null
|
||||
uci delete firewall.ShellCrash 2>/dev/null
|
||||
uci set firewall.ShellCrash=include
|
||||
uci set firewall.ShellCrash.type='script'
|
||||
uci set firewall.ShellCrash.path="$CRASHDIR/misnap_init.sh"
|
||||
uci set firewall.ShellCrash.path="$path"
|
||||
uci set firewall.ShellCrash.enabled='1'
|
||||
uci commit firewall
|
||||
else
|
||||
rm -rf ${CRASHDIR}/misnap_init.sh
|
||||
rm -rf "$CRASHDIR"/starts/snapshot_init.sh
|
||||
fi
|
||||
#华硕USB启动额外设置
|
||||
[ "$usb_status" = "1" ] && {
|
||||
echo "$CRASHDIR/start.sh init & #ShellCrash初始化脚本" >${CRASHDIR}/asus_usb_mount.sh
|
||||
echo "$CRASHDIR/start.sh init & #ShellCrash初始化脚本" >"$CRASHDIR"/asus_usb_mount.sh
|
||||
nvram set script_usbmount="$CRASHDIR/asus_usb_mount.sh"
|
||||
nvram commit
|
||||
}
|
||||
@@ -307,7 +163,7 @@ fi
|
||||
setconfig firewall_area '1'
|
||||
setconfig firewall_mod 'nftables'
|
||||
setconfig release_type 'master'
|
||||
setconfig start_old '未开启'
|
||||
setconfig start_old 'OFF'
|
||||
echo "$CRASHDIR/menu.sh" >> /etc/profile
|
||||
cat > /usr/bin/crash <<'EOF'
|
||||
#!/bin/sh
|
||||
@@ -322,57 +178,57 @@ setconfig systype $systype
|
||||
rm -rf /tmp/*rash*gz
|
||||
rm -rf /tmp/SC_tmp
|
||||
#转换&清理旧版本文件
|
||||
mkdir -p ${CRASHDIR}/yamls
|
||||
mkdir -p ${CRASHDIR}/jsons
|
||||
mkdir -p ${CRASHDIR}/tools
|
||||
mkdir -p ${CRASHDIR}/task
|
||||
mkdir -p ${CRASHDIR}/ruleset
|
||||
mkdir -p "$CRASHDIR"/yamls
|
||||
mkdir -p "$CRASHDIR"/jsons
|
||||
mkdir -p "$CRASHDIR"/tools
|
||||
mkdir -p "$CRASHDIR"/task
|
||||
mkdir -p "$CRASHDIR"/ruleset
|
||||
for file in config.yaml.bak user.yaml proxies.yaml proxy-groups.yaml rules.yaml others.yaml; do
|
||||
mv -f ${CRASHDIR}/$file ${CRASHDIR}/yamls/$file 2>/dev/null
|
||||
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/yamls/"$file" 2>/dev/null
|
||||
done
|
||||
[ ! -L ${CRASHDIR}/config.yaml ] && mv -f ${CRASHDIR}/config.yaml ${CRASHDIR}/yamls/config.yaml 2>/dev/null
|
||||
[ ! -L "$CRASHDIR"/config.yaml ] && mv -f "$CRASHDIR"/config.yaml "$CRASHDIR"/yamls/config.yaml 2>/dev/null
|
||||
for file in fake_ip_filter mac web_save servers.list fake_ip_filter.list fallback_filter.list singbox_providers.list clash_providers.list; do
|
||||
mv -f ${CRASHDIR}/$file ${CRASHDIR}/configs/$file 2>/dev/null
|
||||
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/configs/"$file" 2>/dev/null
|
||||
done
|
||||
#配置文件改名
|
||||
mv -f ${CRASHDIR}/mark ${CRASHDIR}/configs/ShellCrash.cfg 2>/dev/null
|
||||
mv -f ${CRASHDIR}/configs/ShellClash.cfg ${CRASHDIR}/configs/ShellCrash.cfg 2>/dev/null
|
||||
mv -f "$CRASHDIR"/configs/ShellClash.cfg "$CFG_PATH" 2>/dev/null
|
||||
#数据库改名
|
||||
mv -f ${CRASHDIR}/geosite.dat ${CRASHDIR}/GeoSite.dat 2>/dev/null
|
||||
mv -f ${CRASHDIR}/ruleset/geosite-cn.srs ${CRASHDIR}/ruleset/cn.srs 2>/dev/null
|
||||
mv -f ${CRASHDIR}/ruleset/geosite-cn.mrs ${CRASHDIR}/ruleset/cn.mrs 2>/dev/null
|
||||
mv -f "$CRASHDIR"/geosite.dat "$CRASHDIR"/GeoSite.dat 2>/dev/null
|
||||
mv -f "$CRASHDIR"/ruleset/geosite-cn.srs "$CRASHDIR"/ruleset/cn.srs 2>/dev/null
|
||||
mv -f "$CRASHDIR"/ruleset/geosite-cn.mrs "$CRASHDIR"/ruleset/cn.mrs 2>/dev/null
|
||||
#数据库移动
|
||||
mv -f ${CRASHDIR}/*.srs ${CRASHDIR}/ruleset/ 2>/dev/null
|
||||
mv -f ${CRASHDIR}/*.mrs ${CRASHDIR}/ruleset/ 2>/dev/null
|
||||
#内核改名
|
||||
mv -f ${CRASHDIR}/clash ${CRASHDIR}/CrashCore 2>/dev/null
|
||||
#内核压缩
|
||||
[ -f ${CRASHDIR}/CrashCore ] && tar -zcf ${CRASHDIR}/CrashCore.tar.gz -C ${CRASHDIR} CrashCore
|
||||
mv -f "$CRASHDIR"/*.srs "$CRASHDIR"/ruleset/ 2>/dev/null
|
||||
mv -f "$CRASHDIR"/*.mrs "$CRASHDIR"/ruleset/ 2>/dev/null
|
||||
for file in dropbear_rsa_host_key authorized_keys tun.ko ShellDDNS.sh; do
|
||||
mv -f ${CRASHDIR}/$file ${CRASHDIR}/tools/$file 2>/dev/null
|
||||
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/tools/"$file" 2>/dev/null
|
||||
done
|
||||
for file in cron task.sh task.list; do
|
||||
mv -f ${CRASHDIR}/$file ${CRASHDIR}/task/$file 2>/dev/null
|
||||
for file in cron task.list; do
|
||||
mv -f "$CRASHDIR"/"$file" "$CRASHDIR"/task/"$file" 2>/dev/null
|
||||
done
|
||||
mv -f "$CRASHDIR"/menus/task_cmd.sh "$CRASHDIR"/task/task.sh 2>/dev/null
|
||||
#旧版文件清理
|
||||
userdel shellclash >/dev/null 2>&1
|
||||
sed -i '/shellclash/d' /etc/passwd
|
||||
sed -i '/shellclash/d' /etc/group
|
||||
rm -rf /etc/init.d/clash
|
||||
rm -rf ${CRASHDIR}/rules
|
||||
rm -rf "$CRASHDIR"/rules
|
||||
[ "$systype" = "mi_snapshot" -a "$CRASHDIR" != '/data/clash' ] && rm -rf /data/clash
|
||||
for file in CrashCore clash.sh getdate.sh core.new clashservice log shellcrash.service mark? mark.bak; do
|
||||
rm -rf ${CRASHDIR}/$file
|
||||
for file in webget.sh misnap_init.sh core.new configs/ShellCrash.cfg.bak; do
|
||||
rm -f "$CRASHDIR/$file"
|
||||
done
|
||||
#旧版变量改名
|
||||
sed -i "s/clashcore/crashcore/g" $configpath
|
||||
sed -i "s/clash_v/core_v/g" $configpath
|
||||
sed -i "s/clash.meta/meta/g" $configpath
|
||||
sed -i "s/ShellClash/ShellCrash/g" $configpath
|
||||
sed -i "s/cpucore=armv8/cpucore=arm64/g" $configpath
|
||||
sed -i "s/redir_mod=Nft基础/redir_mod=Redir模式/g" $configpath
|
||||
sed -i "s/redir_mod=Nft混合/redir_mod=Tproxy模式/g" $configpath
|
||||
sed -i "s/redir_mod=Tproxy混合/redir_mod=Tproxy模式/g" $configpath
|
||||
sed -i "s/redir_mod=纯净模式/firewall_area=4/g" $configpath
|
||||
sed -i "s/clashcore/crashcore/g" "$CFG_PATH"
|
||||
sed -i "s/clash_v/core_v/g" "$CFG_PATH"
|
||||
sed -i "s/clash.meta/meta/g" "$CFG_PATH"
|
||||
sed -i "s/ShellClash/ShellCrash/g" "$CFG_PATH"
|
||||
sed -i "s/cpucore=armv8/cpucore=arm64/g" "$CFG_PATH"
|
||||
sed -i "s/redir_mod=Redir模式/redir_mod=Redir/g" "$CFG_PATH"
|
||||
sed -i "s/redir_mod=Tproxy模式/redir_mod=Tproxy/g" "$CFG_PATH"
|
||||
sed -i "s/redir_mod=Tun模式/redir_mod=Tun/g" "$CFG_PATH"
|
||||
sed -i "s/redir_mod=混合模式/redir_mod=Mix/g" "$CFG_PATH"
|
||||
sed -i "s/redir_mod=纯净模式/firewall_area=4/g" "$CFG_PATH"
|
||||
#变量统一使用ON/OFF
|
||||
sed -i 's/=\(已启用\|已开启\)$/=ON/' "$CFG_PATH"
|
||||
sed -i 's/=\(未启用\|未开启\)$/=OFF/' "$CFG_PATH"
|
||||
|
||||
echo -e "\033[32m脚本初始化完成,请输入\033[30;47m $my_alias \033[0;33m命令开始使用!\033[0m"
|
||||
printf '\033[32m脚本初始化完成,请输入\033[30;47m %s \033[0;33m命令开始使用!\033[0m\n' "$my_alias"
|
||||
|
||||
10
scripts/lang/chs/1_start.lang
Normal file
10
scripts/lang/chs/1_start.lang
Normal file
@@ -0,0 +1,10 @@
|
||||
# ===== 启动完成 =====
|
||||
START_SERVICE_OK="服务已启动!"
|
||||
START_WEB_HINT="管理面板:"
|
||||
START_PAC_HINT="其他设备可使用 PAC 配置:"
|
||||
START_PROXY_HINT="或使用 HTTP / SOCKS5 方式连接:"
|
||||
|
||||
# ===== 启动流程 =====
|
||||
START_NO_CORE_CFG_TRY_GEN="没有找到核心配置文件,尝试生成 providers 配置文件!"
|
||||
START_NO_CORE_CFG_IMPORT_FIRST="没有找到核心配置文件,请先导入配置文件!"
|
||||
START_FIREWALL_DONE="已完成防火墙设置!"
|
||||
163
scripts/lang/chs/2_settings.lang
Normal file
163
scripts/lang/chs/2_settings.lang
Normal file
@@ -0,0 +1,163 @@
|
||||
# =================================================
|
||||
# Settings main menu
|
||||
# =================================================
|
||||
SET_MENU_TITLE="功能设置菜单"
|
||||
SET_MENU_REDIR="路由模式设置:"
|
||||
SET_MENU_DNS="DNS设置: "
|
||||
SET_MENU_FW_FILTER="透明路由流量过滤"
|
||||
SET_MENU_SKIP_CERT="跳过证书验证:"
|
||||
SET_MENU_SNIFFER="启用域名嗅探:"
|
||||
SET_MENU_ADV_PORT="自定义端口及密钥"
|
||||
SET_MENU_IPV6="IPv6设置: "
|
||||
SET_MENU_RESET="重置/备份/还原脚本设置"
|
||||
SET_MENU_LANG="多语言切换"
|
||||
SET_MENU_UI="UI切换"
|
||||
|
||||
# =================================================
|
||||
# Main menu messages
|
||||
# =================================================
|
||||
SET_WARN_NONROOT="非root用户可能无法正确配置其他模式,是否继续?"
|
||||
SET_SKIP_CERT_ON="已启用跳过本地证书验证!"
|
||||
SET_SKIP_CERT_OFF="已禁用跳过本地证书验证!"
|
||||
|
||||
SET_SNIFFER_CORE_SWITCH="已自动切换至Meta内核(域名嗅探需要)"
|
||||
SET_SNIFFER_LOCKED="当前内核与DNS模式组合下,域名嗅探无法关闭!"
|
||||
|
||||
SET_CORE_RUNNING="检测到服务正在运行,需要先停止服务!"
|
||||
SET_CORE_STOP_CONFIRM="是否确认停止服务?"
|
||||
|
||||
# =================================================
|
||||
# Backup / Restore / Reset
|
||||
# =================================================
|
||||
SET_BACKUP="备份脚本设置"
|
||||
SET_RESTORE="还原脚本设置"
|
||||
SET_RESET="重置脚本设置"
|
||||
|
||||
SET_BACKUP_OK="备份脚本设置成功!"
|
||||
SET_BACKUP_FAIL="备份脚本设置失败!"
|
||||
SET_RESTORE_OK="脚本设置已还原!(被覆盖配置已备份)"
|
||||
SET_RESET_OK="重置脚本设置成功!(旧配置已备份)"
|
||||
SET_RESET_FAIL="重置脚本设置失败!"
|
||||
SET_BACKUP_MISS="未找到备份文件,请先备份!"
|
||||
SET_NEED_RESTART="请重新启动脚本以生效!"
|
||||
|
||||
# =================================================
|
||||
# Redir mode
|
||||
# =================================================
|
||||
SET_REDIR_DEFAULT="Redir模式"
|
||||
SET_REDIR_CURRENT="当前路由模式为:"
|
||||
SET_CORE_CURRENT="ShellCrash 核心为:"
|
||||
SET_REDIR_RESTART_HINT="注意:切换模式后需要手动重启服务以生效!"
|
||||
|
||||
SET_REDIR_APPLIED="已设为"
|
||||
|
||||
SET_REDIR_REDIR="Redir模式"
|
||||
SET_REDIR_MIX="Mix模式"
|
||||
SET_REDIR_TPROXY="Tproxy模式"
|
||||
SET_REDIR_TUN="Tun模式"
|
||||
|
||||
SET_REDIR_REDIRDES="Redir转发TCP,不转发UDP"
|
||||
SET_REDIR_MIXDES="Redir转发TCP,Tun转发UDP"
|
||||
SET_REDIR_TPROXYDES="Tproxy转发TCP&UDP"
|
||||
SET_REDIR_TUNDES="Tun转发TCP&UDP(占用高不推荐)"
|
||||
|
||||
SET_NO_MOD="设备未检测到内核模块:"
|
||||
SET_NO_MOD2="请尝试其他模式或者安装相关依赖!"
|
||||
XIAOMI_QOS="小米设备的 QoS 服务与当前模式冲突,是否禁用相关功能?"
|
||||
|
||||
# =================================================
|
||||
# Firewall / VM
|
||||
# =================================================
|
||||
SET_FW_AREA="设置路由劫持范围"
|
||||
SET_VM_REDIR="容器/虚拟机劫持"
|
||||
SET_FW_SWITCH="切换防火墙应用"
|
||||
|
||||
SET_FW_AREA_DESC="仅局域网|仅本机|局域网+本机|纯净模式|旁路转发"
|
||||
|
||||
FW_AREA_NOTE_1="如你使用了第三方DNS如smartdns等,"
|
||||
FW_AREA_NOTE_2="请勿启用本机劫持或使用shellcrash用户执行!"
|
||||
FW_AREA_LAN="仅劫持局域网流量"
|
||||
FW_AREA_LOCAL="仅劫持本机流量"
|
||||
FW_AREA_BOTH="劫持局域网 + 本机流量"
|
||||
FW_AREA_NONE="不配置流量劫持(纯净模式)"
|
||||
FW_NO_NFTABLES="当前设备未安装 nftables,或 nftables 版本过低(< 1.0.2),无法切换!"
|
||||
FW_NO_IPTABLES="当前设备未安装 iptables,无法切换!"
|
||||
FW_NO_FIREWALL_BACKEND="检测不到可用的防火墙应用(iptables / nftables),无法切换!"
|
||||
|
||||
VM_DETECT_DESC="默认的容器/虚拟机网段为:"
|
||||
VM_ENABLE_AUTO="启用劫持并使用自动检测的网段"
|
||||
VM_ENABLE_MANUAL="启用劫持并手动指定网段"
|
||||
VM_DISABLE="禁用劫持"
|
||||
VM_INPUT_INFO="多个网段请用空格连接,可使用【ip route】命令查看,例如:"
|
||||
VM_INPUT_NET="请输入自定义网段"
|
||||
VM_NO_NET_DETECTED="未检测到容器或虚拟机网段,请先运行容器后再运行脚本,或选择手动设置网段!"
|
||||
VM_INPUT_DESC_1="多个网段请使用空格分隔,可通过【ip route】命令查看"
|
||||
VM_INPUT_DESC_2="例如:"
|
||||
|
||||
#inputport
|
||||
INPUT_PORT="请输入端口号"
|
||||
# =================================================
|
||||
# Advanced config
|
||||
# =================================================
|
||||
ADV_HTTP_PORT="修改HTTP/SOCKS5端口"
|
||||
ADV_HTTP_AUTH="设置HTTP/SOCKS5认证"
|
||||
ADV_REDIR_PORT="修改Redir/Tproxy端口"
|
||||
ADV_DNS_PORT="修改DNS监听端口"
|
||||
ADV_PANEL_PORT="修改面板访问端口"
|
||||
ADV_PANEL_PASS="设置面板访问密码"
|
||||
ADV_PANEL_PASS_INPUT="请输入面板访问密码(输入0删除)"
|
||||
ADV_HOST="自定义本机 Host 地址"
|
||||
ADV_TABLE="自定义路由表"
|
||||
# Advanced auth
|
||||
ADV_AUTH_FORMAT_DESC="格式必须为 \033[32m用户名:密码\033[0m,请使用英文冒号分隔!"
|
||||
ADV_AUTH_WARN="请尽量不要使用特殊符号,以避免产生未知错误!"
|
||||
ADV_AUTH_REMOVE_HINT="输入 0 可删除认证信息"
|
||||
ADV_AUTH_INPUT="请输入 HTTP / SOCKS5 用户名及密码"
|
||||
ADV_AUTH_REMOVED="认证信息已移除!"
|
||||
ADV_AUTH_ENV_CONFLICT="请先禁用本机劫持功能或使用增强模式!"
|
||||
ADV_AUTH_INVALID="输入格式错误,请重新输入!"
|
||||
# Host
|
||||
ADV_HOST_WARN_LAN="如果你的局域网网段不是 192.168.x / 172.16.x / 10.x,请务必修改!"
|
||||
ADV_HOST_WARN_CHANGE="设置后如本机 Host 地址发生变化,请务必重新修改!"
|
||||
ADV_HOST_INPUT="请输入自定义 Host 地址(输入 0 移除)"
|
||||
ADV_HOST_REMOVED="自定义 Host 地址已移除,请重新运行脚本以自动获取!"
|
||||
ADV_HOST_INVALID="输入错误,请仔细核对!"
|
||||
# Routing table
|
||||
ADV_TABLE_WARN="仅当 Tproxy/Tun/混合模式 下路由表发生冲突时才需要设置!"
|
||||
ADV_TABLE_INPUT="请输入路由表编号(不清楚请勿修改,建议 102-125)"
|
||||
|
||||
# =================================================
|
||||
# IPv6
|
||||
# =================================================
|
||||
IPV6_REDIR="IPv6透明路由(劫持IPv6流量)"
|
||||
IPV6_DNS="IPv6-DNS解析(是否返回IPv6地址)"
|
||||
SET_YES="是"
|
||||
SET_NO_BACK="否,返回上级菜单"
|
||||
SET_SKIP_CERT_NOW="当前"
|
||||
SET_ENABLED="已启用"
|
||||
SET_DISABLED="已禁用"
|
||||
SET_SKIP_CERT_ENABLE_Q="跳过本地证书验证,是否确认启用?"
|
||||
SET_SKIP_CERT_DISABLE_Q="跳过本地证书验证,是否确认禁用?"
|
||||
SET_SNIFFER_NOW="当前"
|
||||
SET_SNIFFER_ENABLE_Q="域名嗅探,是否确认启用?"
|
||||
SET_SNIFFER_DISABLE_Q="域名嗅探,是否确认禁用?"
|
||||
SET_LANG_ZH="简体中文"
|
||||
SET_LANG_EN="English"
|
||||
SET_SWITCH_RERUN="切换成功!请重新运行脚本!"
|
||||
SET_SWITCH_OK="切换成功!"
|
||||
SET_MODE_SUFFIX="模式"
|
||||
SET_SET_TO="设为"
|
||||
SET_BYPASS_TCP="TCP旁路转发"
|
||||
SET_BYPASS_TU="T&U旁路转发"
|
||||
SET_BYPASS_TCP_DESC="仅转发TCP流量至旁路由"
|
||||
SET_BYPASS_TU_DESC="转发TCP&UDP流量至旁路由"
|
||||
SET_FW_AREA_CURRENT="当前路由劫持范围:"
|
||||
SET_WARN="注意:"
|
||||
SET_DESC="说明:"
|
||||
SET_BYPASS_WARN_1="此功能存在多种风险如无网络基础请勿尝试!"
|
||||
SET_BYPASS_WARN_2="如需代理UDP,请确保旁路由运行了支持UDP代理的模式!"
|
||||
SET_BYPASS_WARN_3="如使用systemd方式启动,内核依然会空载运行,建议使用保守模式!"
|
||||
SET_BYPASS_DESC_1="此功能不启动内核仅配置防火墙转发,且子设备无需额外设置网关DNS"
|
||||
SET_BYPASS_DESC_2="支持防火墙分流及设备过滤,支持部分定时任务,但不支持ipv6"
|
||||
SET_INPUT_BYPASS_IPV4="请直接输入旁路由IPV4地址"
|
||||
SET_TIPS_ENTER_BACK="Tips:直接回车确认可返回上级菜单"
|
||||
100
scripts/lang/chs/5_task.lang
Normal file
100
scripts/lang/chs/5_task.lang
Normal file
@@ -0,0 +1,100 @@
|
||||
# 推荐任务配置
|
||||
TASK_RECOM_TITLE="是否启用以下推荐的自动任务配置:"
|
||||
|
||||
TASK_RECOM_ITEM_1="运行时每10分钟自动保存面板配置"
|
||||
TASK_RECOM_ITEM_2="服务启动后自动同步 NTP 时间"
|
||||
TASK_RECOM_ITEM_3="在每日的3点0分重启服务"
|
||||
TASK5_RUN_TASK="执行任务:"
|
||||
TASK5_CONFIRM_ADD_CRON="是否确认添加定时任务?"
|
||||
TASK5_YES="是"
|
||||
TASK5_NO="否"
|
||||
TASK5_TASK_PREFIX="任务【"
|
||||
TASK5_TASK_ADDED="】\033[32m已添加!\033[0m"
|
||||
TASK5_USER_ADD_HINT1="命令可包含空格,请确保命令可执行!"
|
||||
TASK5_USER_ADD_HINT2="请勿附带执行条件,执行条件请在命令添加完成后再返回设置!"
|
||||
TASK5_USER_ADD_HINT3="亦可手动编辑"
|
||||
TASK5_USER_ADD_HINT4="以添加命令"
|
||||
TASK5_INPUT_CMD="请直接输入命令语句"
|
||||
TASK5_OR_BACK="或输入 0 返回上级菜单"
|
||||
TASK5_INPUT="请输入"
|
||||
TASK5_CHECK_INPUT="请检查输入:"
|
||||
TASK5_INPUT_REMARK="请输入任务备注"
|
||||
TASK5_CUSTOM_TASK="自定义任务"
|
||||
TASK5_CUSTOM_ADDED="自定义任务已添加!"
|
||||
TASK5_INPUT_ERROR="输入错误,请重新输入!"
|
||||
TASK5_USER_DEL_HINT1="请输入对应ID移除对应自定义任务(不会影响内置任务)"
|
||||
TASK5_USER_DEL_HINT2="也可以手动编辑"
|
||||
TASK5_NO_CUSTOM_TASK="你暂未添加任何自定义任务"
|
||||
TASK5_SELECT_ADD="请选择需要添加的任务:"
|
||||
TASK5_SELECT_COND="请选择任务"
|
||||
TASK5_SELECT_COND2="执行条件:"
|
||||
TASK5_COND_1="定时任务\033[32m每周执行\033[0m"
|
||||
TASK5_COND_2="定时任务\033[32m每日执行\033[0m"
|
||||
TASK5_COND_3="定时任务\033[32m每小时执行\033[0m"
|
||||
TASK5_COND_4="定时任务\033[32m每分钟执行\033[0m"
|
||||
TASK5_WARN_LINE1=" - - - - - - - - -\033[31m注意\033[0m- - - - - - - - -"
|
||||
TASK5_WARN_LINE2=" 逻辑水平不及格的请勿使用下方触发条件!"
|
||||
TASK5_WARN_LINE3=" - - - - - - - - - - - - - - - - - - - -"
|
||||
TASK5_COND_5="服务\033[33m启动前执行\033[0m"
|
||||
TASK5_COND_6="服务\033[33m启动后执行\033[0m"
|
||||
TASK5_COND_7="服务\033[33m运行时每分钟执行\033[0m"
|
||||
TASK5_COND_8="防火墙服务\033[33m重启后执行\033[0m"
|
||||
TASK5_WEEK_HINT1="输入 1~7 对应\033[33m每周的指定某天\033[0m运行(7=周日)"
|
||||
TASK5_WEEK_HINT2="输入 1,4,0 代表\033[36m每周一、周四、周日\033[0m运行"
|
||||
TASK5_WEEK_HINT3="输入 1~5 代表\033[36m周一至周五\033[0m运行"
|
||||
TASK5_WEEK_INPUT="在每周哪天执行?"
|
||||
TASK5_HOUR_INPUT1="想在该日的具体哪个小时执行?(0~23)"
|
||||
TASK5_CRON_WEEK="在每周"
|
||||
TASK5_CRON_WEEK2="的"
|
||||
TASK5_OCLOCK="点整"
|
||||
TASK5_DAY_HINT1="输入 1,7,15 代表\033[36m每到1,7,15点\033[0m运行"
|
||||
TASK5_DAY_HINT2="输入 6~18 代表\033[36m早6点至晚18点间每小时\033[0m运行"
|
||||
TASK5_HOUR_INPUT2="想在每日的具体哪个小时执行?(0~23)"
|
||||
TASK5_MIN_INPUT="想在具体哪分钟执行?(0~59的整数)"
|
||||
TASK5_CRON_DAY="在每日的"
|
||||
TASK5_POINT="点"
|
||||
TASK5_MINUTE="分"
|
||||
TASK5_EVERY_HOUR_INPUT="想每隔多少小时执行一次?(1~23的整数)"
|
||||
TASK5_EVERY="每隔"
|
||||
TASK5_HOUR="小时"
|
||||
TASK5_EVERY_MIN_INPUT="想每隔多少分钟执行一次?(1~59的整数)"
|
||||
TASK5_MIN="分钟"
|
||||
TASK5_BFSTART="服务启动前"
|
||||
TASK5_AFSTART="服务启动后"
|
||||
TASK5_RUNNING_HINT1="输入10即每隔10分钟运行一次,1440即每隔24小时运行一次"
|
||||
TASK5_RUNNING_HINT2="大于60分钟的数值将按小时取整,且按当前时区记时"
|
||||
TASK5_RUNNING_INPUT="想每隔多少分钟执行一次?(1~1440的整数)"
|
||||
TASK5_RUNNING_PREFIX="运行时每"
|
||||
TASK5_AFFW_HINT="该功能会将相关启动代码注入到/etc/init.d/firewall中"
|
||||
TASK5_CONFIRM_CONTINUE="是否确认继续?"
|
||||
TASK5_AFFW_PREFIX="防火墙重启后"
|
||||
TASK5_GUARD_WORD="守护"
|
||||
TASK5_OLD_PREFIX="旧版任务-"
|
||||
TASK5_NONE_TO_MANAGE="当前没有可供管理的任务!"
|
||||
TASK5_ADDED_TASKS="已添加的任务:"
|
||||
TASK5_CLEAR_OLD="清空旧版任务"
|
||||
TASK5_CLEAR_ALL="清空任务列表"
|
||||
TASK5_OLD_CLEARED="旧版任务已清空!"
|
||||
TASK5_ALL_CLEARED="全部任务已清空!"
|
||||
TASK5_OLD_NOT_SUPPORT="旧版任务不支持管理,是否移除?"
|
||||
TASK5_NO_BACK="否,返回上级菜单"
|
||||
TASK5_CURRENT_TASK="当前任务为:"
|
||||
TASK5_EDIT_TASK="\033[33m修改\033[0m当前任务"
|
||||
TASK5_DEL_TASK="\033[31m删除\033[0m当前任务"
|
||||
TASK5_RUN_ONCE="\033[32m立即执行\033[0m一次"
|
||||
TASK5_VIEW_RECORD="查看\033[33m执行记录\033[0m"
|
||||
TASK5_RUN_OK="执行成功!"
|
||||
TASK5_RUN_FAIL="执行失败!"
|
||||
TASK5_RECORD_NOT_FOUND="未找到相关执行记录!"
|
||||
TASK5_USER_FILE_HEADER="#任务ID(必须>200并顺序排列)#任务命令#任务说明(#号隔开,任务命令和说明中都不允许包含#号)"
|
||||
TASK5_MENU_TITLE="自动任务菜单"
|
||||
TASK5_MENU_1="添加\033[32m自动任务\033[0m"
|
||||
TASK5_MENU_2="管理\033[33m任务列表\033[0m"
|
||||
TASK5_MENU_3="查看\033[36m任务日志\033[0m"
|
||||
TASK5_MENU_4="配置\033[36m日志推送\033[0m"
|
||||
TASK5_MENU_5="添加\033[33m自定义任务\033[0m"
|
||||
TASK5_MENU_6="删除\033[33m自定义任务\033[0m"
|
||||
TASK5_MENU_7="使用\033[32m推荐设置\033[0m"
|
||||
TASK5_TASK_GREP="任务【"
|
||||
TASK5_LOG_NOT_FOUND="未找到任务相关执行日志!"
|
||||
TASK5_PUSH_HINT="请在日志工具中配置相关推送通道及推送开关"
|
||||
67
scripts/lang/chs/6_core_config.lang
Normal file
67
scripts/lang/chs/6_core_config.lang
Normal file
@@ -0,0 +1,67 @@
|
||||
CORECFG_TITLE="配置文件管理"
|
||||
CORECFG_HINT_SELECT_PROVIDER="输入数字可管理对应提供者"
|
||||
CORECFG_MENU_A="\033[32m添加提供者\033[0m(支持订阅/分享链接及本地文件)"
|
||||
CORECFG_MENU_B="\033[36m本地生成配置文件\033[0m"
|
||||
CORECFG_MENU_C="\033[33m在线生成配置文件\033[0m"
|
||||
CORECFG_MENU_D="\033[31m清空提供者列表\033[0m"
|
||||
CORECFG_MENU_E="\033[36m自定义配置文件\033[0m"
|
||||
CORECFG_CORE_ONLY="仅限Mihomo/singboxr内核使用,请更换内核!"
|
||||
CORECFG_ADD_PROVIDER_FIRST="请先添加提供者!"
|
||||
CORECFG_CLEAR_WARN="警告:这将删除所有提供者且无法还原!"
|
||||
CORECFG_CLEAR_CONFIRM="是否确认清空提供者列表:"
|
||||
CORECFG_YES="是"
|
||||
CORECFG_NO="否"
|
||||
CORECFG_NO_BACK="否,返回上级菜单"
|
||||
CORECFG_INPUT_ALNUM="请输入对应字母或数字"
|
||||
CORECFG_INPUT="请输入"
|
||||
CORECFG_FILL_REQUIRED="请先完成必填选项!"
|
||||
CORECFG_START_APPLY="是否启动服务以使配置文件生效:"
|
||||
CORECFG_PROVIDER_SUPPORT="支持添加订阅链接/分享链接/本地文件作为提供者"
|
||||
CORECFG_SET_NAME="设置\033[36m名称或代号\033[0m\t"
|
||||
CORECFG_SET_LINK="设置\033[32m链接或路径\033[0m:\t"
|
||||
CORECFG_SET_OVERRIDE="设置\033[33m本地生成覆写\033[0m"
|
||||
CORECFG_SAVE_PROVIDER="\033[36m保存此提供者\033[0m"
|
||||
CORECFG_DEL_PROVIDER="\033[31m删除此提供者\033[0m"
|
||||
CORECFG_MORE_CONFIG_HINT="以下方式的详细配置请前往对应功能页面进行设置!"
|
||||
CORECFG_GEN_LOCAL_ONE="\033[32m本地生成\033[0m仅包含此提供者的配置文件"
|
||||
CORECFG_GEN_ONLINE_ONE="\033[33m在线生成\033[0m仅包含此提供者的配置文件"
|
||||
CORECFG_GET_ONLINE_DIRECT="在线获取此配置文件(不使用订阅转换)"
|
||||
CORECFG_USE_DIRECT="直接使用此文件作为配置文件(不使用本地生成)"
|
||||
CORECFG_NAME_HINT="注意:\n名称或代号不可重复,不支持纯数字,且不要超过4个汉字!"
|
||||
CORECFG_INPUT_NAME="请直接输入具体名称或代号"
|
||||
CORECFG_OR_BACK="或输入 0 返回上级菜单"
|
||||
CORECFG_LINK_HINT1="\033[33m订阅链接\033[0m:\nhttps/http开头的clash配置文件订阅链接"
|
||||
CORECFG_LINK_HINT2="\033[36m分享链接\033[0m:"
|
||||
CORECFG_LINK_HINT3="\033[33m本地文件\033[0m:\n必须放在"
|
||||
CORECFG_LINK_HINT4="目录下"
|
||||
CORECFG_LINK_HINT5="\033[36mBase64 \033[0m:\n请直接写入本地文件"
|
||||
CORECFG_INPUT0_BACK="输入 0 返回上级菜单"
|
||||
CORECFG_SELECT_FILE_OR_LINK="请选择对应文件或输入具体链接"
|
||||
CORECFG_INPUT_LINK="请直接输入具体链接"
|
||||
CORECFG_DANGER1="注意:\n此功能不兼容“跳过证书验证”功能"
|
||||
CORECFG_DANGER2="请确认你完全理解自己在做什么"
|
||||
CORECFG_DANGER_CONFIRM="我确认遇到问题可以自行解决"
|
||||
CORECFG_INTERVAL1="设置\033[33m健康检查间隔\033[0m:\t"
|
||||
CORECFG_INTERVAL2="设置\033[36m自动更新间隔\033[0m:\t"
|
||||
CORECFG_MIN="分钟"
|
||||
CORECFG_HOUR="小时"
|
||||
CORECFG_SET_UA="设置\033[33m虚拟浏览器UA\033[0m:\t"
|
||||
CORECFG_SET_EXCLUDE="设置\033[31m排除节点正则\033[0m:\t"
|
||||
CORECFG_SET_INCLUDE="设置\033[32m包含节点正则\033[0m:\t"
|
||||
CORECFG_CUR_INTERVAL="当前健康检查间隔:"
|
||||
CORECFG_INPUT_INTERVAL1="请直接健康检查间隔(单位:分钟)"
|
||||
CORECFG_RESET_INTERVAL1="或输入 r 重置健康检查间隔为默认值(3 分钟)"
|
||||
CORECFG_INPUT_INTERVAL2="请直接输入自动更新间隔(单位:小时)"
|
||||
CORECFG_RESET_INTERVAL2="或输入 r 重置自动更新间隔为默认值(12 小时)"
|
||||
CORECFG_CUR_UA_NONE="当前浏览器UA:无"
|
||||
CORECFG_CUR_UA="当前浏览器UA:"
|
||||
CORECFG_INPUT_UA="请直接输入浏览器UA"
|
||||
CORECFG_RESET_UA="或输入 r 重置浏览器UA为默认值(clash.meta)"
|
||||
CORECFG_CUR_EXCLUDE_NONE="当前排除规则:无"
|
||||
CORECFG_CUR_EXCLUDE="当前排除规则:"
|
||||
CORECFG_INPUT_EXCLUDE="请直接输入需要排除的节点关键字(支持正则,不支持空格)"
|
||||
CORECFG_CLEAR_EXCLUDE="或输入 c 清空排除规则"
|
||||
CORECFG_CUR_INCLUDE_NONE="当前包含规则:无"
|
||||
CORECFG_CUR_INCLUDE="当前包含规则:"
|
||||
CORECFG_INPUT_INCLUDE="请直接输入需要包含的节点关键字(支持正则,不支持空格)"
|
||||
CORECFG_CLEAR_INCLUDE="或输入 c 清空包含规则"
|
||||
97
scripts/lang/chs/7_gateway.lang
Normal file
97
scripts/lang/chs/7_gateway.lang
Normal file
@@ -0,0 +1,97 @@
|
||||
GW_TITLE="访问与控制菜单"
|
||||
GW_WARN="注意:"
|
||||
GW_FW_VPS_HINT="如在vps运行,还需在vps安全策略对相关端口同时放行"
|
||||
GW_FW_PORT_LIMIT="最多支持设置放行10个端口,请先减少一些!"
|
||||
GW_INPUT_ALLOW_PORT="请输入要放行的端口号"
|
||||
GW_OK="操作成功"
|
||||
GW_CORE_UNSUPPORTED="内核暂不支持此功能,请先更换内核!"
|
||||
GW_TG_DONE_PREFIX="已完成Telegram机器人设置!请使用"
|
||||
GW_TG_DONE_SUFFIX="呼出功能菜单!"
|
||||
GW_SET="已设置"
|
||||
GW_BOUND="已绑定"
|
||||
GW_INPUT_PORT_DEL0="请输入端口号(输入0删除)"
|
||||
GW_INPUT_WSPATH="请输入ws-path路径(输入0删除)"
|
||||
GW_INPUT_UUID="请输入UUID(输入0删除)"
|
||||
GW_INPUT_HOST="请输入本机公网IP(4/6)或域名"
|
||||
GW_SHARE_LINK_HINT="你的分享链接是(请勿随意分享给他人):"
|
||||
GW_MENU_FW_WAN="?????????"
|
||||
GW_MENU_TG_BOT="??Telegram???????"
|
||||
GW_MENU_DDNS="??DDNS????"
|
||||
GW_MENU_VMESS="?????Vmess????"
|
||||
GW_MENU_SHADOWSOCKS="?????ShadowSocks????"
|
||||
GW_MENU_TS="??Tailscale????(?Singbox)"
|
||||
GW_MENU_WG="??Wireguard???(?Singbox)"
|
||||
GW_FW_STOP_WARN="??????????????"
|
||||
GW_CONFIRM_CONTINUE="???????"
|
||||
GW_YES="?"
|
||||
GW_NO="?"
|
||||
GW_NO_BACK="?,??????"
|
||||
GW_FW_MANUAL_PORTS="????????:"
|
||||
GW_FW_AUTO_PORTS="????????:"
|
||||
GW_FW_DEFAULT_BLOCK="??????:"
|
||||
GW_FW_TOGGLE="??/???????:"
|
||||
GW_FW_ADD_PORT="??????(?????????)"
|
||||
GW_FW_REMOVE_PORT="??????????"
|
||||
GW_FW_CLEAR_PORTS="??????????"
|
||||
GW_FW_DISABLE_CONFIRM="??????????"
|
||||
GW_FW_DISABLE_RISK="???????????!"
|
||||
GW_ERR_DUP_PORT="????!??????!"
|
||||
GW_ERR_PORT_RANGE="????!????????(1-65535)!"
|
||||
GW_ERR_INPUT="????!"
|
||||
GW_INPUT_REMOVE_PORT="????????????"
|
||||
GW_INPUT_0_BACK="??? 0 ??????"
|
||||
GW_ERR_PORT_NOT_FOUND="??????????!"
|
||||
GW_TG_CMD_MENU="??ShellCrash??"
|
||||
GW_TG_CMD_HELP="????"
|
||||
GW_TG_WARN="????????,?????????????!"
|
||||
GW_TG_TOGGLE="??/??TG-BOT??"
|
||||
GW_TG_BIND="TG-BOT????"
|
||||
GW_TG_MENUPUSH="???????"
|
||||
GW_TG_BIND_FIRST="????TG-BOT!"
|
||||
GW_TG_BOUND_DETECTED="????????TG??BOT"
|
||||
GW_TG_USE_DIRECT="???????"
|
||||
GW_INBOUND_WARN_PORT="?????????????????????!"
|
||||
GW_INBOUND_WARN_BASIC="?????????,???????????????!"
|
||||
GW_INBOUND_WARN_ILLEGAL="????????????,??????!"
|
||||
GW_VMS_TOGGLE="??/??Vmess??"
|
||||
GW_SET_LISTEN_PORT="??????:"
|
||||
GW_SET_WSPATH="??WS-path(??):"
|
||||
GW_SET_UUID="????-uuid:"
|
||||
GW_GEN_RANDOM_KEY="????????"
|
||||
GW_SET_OBFS_HOST="????host(??):"
|
||||
GW_GEN_SHARE_LINK="????????"
|
||||
GW_FILL_REQUIRED="????????!"
|
||||
GW_ERR_WSPATH="?????path??,????/???!"
|
||||
GW_ERR_UUID="?????UUID??,??????????????!"
|
||||
GW_INPUT_OBFS_HOST="???????host(??0??)"
|
||||
GW_SS_TOGGLE="??/??ShadowSocks??"
|
||||
GW_SS_SELECT_CIPHER="???????????:"
|
||||
GW_SS_SET_PWD="??password:"
|
||||
GW_SS_2022_NOTE_HEADER=" - - - - - - -\033[31m??\033[0m- - - - - - -"
|
||||
GW_SS_2022_REQUIRE=" 2022?????????????password!"
|
||||
GW_SS_2022_PASSWORD_ONLY="2022???????????????password!"
|
||||
GW_TS_WARN="????????????????Tailscale??\n??????????????????????!"
|
||||
GW_TS_KEY_URL="????:\033[32;4mhttps://login.tailscale.com/admin/settings/keys\033[0m"
|
||||
GW_TS_ALLOW_URL="????????????:\033[32;4mhttps://login.tailscale.com\033[0m"
|
||||
GW_TS_SUBNET_EXIT_HINT="???????????????Subnet?EXIT-NODE??"
|
||||
GW_TS_TOGGLE="??/??Tailscale??"
|
||||
GW_TS_SET_AUTHKEY="????(Auth Key)"
|
||||
GW_TS_SUBNET="????????(Subnet)"
|
||||
GW_TS_EXIT_NODE="????????(EXIT-NODE)"
|
||||
GW_TS_HOSTNAME="??????(??)"
|
||||
GW_TS_SET_KEY_FIRST="??????!"
|
||||
GW_TS_INPUT_KEY="?????(??0??)"
|
||||
GW_TS_EXITNODE_WARN="??exitnode???DNS?bug,???????????TailscaleDNS,\n?????????Globalname servers?????????IP???override"
|
||||
GW_TS_INPUT_NAME="????????Tailscale???????"
|
||||
GW_WG_WARN="????????????????WireGuard??\n??????????????????????!"
|
||||
GW_WG_TOGGLE="??/??Wireguard??"
|
||||
GW_WG_SET_ENDPOINT="??Endpoint??:"
|
||||
GW_WG_SET_ENDPOINT_PORT="??Endpoint??:"
|
||||
GW_WG_SET_PUBLIC="????-PublicKey:"
|
||||
GW_WG_SET_PRESHARED="????-PresharedKey:"
|
||||
GW_WG_SET_PRIVATE="????-PrivateKey:"
|
||||
GW_WG_SET_IPV4="????IPV4??:"
|
||||
GW_WG_SET_IPV6="?? ??IPV6??:"
|
||||
GW_INPUT_TEXT_DEL0="???????(???0??)"
|
||||
GW_INPUT_PLAIN="???"
|
||||
GW_INPUT_PWD_DEL0="?????(??0??)"
|
||||
11
scripts/lang/chs/8_tools.lang
Normal file
11
scripts/lang/chs/8_tools.lang
Normal file
@@ -0,0 +1,11 @@
|
||||
TOOLS_TITLE="工具与优化"
|
||||
TOOLS_SSH_DISABLE="禁止"
|
||||
TOOLS_SSH_ENABLE="开启"
|
||||
TOOLS_ERR_PORT="输入错误!请输入正确的数值(1000-65535)!"
|
||||
TOOLS_ERR_PORT_OCCUPIED="当前端口已被其他进程占用,请重新输入!"
|
||||
TOOLS_SSH_SET_OK="设置成功,请重新开启外网访问SSH功能!"
|
||||
TOOLS_SSH_ENABLED="已开启外网访问SSH功能!"
|
||||
TOOLS_SSH_DISABLED="已禁止外网访问SSH!"
|
||||
TOOLS_DISABLE="禁用"
|
||||
TOOLS_ENABLE="启用"
|
||||
TOOLS_CONFIGURED="已配置"
|
||||
49
scripts/lang/chs/9_upgrade.lang
Normal file
49
scripts/lang/chs/9_upgrade.lang
Normal file
@@ -0,0 +1,49 @@
|
||||
UPG_ERR_TRY_OTHER_SOURCE="请尝试切换至其他安装源后重新下载!"
|
||||
UPG_ERR_LOCAL_INSTALL="或者参考 \033[32;4mhttps://juewuy.github.io/bdaz\033[0m 进行本地安装!"
|
||||
UPG_TITLE="更新与支持"
|
||||
UPG_CUR_DIR_SPACE="当前目录"
|
||||
UPG_LOW_SPACE_HINT="当前目录剩余空间较低,建议开启小闪存模式!"
|
||||
UPG_MENU_SCRIPT="更新"
|
||||
UPG_MENU_SCRIPT_NAME="管理脚本"
|
||||
UPG_MENU_CORE="切换/更新"
|
||||
UPG_MENU_CORE_NAME="内核文件"
|
||||
UPG_MENU_GEO="安装/更新本地"
|
||||
UPG_MENU_GEO_NAME="数据库文件"
|
||||
UPG_MENU_DB="安装/更新本地"
|
||||
UPG_MENU_DB_NAME="Dashboard面板"
|
||||
UPG_MENU_CRT="安装/更新本地"
|
||||
UPG_MENU_CRT_NAME="根证书文件"
|
||||
UPG_MENU_PAC="自动代理查看"
|
||||
UPG_MENU_SOURCE="切换"
|
||||
UPG_MENU_SOURCE_NAME="安装源及版本分支"
|
||||
UPG_MENU_UNINSTALL="卸载ShellCrash"
|
||||
UPG_MENU_THANKS="感谢列表!"
|
||||
UPG_PAC_LINK="PAC配置链接为:"
|
||||
UPG_PAC_GUIDE="PAC的使用教程请参考:"
|
||||
UPG_THANKS_TITLE="感谢以下项目及其开发者们的无私奉献!"
|
||||
UPG_THANKS_SPECIAL="特别感谢:\033[36m所有帮助及赞助过此项目的同仁们!\033[0m"
|
||||
UPG_CHECKING="正在检查更新......"
|
||||
UPG_CHECK_OK="检查更新成功"
|
||||
UPG_CHECK_FAIL="检查更新失败!请尝试切换其他安装源!"
|
||||
UPG_DOWNLOAD_FAIL="文件下载失败!"
|
||||
UPG_EXTRACTING="开始解压文件......"
|
||||
UPG_EXTRACT_FAIL="文件解压失败!"
|
||||
UPG_SCRIPT_OK="脚本更新成功!"
|
||||
UPG_SCRIPT_WARN="注意:更新时会停止服务!"
|
||||
UPG_SCRIPT_CUR_VER="当前脚本版本为:"
|
||||
UPG_SCRIPT_NEW_VER="最新脚本版本为:"
|
||||
UPG_UPDATE_NOW="立即更新"
|
||||
UPG_SCRIPT_MGR_OK="管理脚本更新成功!"
|
||||
UPG_CPUCORE_HINT1="仅适合脚本无法正确识别核心或核心无法正常运行时使用!"
|
||||
UPG_CPUCORE_HINT2="不知道如何获取核心版本?"
|
||||
UPG_CPUCORE_HINT3="请参考:"
|
||||
UPG_CPUCORE_LIST="当前可供在线下载的处理器架构为:"
|
||||
UPG_CPUCORE_ERR="请输入正确的处理器架构!"
|
||||
UPG_CORETYPE_CONFIRM="请确认该自定义内核的类型:"
|
||||
UPG_CORE_SWITCH_PREFIX="已从"
|
||||
UPG_CORE_SWITCH_MID="内核切换至"
|
||||
UPG_CORE_SWITCH_SUFFIX="内核"
|
||||
UPG_CORE_SWITCH_WARN="二者Geo数据库及yaml/json配置文件不通用"
|
||||
UPG_CORE_SWITCH_KEEP="是否保留相关数据库文件?"
|
||||
UPG_KEEP="保留"
|
||||
UPG_NOT_KEEP="不保留"
|
||||
68
scripts/lang/chs/bot_tg.lang
Normal file
68
scripts/lang/chs/bot_tg.lang
Normal file
@@ -0,0 +1,68 @@
|
||||
BOT_TG_PRIVATE_HINT="请先通过 \033[32;4mhttps://t.me/BotFather\033[0m 申请TG机器人并获取其\033[36mAPI TOKEN\033[0m"
|
||||
BOT_TG_INPUT_TOKEN="请输入你获取到的API TOKEN"
|
||||
BOT_TG_PRIVATE_TOP="请向\033[32m你申请的机器人\033[33m而不是BotFather!\033[0m"
|
||||
BOT_TG_PUBLIC_HINT="请向机器人:\033[32;4mhttps://t.me/ShellCrashtg_bot\033[0m"
|
||||
BOT_TG_SET_DONE="已完成Telegram日志推送设置!"
|
||||
BOT_TG_CHATID_RETRY_PREFIX="第"
|
||||
BOT_TG_CHATID_RETRY_SUFFIX="次尝试获取对话ID失败,正在重试..."
|
||||
BOT_TG_SEND_KEY="发送此秘钥:"
|
||||
BOT_TG_SENT_CONFIRM="我已经发送完成"
|
||||
BOT_TG_CHATID_FAIL="无法获取对话ID,请返回重新设置或手动输入ChatID!"
|
||||
BOT_TG_CHATID_MANUAL_HINT="通常访问"
|
||||
BOT_TG_CHATID_MANUAL_HINT2="即可看到ChatID"
|
||||
BOT_TG_INPUT_CHATID="请手动输入ChatID"
|
||||
BOT_TG_CHATID_RECONFIG="无法获取对话ID,请重新配置!"
|
||||
BOT_TG_CRON_NAME="TG_BOT守护进程"
|
||||
|
||||
BOT_TG_HELP_GROUP="进群讨论:"
|
||||
BOT_TG_HELP_PROJECT="项目地址:"
|
||||
BOT_TG_HELP_GUIDE="相关教程:"
|
||||
BOT_TG_HELP_COFFEE="请喝咖啡:"
|
||||
BOT_TG_HELP_AIRPORT="友情机场:"
|
||||
BOT_TG_RUN_ON="🟢正在运行"
|
||||
BOT_TG_RUN_OFF="🟡未运行"
|
||||
BOT_TG_WELCOME="欢迎使用ShellCrash!"
|
||||
BOT_TG_SERVICE="服务"
|
||||
BOT_TG_MEM_USED="内存占用:"
|
||||
BOT_TG_RUNNING_TIME="已运行:"
|
||||
BOT_TG_SELECT_ACTION="请选择操作:"
|
||||
BOT_TG_SELECT_FILE="请选择需要上传或下载的具体文件:"
|
||||
BOT_TG_BTN_START="✈️ 启用劫持"
|
||||
BOT_TG_BTN_PURE="💧 纯净模式"
|
||||
BOT_TG_BTN_RESTART="🕹 重启服务"
|
||||
BOT_TG_BTN_LOG="📄 查看日志"
|
||||
BOT_TG_BTN_TRANSFER="🔃 文件传输"
|
||||
BOT_TG_BTN_GET_LOG="📥 下载日志"
|
||||
BOT_TG_BTN_GET_BAK="💾 备份设置"
|
||||
BOT_TG_BTN_GET_CFG="⬇️ 下载配置"
|
||||
BOT_TG_BTN_UP_CORE="🪐 上传内核"
|
||||
BOT_TG_BTN_UP_BAK="🔄 还原设置"
|
||||
BOT_TG_BTN_UP_CFG="⬆️ 上传配置"
|
||||
BOT_TG_NO_CURL="⚠️ 因当前设备缺少curl应用,仅支持上传功能!"
|
||||
BOT_TG_UPLOAD_OK="成功!即将重启服务!"
|
||||
BOT_TG_UPLOAD_FAIL="失败,请仔细检查文件或重试!"
|
||||
BOT_TG_CORE_UPDATE="内核更新"
|
||||
BOT_TG_CFG_RESTORED="配置文件已还原,请手动重启服务!"
|
||||
BOT_TG_RESTORE_FAIL="解压还原失败,请仔细检查文件或重试!"
|
||||
BOT_TG_CFG_UPLOADED="配置文件已上传,请手动重启服务!"
|
||||
BOT_TG_UPLOAD_FAIL2="上传失败,请仔细检查文件或重试!"
|
||||
BOT_TG_NET_UPLOAD_FAIL="网络错误,上传失败!请重试!"
|
||||
BOT_TG_FILE_FORMAT_FAIL="文件格式不匹配,上传失败!"
|
||||
BOT_TG_FW_ENABLED="ShellCrash 透明路由"
|
||||
BOT_TG_FW_ENABLED_SUFFIX="已启用!"
|
||||
BOT_TG_SWITCH_PURE="已切换到纯净模式!"
|
||||
BOT_TG_SERVICE_RESTARTED="ShellCrash 服务已重启!"
|
||||
BOT_TG_UNFINISHED="错误,还未完成的功能!"
|
||||
BOT_TG_SEND_CORE="请发送需要上传的内核,必须是以tar.gz,.gz或.upx结尾的【"
|
||||
BOT_TG_SEND_CORE_SUFFIX="】内核!"
|
||||
BOT_TG_SEND_BAK="请发送需要还原的备份文件,必须是【.tar.gz】格式!"
|
||||
BOT_TG_SEND_CFG="请发送需要上传的配置文件,必须是【"
|
||||
BOT_TG_SEND_CFG_SUFFIX="】格式,支持自定义配置文件"
|
||||
BOT_TG_SWITCH_TO="已切换到"
|
||||
BOT_TG_ALREADY="当前已经是"
|
||||
BOT_TG_ALREADY_PURE="当前已经是纯净模式!"
|
||||
BOT_TG_SERVICE_RESTARTED_SHORT="🔄 服务已重启"
|
||||
BOT_TG_LOG_CONTENT="📄 日志内容如下(已过滤任务日志):"
|
||||
BOT_TG_TASK_WORD="任务"
|
||||
BOT_TG_INPUT_SUB="✏ 请输入新的订阅链接:"
|
||||
BOT_TG_SUB_UPDATED="订阅更新完成:"
|
||||
3
scripts/lang/chs/check_port.lang
Normal file
3
scripts/lang/chs/check_port.lang
Normal file
@@ -0,0 +1,3 @@
|
||||
CHECK_PORT_RANGE_ERR="输入错误!请输入正确的数值(1-65535)!"
|
||||
CHECK_PORT_DUP_ERR="输入错误!请不要输入重复的端口!"
|
||||
CHECK_PORT_OCCUPIED_ERR="当前端口已被其他进程占用,请重新输入!"
|
||||
13
scripts/lang/chs/common.lang
Normal file
13
scripts/lang/chs/common.lang
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
COMMON_INPUT="请输入对应数字"
|
||||
COMMON_INPUT_L="请输入对应字母或数字"
|
||||
COMMON_INPUT_R="是否启用?(1/0) > "
|
||||
COMMON_BACK="返回上级菜单"
|
||||
COMMON_SUCCESS="操作成功!"
|
||||
COMMON_FAILED="操作失败!"
|
||||
COMMON_UNSET="未设置"
|
||||
COMMON_MOD="模式"
|
||||
COMMON_ERR_NUM="请输入正确的数字!"
|
||||
COMMON_ERR_LETTER="请输入正确的字母或数字!"
|
||||
COMMON_ERR_INPUT="输入错误,请重新输入!"
|
||||
COMMON_ERR_CANCEL="操作已取消!"
|
||||
35
scripts/lang/chs/ddns.lang
Normal file
35
scripts/lang/chs/ddns.lang
Normal file
@@ -0,0 +1,35 @@
|
||||
DDNS_WELCOME="欢迎使用DDNS!"
|
||||
DDNS_ADD_DONE="服务已经添加!"
|
||||
DDNS_INPUT_DOMAIN="请输入你的域名"
|
||||
DDNS_INPUT_USER="请输入用户名或邮箱"
|
||||
DDNS_INPUT_PASS="请输入密码或令牌秘钥"
|
||||
DDNS_INPUT_CHECK_INTERVAL="请输入检测更新间隔(单位:分钟;默认为10)"
|
||||
DDNS_INPUT_FORCE_INTERVAL="请输入强制更新间隔(单位:小时;默认为24)"
|
||||
DDNS_CONFIRM_INFO="请核对如下信息:"
|
||||
DDNS_FIELD_SERVICE="服务商:"
|
||||
DDNS_FIELD_DOMAIN="域名:"
|
||||
DDNS_FIELD_USER="用户名:"
|
||||
DDNS_FIELD_INTERVAL="检测间隔:"
|
||||
DDNS_CONFIRM_ADD="是否确认添加:"
|
||||
DDNS_YES="是"
|
||||
DDNS_REINPUT="否,重新輸入"
|
||||
DDNS_LIST_NOT_FOUND="未找到DDNS列表文件,尝试在线获取……"
|
||||
DDNS_DOWNLOAD_FAILED="下载失败,请重试!"
|
||||
DDNS_SELECT_PROVIDER="请选择服务提供商:"
|
||||
DDNS_INPUT_ERROR="输入错误,请重新输入!"
|
||||
DDNS_SELECT_NETMODE="请选择网络模式:"
|
||||
DDNS_IPV4="IPV4"
|
||||
DDNS_IPV6="IPV6"
|
||||
DDNS_DISABLE="停用"
|
||||
DDNS_ENABLE="启用"
|
||||
DDNS_UPDATE_NOW="立即更新"
|
||||
DDNS_EDIT_CURRENT="编辑当前服务"
|
||||
DDNS_CURRENT_SERVICE="当前服务"
|
||||
DDNS_REMOVE_CURRENT="移除当前服务"
|
||||
DDNS_VIEW_LOG="查看运行日志"
|
||||
DDNS_NOT_SUPPORTED="本脚本依赖OpenWrt内置的DDNS服务,当前设备无法运行,已退出!"
|
||||
DDNS_LIST_HEADER=" 列表 域名 启用 IP地址"
|
||||
DDNS_ADD_SERVICE="添加DDNS服务"
|
||||
DDNS_EXIT="退出"
|
||||
DDNS_INPUT_INDEX="请输入对应序号"
|
||||
DDNS_INPUT_NUM_ERROR="请输入正确数字!"
|
||||
83
scripts/lang/chs/dns.lang
Normal file
83
scripts/lang/chs/dns.lang
Normal file
@@ -0,0 +1,83 @@
|
||||
#=====DNS主菜单=====
|
||||
DNS_CURRENT_MODE="当前DNS运行模式为:"
|
||||
DNS_RESTART_NOTICE="切换模式后需要手动重启服务以生效!"
|
||||
|
||||
DNS_MODE_MIX_DESC="CN域名DIRECT-DNS,其它fake-ip"
|
||||
DNS_MODE_ROUTE_DESC="CN域名DIRECT-DNS,其它PROXY-DNS"
|
||||
DNS_MODE_REDIR_DESC="建议搭配加密/第三方DNS服务使用"
|
||||
|
||||
DNS_MENU_PROTECT="DNS防泄漏"
|
||||
DNS_MENU_HOSTS="Hosts优化"
|
||||
DNS_MENU_ECS="ECS优化"
|
||||
DNS_MENU_REDIR="DNS劫持端口"
|
||||
|
||||
DNS_PROTECT_DESC="——启用时少量网站可能出现连接卡顿"
|
||||
DNS_HOSTS_DESC="——调用本机hosts并劫持NTP服务"
|
||||
DNS_ECS_DESC="——解决CDN下载浪费流量等问题"
|
||||
DNS_REDIR_PORT_DESC="——用于兼容第三方DNS服务"
|
||||
|
||||
DNS_FAKEIP_MENU="管理Fake-IP过滤列表"
|
||||
DNS_ADV_MENU="修改DNS服务器"
|
||||
|
||||
DNS_SET_OK="DNS模式已设置为"
|
||||
DNS_CORE_UNSUPPORTED="当前内核不支持该功能!"
|
||||
|
||||
#=====DNS重定向=====
|
||||
DNS_REDIR_WARN="仅限搭配第三方DNS服务(AdGuard、SmartDNS等)使用!"
|
||||
DNS_REDIR_HINT="建议第三方DNS上游指向"
|
||||
DNS_REDIR_NO_SERVICE="该端口未检测到正在运行的DNS服务!"
|
||||
|
||||
#=====Fake-IP=====
|
||||
DNS_FAKEIP_DESC="用于解决Fake-IP模式下部分地址或应用无法连接的问题"
|
||||
DNS_FAKEIP_TIP="脚本已内置大量地址,只需添加出现问题的地址"
|
||||
DNS_FAKEIP_EXAMPLE="示例格式如下:\na.b.com\n*.b.com\n*.*.b.com"
|
||||
DNS_FAKEIP_EXIST="已添加的Fake-IP过滤地址:"
|
||||
DNS_FAKEIP_EMPTY="当前尚未添加任何自定义Fake-IP过滤地址"
|
||||
DNS_FAKEIP_EDIT="输入序号移除,输入地址添加"
|
||||
|
||||
#=====DNS高级=====
|
||||
DNS_ADV_SPLIT="多个DNS地址请使用“|”或“,”分隔输入"
|
||||
DNS_ADV_CERT="使用DoH/DoT需具备本地根证书文件"
|
||||
DNS_ADV_SINGBOX_LIMIT="注意:SingBox内核仅加载第一个DNS"
|
||||
|
||||
DNS_ADV_EDIT_DIRECT="修改DIRECT-DNS"
|
||||
DNS_ADV_EDIT_PROXY="修改PROXY-DNS(该DNS查询会经过节点)"
|
||||
DNS_ADV_EDIT_DEFAULT="修改DEFAULT-DNS(必须是IP,用于解析其他DNS)"
|
||||
DNS_ADV_AUTO_ENCRYPT="一键配置加密DNS"
|
||||
DNS_ADV_RESET="重置默认DNS配置"
|
||||
|
||||
DNS_IPV6_NOT_SUPPORT="该选项暂不支持IPv6加密DNS!"
|
||||
|
||||
DNS_ENCRYPT_OK="已设置加密DNS,如遇DNS解析问题,请重置DNS配置!"
|
||||
DNS_CORE_REQUIRE="请使用Mihomo或SingBox内核"
|
||||
DNS_SET_TO="设为"
|
||||
DNS_PROTECT_NOW="当前"
|
||||
DNS_HOSTS_NOW="当前"
|
||||
DNS_ENABLED="已启用"
|
||||
DNS_DISABLED="已禁用"
|
||||
DNS_PROTECT_DISABLE_Q="DNS防泄漏,是否确认禁用?"
|
||||
DNS_PROTECT_ENABLE_Q="DNS防泄漏,是否确认启用?"
|
||||
DNS_HOSTS_DISABLE_Q="Hosts优化,是否确认禁用?"
|
||||
DNS_HOSTS_ENABLE_Q="Hosts优化,是否确认启用?"
|
||||
DNS_YES="是"
|
||||
DNS_RESET_DEFAULT="重置为默认值"
|
||||
DNS_NO_BACK="否,返回上级菜单"
|
||||
DNS_REMOVE_OK="移除成功"
|
||||
DNS_REMOVE_FAIL="移除失败"
|
||||
DNS_INPUT_REDIR_PORT="请直接输入旁路由IPV4地址"
|
||||
DNS_INPUT_REDIR_RESET="或输入 r 重置DNS劫持端口"
|
||||
DNS_INPUT_REDIR_BACK="或输入 0 返回上级菜单"
|
||||
DNS_INPUT="请输入"
|
||||
DNS_CONFIRM_ADD="请确认需要添加的地址:"
|
||||
DNS_CONFIRM_OK="确认无误"
|
||||
DNS_ADD_OK="添加成功"
|
||||
DNS_ADD_FAIL="添加失败"
|
||||
DNS_DIRECT_NOW="当前DIRECT-DNS:"
|
||||
DNS_PROXY_NOW="当前PROXY-DNS:"
|
||||
DNS_DEFAULT_NOW="当前DEFAULT-DNS:"
|
||||
DNS_INPUT_DIRECT_NEW="请直接输入新的DIRECT-DNS地址"
|
||||
DNS_INPUT_DIRECT_RESET="或输入 r 重置DIRECT-DNS地址"
|
||||
DNS_INPUT_PROXY_NEW="请直接输入新的PROXY-DNS地址"
|
||||
DNS_INPUT_PROXY_RESET="或输入 r 重置PROXY-DNS地址"
|
||||
DNS_INPUT_DEFAULT_NEW="请直接输入新的DEFAULT-DNS地址"
|
||||
DNS_INPUT_DEFAULT_RESET="或输入 r 重置DEFAULT-DNS地址"
|
||||
83
scripts/lang/chs/menu.lang
Normal file
83
scripts/lang/chs/menu.lang
Normal file
@@ -0,0 +1,83 @@
|
||||
# ===== 通用提示 =====
|
||||
|
||||
MENU_RESTART_NOTICE="检测到配置变更,是否立即重启服务以应用新配置?"
|
||||
|
||||
MENU_PORT_CONFLICT_TITLE="检测到端口被以下进程占用!内核可能无法正常启动!"
|
||||
MENU_PORT_CONFLICT_HINT="请修改默认端口配置!"
|
||||
|
||||
MENU_CORE_LOADED_OK="内核加载完成!"
|
||||
MENU_CORE_LOADED_BAD="检测到不可用的内核文件!可能是文件受损或CPU架构不匹配!"
|
||||
MENU_CORE_REMOVED="内核文件已移除,请认真检查后重新上传!"
|
||||
|
||||
MENU_CFG_LOADED_OK="配置文件加载完成!"
|
||||
|
||||
MENU_OVERRIDE_WARN="你已经禁用了配置文件覆写功能,这会导致大量脚本功能无法使用!"
|
||||
MENU_OVERRIDE_ASK="是否取消禁用?"
|
||||
|
||||
# ===== 欢迎与状态 =====
|
||||
MENU_WELCOME="欢迎使用ShellCrash!"
|
||||
|
||||
MENU_RUN_ON="正在运行"
|
||||
MENU_RUN_SET="已设置"
|
||||
MENU_RUN_OFF="没有运行"
|
||||
|
||||
MENU_PURE_MOD="纯净"
|
||||
MENU_MOD="模式"
|
||||
MENU_IP_DF="设备IP地址"
|
||||
|
||||
MENU_AUTOSTART_ON="已设置开机启动!"
|
||||
MENU_AUTOSTART_OFF="未设置开机启动!"
|
||||
MENU_AUTOSTART_DEBUG="并处于debug状态!"
|
||||
|
||||
MENU_MEM_USED="当前内存占用:"
|
||||
MENU_RUNNING_TIME="已运行:"
|
||||
|
||||
MENU_TG_CHANNEL="TG频道:"
|
||||
|
||||
# ===== /tmp 文件检测 =====
|
||||
MENU_TMP_CORE_FOUND="发现可用的内核文件:"
|
||||
MENU_TMP_CORE_ASK="是否立即加载该内核(会停止当前服务)?"
|
||||
|
||||
MENU_TMP_CFG_FOUND="发现内核配置文件:"
|
||||
MENU_TMP_CFG_ASK="是否立即加载为配置文件?"
|
||||
|
||||
MENU_MAIN_1="启动/重启服务"
|
||||
MENU_MAIN_2="功能设置"
|
||||
MENU_MAIN_3="停止服务"
|
||||
MENU_MAIN_4="启动设置"
|
||||
MENU_MAIN_5="自动任务"
|
||||
MENU_MAIN_6="配置文件管理"
|
||||
MENU_MAIN_7="访问与控制"
|
||||
MENU_MAIN_8="工具与优化"
|
||||
MENU_MAIN_9="更新与支持"
|
||||
MENU_MAIN_0="退出脚本"
|
||||
|
||||
MENU_MAIN_PROMPT="请输入对应数字> "
|
||||
|
||||
# ===== 服务操作 =====
|
||||
MENU_SERVICE_STOPPED="服务已停止!"
|
||||
|
||||
# ===== 测试 / 调试 =====
|
||||
MENU_TEST_RUNNING_1="正在测试运行!"
|
||||
MENU_TEST_RUNNING_2="如发现错误请截图后前往咨询:"
|
||||
MENU_TEST_DONE_OK="测试完成!没有发现问题,请重新启动服务~"
|
||||
MENU_TEST_DONE_FAIL="测试完成!"
|
||||
MENU_TEST_LOG_HINT="完整执行记录请查看:"
|
||||
|
||||
MENU_ERROR_FOUND="发现错误:"
|
||||
|
||||
# ===== 命令行帮助 =====
|
||||
|
||||
MENU_CLI_TEST="测试模式"
|
||||
MENU_CLI_HELP="帮助列表"
|
||||
MENU_CLI_UNINSTALL="卸载脚本"
|
||||
MENU_CLI_INIT="初始化脚本"
|
||||
MENU_CLI_DEBUG="测试运行"
|
||||
|
||||
MENU_CLI_START="启动服务"
|
||||
MENU_CLI_STOP="停止服务"
|
||||
MENU_CLI_BOOT_INIT="开机初始化"
|
||||
|
||||
MENU_HELP_ONLINE="在线求助:"
|
||||
MENU_HELP_BLOG="官方博客:"
|
||||
MENU_HELP_GITHUB="发布页面:"
|
||||
25
scripts/lang/chs/providers.lang
Normal file
25
scripts/lang/chs/providers.lang
Normal file
@@ -0,0 +1,25 @@
|
||||
PROVIDERS_MENU_GEN="生成包含全部提供者的配置文件"
|
||||
PROVIDERS_MENU_TEMPLATE="选择\033[33m规则模版\033[0m"
|
||||
PROVIDERS_MENU_CLEAN="\033[33m清理\033[0mproviders目录文件"
|
||||
PROVIDERS_INPUT="请输入对应字母或数字"
|
||||
|
||||
PROVIDERS_EMPTY_HINT="你还未添加链接或本地配置文件,请先添加!"
|
||||
PROVIDERS_TEMPLATE_CURRENT="当前规则模版为:"
|
||||
PROVIDERS_TEMPLATE_SELECT="请选择在线模版:"
|
||||
PROVIDERS_TEMPLATE_LOCAL="使用\033[36m本地模版\033[0m"
|
||||
PROVIDERS_TEMPLATE_PATH="请输入模版的路径(绝对路径)"
|
||||
PROVIDERS_TEMPLATE_NOT_FOUND="输入错误,找不到对应模版文件!"
|
||||
|
||||
PROVIDERS_CLEAN_WARN="将清空"
|
||||
PROVIDERS_CLEAN_WARN_END="目录下所有内容"
|
||||
PROVIDERS_CLEAN_CONFIRM="是否继续?"
|
||||
|
||||
PROVIDERS_FETCHING_TEMPLATE="正在获取在线模版......"
|
||||
PROVIDERS_DOWNLOAD_FAILED="下载失败,请尝试更换安装源!"
|
||||
PROVIDERS_GEN_OK="配置文件生成成功!"
|
||||
PROVIDERS_GEN_OK_SINGBOX="配置文件生成成功!如果启动超时建议更新里手动安装Singbox-srs数据库常用包!"
|
||||
PROVIDERS_GEN_FAILED="生成配置文件出错,请仔细检查输入!"
|
||||
PROVIDERS_RESTART_ASK="是否立即启动/重启服务?"
|
||||
PROVIDERS_YES="是"
|
||||
PROVIDERS_NO="否"
|
||||
PROVIDERS_CRON_SUB_UPDATE="更新订阅"
|
||||
34
scripts/lang/chs/set_crashdir.lang
Normal file
34
scripts/lang/chs/set_crashdir.lang
Normal file
@@ -0,0 +1,34 @@
|
||||
SCD_SELECT_INSTALL_DIR="请选择安装目录:"
|
||||
SCD_INPUT_NUM="请输入相应数字"
|
||||
SCD_INPUT_ERROR="输入错误!请重新设置!"
|
||||
SCD_XIAOMI_DETECTED="检测到当前设备为小米官方系统,请选择安装位置:"
|
||||
SCD_CUSTOM_DIR_WARN="自定义目录(不推荐,不明勿用!)"
|
||||
SCD_EXIT_INSTALL="退出安装"
|
||||
SCD_SELECT_USB_DIR="请选择U盘目录:"
|
||||
SCD_ASUS_DM_NOT_FOUND="未找到下载大师自启文件:"
|
||||
SCD_CHECK_SETTING="请检查设置!"
|
||||
SCD_ASUS_DETECTED="检测到当前设备为华硕固件,请选择安装方式"
|
||||
SCD_ASUS_INSTALL_DM="基于U盘+下载大师安装(支持所有固件,限ARM设备,须插入U盘或移动硬盘)"
|
||||
SCD_ASUS_INSTALL_SCRIPT="基于自启脚本安装(仅持部分梅林固件)"
|
||||
SCD_ASUS_DM_HINT="请先在路由器网页后台安装下载大师并启用,之后选择外置存储所在目录!"
|
||||
SCD_ASUS_REINSTALL_HINT="如开机无法正常自启,请重新使用U盘+下载大师安装!"
|
||||
SCD_PATH_FORMAT_HINT="路径是必须带 / 的格式,注意写入虚拟内存(/tmp,/opt,/sys...)的文件会在重启后消失!"
|
||||
SCD_PATH_FREE_SPACE="可用路径 剩余空间:"
|
||||
SCD_INPUT_CUSTOM_DIR="请输入自定义路径"
|
||||
SCD_PATH_ERROR="路径错误!请重新设置!"
|
||||
SCD_INSTALL_SPACE_HINT="注意:安装ShellCrash至少需要预留约1MB的磁盘空间"
|
||||
SCD_INSTALL_ETC="在\033[32m/etc目录\033[0m下安装(适合root用户)"
|
||||
SCD_INSTALL_USR="在\033[32m/usr/share目录\033[0m下安装(适合Linux系统)"
|
||||
SCD_INSTALL_HOME="在\033[32m当前用户目录\033[0m下安装(适合非root用户)"
|
||||
SCD_INSTALL_USB="在\033[32m外置存储\033[0m中安装"
|
||||
SCD_INSTALL_MANUAL="手动设置安装目录"
|
||||
SCD_INSTALL_CANCELED="安装已取消"
|
||||
SCD_NO_WRITE_PREFIX="没有"
|
||||
SCD_NO_WRITE_SUFFIX="目录写入权限!请重新设置!"
|
||||
SCD_TARGET_DIR_PREFIX="目标目录"
|
||||
SCD_TARGET_DIR_SPACE="空间剩余:"
|
||||
SCD_CONFIRM_INSTALL="是否确认安装?"
|
||||
SCD_YES="是"
|
||||
SCD_NO="否"
|
||||
SCD_DIR_FREE="目录,剩余空间:"
|
||||
SCD_SOFT_SOLID="(支持软固化功能)"
|
||||
52
scripts/lang/chs/setboot.lang
Normal file
52
scripts/lang/chs/setboot.lang
Normal file
@@ -0,0 +1,52 @@
|
||||
SETBOOT_NOT_SET="未设置"
|
||||
SETBOOT_SECOND="秒"
|
||||
SETBOOT_TITLE="启动设置菜单"
|
||||
SETBOOT_ITEM_AUTO="开机自启动:"
|
||||
SETBOOT_ITEM_OLD="使用保守模式:"
|
||||
SETBOOT_ITEM_OLD_DESC="———基于定时任务(每分钟检测)"
|
||||
SETBOOT_ITEM_DELAY="设置自启延时:"
|
||||
SETBOOT_ITEM_DELAY_DESC="———用于解决自启后服务受限"
|
||||
SETBOOT_ITEM_MINI="启用小闪存模式:"
|
||||
SETBOOT_ITEM_MINI_DESC="———用于闪存空间不足的设备"
|
||||
SETBOOT_ITEM_MINI_DIR="设置小闪存目录:"
|
||||
SETBOOT_ITEM_NETCHK="自启网络检查:"
|
||||
SETBOOT_ITEM_NETCHK_DESC="———禁用则跳过自启时网络检查"
|
||||
SETBOOT_VIEW_LOG="查看启动日志"
|
||||
SETBOOT_AUTO_OFF="已禁止ShellCrash开机自启动!"
|
||||
SETBOOT_AUTO_ON="已设置ShellCrash开机自启动!"
|
||||
SETBOOT_CRON_INIT="ShellCrash初始化"
|
||||
SETBOOT_OLDMODE_ON="改为使用保守模式启动服务!"
|
||||
SETBOOT_OLDMODE_OFF="改为使用系统守护进程启动服务!"
|
||||
SETBOOT_MODE_UNSUPPORTED="当前设备不支持以其他模式启动!"
|
||||
SETBOOT_DELAY_HINT1="如果你的设备启动后可以正常使用,则无需设置!"
|
||||
SETBOOT_DELAY_HINT2="推荐设置为30~120秒之间,请根据设备问题自行试验"
|
||||
SETBOOT_DELAY_INPUT="请输入启动延迟时间(0~300秒)"
|
||||
SETBOOT_SET_OK="设置成功!"
|
||||
SETBOOT_DELAY_INVALID="输入有误,或超过300秒,请重新输入!"
|
||||
SETBOOT_MINI_NEEDED_NO="您的设备空间充足(>20M),无需开启!"
|
||||
SETBOOT_SYSTEMD_WARN="不支持systemd启动模式,请先启用保守模式!"
|
||||
SETBOOT_MINI_ENABLED="已经启用小闪存功能!"
|
||||
SETBOOT_MINI_DIR_HINT="如需更换目录,请使用【设置小闪存目录】功能"
|
||||
SETBOOT_MINI_DISABLE_WARN="您的设备剩余空间不足8M,停用后可能无法正常运行!"
|
||||
SETBOOT_MINI_DISABLE_CONFIRM="是否确认停用此功能?"
|
||||
SETBOOT_YES="是"
|
||||
SETBOOT_NO_BACK="否,返回上级菜单"
|
||||
SETBOOT_MINI_DISABLED="已经停用小闪存功能!"
|
||||
SETBOOT_BINDIR_HINT1="如设置到内存,则每次开机后都自动重新下载相关文件"
|
||||
SETBOOT_BINDIR_HINT2="请确保安装源可用裸连,否则会导致启动失败"
|
||||
SETBOOT_BINDIR_TMP="使用内存(/tmp)"
|
||||
SETBOOT_BINDIR_USB="选择U盘目录"
|
||||
SETBOOT_BINDIR_CUSTOM="自定义目录"
|
||||
SETBOOT_SELECT_INSTALL_DIR="请选择安装目录:"
|
||||
SETBOOT_SPACE_USED="已占用的储存空间:"
|
||||
SETBOOT_INPUT_ERROR="输入错误!请重新设置!"
|
||||
SETBOOT_INPUT_CMD="请直接输入命令语句"
|
||||
SETBOOT_INPUT_OR_BACK="或输入 0 返回上级菜单"
|
||||
SETBOOT_INPUT="请输入"
|
||||
SETBOOT_NETCHK_HINT1="如果你的设备启动后可以正常使用,则无需变更设置!"
|
||||
SETBOOT_NETCHK_HINT2="禁用时,如果使用了小闪存模式或者rule-set等在线规则,则可能会因无法联网而导致启动失败!"
|
||||
SETBOOT_NETCHK_HINT3="启用时,会导致部分性能较差或者拨号较慢的设备可能会因查询超时导致启动失败!"
|
||||
SETBOOT_NETCHK_OFF_CONFIRM="当前\033[33m已禁用\033[0m自启网络检查,是否确认启用?"
|
||||
SETBOOT_NETCHK_ON_CONFIRM="当前\033[33m已启用\033[0m自启网络检查,是否确认禁用?"
|
||||
SETBOOT_TASK_WORD="任务"
|
||||
SETBOOT_LOG_NOT_FOUND="未找到相关日志!"
|
||||
33
scripts/lang/chs/subconverter.lang
Normal file
33
scripts/lang/chs/subconverter.lang
Normal file
@@ -0,0 +1,33 @@
|
||||
SUBCONVERTER_MENU_GEN="生成包含全部节点、订阅的配置文件"
|
||||
SUBCONVERTER_MENU_EXCLUDE="设置\033[31m排除节点正则\033[0m"
|
||||
SUBCONVERTER_MENU_INCLUDE="设置\033[32m包含节点正则\033[0m"
|
||||
SUBCONVERTER_MENU_RULE="选择\033[33m在线规则模版\033[0m"
|
||||
SUBCONVERTER_MENU_SERVER="选择Subconverter服务器"
|
||||
SUBCONVERTER_MENU_UA="自定义浏览器UA"
|
||||
|
||||
SUBCONVERTER_INPUT="请输入"
|
||||
SUBCONVERTER_BACK="或输入 0 返回上级菜单"
|
||||
|
||||
SUBCONVERTER_EXCLUDE_HINT1="匹配关键字的节点会在导入时被【屏蔽】!"
|
||||
SUBCONVERTER_INCLUDE_HINT1="仅有匹配关键字的节点才会被【导入】!!!"
|
||||
SUBCONVERTER_KEYWORD_SPLIT="多个关键字可以用\033[30;47m | \033[0m号分隔"
|
||||
SUBCONVERTER_REGEX_HINT="\033[32m支持正则表达式\033[0m,空格请使用\033[30;47m + \033[0m号替代"
|
||||
SUBCONVERTER_EXCLUDE_INPUT="请直接输入节点过滤关键字"
|
||||
SUBCONVERTER_INCLUDE_INPUT="请直接输入节点匹配关键字"
|
||||
SUBCONVERTER_EXCLUDE_CLEAR="或输入 d \033[31m清空\033[0m节点过滤关键字"
|
||||
SUBCONVERTER_INCLUDE_CLEAR="或输入 d \033[31m清空\033[0m节点匹配关键字"
|
||||
|
||||
SUBCONVERTER_RULE_CURRENT="当前使用规则为:"
|
||||
SUBCONVERTER_SERVER_HINT="以下为互联网采集的第三方服务器,具体安全性请自行斟酌!"
|
||||
SUBCONVERTER_SERVER_THANKS="感谢以下作者的无私奉献!!!"
|
||||
SUBCONVERTER_SERVER_CURRENT="当前使用后端为:"
|
||||
SUBCONVERTER_SET_OK="设置成功!返回上级菜单"
|
||||
|
||||
SUBCONVERTER_UA_HINT="无法正确获取配置文件时可尝试使用"
|
||||
SUBCONVERTER_UA_CURRENT="当前UA:"
|
||||
SUBCONVERTER_UA_AUTO="使用自动UA(默认)"
|
||||
SUBCONVERTER_UA_NONE="不使用UA"
|
||||
SUBCONVERTER_UA_CUSTOM="使用自定义UA"
|
||||
SUBCONVERTER_UA_CLEAR="清空UA"
|
||||
SUBCONVERTER_UA_CUSTOM_WARN="注意:\n自定义UA不可包含空格或特殊符号!"
|
||||
SUBCONVERTER_UA_CUSTOM_INPUT="请直接输入自定义UA"
|
||||
19
scripts/lang/chs/task_cmd.lang
Normal file
19
scripts/lang/chs/task_cmd.lang
Normal file
@@ -0,0 +1,19 @@
|
||||
TASK_CMD_EVERY="每隔"
|
||||
TASK_CMD_HOURLY="时每"
|
||||
TASK_CMD_MIN="分钟"
|
||||
TASK_CMD_CORE_SKIP="任务【自动更新内核】中止-未检测到版本更新"
|
||||
TASK_CMD_CORE_DONE="任务【自动更新内核】下载完成,正在重启服务!"
|
||||
TASK_CMD_CORE_DL_FAIL="任务【自动更新内核】出错-下载失败!"
|
||||
TASK_CMD_CORE_VERIFY_FAIL="任务【自动更新内核】出错-内核校验失败!"
|
||||
TASK_CMD_SCRIPT_SKIP="任务【自动更新脚本】中止-未检测到版本更新"
|
||||
TASK_CMD_SCRIPT_UNZIP_FAIL="任务【自动更新脚本】出错-解压失败!"
|
||||
TASK_CMD_DB_SKIP_PREFIX="任务【自动更新数据库文件】跳过-未检测到"
|
||||
TASK_CMD_DB_SKIP_SUFFIX="版本更新"
|
||||
TASK_CMD_DB_DL_FAIL_PREFIX="任务【自动更新数据库文件】更新【"
|
||||
TASK_CMD_DB_DL_FAIL_SUFFIX="】下载失败!"
|
||||
TASK_CMD_DB_OK_PREFIX="任务【自动更新数据库文件】更新【"
|
||||
TASK_CMD_DB_OK_SUFFIX="】成功!"
|
||||
TASK_CMD_RES_OK="成功"
|
||||
TASK_CMD_RES_FAIL="失败"
|
||||
TASK_CMD_EXEC_PREFIX="任务【"
|
||||
TASK_CMD_EXEC_MID="】执行"
|
||||
13
scripts/lang/chs/uninstall.lang
Normal file
13
scripts/lang/chs/uninstall.lang
Normal file
@@ -0,0 +1,13 @@
|
||||
UNINSTALL_WARN="警告:该操作不可逆!"
|
||||
UNINSTALL_CONFIRM="是否确认卸载ShellCrash?"
|
||||
UNINSTALL_YES="是"
|
||||
UNINSTALL_NO="否"
|
||||
UNINSTALL_KEEP_CONFIRM="是否保留脚本配置及订阅文件?"
|
||||
UNINSTALL_ENV_ERROR="环境变量配置有误,请尝试手动移除安装目录!"
|
||||
UNINSTALL_DONE="已卸载ShellCrash相关文件!有缘再会!"
|
||||
UNINSTALL_CLOSE_HINT="请手动关闭当前窗口以重置环境变量!"
|
||||
UNINSTALL_CANCELED="操作已取消!"
|
||||
UNINSTALL_CRON_CLASH="clash服务"
|
||||
UNINSTALL_CRON_SUB="订阅链接"
|
||||
UNINSTALL_CRON_INIT="ShellCrash初始化"
|
||||
UNINSTALL_SSH_MARK="启用外网访问SSH服务"
|
||||
17
scripts/lang/chs/userguide.lang
Normal file
17
scripts/lang/chs/userguide.lang
Normal file
@@ -0,0 +1,17 @@
|
||||
# 新手引导
|
||||
UG_WELCOME="欢迎使用新手引导!"
|
||||
UG_CHOOSE_ENV="请先选择你的使用环境:"
|
||||
UG_TIP_CONFIG="(你之后依然可以在设置中更改各种配置)"
|
||||
UG_OPTION_1="路由设备配置局域网透明代理"
|
||||
UG_OPTION_2="Linux设备仅配置本机代理"
|
||||
UG_OPTION_3="还原之前备份的设置"
|
||||
UG_RESTORE_OK="脚本设置已还原!请重新启动脚本!"
|
||||
UG_IP_FORWARD_WARN="检测到你的设备尚未开启ip转发,局域网设备将无法正常连接网络,是否立即开启?"
|
||||
UG_ENABLE_LOW_MEM="检测到你的安装目录空间不足10M,是否开启小闪存模式?"
|
||||
UG_IMPORT_CONFIG="这是运行前的最后一步"
|
||||
UG_CONFIG_TIP="你必须拥有一份配置文件才能运行服务!"
|
||||
UG_CONFIG_RES="是否立即导入配置文件?"
|
||||
UG_FINAL_TIP="很好!现在只需要执行启动就可以愉快的使用了!"
|
||||
|
||||
UG_IMPORT_NOW="立即导入"
|
||||
UG_IMPORT_LATER="暂不导入"
|
||||
10
scripts/lang/en/1_start.lang
Normal file
10
scripts/lang/en/1_start.lang
Normal file
@@ -0,0 +1,10 @@
|
||||
# ===== Startup =====
|
||||
START_SERVICE_OK="Service started successfully!"
|
||||
START_WEB_HINT="Dashboard:"
|
||||
START_PAC_HINT="Other devices can connect using PAC configuration:"
|
||||
START_PROXY_HINT="Or connect using HTTP / SOCKS5:"
|
||||
|
||||
# ===== Startup Flow =====
|
||||
START_NO_CORE_CFG_TRY_GEN="Core configuration not found. Attempting to generate providers configuration!"
|
||||
START_NO_CORE_CFG_IMPORT_FIRST="Core configuration not found. Please import a configuration first!"
|
||||
START_FIREWALL_DONE="Firewall configuration completed!"
|
||||
158
scripts/lang/en/2_settings.lang
Normal file
158
scripts/lang/en/2_settings.lang
Normal file
@@ -0,0 +1,158 @@
|
||||
# =================================================
|
||||
# Settings main menu
|
||||
# =================================================
|
||||
SET_MENU_TITLE="Welcome to the Function Settings Menu:"
|
||||
SET_MENU_REDIR="Routing Mode:"
|
||||
SET_MENU_DNS="DNS Settings:"
|
||||
SET_MENU_FW_FILTER="Transparent Routing Traffic Filter"
|
||||
SET_MENU_SKIP_CERT="Skip Cert Verify:"
|
||||
SET_MENU_SNIFFER="Enable Sniff:"
|
||||
SET_MENU_ADV_PORT="Custom Ports and Secrets"
|
||||
SET_MENU_IPV6="IPv6 Settings:"
|
||||
SET_MENU_RESET="Reset / Backup / Restore Script Settings"
|
||||
SET_MENU_LANG="Language"
|
||||
SET_MENU_UI="UI Switch"
|
||||
|
||||
# =================================================
|
||||
# Main menu messages
|
||||
# =================================================
|
||||
SET_WARN_NONROOT="Non-root users may not be able to configure some modes correctly. Continue anyway?"
|
||||
SET_SKIP_CERT_ON="Skipping local certificate verification is now ENABLED!"
|
||||
SET_SKIP_CERT_OFF="Skipping local certificate verification is now DISABLED!"
|
||||
|
||||
SET_SNIFFER_CORE_SWITCH="Automatically switched to Meta core (required for domain sniffing)"
|
||||
SET_SNIFFER_LOCKED="Domain sniffing cannot be disabled with the current core and DNS mode combination!"
|
||||
|
||||
SET_CORE_RUNNING="Service is currently running and must be stopped first!"
|
||||
SET_CORE_STOP_CONFIRM="Do you want to stop the service?"
|
||||
|
||||
# =================================================
|
||||
# Backup / Restore / Reset
|
||||
# =================================================
|
||||
SET_BACKUP="Backup Script Settings"
|
||||
SET_RESTORE="Restore Script Settings"
|
||||
SET_RESET="Reset Script Settings"
|
||||
|
||||
SET_BACKUP_OK="Script settings have been backed up!"
|
||||
SET_RESTORE_OK="Script settings have been restored! (Overwritten config has been backed up)"
|
||||
SET_RESET_OK="Script settings have been reset! (Old config has been backed up)"
|
||||
SET_BACKUP_MISS="Backup file not found. Please back up first!"
|
||||
SET_NEED_RESTART="Please restart the script for changes to take effect!"
|
||||
|
||||
# =================================================
|
||||
# Redir mode
|
||||
# =================================================
|
||||
SET_REDIR_DEFAULT="Redir Mode"
|
||||
SET_REDIR_CURRENT="Current routing mode:"
|
||||
SET_CORE_CURRENT="ShellCrash core:"
|
||||
SET_REDIR_RESTART_HINT="You must manually restart the service for the change to take effect!"
|
||||
|
||||
SET_REDIR_APPLIED="Routing mode set to"
|
||||
|
||||
SET_REDIR_REDIR="Redir Mode"
|
||||
SET_REDIR_MIX="Mix Mode"
|
||||
SET_REDIR_TPROXY="Tproxy Mode"
|
||||
SET_REDIR_TUN="Tun Mode"
|
||||
|
||||
SET_REDIR_REDIRDES="Redirect TCP traffic only (no UDP)"
|
||||
SET_REDIR_MIXDES="Redirect TCP via Redir, UDP via Tun"
|
||||
SET_REDIR_TPROXYDES="Tproxy forwards both TCP UDP"
|
||||
SET_REDIR_TUNDES="Tun forwards both TCP UDP (high resource usage)"
|
||||
|
||||
SET_NO_MOD="The kernel module not detected:"
|
||||
SET_NO_MOD2="Please install required dependencies or select another mode!"
|
||||
XIAOMI_QOS="Xiaomi QoS service conflicts with the current mode. Disable related features?"
|
||||
|
||||
# =================================================
|
||||
# Firewall / VM
|
||||
# =================================================
|
||||
SET_FW_AREA="Set Routing Hijack Scope"
|
||||
SET_VM_REDIR="Container / VM Hijacking"
|
||||
SET_FW_SWITCH="Switch Firewall Backend"
|
||||
|
||||
SET_FW_AREA_DESC="LAN only|Local only|LAN&Local|Pure mode|Bypass:"
|
||||
|
||||
FW_AREA_NOTE="If you are using a third-party DNS like SmartDNS, \ndo not enable local hijacking or run the service as a ShellCrash user"
|
||||
FW_AREA_LAN="Hijack LAN traffic only"
|
||||
FW_AREA_LOCAL="Hijack local device traffic only"
|
||||
FW_AREA_BOTH="Hijack both LAN and local device traffic"
|
||||
FW_AREA_NONE="Do not hijack traffic (Pure mode)"
|
||||
FW_NO_NFTABLES="nftables is not installed, or the version is too old (< 1.0.2). Unable to switch!"
|
||||
FW_NO_IPTABLES="iptables is not installed. Unable to switch!"
|
||||
FW_NO_FIREWALL_BACKEND="No available firewall backend detected (iptables / nftables). Unable to switch!"
|
||||
|
||||
VM_DETECT_DESC="Default Container/VM Subnet:"
|
||||
VM_ENABLE_AUTO="Enable hijacking using automatically detected subnets"
|
||||
VM_ENABLE_MANUAL="Enable hijacking and manually specify subnets"
|
||||
VM_DISABLE="Disable hijacking"
|
||||
VM_INPUT_INFO="Separate multiple segments with spaces. Check your configuration using ip route. Example:"
|
||||
VM_INPUT_NET="Please enter cust subnets"
|
||||
VM_NO_NET_DETECTED="No container or VM subnet detected. Please start the container first, or configure the subnet manually!"
|
||||
VM_INPUT_DESC="Multiple subnets should be separated by spaces. You can check them using the 'ip route' command, for example:"
|
||||
|
||||
#inputport
|
||||
INPUT_PORT="Input port"
|
||||
# =================================================
|
||||
# Advanced config
|
||||
# =================================================
|
||||
ADV_HTTP_PORT="Change HTTP / SOCKS5 Port"
|
||||
ADV_HTTP_AUTH="Set HTTP / SOCKS5 Authentication"
|
||||
ADV_REDIR_PORT="Change Redir / Tproxy Ports"
|
||||
ADV_DNS_PORT="Change DNS Listening Port"
|
||||
ADV_PANEL_PORT="Change Web Panel Port"
|
||||
ADV_PANEL_PASS="Set Web Panel Password"
|
||||
ADV_PANEL_PASS_INPUT="Enter web panel password (enter 0 to remove)"
|
||||
ADV_HOST="Custom Local Host Address"
|
||||
ADV_TABLE="Custom Routing Table"
|
||||
# Advanced auth
|
||||
ADV_AUTH_FORMAT_DESC="Format must be \033[32musername:password\033[0m, separated by a colon!"
|
||||
ADV_AUTH_WARN="Avoid using special characters to prevent unexpected issues!"
|
||||
ADV_AUTH_REMOVE_HINT="Enter 0 to remove authentication"
|
||||
ADV_AUTH_INPUT="Please enter HTTP / SOCKS5 username and password"
|
||||
ADV_AUTH_REMOVED="Authentication information has been removed!"
|
||||
ADV_AUTH_ENV_CONFLICT="Please disable local hijacking or switch to enhanced mode first!"
|
||||
ADV_AUTH_INVALID="Invalid input format. Please try again!"
|
||||
# Host
|
||||
ADV_HOST_WARN_LAN="If your LAN subnet is not 192.168.x / 172.16.x / 10.x, you must modify it!"
|
||||
ADV_HOST_WARN_CHANGE="If the local host address changes after setting, please update it again!"
|
||||
ADV_HOST_INPUT="Please enter a custom host address (enter 0 to remove)"
|
||||
ADV_HOST_REMOVED="Custom host address removed. Please rerun the script to auto-detect!"
|
||||
ADV_HOST_INVALID="Invalid input. Please check carefully!"
|
||||
# Routing table
|
||||
ADV_TABLE_WARN="Only required when routing table conflicts occur in Tproxy, Tun, or Mixed mode!"
|
||||
ADV_TABLE_INPUT="Please enter the routing table ID (do not modify unless necessary, recommended 102-125)"
|
||||
# =================================================
|
||||
# IPv6
|
||||
# =================================================
|
||||
IPV6_REDIR="IPv6 Transparent Routing (Hijack IPv6 Traffic)"
|
||||
IPV6_DNS="IPv6 DNS Resolution (Return IPv6 addresses)"
|
||||
SET_YES="Yes"
|
||||
SET_NO_BACK="No, back"
|
||||
SET_SKIP_CERT_NOW="Current status: "
|
||||
SET_ENABLED="enabled"
|
||||
SET_DISABLED="disabled"
|
||||
SET_SKIP_CERT_ENABLE_Q=" skip local certificate verification. Enable now?"
|
||||
SET_SKIP_CERT_DISABLE_Q=" skip local certificate verification. Disable now?"
|
||||
SET_SNIFFER_NOW="Current status: "
|
||||
SET_SNIFFER_ENABLE_Q=" domain sniffer. Enable now?"
|
||||
SET_SNIFFER_DISABLE_Q=" domain sniffer. Disable now?"
|
||||
SET_LANG_ZH="简体中文"
|
||||
SET_LANG_EN="English"
|
||||
SET_SWITCH_RERUN="Switched successfully! Please re-run the script!"
|
||||
SET_SWITCH_OK="Switched successfully!"
|
||||
SET_MODE_SUFFIX="mode"
|
||||
SET_SET_TO="Set to "
|
||||
SET_BYPASS_TCP="TCP bypass forwarding"
|
||||
SET_BYPASS_TU="TCP&UDP bypass forwarding"
|
||||
SET_BYPASS_TCP_DESC="forward TCP traffic only to bypass router"
|
||||
SET_BYPASS_TU_DESC="forward TCP&UDP traffic to bypass router"
|
||||
SET_FW_AREA_CURRENT="Current hijack scope: "
|
||||
SET_WARN="Notice:"
|
||||
SET_DESC="Description:"
|
||||
SET_BYPASS_WARN_1="This feature has risks. Do not use without network knowledge!"
|
||||
SET_BYPASS_WARN_2="For UDP proxy, ensure bypass router runs a UDP-capable mode!"
|
||||
SET_BYPASS_WARN_3="With systemd startup, core still runs idle. Conservative mode is recommended!"
|
||||
SET_BYPASS_DESC_1="This mode does not start core; it only configures firewall forwarding and downstream devices need no extra gateway/DNS setup"
|
||||
SET_BYPASS_DESC_2="Supports firewall routing split and device filtering, supports some cron tasks, but not IPv6"
|
||||
SET_INPUT_BYPASS_IPV4="Please enter bypass-router IPv4 address"
|
||||
SET_TIPS_ENTER_BACK="Tip: press Enter directly to return"
|
||||
100
scripts/lang/en/5_task.lang
Normal file
100
scripts/lang/en/5_task.lang
Normal file
@@ -0,0 +1,100 @@
|
||||
# Recommended task configuration
|
||||
TASK_RECOM_TITLE="Enable the following recommended automatic tasks?"
|
||||
|
||||
TASK_RECOM_ITEM_1="Save Dashboard select every 10 minutes"
|
||||
TASK_RECOM_ITEM_2="Synchronize NTP after service startup"
|
||||
TASK_RECOM_ITEM_3="Daily service restart at 03:00"
|
||||
TASK5_RUN_TASK=" run task: "
|
||||
TASK5_CONFIRM_ADD_CRON="Confirm adding scheduled task?"
|
||||
TASK5_YES="Yes"
|
||||
TASK5_NO="No"
|
||||
TASK5_TASK_PREFIX="Task ["
|
||||
TASK5_TASK_ADDED="] \033[32madded!\033[0m"
|
||||
TASK5_USER_ADD_HINT1="Command may contain spaces, please ensure it is executable!"
|
||||
TASK5_USER_ADD_HINT2="Do not append conditions. Set conditions after adding command."
|
||||
TASK5_USER_ADD_HINT3="You can also edit "
|
||||
TASK5_USER_ADD_HINT4=" manually to add commands"
|
||||
TASK5_INPUT_CMD="Please input command directly"
|
||||
TASK5_OR_BACK="Or input 0 to return"
|
||||
TASK5_INPUT="Please enter"
|
||||
TASK5_CHECK_INPUT="Please check input: "
|
||||
TASK5_INPUT_REMARK="Please enter task remark"
|
||||
TASK5_CUSTOM_TASK="custom_task_"
|
||||
TASK5_CUSTOM_ADDED="Custom task added!"
|
||||
TASK5_INPUT_ERROR="Invalid input, please retry!"
|
||||
TASK5_USER_DEL_HINT1="Input ID to remove custom task (built-in tasks won't be affected)"
|
||||
TASK5_USER_DEL_HINT2="You may also edit "
|
||||
TASK5_NO_CUSTOM_TASK="No custom task has been added yet"
|
||||
TASK5_SELECT_ADD="Please select task to add:"
|
||||
TASK5_SELECT_COND="Select execution condition for task "
|
||||
TASK5_SELECT_COND2=":"
|
||||
TASK5_COND_1="Scheduled task \033[32mweekly\033[0m"
|
||||
TASK5_COND_2="Scheduled task \033[32mdaily\033[0m"
|
||||
TASK5_COND_3="Scheduled task \033[32mhourly\033[0m"
|
||||
TASK5_COND_4="Scheduled task \033[32mminutely\033[0m"
|
||||
TASK5_WARN_LINE1=" --------- \033[31mWARNING\033[0m ---------"
|
||||
TASK5_WARN_LINE2=" Do not use advanced triggers unless you know what you are doing!"
|
||||
TASK5_WARN_LINE3=" ----------------------------------------"
|
||||
TASK5_COND_5="Service \033[33mbefore start\033[0m"
|
||||
TASK5_COND_6="Service \033[33mafter start\033[0m"
|
||||
TASK5_COND_7="Service \033[33mrun every minute\033[0m"
|
||||
TASK5_COND_8="After firewall service \033[33mrestart\033[0m"
|
||||
TASK5_WEEK_HINT1="Input 1~7 for day of week (7=Sunday)"
|
||||
TASK5_WEEK_HINT2="Input like 1,4,0 for Monday/Thursday/Sunday"
|
||||
TASK5_WEEK_HINT3="Input 1~5 for Monday to Friday"
|
||||
TASK5_WEEK_INPUT="Run on which weekday"
|
||||
TASK5_HOUR_INPUT1="Run at which hour of that day (0~23)"
|
||||
TASK5_CRON_WEEK="Weekly "
|
||||
TASK5_CRON_WEEK2=" @ "
|
||||
TASK5_OCLOCK=":00"
|
||||
TASK5_DAY_HINT1="Input 1,7,15 for run at 1/7/15 o'clock"
|
||||
TASK5_DAY_HINT2="Input 6~18 for every hour between 6 and 18"
|
||||
TASK5_HOUR_INPUT2="Run at which hour daily (0~23)"
|
||||
TASK5_MIN_INPUT="Run at which minute (0~59)"
|
||||
TASK5_CRON_DAY="Daily "
|
||||
TASK5_POINT=":"
|
||||
TASK5_MINUTE=""
|
||||
TASK5_EVERY_HOUR_INPUT="Run every how many hours (1~23)"
|
||||
TASK5_EVERY="Every "
|
||||
TASK5_HOUR=" hour(s)"
|
||||
TASK5_EVERY_MIN_INPUT="Run every how many minutes (1~59)"
|
||||
TASK5_MIN=" minute(s)"
|
||||
TASK5_BFSTART="Before service start "
|
||||
TASK5_AFSTART="After service start "
|
||||
TASK5_RUNNING_HINT1="Input 10 for every 10 mins, 1440 for every 24 hrs"
|
||||
TASK5_RUNNING_HINT2="Values >60 mins will be rounded by hour under current timezone"
|
||||
TASK5_RUNNING_INPUT="Run every how many minutes (1~1440)"
|
||||
TASK5_RUNNING_PREFIX="During runtime every "
|
||||
TASK5_AFFW_HINT="This will inject startup code into /etc/init.d/firewall"
|
||||
TASK5_CONFIRM_CONTINUE="Continue?"
|
||||
TASK5_AFFW_PREFIX="After firewall restart "
|
||||
TASK5_GUARD_WORD="guard"
|
||||
TASK5_OLD_PREFIX="legacy-"
|
||||
TASK5_NONE_TO_MANAGE="No task available to manage!"
|
||||
TASK5_ADDED_TASKS="Added tasks:"
|
||||
TASK5_CLEAR_OLD="Clear legacy tasks"
|
||||
TASK5_CLEAR_ALL="Clear task list"
|
||||
TASK5_OLD_CLEARED="Legacy tasks cleared!"
|
||||
TASK5_ALL_CLEARED="All tasks cleared!"
|
||||
TASK5_OLD_NOT_SUPPORT="Legacy tasks cannot be managed, remove them?"
|
||||
TASK5_NO_BACK="No, return"
|
||||
TASK5_CURRENT_TASK="Current task: "
|
||||
TASK5_EDIT_TASK="\033[33mEdit\033[0m current task"
|
||||
TASK5_DEL_TASK="\033[31mDelete\033[0m current task"
|
||||
TASK5_RUN_ONCE="\033[32mRun once\033[0m now"
|
||||
TASK5_VIEW_RECORD="View \033[33mexecution record\033[0m"
|
||||
TASK5_RUN_OK="success!"
|
||||
TASK5_RUN_FAIL="failed!"
|
||||
TASK5_RECORD_NOT_FOUND="No execution record found!"
|
||||
TASK5_USER_FILE_HEADER="#task_id(>200 in order)#task_command#task_desc(no # in cmd or desc)"
|
||||
TASK5_MENU_TITLE="Scheduled Tasks"
|
||||
TASK5_MENU_1="Add \033[32mautomatic task\033[0m"
|
||||
TASK5_MENU_2="Manage \033[33mtask list\033[0m"
|
||||
TASK5_MENU_3="View \033[36mtask logs\033[0m"
|
||||
TASK5_MENU_4="Configure \033[36mlog push\033[0m"
|
||||
TASK5_MENU_5="Add \033[33mcustom task\033[0m"
|
||||
TASK5_MENU_6="Delete \033[33mcustom task\033[0m"
|
||||
TASK5_MENU_7="Use \033[32mrecommended settings\033[0m"
|
||||
TASK5_TASK_GREP="Task ["
|
||||
TASK5_LOG_NOT_FOUND="No task-related log found!"
|
||||
TASK5_PUSH_HINT="Please configure push channel and switch in log tools"
|
||||
67
scripts/lang/en/6_core_config.lang
Normal file
67
scripts/lang/en/6_core_config.lang
Normal file
@@ -0,0 +1,67 @@
|
||||
CORECFG_TITLE="Configuration Management"
|
||||
CORECFG_HINT_SELECT_PROVIDER="Input a number to manage corresponding provider"
|
||||
CORECFG_MENU_A="\033[32mAdd provider\033[0m (subscription/share link/local file)"
|
||||
CORECFG_MENU_B="\033[36mGenerate local config\033[0m"
|
||||
CORECFG_MENU_C="\033[33mGenerate online config\033[0m"
|
||||
CORECFG_MENU_D="\033[31mClear provider list\033[0m"
|
||||
CORECFG_MENU_E="\033[36mCustom config file\033[0m"
|
||||
CORECFG_CORE_ONLY="Only for Mihomo/singboxr core, please switch core!"
|
||||
CORECFG_ADD_PROVIDER_FIRST="Please add provider first!"
|
||||
CORECFG_CLEAR_WARN="Warning: this will delete all providers and cannot be undone!"
|
||||
CORECFG_CLEAR_CONFIRM="Confirm clearing provider list:"
|
||||
CORECFG_YES="Yes"
|
||||
CORECFG_NO="No"
|
||||
CORECFG_NO_BACK="No, return"
|
||||
CORECFG_INPUT_ALNUM="Please input letter or number"
|
||||
CORECFG_INPUT="Please enter"
|
||||
CORECFG_FILL_REQUIRED="Please complete required fields first!"
|
||||
CORECFG_START_APPLY="Start service to apply config now?"
|
||||
CORECFG_PROVIDER_SUPPORT="Supports adding subscription/share link/local file as provider"
|
||||
CORECFG_SET_NAME="Set \033[36mname/alias\033[0m\t"
|
||||
CORECFG_SET_LINK="Set \033[32mlink/path\033[0m:\t"
|
||||
CORECFG_SET_OVERRIDE="Set \033[33mlocal generation override\033[0m"
|
||||
CORECFG_SAVE_PROVIDER="\033[36mSave this provider\033[0m"
|
||||
CORECFG_DEL_PROVIDER="\033[31mDelete this provider\033[0m"
|
||||
CORECFG_MORE_CONFIG_HINT="For detailed settings below, go to corresponding feature page."
|
||||
CORECFG_GEN_LOCAL_ONE="\033[32mLocal generate\033[0m config with this provider only"
|
||||
CORECFG_GEN_ONLINE_ONE="\033[33mOnline generate\033[0m config with this provider only"
|
||||
CORECFG_GET_ONLINE_DIRECT="Fetch this config online directly (without conversion)"
|
||||
CORECFG_USE_DIRECT="Use this file directly as config (without local generation)"
|
||||
CORECFG_NAME_HINT="Note:\nName/alias cannot duplicate, cannot be pure digits, and should not be too long!"
|
||||
CORECFG_INPUT_NAME="Please input name/alias"
|
||||
CORECFG_OR_BACK="or input 0 to return"
|
||||
CORECFG_LINK_HINT1="\033[33mSubscription link\033[0m:\nClash config subscription URL starting with https/http"
|
||||
CORECFG_LINK_HINT2="\033[36mShare link\033[0m:"
|
||||
CORECFG_LINK_HINT3="\033[33mLocal file\033[0m:\nMust be placed under "
|
||||
CORECFG_LINK_HINT4=""
|
||||
CORECFG_LINK_HINT5="\033[36mBase64 \033[0m:\nPlease write to local file directly"
|
||||
CORECFG_INPUT0_BACK="Input 0 to return"
|
||||
CORECFG_SELECT_FILE_OR_LINK="Select file or input link"
|
||||
CORECFG_INPUT_LINK="Please input link directly"
|
||||
CORECFG_DANGER1="Warning:\nThis feature is incompatible with skip certificate verification"
|
||||
CORECFG_DANGER2="Please make sure you fully understand what you are doing"
|
||||
CORECFG_DANGER_CONFIRM="I confirm I can troubleshoot by myself"
|
||||
CORECFG_INTERVAL1="Set \033[33mhealth-check interval\033[0m:\t"
|
||||
CORECFG_INTERVAL2="Set \033[36mauto-update interval\033[0m:\t"
|
||||
CORECFG_MIN="min"
|
||||
CORECFG_HOUR="hour"
|
||||
CORECFG_SET_UA="Set \033[33mbrowser UA\033[0m:\t"
|
||||
CORECFG_SET_EXCLUDE="Set \033[31mexclude regex\033[0m:\t"
|
||||
CORECFG_SET_INCLUDE="Set \033[32minclude regex\033[0m:\t"
|
||||
CORECFG_CUR_INTERVAL="Current health-check interval:"
|
||||
CORECFG_INPUT_INTERVAL1="Input health-check interval (minutes)"
|
||||
CORECFG_RESET_INTERVAL1="or input r to reset to default (3 min)"
|
||||
CORECFG_INPUT_INTERVAL2="Input auto-update interval (hours)"
|
||||
CORECFG_RESET_INTERVAL2="or input r to reset to default (12 hours)"
|
||||
CORECFG_CUR_UA_NONE="Current browser UA: none"
|
||||
CORECFG_CUR_UA="Current browser UA: "
|
||||
CORECFG_INPUT_UA="Input browser UA"
|
||||
CORECFG_RESET_UA="or input r to reset UA to default (clash.meta)"
|
||||
CORECFG_CUR_EXCLUDE_NONE="Current exclude rule: none"
|
||||
CORECFG_CUR_EXCLUDE="Current exclude rule: "
|
||||
CORECFG_INPUT_EXCLUDE="Input exclude keyword(s) (regex supported, no spaces)"
|
||||
CORECFG_CLEAR_EXCLUDE="or input c to clear exclude rule"
|
||||
CORECFG_CUR_INCLUDE_NONE="Current include rule: none"
|
||||
CORECFG_CUR_INCLUDE="Current include rule: "
|
||||
CORECFG_INPUT_INCLUDE="Input include keyword(s) (regex supported, no spaces)"
|
||||
CORECFG_CLEAR_INCLUDE="or input c to clear include rule"
|
||||
97
scripts/lang/en/7_gateway.lang
Normal file
97
scripts/lang/en/7_gateway.lang
Normal file
@@ -0,0 +1,97 @@
|
||||
GW_TITLE="Access & Control Menu"
|
||||
GW_WARN="Notice: "
|
||||
GW_FW_VPS_HINT="If running on a VPS, also allow related ports in your VPS security policy."
|
||||
GW_FW_PORT_LIMIT="Up to 10 allowed ports are supported. Please remove some first."
|
||||
GW_INPUT_ALLOW_PORT="Enter the port to allow"
|
||||
GW_OK="Done"
|
||||
GW_CORE_UNSUPPORTED=" core does not support this feature yet, please switch core first!"
|
||||
GW_TG_DONE_PREFIX="Telegram bot setup completed! Use"
|
||||
GW_TG_DONE_SUFFIX="to open the function menu!"
|
||||
GW_SET="Configured"
|
||||
GW_BOUND="Bound"
|
||||
GW_INPUT_PORT_DEL0="Enter port (0 to delete)"
|
||||
GW_INPUT_WSPATH="Enter ws-path (0 to delete)"
|
||||
GW_INPUT_UUID="Enter UUID (0 to delete)"
|
||||
GW_INPUT_HOST="Enter your public IP (v4/v6) or domain"
|
||||
GW_SHARE_LINK_HINT="Your share link (do not share casually):"
|
||||
GW_MENU_FW_WAN="Configure WAN Firewall"
|
||||
GW_MENU_TG_BOT="Configure Telegram Control Bot"
|
||||
GW_MENU_DDNS="Configure DDNS Domain"
|
||||
GW_MENU_VMESS="Custom Public Vmess Inbound"
|
||||
GW_MENU_SHADOWSOCKS="Custom Public ShadowSocks Inbound"
|
||||
GW_MENU_TS="Configure Tailscale Intranet (Singbox only)"
|
||||
GW_MENU_WG="Configure Wireguard Client (Singbox only)"
|
||||
GW_FW_STOP_WARN="WAN firewall requires stopping the service first"
|
||||
GW_CONFIRM_CONTINUE="Continue?"
|
||||
GW_YES="Yes"
|
||||
GW_NO="No"
|
||||
GW_NO_BACK="No, back to previous menu"
|
||||
GW_FW_MANUAL_PORTS="Manual allowed ports: "
|
||||
GW_FW_AUTO_PORTS="Auto allowed ports: "
|
||||
GW_FW_DEFAULT_BLOCK="Default blocked ports: "
|
||||
GW_FW_TOGGLE="Enable/Disable WAN firewall: "
|
||||
GW_FW_ADD_PORT="Add allowed ports (can include default blocked ports)"
|
||||
GW_FW_REMOVE_PORT="Remove a specific manual port"
|
||||
GW_FW_CLEAR_PORTS="Clear all manual allowed ports"
|
||||
GW_FW_DISABLE_CONFIRM="Confirm disabling firewall?"
|
||||
GW_FW_DISABLE_RISK="This can pose a serious security risk!"
|
||||
GW_ERR_DUP_PORT="Invalid input! Do not add duplicates!"
|
||||
GW_ERR_PORT_RANGE="Invalid input! Enter a valid number (1-65535)!"
|
||||
GW_ERR_INPUT="Invalid input!"
|
||||
GW_INPUT_REMOVE_PORT="Enter the port to remove"
|
||||
GW_INPUT_0_BACK="Or enter 0 to go back"
|
||||
GW_ERR_PORT_NOT_FOUND="Please enter a port that was added!"
|
||||
GW_TG_CMD_MENU="Open ShellCrash menu"
|
||||
GW_TG_CMD_HELP="View help"
|
||||
GW_TG_WARN="Due to network conditions, this bot only runs when the service is started!"
|
||||
GW_TG_TOGGLE="Enable/Disable TG-BOT service"
|
||||
GW_TG_BIND="TG-BOT binding"
|
||||
GW_TG_MENUPUSH="Push menu on start"
|
||||
GW_TG_BIND_FIRST="Please bind TG-BOT first!"
|
||||
GW_TG_BOUND_DETECTED="Detected an existing TG push bot binding"
|
||||
GW_TG_USE_DIRECT="Use it directly?"
|
||||
GW_INBOUND_WARN_PORT="The configured port will be added to the WAN firewall and allowed automatically!"
|
||||
GW_INBOUND_WARN_BASIC="This script provides basic features only. Use custom config for more needs!"
|
||||
GW_INBOUND_WARN_ILLEGAL="Do not use it for illegal proxying. You are responsible for consequences!"
|
||||
GW_VMS_TOGGLE="Enable/Disable Vmess inbound"
|
||||
GW_SET_LISTEN_PORT="Set listen port:"
|
||||
GW_SET_WSPATH="Set WS-path (optional):"
|
||||
GW_SET_UUID="Set key-uuid:"
|
||||
GW_GEN_RANDOM_KEY="Generate random key"
|
||||
GW_SET_OBFS_HOST="Set obfs host (optional):"
|
||||
GW_GEN_SHARE_LINK="Generate share link"
|
||||
GW_FILL_REQUIRED="Please complete required settings first!"
|
||||
GW_ERR_WSPATH="Invalid path. It must start with '/'."
|
||||
GW_ERR_UUID="Invalid UUID format. Re-enter or use random generation."
|
||||
GW_INPUT_OBFS_HOST="Enter obfs host (0 to delete)"
|
||||
GW_SS_TOGGLE="Enable/Disable ShadowSocks inbound"
|
||||
GW_SS_SELECT_CIPHER="Select cipher to use:"
|
||||
GW_SS_SET_PWD="Set password:"
|
||||
GW_SS_2022_NOTE_HEADER=" - - - - - - -\033[31mNotice\033[0m- - - - - - -"
|
||||
GW_SS_2022_REQUIRE=" 2022 ciphers require a randomly generated password!"
|
||||
GW_SS_2022_PASSWORD_ONLY="2022 ciphers require a script-generated password!"
|
||||
GW_TS_WARN="The default core is built without the Tailscale module to save memory.\nPlease switch to a full custom core if you need it!"
|
||||
GW_TS_KEY_URL="Create key:\033[32;4mhttps://login.tailscale.com/admin/settings/keys\033[0m"
|
||||
GW_TS_ALLOW_URL="Allow advertised routes for non-local targets:\033[32;4mhttps://login.tailscale.com\033[0m"
|
||||
GW_TS_SUBNET_EXIT_HINT="For non-local targets, use Subnet or EXIT-NODE mode in the client"
|
||||
GW_TS_TOGGLE="Enable/Disable Tailscale service"
|
||||
GW_TS_SET_AUTHKEY="Set Auth Key"
|
||||
GW_TS_SUBNET="Advertise subnet routes"
|
||||
GW_TS_EXIT_NODE="Advertise all traffic (EXIT-NODE)"
|
||||
GW_TS_HOSTNAME="Set device name (optional)"
|
||||
GW_TS_SET_KEY_FIRST="Please set the Auth Key first!"
|
||||
GW_TS_INPUT_KEY="Enter Auth Key (0 to delete)"
|
||||
GW_TS_EXITNODE_WARN="The official exitnode DNS has a bug. Either enable domain sniffing and disable Tailscale DNS,\nor set Globalname servers to this device subnet IP in the web UI and enable override."
|
||||
GW_TS_INPUT_NAME="Enter the device name to show in Tailscale"
|
||||
GW_WG_WARN="The default core is built without the WireGuard module to save memory.\nPlease switch to a full custom core if you need it!"
|
||||
GW_WG_TOGGLE="Enable/Disable Wireguard service"
|
||||
GW_WG_SET_ENDPOINT="Set Endpoint address:"
|
||||
GW_WG_SET_ENDPOINT_PORT="Set Endpoint port:"
|
||||
GW_WG_SET_PUBLIC="Set PublicKey:"
|
||||
GW_WG_SET_PRESHARED="Set PresharedKey:"
|
||||
GW_WG_SET_PRIVATE="Set PrivateKey:"
|
||||
GW_WG_SET_IPV4="Set IPv4 address:"
|
||||
GW_WG_SET_IPV6="Optional IPv6 address:"
|
||||
GW_INPUT_TEXT_DEL0="Enter value (Enter or 0 to delete)"
|
||||
GW_INPUT_PLAIN="Enter"
|
||||
GW_INPUT_PWD_DEL0="Enter password (0 to delete)"
|
||||
11
scripts/lang/en/8_tools.lang
Normal file
11
scripts/lang/en/8_tools.lang
Normal file
@@ -0,0 +1,11 @@
|
||||
TOOLS_TITLE="Tools & Optimization"
|
||||
TOOLS_SSH_DISABLE="Disable"
|
||||
TOOLS_SSH_ENABLE="Enable"
|
||||
TOOLS_ERR_PORT="Invalid input! Please enter a valid number (1000-65535)!"
|
||||
TOOLS_ERR_PORT_OCCUPIED="This port is occupied by another process, please try another one!"
|
||||
TOOLS_SSH_SET_OK="Set successfully, please re-enable WAN SSH access!"
|
||||
TOOLS_SSH_ENABLED="WAN SSH access enabled!"
|
||||
TOOLS_SSH_DISABLED="WAN SSH access disabled!"
|
||||
TOOLS_DISABLE="Disable"
|
||||
TOOLS_ENABLE="Enable"
|
||||
TOOLS_CONFIGURED="Configured"
|
||||
49
scripts/lang/en/9_upgrade.lang
Normal file
49
scripts/lang/en/9_upgrade.lang
Normal file
@@ -0,0 +1,49 @@
|
||||
UPG_ERR_TRY_OTHER_SOURCE="Please switch to another source and try downloading again!"
|
||||
UPG_ERR_LOCAL_INSTALL="Or refer to \033[32;4mhttps://juewuy.github.io/bdaz\033[0m for local installation!"
|
||||
UPG_TITLE="Update & Support"
|
||||
UPG_CUR_DIR_SPACE="Current directory"
|
||||
UPG_LOW_SPACE_HINT="Low free space in current directory, consider enabling low-flash mode!"
|
||||
UPG_MENU_SCRIPT="Update "
|
||||
UPG_MENU_SCRIPT_NAME="script"
|
||||
UPG_MENU_CORE="Switch/Update "
|
||||
UPG_MENU_CORE_NAME="core"
|
||||
UPG_MENU_GEO="Install/Update local "
|
||||
UPG_MENU_GEO_NAME="database files"
|
||||
UPG_MENU_DB="Install/Update local "
|
||||
UPG_MENU_DB_NAME="Dashboard"
|
||||
UPG_MENU_CRT="Install/Update local "
|
||||
UPG_MENU_CRT_NAME="certificates"
|
||||
UPG_MENU_PAC=" proxy view"
|
||||
UPG_MENU_SOURCE="Switch "
|
||||
UPG_MENU_SOURCE_NAME="source and branch"
|
||||
UPG_MENU_UNINSTALL="Uninstall ShellCrash"
|
||||
UPG_MENU_THANKS="Thanks list"
|
||||
UPG_PAC_LINK="PAC URL: "
|
||||
UPG_PAC_GUIDE="PAC guide: "
|
||||
UPG_THANKS_TITLE="Thanks to the following projects and developers!"
|
||||
UPG_THANKS_SPECIAL="Special thanks: \033[36mall contributors and sponsors!\033[0m"
|
||||
UPG_CHECKING="Checking updates..."
|
||||
UPG_CHECK_OK="Update check succeeded"
|
||||
UPG_CHECK_FAIL="Update check failed! Please switch source and retry!"
|
||||
UPG_DOWNLOAD_FAIL="Download failed!"
|
||||
UPG_EXTRACTING="Extracting files..."
|
||||
UPG_EXTRACT_FAIL="Extraction failed!"
|
||||
UPG_SCRIPT_OK="Script update succeeded!"
|
||||
UPG_SCRIPT_WARN="Note: service will be stopped during update!"
|
||||
UPG_SCRIPT_CUR_VER="Current script version: "
|
||||
UPG_SCRIPT_NEW_VER="Latest script version: "
|
||||
UPG_UPDATE_NOW="Update now"
|
||||
UPG_SCRIPT_MGR_OK="Manager script updated successfully!"
|
||||
UPG_CPUCORE_HINT1="Use only when CPU architecture detection fails or core cannot run!"
|
||||
UPG_CPUCORE_HINT2="Not sure how to get core arch?"
|
||||
UPG_CPUCORE_HINT3="Refer to: "
|
||||
UPG_CPUCORE_LIST="Available online CPU architectures:"
|
||||
UPG_CPUCORE_ERR="Please enter a valid CPU architecture!"
|
||||
UPG_CORETYPE_CONFIRM="Please confirm custom core type:"
|
||||
UPG_CORE_SWITCH_PREFIX="Switched from "
|
||||
UPG_CORE_SWITCH_MID=" to "
|
||||
UPG_CORE_SWITCH_SUFFIX=" core"
|
||||
UPG_CORE_SWITCH_WARN="Geo DB and yaml/json configs are not compatible between the two cores"
|
||||
UPG_CORE_SWITCH_KEEP="Keep related database files?"
|
||||
UPG_KEEP="Keep"
|
||||
UPG_NOT_KEEP="Do not keep"
|
||||
68
scripts/lang/en/bot_tg.lang
Normal file
68
scripts/lang/en/bot_tg.lang
Normal file
@@ -0,0 +1,68 @@
|
||||
BOT_TG_PRIVATE_HINT="Please apply for a Telegram bot via \033[32;4mhttps://t.me/BotFather\033[0m and get its \033[36mAPI TOKEN\033[0m first"
|
||||
BOT_TG_INPUT_TOKEN="Please enter your API TOKEN"
|
||||
BOT_TG_PRIVATE_TOP="Please send to \033[32myour bot\033[33m, NOT BotFather!\033[0m"
|
||||
BOT_TG_PUBLIC_HINT="Please message the bot: \033[32;4mhttps://t.me/ShellCrashtg_bot\033[0m"
|
||||
BOT_TG_SET_DONE="Telegram log push has been configured!"
|
||||
BOT_TG_CHATID_RETRY_PREFIX="Attempt"
|
||||
BOT_TG_CHATID_RETRY_SUFFIX="to get chat ID failed, retrying..."
|
||||
BOT_TG_SEND_KEY="Send this key:"
|
||||
BOT_TG_SENT_CONFIRM="I have sent it"
|
||||
BOT_TG_CHATID_FAIL="Unable to get chat ID. Please reconfigure or input ChatID manually!"
|
||||
BOT_TG_CHATID_MANUAL_HINT="Usually visit"
|
||||
BOT_TG_CHATID_MANUAL_HINT2="to find ChatID"
|
||||
BOT_TG_INPUT_CHATID="Please input ChatID manually"
|
||||
BOT_TG_CHATID_RECONFIG="Unable to get chat ID. Please reconfigure!"
|
||||
BOT_TG_CRON_NAME="TG_BOT watchdog"
|
||||
|
||||
BOT_TG_HELP_GROUP="Group chat:"
|
||||
BOT_TG_HELP_PROJECT="Project:"
|
||||
BOT_TG_HELP_GUIDE="Guide:"
|
||||
BOT_TG_HELP_COFFEE="Buy me a coffee:"
|
||||
BOT_TG_HELP_AIRPORT="Partner provider:"
|
||||
BOT_TG_RUN_ON="🟢Running"
|
||||
BOT_TG_RUN_OFF="🟡Stopped"
|
||||
BOT_TG_WELCOME="Welcome to ShellCrash!"
|
||||
BOT_TG_SERVICE=" service "
|
||||
BOT_TG_MEM_USED="Memory usage: "
|
||||
BOT_TG_RUNNING_TIME="Running: "
|
||||
BOT_TG_SELECT_ACTION="Please choose:"
|
||||
BOT_TG_SELECT_FILE="Please choose file upload/download action:"
|
||||
BOT_TG_BTN_START="✈️ Enable redirect"
|
||||
BOT_TG_BTN_PURE="💧 Pure mode"
|
||||
BOT_TG_BTN_RESTART="🕹 Restart service"
|
||||
BOT_TG_BTN_LOG="📄 View logs"
|
||||
BOT_TG_BTN_TRANSFER="🔃 File transfer"
|
||||
BOT_TG_BTN_GET_LOG="📥 Download log"
|
||||
BOT_TG_BTN_GET_BAK="💾 Backup settings"
|
||||
BOT_TG_BTN_GET_CFG="⬇️ Download config"
|
||||
BOT_TG_BTN_UP_CORE="🪐 Upload core"
|
||||
BOT_TG_BTN_UP_BAK="🔄 Restore settings"
|
||||
BOT_TG_BTN_UP_CFG="⬆️ Upload config"
|
||||
BOT_TG_NO_CURL="⚠️ curl is missing on this device, only upload is supported!"
|
||||
BOT_TG_UPLOAD_OK="success! Service will restart soon!"
|
||||
BOT_TG_UPLOAD_FAIL="failed, please check file and retry!"
|
||||
BOT_TG_CORE_UPDATE="Core update "
|
||||
BOT_TG_CFG_RESTORED="Config restored, please restart service manually!"
|
||||
BOT_TG_RESTORE_FAIL="Restore failed while extracting backup, please retry!"
|
||||
BOT_TG_CFG_UPLOADED="Config uploaded, please restart service manually!"
|
||||
BOT_TG_UPLOAD_FAIL2="Upload failed, please retry!"
|
||||
BOT_TG_NET_UPLOAD_FAIL="Network error, upload failed! Please retry!"
|
||||
BOT_TG_FILE_FORMAT_FAIL="File format mismatch, upload failed!"
|
||||
BOT_TG_FW_ENABLED="ShellCrash redirect mode "
|
||||
BOT_TG_FW_ENABLED_SUFFIX=" enabled!"
|
||||
BOT_TG_SWITCH_PURE="Switched to pure mode!"
|
||||
BOT_TG_SERVICE_RESTARTED="ShellCrash service restarted!"
|
||||
BOT_TG_UNFINISHED="Error: unfinished feature!"
|
||||
BOT_TG_SEND_CORE="Please send core file ending with tar.gz/.gz/.upx for ["
|
||||
BOT_TG_SEND_CORE_SUFFIX="]"
|
||||
BOT_TG_SEND_BAK="Please send backup file in [.tar.gz] format!"
|
||||
BOT_TG_SEND_CFG="Please send config file in ["
|
||||
BOT_TG_SEND_CFG_SUFFIX="] format, custom config is supported"
|
||||
BOT_TG_SWITCH_TO="Switched to "
|
||||
BOT_TG_ALREADY="Already in "
|
||||
BOT_TG_ALREADY_PURE="Already in pure mode!"
|
||||
BOT_TG_SERVICE_RESTARTED_SHORT="🔄 Service restarted"
|
||||
BOT_TG_LOG_CONTENT="📄 Logs (task logs filtered):"
|
||||
BOT_TG_TASK_WORD="Task"
|
||||
BOT_TG_INPUT_SUB="✏ Please enter new subscription URL:"
|
||||
BOT_TG_SUB_UPDATED="Subscription update finished:"
|
||||
3
scripts/lang/en/check_port.lang
Normal file
3
scripts/lang/en/check_port.lang
Normal file
@@ -0,0 +1,3 @@
|
||||
CHECK_PORT_RANGE_ERR="Invalid input! Please enter a valid value (1-65535)!"
|
||||
CHECK_PORT_DUP_ERR="Invalid input! Please do not enter duplicate ports!"
|
||||
CHECK_PORT_OCCUPIED_ERR="This port is already occupied by another process. Please enter a different one!"
|
||||
13
scripts/lang/en/common.lang
Normal file
13
scripts/lang/en/common.lang
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
COMMON_INPUT="Please enter a number"
|
||||
COMMON_INPUT_L="Enter a letter or a number"
|
||||
COMMON_INPUT_R="Enable? (1/0) > "
|
||||
COMMON_BACK="Back"
|
||||
COMMON_SUCCESS="Setup Success!"
|
||||
COMMON_FAILED="Setup failed!"
|
||||
COMMON_UNSET="Not set"
|
||||
COMMON_MOD="Mod"
|
||||
COMMON_ERR_NUM="Please enter a valid number!"
|
||||
COMMON_ERR_LETTER="Please enter a valid letter or number!"
|
||||
COMMON_ERR_INPUT="Invalid input, please try again!"
|
||||
COMMON_ERR_CANCEL="Operation cancelled!"
|
||||
35
scripts/lang/en/ddns.lang
Normal file
35
scripts/lang/en/ddns.lang
Normal file
@@ -0,0 +1,35 @@
|
||||
DDNS_WELCOME="Welcome to DDNS!"
|
||||
DDNS_ADD_DONE="Service has been added!"
|
||||
DDNS_INPUT_DOMAIN="Please enter your domain"
|
||||
DDNS_INPUT_USER="Please enter username or email"
|
||||
DDNS_INPUT_PASS="Please enter password or token"
|
||||
DDNS_INPUT_CHECK_INTERVAL="Please enter check interval (minutes, default 10)"
|
||||
DDNS_INPUT_FORCE_INTERVAL="Please enter force update interval (hours, default 24)"
|
||||
DDNS_CONFIRM_INFO="Please confirm the following info:"
|
||||
DDNS_FIELD_SERVICE="Provider:"
|
||||
DDNS_FIELD_DOMAIN="Domain:"
|
||||
DDNS_FIELD_USER="Username:"
|
||||
DDNS_FIELD_INTERVAL="Check interval:"
|
||||
DDNS_CONFIRM_ADD="Confirm add:"
|
||||
DDNS_YES="Yes"
|
||||
DDNS_REINPUT="No, re-enter"
|
||||
DDNS_LIST_NOT_FOUND="DDNS list file not found, trying online update..."
|
||||
DDNS_DOWNLOAD_FAILED="Download failed, please retry!"
|
||||
DDNS_SELECT_PROVIDER="Please select provider:"
|
||||
DDNS_INPUT_ERROR="Invalid input, please retry!"
|
||||
DDNS_SELECT_NETMODE="Please select network mode:"
|
||||
DDNS_IPV4="IPV4"
|
||||
DDNS_IPV6="IPV6"
|
||||
DDNS_DISABLE="Disable"
|
||||
DDNS_ENABLE="Enable"
|
||||
DDNS_UPDATE_NOW="Update now"
|
||||
DDNS_EDIT_CURRENT="Edit current service"
|
||||
DDNS_CURRENT_SERVICE=" current service"
|
||||
DDNS_REMOVE_CURRENT="Remove current service"
|
||||
DDNS_VIEW_LOG="View logs"
|
||||
DDNS_NOT_SUPPORTED="This feature depends on OpenWrt built-in DDNS service; unsupported on current device."
|
||||
DDNS_LIST_HEADER=" List Domain On IP Address"
|
||||
DDNS_ADD_SERVICE="Add DDNS service"
|
||||
DDNS_EXIT="Exit"
|
||||
DDNS_INPUT_INDEX="Please enter index"
|
||||
DDNS_INPUT_NUM_ERROR="Please enter a valid number!"
|
||||
85
scripts/lang/en/dns.lang
Normal file
85
scripts/lang/en/dns.lang
Normal file
@@ -0,0 +1,85 @@
|
||||
#===== DNS Main Menu =====
|
||||
DNS_CURRENT_MODE="Current DNS running mode:"
|
||||
DNS_RESTART_NOTICE="Changes require a manual service restart to take effect."
|
||||
|
||||
DNS_MODE_MIX_DESC="CN domains use DIRECT-DNS, others use fake-ip"
|
||||
DNS_MODE_ROUTE_DESC="CN domains use DIRECT-DNS, others use PROXY-DNS"
|
||||
DNS_MODE_REDIR_DESC="All domains use DIRECT-DNS"
|
||||
|
||||
DNS_MENU_PROTECT="DNS Leak Protect"
|
||||
DNS_MENU_HOSTS="Hosts Optimization"
|
||||
DNS_MENU_ECS="ECS Optimization"
|
||||
DNS_MENU_REDIR="DNS Redirect Port"
|
||||
|
||||
DNS_PROTECT_DESC="May cause slow connections on some websites when enabled"
|
||||
DNS_HOSTS_DESC="Use local hosts file and hijack NTP service"
|
||||
DNS_ECS_DESC="Reduce wasted traffic caused by CDN misrouting"
|
||||
DNS_REDIR_PORT_DESC="Used for compatibility with third-party DNS services"
|
||||
|
||||
DNS_FAKEIP_MENU="Manage Fake-IP Filter List"
|
||||
DNS_ADV_MENU="Configure DNS Servers"
|
||||
|
||||
DNS_SET_OK="DNS mode has been set to"
|
||||
DNS_CORE_UNSUPPORTED="The current core does not support this feature."
|
||||
|
||||
#===== DNS Redirect =====
|
||||
DNS_REDIR_WARN="For use with third-party DNS services only (AdGuard, SmartDNS, etc.)"
|
||||
DNS_REDIR_HINT="It is recommended to set the upstream DNS of the third-party service to"
|
||||
DNS_REDIR_INPUT="Enter the listening port of the third-party DNS service (0 to reset)>"
|
||||
DNS_REDIR_NO_SERVICE="No running DNS service detected on this port!"
|
||||
|
||||
#===== Fake-IP =====
|
||||
DNS_FAKEIP_DESC="Used to resolve connectivity issues for certain addresses or applications in Fake-IP mode"
|
||||
DNS_FAKEIP_TIP="The script already includes many built-in entries. Only add problematic addresses."
|
||||
DNS_FAKEIP_EXAMPLE="Examples:\na.b.com\n*.b.com\n*.*.b.com"
|
||||
DNS_FAKEIP_EXIST="Existing Fake-IP filter entries:"
|
||||
DNS_FAKEIP_EMPTY="No Fake-IP filter entries have been added"
|
||||
DNS_FAKEIP_EDIT="Enter a number to remove an entry, or enter an address to add one"
|
||||
|
||||
#===== Advanced DNS =====
|
||||
DNS_ADV_SPLIT="Use '|' or ',' to separate multiple DNS addresses"
|
||||
DNS_ADV_CERT="DoH/DoT requires a local root certificate file"
|
||||
DNS_ADV_SINGBOX_LIMIT="Note: SingBox core only loads the first DNS entry"
|
||||
|
||||
DNS_ADV_EDIT_DIRECT="Edit DIRECT-DNS"
|
||||
DNS_ADV_EDIT_PROXY="Edit PROXY-DNS (queries go through the proxy)"
|
||||
DNS_ADV_EDIT_DEFAULT="Edit DEFAULT-DNS (must be an IP, used to resolve other DNS servers)"
|
||||
DNS_ADV_AUTO_ENCRYPT="Auto-configure Encrypted DNS"
|
||||
DNS_ADV_RESET="Reset to default DNS configuration"
|
||||
|
||||
DNS_INPUT_NEW="Enter new DNS address>"
|
||||
DNS_IPV6_NOT_SUPPORT="This option does not support IPv6 encrypted DNS!"
|
||||
|
||||
DNS_ENCRYPT_OK="Encrypted DNS has been configured. If DNS issues occur, please reset DNS settings."
|
||||
DNS_CORE_REQUIRE="Please use the Mihomo or SingBox core"
|
||||
DNS_SET_TO="Set to"
|
||||
DNS_PROTECT_NOW="Current status: "
|
||||
DNS_HOSTS_NOW="Current status: "
|
||||
DNS_ENABLED="enabled"
|
||||
DNS_DISABLED="disabled"
|
||||
DNS_PROTECT_DISABLE_Q=" DNS leak protection. Disable now?"
|
||||
DNS_PROTECT_ENABLE_Q=" DNS leak protection. Enable now?"
|
||||
DNS_HOSTS_DISABLE_Q=" Hosts optimization. Disable now?"
|
||||
DNS_HOSTS_ENABLE_Q=" Hosts optimization. Enable now?"
|
||||
DNS_YES="Yes"
|
||||
DNS_RESET_DEFAULT="Reset to defaults"
|
||||
DNS_NO_BACK="No, back"
|
||||
DNS_REMOVE_OK="Removed successfully"
|
||||
DNS_REMOVE_FAIL="Remove failed"
|
||||
DNS_INPUT_REDIR_PORT="Please input bypass-router IPv4 address"
|
||||
DNS_INPUT_REDIR_RESET="or input r to reset DNS redirect port"
|
||||
DNS_INPUT_REDIR_BACK="or input 0 to go back"
|
||||
DNS_INPUT="Please enter"
|
||||
DNS_CONFIRM_ADD="Please confirm the address to add: "
|
||||
DNS_CONFIRM_OK="Confirm"
|
||||
DNS_ADD_OK="Added successfully"
|
||||
DNS_ADD_FAIL="Add failed"
|
||||
DNS_DIRECT_NOW="Current DIRECT-DNS: "
|
||||
DNS_PROXY_NOW="Current PROXY-DNS: "
|
||||
DNS_DEFAULT_NOW="Current DEFAULT-DNS: "
|
||||
DNS_INPUT_DIRECT_NEW="Please input new DIRECT-DNS"
|
||||
DNS_INPUT_DIRECT_RESET="or input r to reset DIRECT-DNS"
|
||||
DNS_INPUT_PROXY_NEW="Please input new PROXY-DNS"
|
||||
DNS_INPUT_PROXY_RESET="or input r to reset PROXY-DNS"
|
||||
DNS_INPUT_DEFAULT_NEW="Please input new DEFAULT-DNS"
|
||||
DNS_INPUT_DEFAULT_RESET="or input r to reset DEFAULT-DNS"
|
||||
83
scripts/lang/en/menu.lang
Normal file
83
scripts/lang/en/menu.lang
Normal file
@@ -0,0 +1,83 @@
|
||||
# ===== Common Prompts =====
|
||||
|
||||
MENU_RESTART_NOTICE="Changes have been detected. Please restart the service!"
|
||||
|
||||
MENU_PORT_CONFLICT_TITLE="The port is occupied by the following process. The core may fail to start!"
|
||||
MENU_PORT_CONFLICT_HINT="Please modify the default port configuration!"
|
||||
|
||||
MENU_CORE_LOADED_OK="Core loaded successfully!"
|
||||
MENU_CORE_LOADED_BAD="The core file is invalid. It may be corrupted or incompatible with the CPU architecture!"
|
||||
MENU_CORE_REMOVED="The core file has been removed. Please verify and upload it again!"
|
||||
|
||||
MENU_CFG_LOADED_OK="Configuration file loaded successfully!"
|
||||
|
||||
MENU_OVERRIDE_WARN="You have disabled configuration overwrite. This will cause many features to be unavailable!"
|
||||
MENU_OVERRIDE_ASK="Cancel the disable setting?"
|
||||
|
||||
# ===== Welcome & Status =====
|
||||
MENU_WELCOME="Welcome to ShellCrash!"
|
||||
|
||||
MENU_RUN_ON=" Running"
|
||||
MENU_RUN_SET="Configured"
|
||||
MENU_RUN_OFF="Stopped"
|
||||
|
||||
MENU_PURE_MOD="Pure"
|
||||
MENU_MOD=" Mod"
|
||||
MENU_IP_DF="Device IP Address"
|
||||
|
||||
MENU_AUTOSTART_ON="Autostart enable!"
|
||||
MENU_AUTOSTART_OFF="Autostart disable!"
|
||||
MENU_AUTOSTART_DEBUG="Debug mode!"
|
||||
|
||||
MENU_MEM_USED="Memory usage: "
|
||||
MENU_RUNNING_TIME="Running time: "
|
||||
|
||||
MENU_TG_CHANNEL="Telegram Channel: "
|
||||
|
||||
# ===== /tmp File Detection =====
|
||||
MENU_TMP_CORE_FOUND="Available core file found:"
|
||||
MENU_TMP_CORE_ASK="Load this core file? (The current service will be stopped)"
|
||||
|
||||
MENU_TMP_CFG_FOUND="Kernel configuration file found:"
|
||||
MENU_TMP_CFG_ASK="Load as the configuration file? (1/0) > "
|
||||
|
||||
# ===== Main Menu =====
|
||||
MENU_MAIN_1="Start / Restart Service"
|
||||
MENU_MAIN_2="Feature Settings"
|
||||
MENU_MAIN_3="Stop Service"
|
||||
MENU_MAIN_4="Startup Settings"
|
||||
MENU_MAIN_5="Scheduled Tasks"
|
||||
MENU_MAIN_6="Configuration Management"
|
||||
MENU_MAIN_7="Access & Control"
|
||||
MENU_MAIN_8="Tools & Optimization"
|
||||
MENU_MAIN_9="Updates & Support"
|
||||
MENU_MAIN_0="Exit Script"
|
||||
|
||||
MENU_MAIN_PROMPT="Please enter a number > "
|
||||
|
||||
# ===== Service Operations =====
|
||||
MENU_SERVICE_STOPPED="Service has been stopped!"
|
||||
|
||||
# ===== Test / Debug =====
|
||||
MENU_TEST_RUNNING="Running test mode. If errors occur, please take a screenshot and seek assistance."
|
||||
MENU_TEST_DONE_OK="Test completed! No issues found. Please restart the service."
|
||||
MENU_TEST_DONE_FAIL="Test completed!"
|
||||
MENU_TEST_LOG_HINT="Full execution log can be found at:"
|
||||
|
||||
MENU_ERROR_FOUND="Error found:"
|
||||
|
||||
# ===== Command Line Help =====
|
||||
|
||||
MENU_CLI_TEST="Test Mode"
|
||||
MENU_CLI_HELP="Help List"
|
||||
MENU_CLI_UNINSTALL="Uninstall Script"
|
||||
MENU_CLI_INIT="Initialize Script"
|
||||
MENU_CLI_DEBUG="Debug Mode"
|
||||
|
||||
MENU_CLI_START="Start Service"
|
||||
MENU_CLI_STOP="Stop Service"
|
||||
MENU_CLI_BOOT_INIT="Boot Initialization"
|
||||
|
||||
MENU_HELP_ONLINE="Online Support:"
|
||||
MENU_HELP_BLOG="Official Blog:"
|
||||
MENU_HELP_GITHUB="Release Page:"
|
||||
25
scripts/lang/en/providers.lang
Normal file
25
scripts/lang/en/providers.lang
Normal file
@@ -0,0 +1,25 @@
|
||||
PROVIDERS_MENU_GEN="Generate config including all providers"
|
||||
PROVIDERS_MENU_TEMPLATE="Select \033[33mrule template\033[0m"
|
||||
PROVIDERS_MENU_CLEAN="\033[33mClean\033[0m providers directory"
|
||||
PROVIDERS_INPUT="Please enter a letter or number"
|
||||
|
||||
PROVIDERS_EMPTY_HINT="No link or local config file has been added yet. Please add one first!"
|
||||
PROVIDERS_TEMPLATE_CURRENT="Current rule template: "
|
||||
PROVIDERS_TEMPLATE_SELECT="Please select an online template:"
|
||||
PROVIDERS_TEMPLATE_LOCAL="Use \033[36mlocal template\033[0m"
|
||||
PROVIDERS_TEMPLATE_PATH="Please enter template path (absolute path)"
|
||||
PROVIDERS_TEMPLATE_NOT_FOUND="Invalid input, template file not found!"
|
||||
|
||||
PROVIDERS_CLEAN_WARN="This will clear all files under"
|
||||
PROVIDERS_CLEAN_WARN_END=""
|
||||
PROVIDERS_CLEAN_CONFIRM="Continue?"
|
||||
|
||||
PROVIDERS_FETCHING_TEMPLATE="Fetching online template..."
|
||||
PROVIDERS_DOWNLOAD_FAILED="Download failed. Please try switching install source!"
|
||||
PROVIDERS_GEN_OK="Configuration file generated successfully!"
|
||||
PROVIDERS_GEN_OK_SINGBOX="Configuration generated successfully! If startup times out, install the Singbox-srs common database package from Update menu."
|
||||
PROVIDERS_GEN_FAILED="Failed to generate configuration file. Please check your input carefully!"
|
||||
PROVIDERS_RESTART_ASK="Start/Restart service now?"
|
||||
PROVIDERS_YES="Yes"
|
||||
PROVIDERS_NO="No"
|
||||
PROVIDERS_CRON_SUB_UPDATE="Update subscription"
|
||||
34
scripts/lang/en/set_crashdir.lang
Normal file
34
scripts/lang/en/set_crashdir.lang
Normal file
@@ -0,0 +1,34 @@
|
||||
SCD_SELECT_INSTALL_DIR="Please select install directory:"
|
||||
SCD_INPUT_NUM="Please enter a number"
|
||||
SCD_INPUT_ERROR="Invalid input! Please retry!"
|
||||
SCD_XIAOMI_DETECTED="Xiaomi stock firmware detected, select installation location:"
|
||||
SCD_CUSTOM_DIR_WARN="Custom directory (not recommended)"
|
||||
SCD_EXIT_INSTALL="Exit installation"
|
||||
SCD_SELECT_USB_DIR="Please select USB directory:"
|
||||
SCD_ASUS_DM_NOT_FOUND="Download Master startup file not found:"
|
||||
SCD_CHECK_SETTING="please check your settings!"
|
||||
SCD_ASUS_DETECTED="Asus firmware detected, please select installation method"
|
||||
SCD_ASUS_INSTALL_DM="Install via USB + Download Master (all firmwares, ARM only)"
|
||||
SCD_ASUS_INSTALL_SCRIPT="Install via startup script (some Merlin firmwares only)"
|
||||
SCD_ASUS_DM_HINT="Install and enable Download Master in router web UI first, then select external storage directory."
|
||||
SCD_ASUS_REINSTALL_HINT="If boot auto-start fails, please reinstall with USB + Download Master."
|
||||
SCD_PATH_FORMAT_HINT="Path must start with /. Files under virtual memory (/tmp,/opt,/sys...) will be lost after reboot!"
|
||||
SCD_PATH_FREE_SPACE="Available paths free space:"
|
||||
SCD_INPUT_CUSTOM_DIR="Please input custom path"
|
||||
SCD_PATH_ERROR="Invalid path! Please retry!"
|
||||
SCD_INSTALL_SPACE_HINT="Notice: ShellCrash requires at least ~1MB free space"
|
||||
SCD_INSTALL_ETC="Install in \033[32m/etc\033[0m (root users)"
|
||||
SCD_INSTALL_USR="Install in \033[32m/usr/share\033[0m (Linux systems)"
|
||||
SCD_INSTALL_HOME="Install in \033[32mcurrent user dir\033[0m (non-root users)"
|
||||
SCD_INSTALL_USB="Install in \033[32mexternal storage\033[0m"
|
||||
SCD_INSTALL_MANUAL="Set install directory manually"
|
||||
SCD_INSTALL_CANCELED="Installation canceled"
|
||||
SCD_NO_WRITE_PREFIX="No write permission on "
|
||||
SCD_NO_WRITE_SUFFIX=", please retry!"
|
||||
SCD_TARGET_DIR_PREFIX="Target directory "
|
||||
SCD_TARGET_DIR_SPACE=" free space: "
|
||||
SCD_CONFIRM_INSTALL="Confirm installation?"
|
||||
SCD_YES="Yes"
|
||||
SCD_NO="No"
|
||||
SCD_DIR_FREE=" dir, free: "
|
||||
SCD_SOFT_SOLID="(supports soft solidification)"
|
||||
52
scripts/lang/en/setboot.lang
Normal file
52
scripts/lang/en/setboot.lang
Normal file
@@ -0,0 +1,52 @@
|
||||
SETBOOT_NOT_SET="Not set"
|
||||
SETBOOT_SECOND="s"
|
||||
SETBOOT_TITLE="Startup Settings"
|
||||
SETBOOT_ITEM_AUTO="Autostart:"
|
||||
SETBOOT_ITEM_OLD="Conservative mode:"
|
||||
SETBOOT_ITEM_OLD_DESC="--- cron based check (every minute)"
|
||||
SETBOOT_ITEM_DELAY="Startup delay:"
|
||||
SETBOOT_ITEM_DELAY_DESC="--- helps when service is restricted right after boot"
|
||||
SETBOOT_ITEM_MINI="Low-flash mode:"
|
||||
SETBOOT_ITEM_MINI_DESC="--- for devices with limited flash space"
|
||||
SETBOOT_ITEM_MINI_DIR="Low-flash directory:"
|
||||
SETBOOT_ITEM_NETCHK="Startup network check:"
|
||||
SETBOOT_ITEM_NETCHK_DESC="--- disable to skip network check on startup"
|
||||
SETBOOT_VIEW_LOG="View startup logs"
|
||||
SETBOOT_AUTO_OFF="ShellCrash autostart disabled!"
|
||||
SETBOOT_AUTO_ON="ShellCrash autostart enabled!"
|
||||
SETBOOT_CRON_INIT="ShellCrash initialization"
|
||||
SETBOOT_OLDMODE_ON="Switched to conservative startup mode!"
|
||||
SETBOOT_OLDMODE_OFF="Switched to system daemon startup mode!"
|
||||
SETBOOT_MODE_UNSUPPORTED="Current device does not support other startup modes!"
|
||||
SETBOOT_DELAY_HINT1="If your device runs normally after boot, no need to configure this."
|
||||
SETBOOT_DELAY_HINT2="Recommended between 30~120 seconds, tune according to your device issue."
|
||||
SETBOOT_DELAY_INPUT="Please enter startup delay (0~300s)"
|
||||
SETBOOT_SET_OK="Set successfully!"
|
||||
SETBOOT_DELAY_INVALID="Invalid input or over 300s, please retry!"
|
||||
SETBOOT_MINI_NEEDED_NO="Your device has enough space (>20M), no need to enable!"
|
||||
SETBOOT_SYSTEMD_WARN="systemd startup is unsupported here, enable conservative mode first!"
|
||||
SETBOOT_MINI_ENABLED="Low-flash mode has been enabled!"
|
||||
SETBOOT_MINI_DIR_HINT="To change directory, use [Set low-flash directory]."
|
||||
SETBOOT_MINI_DISABLE_WARN="Remaining space is below 8M; disabling may break runtime!"
|
||||
SETBOOT_MINI_DISABLE_CONFIRM="Confirm disabling this feature?"
|
||||
SETBOOT_YES="Yes"
|
||||
SETBOOT_NO_BACK="No, return"
|
||||
SETBOOT_MINI_DISABLED="Low-flash mode has been disabled!"
|
||||
SETBOOT_BINDIR_HINT1="If set to memory, related files will be re-downloaded after each boot."
|
||||
SETBOOT_BINDIR_HINT2="Ensure install source is directly reachable, or startup may fail."
|
||||
SETBOOT_BINDIR_TMP="Use memory (/tmp)"
|
||||
SETBOOT_BINDIR_USB="Select USB directory"
|
||||
SETBOOT_BINDIR_CUSTOM="Custom directory"
|
||||
SETBOOT_SELECT_INSTALL_DIR="Please select install directory:"
|
||||
SETBOOT_SPACE_USED="Used storage:"
|
||||
SETBOOT_INPUT_ERROR="Invalid input, please retry!"
|
||||
SETBOOT_INPUT_CMD="Please input command/path directly"
|
||||
SETBOOT_INPUT_OR_BACK="Or input 0 to return"
|
||||
SETBOOT_INPUT="Please enter"
|
||||
SETBOOT_NETCHK_HINT1="If your device can run normally after boot, no need to change this."
|
||||
SETBOOT_NETCHK_HINT2="When disabled, low-flash or online rules (e.g. rule-set) may fail due to no network."
|
||||
SETBOOT_NETCHK_HINT3="When enabled, low-performance/slow-dial devices may timeout and fail startup."
|
||||
SETBOOT_NETCHK_OFF_CONFIRM="Network check is \033[33mdisabled\033[0m. Enable it?"
|
||||
SETBOOT_NETCHK_ON_CONFIRM="Network check is \033[33menabled\033[0m. Disable it?"
|
||||
SETBOOT_TASK_WORD="Task"
|
||||
SETBOOT_LOG_NOT_FOUND="Related log not found!"
|
||||
33
scripts/lang/en/subconverter.lang
Normal file
33
scripts/lang/en/subconverter.lang
Normal file
@@ -0,0 +1,33 @@
|
||||
SUBCONVERTER_MENU_GEN="Generate config including all nodes and subscriptions"
|
||||
SUBCONVERTER_MENU_EXCLUDE="Set \033[31mexclude node regex\033[0m"
|
||||
SUBCONVERTER_MENU_INCLUDE="Set \033[32minclude node regex\033[0m"
|
||||
SUBCONVERTER_MENU_RULE="Select \033[33monline rule template\033[0m"
|
||||
SUBCONVERTER_MENU_SERVER="Select Subconverter server"
|
||||
SUBCONVERTER_MENU_UA="Custom browser UA"
|
||||
|
||||
SUBCONVERTER_INPUT="Please enter"
|
||||
SUBCONVERTER_BACK="or enter 0 to return"
|
||||
|
||||
SUBCONVERTER_EXCLUDE_HINT1="Nodes matching keywords will be blocked during import!"
|
||||
SUBCONVERTER_INCLUDE_HINT1="Only nodes matching keywords will be imported!!!"
|
||||
SUBCONVERTER_KEYWORD_SPLIT="Use \033[30;47m | \033[0m to separate multiple keywords"
|
||||
SUBCONVERTER_REGEX_HINT="\033[32mRegex is supported\033[0m. Use \033[30;47m + \033[0m instead of spaces"
|
||||
SUBCONVERTER_EXCLUDE_INPUT="Enter exclude keyword(s) directly"
|
||||
SUBCONVERTER_INCLUDE_INPUT="Enter include keyword(s) directly"
|
||||
SUBCONVERTER_EXCLUDE_CLEAR="or enter d to \033[31mclear\033[0m exclude keywords"
|
||||
SUBCONVERTER_INCLUDE_CLEAR="or enter d to \033[31mclear\033[0m include keywords"
|
||||
|
||||
SUBCONVERTER_RULE_CURRENT="Current rule: "
|
||||
SUBCONVERTER_SERVER_HINT="The following third-party servers are collected from the internet. Please evaluate their security by yourself!"
|
||||
SUBCONVERTER_SERVER_THANKS="Thanks to the contributors below for their great work!!!"
|
||||
SUBCONVERTER_SERVER_CURRENT="Current backend: "
|
||||
SUBCONVERTER_SET_OK="Settings saved. Returning to previous menu"
|
||||
|
||||
SUBCONVERTER_UA_HINT="Try this if the config file cannot be fetched correctly"
|
||||
SUBCONVERTER_UA_CURRENT="Current UA: "
|
||||
SUBCONVERTER_UA_AUTO="Use auto UA (default)"
|
||||
SUBCONVERTER_UA_NONE="Do not use UA"
|
||||
SUBCONVERTER_UA_CUSTOM="Use custom UA"
|
||||
SUBCONVERTER_UA_CLEAR="Clear UA"
|
||||
SUBCONVERTER_UA_CUSTOM_WARN="Note:\nCustom UA cannot contain spaces or special symbols!"
|
||||
SUBCONVERTER_UA_CUSTOM_INPUT="Enter custom UA"
|
||||
19
scripts/lang/en/task_cmd.lang
Normal file
19
scripts/lang/en/task_cmd.lang
Normal file
@@ -0,0 +1,19 @@
|
||||
TASK_CMD_EVERY="every"
|
||||
TASK_CMD_HOURLY="hourly"
|
||||
TASK_CMD_MIN="minute"
|
||||
TASK_CMD_CORE_SKIP="Task [Auto update core] skipped - no new version detected"
|
||||
TASK_CMD_CORE_DONE="Task [Auto update core] download complete, restarting service"
|
||||
TASK_CMD_CORE_DL_FAIL="Task [Auto update core] failed - download error"
|
||||
TASK_CMD_CORE_VERIFY_FAIL="Task [Auto update core] failed - core verification error"
|
||||
TASK_CMD_SCRIPT_SKIP="Task [Auto update script] skipped - no new version detected"
|
||||
TASK_CMD_SCRIPT_UNZIP_FAIL="Task [Auto update script] failed - extract error"
|
||||
TASK_CMD_DB_SKIP_PREFIX="Task [Auto update database] skipped - no new version for "
|
||||
TASK_CMD_DB_SKIP_SUFFIX=""
|
||||
TASK_CMD_DB_DL_FAIL_PREFIX="Task [Auto update database] failed downloading ["
|
||||
TASK_CMD_DB_DL_FAIL_SUFFIX="]"
|
||||
TASK_CMD_DB_OK_PREFIX="Task [Auto update database] updated ["
|
||||
TASK_CMD_DB_OK_SUFFIX="] successfully"
|
||||
TASK_CMD_RES_OK="success"
|
||||
TASK_CMD_RES_FAIL="failed"
|
||||
TASK_CMD_EXEC_PREFIX="Task ["
|
||||
TASK_CMD_EXEC_MID="] result: "
|
||||
13
scripts/lang/en/uninstall.lang
Normal file
13
scripts/lang/en/uninstall.lang
Normal file
@@ -0,0 +1,13 @@
|
||||
UNINSTALL_WARN="Warning: this action is irreversible!"
|
||||
UNINSTALL_CONFIRM="Are you sure you want to uninstall ShellCrash?"
|
||||
UNINSTALL_YES="Yes"
|
||||
UNINSTALL_NO="No"
|
||||
UNINSTALL_KEEP_CONFIRM="Keep script configs and subscription files?"
|
||||
UNINSTALL_ENV_ERROR="Environment variable configuration is incorrect. Please remove the installation directory manually!"
|
||||
UNINSTALL_DONE="ShellCrash related files have been removed. Goodbye!"
|
||||
UNINSTALL_CLOSE_HINT="Please close the current terminal window manually to reset environment variables!"
|
||||
UNINSTALL_CANCELED="Operation canceled!"
|
||||
UNINSTALL_CRON_CLASH="clash service"
|
||||
UNINSTALL_CRON_SUB="subscription link"
|
||||
UNINSTALL_CRON_INIT="ShellCrash initialization"
|
||||
UNINSTALL_SSH_MARK="Enable SSH access from WAN"
|
||||
17
scripts/lang/en/userguide.lang
Normal file
17
scripts/lang/en/userguide.lang
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
UG_WELCOME="Welcome to User Guide!"
|
||||
UG_CHOOSE_ENV="Please select your usage environment:"
|
||||
UG_TIP_CONFIG="(You can still change various settings later)"
|
||||
UG_OPTION_1="Router: LAN transparent proxy"
|
||||
UG_OPTION_2="Linux device: local proxy only"
|
||||
UG_OPTION_3="Restore previous backup settings"
|
||||
UG_RESTORE_OK="Script settings have been restored! Please restart the script!"
|
||||
UG_IP_FORWARD_WARN="Your device has not enabled IP forwarding, LAN devices will not connect properly. Enable now?"
|
||||
UG_ENABLE_LOW_MEM="Your installation directory is less than 10MB, enable low-flash mode?"
|
||||
UG_IMPORT_CONFIG="Import configuration file? (Last step before running)"
|
||||
UG_CONFIG_TIP="You must have a configuration file to run the service!"
|
||||
UG_CONFIG_RES="Importing now? "
|
||||
UG_FINAL_TIP="Great! Now just start the service to enjoy!"
|
||||
|
||||
UG_IMPORT_NOW="Import now"
|
||||
UG_IMPORT_LATER="Not now"
|
||||
11
scripts/libs/README.md
Normal file
11
scripts/libs/README.md
Normal file
@@ -0,0 +1,11 @@
|
||||
用于存放脚本内置工具的脚本
|
||||
|
||||
引用方式必须为:
|
||||
|
||||
```shell
|
||||
. "$CRASHDIR"/libs/xxx.sh
|
||||
```
|
||||
|
||||
返回码必须是return x而不能是exit x
|
||||
|
||||
此处脚本内容不应包含文字输出和log输出
|
||||
17
scripts/libs/check_autostart.sh
Normal file
17
scripts/libs/check_autostart.sh
Normal file
@@ -0,0 +1,17 @@
|
||||
check_autostart(){
|
||||
if [ "$start_old" = ON ];then
|
||||
[ ! -f "$CRASHDIR"/.dis_startup ] && return 0
|
||||
elif [ -f /etc/rc.common -a "$(cat /proc/1/comm)" = "procd" ]; then
|
||||
[ -n "$(find /etc/rc.d -name '*shellcrash')" ] && return 0
|
||||
[ ! -f "$CRASHDIR"/.dis_startup ] && return 0
|
||||
elif ckcmd systemctl; then
|
||||
[ "$(systemctl is-enabled shellcrash.service 2>&1)" = enabled ] && return 0
|
||||
elif grep -q 's6' /proc/1/comm; then
|
||||
[ -f /etc/s6-overlay/s6-rc.d/user/contents.d/afstart ] && return 0
|
||||
elif rc-status -r >/dev/null 2>&1; then
|
||||
rc-update show default | grep -q "shellcrash" && return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
7
scripts/libs/check_cmd.sh
Normal file
7
scripts/libs/check_cmd.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
ckcmd() {
|
||||
if command -v sh >/dev/null 2>&1;then
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
else
|
||||
type "$1" >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
14
scripts/libs/check_cpucore.sh
Normal file
14
scripts/libs/check_cpucore.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
check_cpucore(){ #自动获取内核架构
|
||||
cputype=$(uname -ms | tr ' ' '_' | tr '[A-Z]' '[a-z]')
|
||||
[ -n "$(echo $cputype | grep -E "linux.*armv.*")" ] && cpucore="armv5"
|
||||
[ -n "$(echo $cputype | grep -E "linux.*armv7.*")" ] && [ -n "$(cat /proc/cpuinfo | grep vfp)" ] && [ ! -d /jffs ] && cpucore="armv7"
|
||||
[ -n "$(echo $cputype | grep -E "linux.*aarch64.*|linux.*armv8.*")" ] && cpucore="arm64"
|
||||
[ -n "$(echo $cputype | grep -E "linux.*86.*")" ] && cpucore="386"
|
||||
[ -n "$(echo $cputype | grep -E "linux.*86_64.*")" ] && cpucore="amd64"
|
||||
if [ -n "$(echo $cputype | grep -E "linux.*mips.*")" ];then
|
||||
mipstype=$(echo -n I | hexdump -o 2>/dev/null | awk '{ print substr($2,6,1); exit}') #通过判断大小端判断mips或mipsle
|
||||
[ "$mipstype" = "0" ] && cpucore="mips-softfloat" || cpucore="mipsle-softfloat"
|
||||
fi
|
||||
[ -n "$cpucore" ] && setconfig cpucore $cpucore
|
||||
}
|
||||
5
scripts/libs/check_dir_avail.sh
Normal file
5
scripts/libs/check_dir_avail.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
#检查目录剩余空间——$1:目标路径 $2:-h参数
|
||||
dir_avail() {
|
||||
df -h >/dev/null 2>&1 && h="$2"
|
||||
df -P $h "${1:-.}" 2>/dev/null | awk 'NR==2 {print $4}'
|
||||
}
|
||||
8
scripts/libs/check_target.sh
Normal file
8
scripts/libs/check_target.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
if echo "$crashcore" | grep -q 'singbox'; then
|
||||
target=singbox
|
||||
format=json
|
||||
else
|
||||
target=clash
|
||||
format=yaml
|
||||
fi
|
||||
core_config="$CRASHDIR/${format}s/config.$format"
|
||||
10
scripts/libs/compare.sh
Normal file
10
scripts/libs/compare.sh
Normal file
@@ -0,0 +1,10 @@
|
||||
compare() { #对比文件
|
||||
if [ ! -f "$1" ] || [ ! -f "$2" ]; then
|
||||
return 1
|
||||
elif ckcmd cmp; then
|
||||
cmp -s "$1" "$2"
|
||||
return $?
|
||||
else
|
||||
[ "$(cat "$1")" = "$(cat "$2")" ] && return 0 || return 1
|
||||
fi
|
||||
}
|
||||
89
scripts/libs/core_tools.sh
Normal file
89
scripts/libs/core_tools.sh
Normal file
@@ -0,0 +1,89 @@
|
||||
|
||||
|
||||
[ -n "$(find --help 2>&1 | grep -o size)" ] && find_para=' -size +2000' #find命令兼容
|
||||
|
||||
core_unzip() { #$1:需要解压的文件 $2:目标文件名
|
||||
if echo "$1" |grep -q 'tar.gz$' ;then
|
||||
[ "$BINDIR" = "$TMPDIR" ] && rm -rf "$TMPDIR"/CrashCore #小闪存模式防止空间不足
|
||||
[ -n "$(tar --help 2>&1 | grep -o 'no-same-owner')" ] && tar_para='--no-same-owner' #tar命令兼容
|
||||
mkdir -p "$TMPDIR"/core_tmp
|
||||
tar -zxf "$1" ${tar_para} -C "$TMPDIR"/core_tmp/
|
||||
for file in $(find "$TMPDIR"/core_tmp $find_para 2>/dev/null); do
|
||||
[ -f "$file" ] && [ -n "$(echo $file | sed 's#.*/##' | grep -iE '(CrashCore|sing|meta|mihomo|clash|pre)')" ] && mv -f "$file" "$TMPDIR"/"$2"
|
||||
done
|
||||
rm -rf "$TMPDIR"/core_tmp
|
||||
elif echo "$1" |grep -q '.gz$' ;then
|
||||
gunzip -c "$1" > "$TMPDIR"/"$2"
|
||||
elif echo "$1" |grep -q '.upx$' ;then
|
||||
ln -sf "$1" "$TMPDIR"/"$2"
|
||||
else
|
||||
mv -f "$1" "$TMPDIR"/"$2"
|
||||
fi
|
||||
chmod +x "$TMPDIR"/"$2"
|
||||
}
|
||||
core_find(){
|
||||
if [ ! -f "$TMPDIR"/CrashCore ];then
|
||||
[ -n "$(find "$CRASHDIR"/CrashCore.* $find_para 2>/dev/null)" ] && [ "$CRASHDIR" != "$BINDIR" ] &&
|
||||
mv -f "$CRASHDIR"/CrashCore.* "$BINDIR"/
|
||||
core_dir=$(find "$BINDIR"/CrashCore.* $find_para 2>/dev/null | head -n 1)
|
||||
[ -n "$core_dir" ] && core_unzip "$core_dir" CrashCore
|
||||
fi
|
||||
}
|
||||
core_check(){
|
||||
[ -n "$(pidof CrashCore)" ] && "$CRASHDIR"/start.sh stop #停止内核服务防止内存不足
|
||||
core_unzip "$1" core_new
|
||||
sbcheck=$(echo "$crashcore" | grep 'singbox')
|
||||
v=''
|
||||
if [ -n "$sbcheck" ] && "$TMPDIR"/core_new -h 2>&1 | grep -q 'sing-box'; then
|
||||
v=$("$TMPDIR"/core_new version 2>/dev/null | grep version | awk '{print $3}')
|
||||
COMMAND='"$TMPDIR/CrashCore run -D $BINDIR -C $TMPDIR/jsons"'
|
||||
elif [ -z "$sbcheck" ] && "$TMPDIR"/core_new -h 2>&1 | grep -q '\-t';then
|
||||
v=$("$TMPDIR"/core_new -v 2>/dev/null | head -n 1 | sed 's/ linux.*//;s/.* //')
|
||||
COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"'
|
||||
fi
|
||||
if [ -z "$v" ]; then
|
||||
rm -rf "$1" "$TMPDIR"/core_new
|
||||
return 2
|
||||
else
|
||||
rm -f "$BINDIR"/CrashCore.tar.gz "$BINDIR"/CrashCore.gz "$BINDIR"/CrashCore.upx
|
||||
if [ -z "$zip_type" ];then
|
||||
gzip -c "$TMPDIR/core_new" > "$BINDIR/CrashCore.gz"
|
||||
else
|
||||
mv -f "$1" "$BINDIR/CrashCore.$zip_type"
|
||||
fi
|
||||
if [ "$zip_type" = 'upx' ];then
|
||||
rm -f "$1" "$TMPDIR"/core_new
|
||||
ln -sf "$TMPDIR/CrashCore.upx" "$TMPDIR/CrashCore"
|
||||
else
|
||||
mv -f "$TMPDIR/core_new" "$TMPDIR/CrashCore"
|
||||
fi
|
||||
core_v="$v"
|
||||
setconfig COMMAND "$COMMAND" "$CRASHDIR"/configs/command.env && . "$CRASHDIR"/configs/command.env
|
||||
setconfig crashcore "$crashcore"
|
||||
setconfig core_v "$core_v"
|
||||
setconfig custcorelink "$custcorelink"
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
core_webget(){
|
||||
. "$CRASHDIR"/libs/web_get_bin.sh
|
||||
. "$CRASHDIR"/libs/check_target.sh
|
||||
if [ -z "$custcorelink" ];then
|
||||
[ -z "$zip_type" ] && zip_type='tar.gz'
|
||||
get_bin "$TMPDIR/Coretmp.$zip_type" "bin/$crashcore/${target}-linux-${cpucore}.$zip_type"
|
||||
else
|
||||
case "$custcorelink" in
|
||||
*.tar.gz) zip_type="tar.gz" ;;
|
||||
*.gz) zip_type="gz" ;;
|
||||
*.upx) zip_type="upx" ;;
|
||||
esac
|
||||
[ -n "$zip_type" ] && webget "$TMPDIR/Coretmp.$zip_type" "$custcorelink"
|
||||
fi
|
||||
#校验内核
|
||||
if [ "$?" = 0 ];then
|
||||
core_check "$TMPDIR/Coretmp.$zip_type"
|
||||
else
|
||||
rm -f "$TMPDIR/Coretmp.$zip_type"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
26
scripts/libs/gen_base64.sh
Normal file
26
scripts/libs/gen_base64.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#生成指定位数的加密秘钥,符合ss2022协议
|
||||
gen_random() {
|
||||
if ckcmd openssl;then
|
||||
openssl rand --base64 "$1"
|
||||
elif ckcmd base64;then
|
||||
head -c "$1" /dev/urandom | base64 | tr -d '\n'
|
||||
elif busybox base64 --help >/dev/null 2>&1;then
|
||||
head -c "$1" /dev/urandom | base64 | tr -d '\n'
|
||||
elif ckcmd uuencode;then
|
||||
head -c "$1" /dev/urandom | uuencode -m - | sed -n '2p'
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
#对指定字符串进行base64转码
|
||||
gen_base64() {
|
||||
if ckcmd base64;then
|
||||
echo -n "$1" | base64 | tr -d '\n'
|
||||
elif busybox base64 --help >/dev/null 2>&1;then
|
||||
echo -n "$1" | busybox base64 | tr -d '\n'
|
||||
elif ckcmd openssl;then
|
||||
echo -n "$1" | openssl base64 -A
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
22
scripts/libs/get_config.sh
Normal file
22
scripts/libs/get_config.sh
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
# 检查配置文件
|
||||
[ -f "$CRASHDIR"/configs/ShellCrash.cfg ] || . "$CRASHDIR"/init.sh >/dev/null 2>&1
|
||||
. "$CRASHDIR"/configs/command.env >/dev/null 2>&1
|
||||
. "$CRASHDIR"/configs/ShellCrash.cfg
|
||||
|
||||
[ -z "$mix_port" ] && mix_port=7890
|
||||
[ -z "$redir_port" ] && redir_port=7892
|
||||
[ -z "$tproxy_port" ] && tproxy_port=7893
|
||||
[ -z "$db_port" ] && db_port=9999
|
||||
[ -z "$dns_port" ] && dns_port=1053
|
||||
[ -z "$dns_redir_port" ] && dns_redir_port="$dns_port"
|
||||
[ -z "$fwmark" ] && fwmark="$redir_port"
|
||||
routing_mark=$((fwmark + 2))
|
||||
[ -z "$table" ] && table=100
|
||||
|
||||
[ -z "$dns_nameserver" ] && {
|
||||
dns_nameserver='223.5.5.5, 1.2.4.8'
|
||||
netstat -ntlup 2>/dev/null | grep -q '127.0.0.1:53' && dns_nameserver='127.0.0.1'
|
||||
}
|
||||
[ -z "$dns_fallback" ] && dns_fallback="1.1.1.1, 8.8.8.8"
|
||||
[ -z "$dns_resolver" ] && dns_resolver="223.5.5.5, 2400:3200::1"
|
||||
15
scripts/libs/get_ecsip.sh
Normal file
15
scripts/libs/get_ecsip.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
get_ecs_address() {
|
||||
for f in /tmp/resolv.conf.auto /tmp/resolv.conf /tmp/resolv.conf.d/resolv.conf.auto; do
|
||||
[ -f "$f" ] || continue
|
||||
ip=$(grep -A1 "^# Interface wan$" "$f" | grep nameserver | awk '{printf "%s ", $2}')
|
||||
[ -n "$ip" ] && return
|
||||
done
|
||||
. "$CRASHDIR"/libs/web_get_lite.sh
|
||||
for web in http://members.3322.org/dyndns/getip http://4.ipw.cn http://ipinfo.io/ip; do
|
||||
ip=$(web_get_lite "$web" 0)
|
||||
[ -n "$ip" ] && return
|
||||
done
|
||||
}
|
||||
get_ecs_address
|
||||
[ -n "$ip" ] && ecs_address="${ip%.*}.0/24"
|
||||
8
scripts/libs/i18n.sh
Normal file
8
scripts/libs/i18n.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
load_lang() {
|
||||
i18n=$(cat "$CRASHDIR"/configs/i18n.cfg 2>/dev/null)
|
||||
[ -z "$i18n" ] && i18n=chs
|
||||
|
||||
file="$CRASHDIR/lang/$i18n/$1.lang"
|
||||
[ -s "$file" ] && . "$file"
|
||||
}
|
||||
55
scripts/libs/logger.sh
Normal file
55
scripts/libs/logger.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
|
||||
[ -n "$__IS_LIB_LOGGER" ] && return
|
||||
__IS_LIB_LOGGER=1
|
||||
|
||||
#日志工具
|
||||
. "$CRASHDIR"/libs/web_json.sh
|
||||
#$1日志内容$2显示颜色$3是否推送$4是否覆盖上一条
|
||||
logger() {
|
||||
TMPDIR=/tmp/ShellCrash
|
||||
[ -n "$2" -a "$2" != 0 ] && printf "\033[%sm%s\033[0m\n" "$2" "$1"
|
||||
log_text="$(date "+%G-%m-%d_%H:%M:%S")~$1"
|
||||
[ "$4" = on ] && sed -i "/$1/d" "$TMPDIR"/ShellCrash.log
|
||||
echo "$log_text" >>"$TMPDIR"/ShellCrash.log
|
||||
[ "$(wc -l "$TMPDIR"/ShellCrash.log | awk '{print $1}')" -gt 199 ] && sed -i '1,20d' "$TMPDIR"/ShellCrash.log
|
||||
#推送远程日志
|
||||
[ "$3" != off ] && {
|
||||
[ -n "$device_name" ] && log_text="$log_text($device_name)"
|
||||
[ -n "$push_TG" ] && {
|
||||
url="https://api.telegram.org/bot${push_TG}/sendMessage"
|
||||
[ "$push_TG" = 'publictoken' ] && url='https://tgbot.jwsc.eu.org/publictoken/sendMessage'
|
||||
content="{\"chat_id\":\"${chat_ID}\",\"text\":\"$log_text\"}"
|
||||
web_json_post "$url" "$content" &
|
||||
}
|
||||
[ -n "$push_bark" ] && {
|
||||
url="${push_bark}"
|
||||
content="{\"body\":\"${log_text}\",\"title\":\"ShellCrash_log\",\"level\":\"passive\",\"badge\":\"1\"}"
|
||||
web_json_post "$url" "$content" &
|
||||
}
|
||||
[ -n "$push_Deer" ] && {
|
||||
url="https://api2.pushdeer.com/message/push"
|
||||
content="{\"pushkey\":\"${push_Deer}\",\"text\":\"$log_text\"}"
|
||||
web_json_post "$url" "$content" &
|
||||
}
|
||||
[ -n "$push_Po" ] && {
|
||||
url="https://api.pushover.net/1/messages.json"
|
||||
content="{\"token\":\"${push_Po}\",\"user\":\"${push_Po_key}\",\"title\":\"ShellCrash_log\",\"message\":\"$log_text\"}"
|
||||
web_json_post "$url" "$content" &
|
||||
}
|
||||
[ -n "$push_PP" ] && {
|
||||
url="http://www.pushplus.plus/send"
|
||||
content="{\"token\":\"${push_PP}\",\"title\":\"ShellCrash_log\",\"content\":\"$log_text\"}"
|
||||
web_json_post "$url" "$content" &
|
||||
}
|
||||
[ -n "$push_Gotify" ] && {
|
||||
url="${push_Gotify}"
|
||||
content="{\"title\":\"ShellCrash_log\",\"message\":\"$log_text\",\"priority\":5}"
|
||||
web_json_post "$url" "$content" &
|
||||
}
|
||||
[ -n "$push_SynoChat" ] && {
|
||||
url="${push_ChatURL}/webapi/entry.cgi?api=SYNO.Chat.External&method=chatbot&version=2&token=${push_ChatTOKEN}"
|
||||
content="payload={\"text\":\"${log_text}\", \"user_ids\":[${push_ChatUSERID}]}"
|
||||
web_json_post "$url" "$content" &
|
||||
}
|
||||
} &
|
||||
}
|
||||
28
scripts/libs/meta_listeners.sh
Normal file
28
scripts/libs/meta_listeners.sh
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) Juewuy
|
||||
|
||||
#meta内核vmess入站生成
|
||||
[ "$vms_service" = ON ] && {
|
||||
cat >>"$TMPDIR"/listeners.yaml <<EOF
|
||||
- name: "vmess-in"
|
||||
type: vmess
|
||||
port: $vms_port
|
||||
listen:
|
||||
users:
|
||||
- uuid: $vms_uuid
|
||||
alterId: 0
|
||||
ws-path: $vms_ws_path
|
||||
EOF
|
||||
}
|
||||
#meta内核ss入站生成
|
||||
[ "$sss_service" = ON ] && {
|
||||
cat >>"$TMPDIR"/listeners.yaml <<EOF
|
||||
- name: "ss-in"
|
||||
type: shadowsocks
|
||||
port: $sss_port
|
||||
listen:
|
||||
cipher: $sss_cipher
|
||||
password: $sss_pwd
|
||||
udp: true
|
||||
EOF
|
||||
}
|
||||
54
scripts/libs/sb_endpoints.sh
Normal file
54
scripts/libs/sb_endpoints.sh
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) Juewuy
|
||||
|
||||
[ "$ts_service" = ON ] && ! grep -q '"tailscale"' "$CRASHDIR"/jsons/endpoints.json 2>/dev/null && {
|
||||
[ "$ts_subnet" = true ] && {
|
||||
. "$CRASHDIR"/starts/fw_getlanip.sh && getlanip
|
||||
advertise_routes=$(echo "$host_ipv4"|sed 's/[[:space:]]\+/", "/g; s/^/"/; s/$/"/')
|
||||
}
|
||||
[ -z "$ts_exit_node" ] && ts_exit_node=false
|
||||
[ -z "$ts_hostname" ] && ts_hostname='ShellCrash'
|
||||
cat >"$TMPDIR"/jsons/tailscale.json <<EOF
|
||||
{
|
||||
"endpoints": [
|
||||
{
|
||||
"type": "tailscale",
|
||||
"tag": "ts-ep",
|
||||
"state_directory": "$CRASHDIR/tailscale",
|
||||
"auth_key": "$ts_auth_key",
|
||||
"hostname": "$ts_hostname",
|
||||
"advertise_routes": [$advertise_routes],
|
||||
"advertise_exit_node": $ts_exit_node,
|
||||
"udp_timeout": "5m"
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
}
|
||||
|
||||
[ "$wg_service" = ON ] && ! grep -q '"wireguard"' "$CRASHDIR"/jsons/endpoints.json 2>/dev/null && {
|
||||
[ -n "$wg_ipv6" ] && wg_ipv6_add=", \"$wg_ipv6\""
|
||||
cat >"$TMPDIR"/jsons/wireguard.json <<EOF
|
||||
{
|
||||
"endpoints": [
|
||||
{
|
||||
"type": "wireguard",
|
||||
"tag": "wg-ep",
|
||||
"system": true,
|
||||
"mtu": 1420,
|
||||
"address": [ "$wg_ipv4"$wg_ipv6_add ],
|
||||
"private_key": "$wg_private_key",
|
||||
"peers": [
|
||||
{
|
||||
"address": "$wg_server",
|
||||
"port": $wg_port,
|
||||
"public_key": "$wg_public_key",
|
||||
"pre_shared_key": "$wg_pre_shared_key",
|
||||
"allowed_ips": ["0.0.0.0/0", "::/0"]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
}
|
||||
40
scripts/libs/sb_inbounds.sh
Normal file
40
scripts/libs/sb_inbounds.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) Juewuy
|
||||
|
||||
[ "$vms_service" = ON ] && {
|
||||
[ -n "$vms_ws_path" ] && transport=', "transport": { "type": "ws", "path": "'"$vms_ws_path"'" }'
|
||||
cat >"$TMPDIR"/jsons/vmess-in.json <<EOF
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"type": "vmess",
|
||||
"tag": "vmess-in",
|
||||
"listen": "::",
|
||||
"listen_port": $vms_port,
|
||||
"users": [
|
||||
{
|
||||
"uuid": "$vms_uuid"
|
||||
}
|
||||
]$transport
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
}
|
||||
|
||||
[ "$sss_service" = ON ] && {
|
||||
cat >"$TMPDIR"/jsons/ss-in.json <<EOF
|
||||
{
|
||||
"inbounds": [
|
||||
{
|
||||
"type": "shadowsocks",
|
||||
"tag": "ss-in",
|
||||
"listen": "::",
|
||||
"listen_port": $sss_port,
|
||||
"method": "$sss_cipher",
|
||||
"password": "$sss_pwd",
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
}
|
||||
6
scripts/libs/set_config.sh
Normal file
6
scripts/libs/set_config.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#参数1代表变量名,参数2代表变量值,参数3即文件路径
|
||||
setconfig() {
|
||||
[ -z "$3" ] && configpath="$CRASHDIR"/configs/ShellCrash.cfg || configpath="${3}"
|
||||
sed -i "/^${1}=.*/d" "$configpath"
|
||||
printf '%s=%s\n' "$1" "$2" >>"$configpath"
|
||||
}
|
||||
39
scripts/libs/set_cron.sh
Normal file
39
scripts/libs/set_cron.sh
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
crondir="$(crond -h 2>&1 | grep -oE 'Default:.*' | awk -F ":" '{print $2}'| tr -d ' ')"
|
||||
[ ! -w "$crondir" ] && crondir="/etc/storage/cron/crontabs"
|
||||
[ ! -w "$crondir" ] && crondir="/var/spool/cron/crontabs"
|
||||
[ ! -w "$crondir" ] && crondir="/var/spool/cron"
|
||||
[ -z "$USER" ] && USER=$(whoami 2>/dev/null)
|
||||
tmpcron=/tmp/cron_tmp
|
||||
touch "$tmpcron"
|
||||
|
||||
cronadd() { #定时任务工具
|
||||
if crontab -h 2>&1 | grep -q '\-l'; then
|
||||
crontab "$1"
|
||||
elif [ -f "$crondir/$USER" ];then
|
||||
cat "$1" >"$crondir"/"$USER" && cru a REFRESH "0 0 1 1 * /bin/true" 2>/dev/null
|
||||
else
|
||||
echo "找不到可用的crond或者crontab应用!No available crond or crontab application can be found!"
|
||||
fi
|
||||
}
|
||||
cronload() { #定时任务工具
|
||||
if crontab -h 2>&1 | grep -q '\-l'; then
|
||||
crontab -l
|
||||
elif [ -f "$crondir/$USER" ];then
|
||||
cat "$crondir"/"$USER" 2>/dev/null
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
cronset() { #定时任务设置
|
||||
# 参数1代表要移除的关键字,参数2代表要添加的任务语句
|
||||
cronload | grep -v '^$' | grep -vF "$1" >"$tmpcron"
|
||||
[ -n "$2" ] && echo "$2" >>"$tmpcron"
|
||||
cronadd "$tmpcron"
|
||||
#华硕/Padavan固件存档在本地,其他则删除
|
||||
if [ -d /jffs ] || [ -d /etc/storage/ShellCrash ];then
|
||||
mv -f "$tmpcron" "$CRASHDIR"/task/cron
|
||||
else
|
||||
rm -f "$tmpcron"
|
||||
fi
|
||||
}
|
||||
9
scripts/libs/set_profile.sh
Normal file
9
scripts/libs/set_profile.sh
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
set_profile() {
|
||||
[ -z "$my_alias" ] && my_alias=crash
|
||||
sed -i "/ShellCrash\/menu.sh/"d "$1"
|
||||
echo "alias ${my_alias}=\"$shtype $CRASHDIR/menu.sh\"" >>"$1" #设置快捷命令环境变量
|
||||
sed -i '/export CRASHDIR=*/'d "$1"
|
||||
echo "export CRASHDIR=\"$CRASHDIR\"" >>"$1" #设置路径环境变量
|
||||
. "$1" >/dev/null 2>&1 || true
|
||||
}
|
||||
9
scripts/libs/set_proxy.sh
Normal file
9
scripts/libs/set_proxy.sh
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
setproxy(){
|
||||
[ -n "$(pidof CrashCore)" ] && {
|
||||
[ -n "$authentication" ] && auth="$authentication@" || auth=""
|
||||
[ -z "$mix_port" ] && mix_port=7890
|
||||
export https_proxy="http://${auth}127.0.0.1:$mix_port"
|
||||
export http_proxy="http://${auth}127.0.0.1:$mix_port"
|
||||
}
|
||||
}
|
||||
10
scripts/libs/start_wait.sh
Normal file
10
scripts/libs/start_wait.sh
Normal file
@@ -0,0 +1,10 @@
|
||||
i=1
|
||||
while [ -z "$test" -a "$i" -lt 30 ]; do
|
||||
sleep 1
|
||||
if curl --version >/dev/null 2>&1; then
|
||||
test=$(curl -s -H "Authorization: Bearer $secret" http://127.0.0.1:${db_port}/proxies | grep -o proxies)
|
||||
else
|
||||
test=$(wget -q --header="Authorization: Bearer $secret" -O - http://127.0.0.1:${db_port}/proxies | grep -o proxies)
|
||||
fi
|
||||
i=$((i + 1))
|
||||
done
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user