Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e8b710c19 | ||
|
|
4d0ea76854 | ||
|
|
6bd17f02e0 | ||
|
|
7648bc90ef | ||
|
|
dfe1629b79 | ||
|
|
a6e70734b1 | ||
|
|
40505badaf | ||
|
|
e5f3f86b59 | ||
|
|
10300a93e6 | ||
|
|
cfd3f19100 | ||
|
|
8faa21d368 | ||
|
|
0441609a80 | ||
|
|
cf43e1065f | ||
|
|
71ff372231 | ||
|
|
2cbb40eaed | ||
|
|
163d5ae628 | ||
|
|
bdc6972b2c | ||
|
|
0308a5322c | ||
|
|
962aaa8961 | ||
|
|
b24d8820cb | ||
|
|
8b061d963c | ||
|
|
32aa372595 | ||
|
|
0b2784868d | ||
|
|
92800b51a6 | ||
|
|
66879c092f | ||
|
|
26ab5b2b4b | ||
|
|
4e175f632a | ||
|
|
4e570cdf8c | ||
|
|
167e05f78f | ||
|
|
1ed173a283 | ||
|
|
0a39bd09d0 | ||
|
|
84a4a1f930 | ||
|
|
9d62121ff2 | ||
|
|
c3540ea09e | ||
|
|
6abc09eecf | ||
|
|
67ec62b538 | ||
|
|
90ec824338 | ||
|
|
f40e4c5932 | ||
|
|
bb882b6426 | ||
|
|
bc617d34a5 | ||
|
|
0b93c48b97 | ||
|
|
505b0887e3 | ||
|
|
7715524418 | ||
|
|
a71f6fce71 | ||
|
|
f62423dcff | ||
|
|
58fada492d | ||
|
|
d9c7a592e3 | ||
|
|
5e6641382c | ||
|
|
3326ccde4e | ||
|
|
13c58baedd | ||
|
|
4297df8cc4 | ||
|
|
b9e27a1052 | ||
|
|
cb2b6a6be9 | ||
|
|
6f1cb45f70 | ||
|
|
6a7a5c2438 | ||
|
|
e35a08f9dc | ||
|
|
ff28bde71c | ||
|
|
ebd274276e | ||
|
|
f857bb4f9c | ||
|
|
b8e354ef5a | ||
|
|
105573c631 | ||
|
|
816831f0f7 | ||
|
|
f338ba61fb | ||
|
|
a189c730e8 | ||
|
|
47d8d8fe51 | ||
|
|
c4a9b11300 | ||
|
|
945f7dcf43 | ||
|
|
153642e450 | ||
|
|
08eb86f793 | ||
|
|
a2cd26cff7 | ||
|
|
cf6d596d94 | ||
|
|
82eda2b5aa | ||
|
|
b4565ccd43 | ||
|
|
186979adb7 | ||
|
|
f067aaee5d | ||
|
|
bf111cafc9 | ||
|
|
0996bfb716 | ||
|
|
957f8aef6f | ||
|
|
079f9611b8 | ||
|
|
34274032ea | ||
|
|
4579e4c8e2 | ||
|
|
1622175dbb | ||
|
|
a59b185460 | ||
|
|
2246c1ed3b | ||
|
|
4ad3626d99 | ||
|
|
cda4081718 | ||
|
|
83ea02199b | ||
|
|
fdde48d0a7 | ||
|
|
c1f76f017f | ||
|
|
674723b2c4 | ||
|
|
055c77af70 | ||
|
|
93f2234ba4 | ||
|
|
13392bdf98 | ||
|
|
13e1166e23 | ||
|
|
033e8e95e1 | ||
|
|
4cf10a6b95 | ||
|
|
80b3728b68 | ||
|
|
17be99c9d0 | ||
|
|
c4a824a66d | ||
|
|
b4de9395e9 | ||
|
|
755a18b677 | ||
|
|
449b18d9ff | ||
|
|
44ebac5353 | ||
|
|
0d684f1d52 | ||
|
|
8107deb922 | ||
|
|
231284b3a1 | ||
|
|
750a900400 | ||
|
|
7725b4c3ca | ||
|
|
6cec3fab66 | ||
|
|
1460384eed | ||
|
|
13686c53c4 | ||
|
|
e1ef86ec7b | ||
|
|
aff9a66a94 | ||
|
|
c487cf6e5e | ||
|
|
fb3641dfaf | ||
|
|
e5b61a094b | ||
|
|
ff1acb93bc | ||
|
|
2a75f7cbcc | ||
|
|
a276374ff1 | ||
|
|
c588b65605 | ||
|
|
f4613d134d | ||
|
|
382e87fcb1 | ||
|
|
c1e8d6222a | ||
|
|
b447e7d9d4 | ||
|
|
10e2e20eba | ||
|
|
fd85fdaed1 | ||
|
|
40eff9f211 | ||
|
|
376bcbc39d | ||
|
|
aa29c7f319 | ||
|
|
74c7b34390 | ||
|
|
f21af9cdaa | ||
|
|
d6dedd18f5 | ||
|
|
0c6e2bd1f8 | ||
|
|
bace37d7bc | ||
|
|
deaa23e75c | ||
|
|
a86a84303c | ||
|
|
ae6164ee3c | ||
|
|
8b9b1d1fea | ||
|
|
9d536efe66 | ||
|
|
c4c51982c9 | ||
|
|
09a01b9a0e | ||
|
|
d21012a40f | ||
|
|
b0f5b9cd41 | ||
|
|
d42f2525b5 | ||
|
|
2ddaf2ead3 | ||
|
|
36cb721f1a | ||
|
|
475c177df5 | ||
|
|
65c4e73963 | ||
|
|
55041ad114 | ||
|
|
f9fb692c9c | ||
|
|
939c7582f4 | ||
|
|
fc8f0e8077 | ||
|
|
0de29789f4 | ||
|
|
d655277ead | ||
|
|
87079773a7 | ||
|
|
a48edbb18c | ||
|
|
3f5b84d542 | ||
|
|
845039bea3 | ||
|
|
324997e3c8 | ||
|
|
08dbb46c8c | ||
|
|
e8be9ab999 | ||
|
|
60558d852a | ||
|
|
3a9e4a8db1 | ||
|
|
9e505b3970 | ||
|
|
d4f53e78af | ||
|
|
d9b7dd1152 | ||
|
|
ab8849bdd3 | ||
|
|
7805e73f0b | ||
|
|
6fef0ea062 | ||
|
|
4768892b59 | ||
|
|
2040b505f6 | ||
|
|
6c5ea0ff31 | ||
|
|
cc7d2c4284 | ||
|
|
bdd8e1cb2c | ||
|
|
70e44e3766 | ||
|
|
b07c125417 | ||
|
|
4a9c40ef02 | ||
|
|
4a64ad9dc6 | ||
|
|
b18da091ed | ||
|
|
6dfce60c4b | ||
|
|
39795226e8 | ||
|
|
0c16efba35 | ||
|
|
a96ca1da06 | ||
|
|
a088ae8d8f | ||
|
|
81eadef88a | ||
|
|
0a25cb6682 | ||
|
|
956be15623 | ||
|
|
92b83177e8 | ||
|
|
03a0ecc9c7 | ||
|
|
6c8faa8c21 | ||
|
|
bb4c0885d7 | ||
|
|
b53c92a08e | ||
|
|
93bfabd605 | ||
|
|
be16a6c60b | ||
|
|
00e8836b36 | ||
|
|
0d57594fb2 | ||
|
|
52b8a92292 | ||
|
|
9e141f3fb0 | ||
|
|
88ec14cfbd | ||
|
|
3dc9a39216 | ||
|
|
0361a4667e | ||
|
|
d80e959b42 | ||
|
|
84e4288e44 | ||
|
|
f503dff6de | ||
|
|
6906933806 | ||
|
|
83de764d04 | ||
|
|
c2a4e77777 | ||
|
|
c62a2ac286 | ||
|
|
7fb1dfc069 | ||
|
|
c84b67bbea | ||
|
|
973b99381b | ||
|
|
7231778ceb | ||
|
|
21d6b7eb5d | ||
|
|
74f43a35a5 | ||
|
|
607eac8468 | ||
|
|
43532ea249 | ||
|
|
32f89bbe55 | ||
|
|
ad1a0e79fe | ||
|
|
3a5d08d6a2 | ||
|
|
69a9f4e104 | ||
|
|
a9994918f9 | ||
|
|
cae97a9a02 | ||
|
|
ef7fc80033 | ||
|
|
0644a81592 | ||
|
|
ce0d252014 | ||
|
|
ea4f669eb2 | ||
|
|
c0a5ef3ef2 | ||
|
|
086dfcea95 | ||
|
|
14161863a3 | ||
|
|
d448cabf2d | ||
|
|
3b4140ebc3 | ||
|
|
93ef09c846 | ||
|
|
671b970cd3 | ||
|
|
37ef635430 | ||
|
|
1b24992209 | ||
|
|
927f987c20 | ||
|
|
d93c901b31 | ||
|
|
c6f961aef3 | ||
|
|
1ede108f7f | ||
|
|
f0901fd503 | ||
|
|
7b8abef785 | ||
|
|
55dd847b5d | ||
|
|
29b6d11662 | ||
|
|
8e2b72d3b2 | ||
|
|
57b58b52b7 | ||
|
|
77cc5ad219 | ||
|
|
919c9b62a8 | ||
|
|
5ce4c12f15 | ||
|
|
96ca031026 | ||
|
|
45b5bff82b | ||
|
|
b0787254ff | ||
|
|
e8c47d92ed | ||
|
|
a649dc22be | ||
|
|
a4a678ef53 | ||
|
|
8bfddfcaa3 | ||
|
|
97f1a99234 | ||
|
|
f20b04ab0e | ||
|
|
009c1b4feb | ||
|
|
1111385429 | ||
|
|
8b23872b7f | ||
|
|
310fb36154 | ||
|
|
78a9966d81 | ||
|
|
cfb558b6a3 | ||
|
|
a6d4766621 | ||
|
|
94345c6c55 | ||
|
|
f48c344f2a | ||
|
|
a8e33a71c2 | ||
|
|
98d05d4fd9 | ||
|
|
ed951020a9 | ||
|
|
8877384dd9 | ||
|
|
ddf0bfc026 | ||
|
|
e929e2416f | ||
|
|
d637b6816a | ||
|
|
7846eef0f0 | ||
|
|
3884d1a828 | ||
|
|
6a57aabcf6 | ||
|
|
0a5405c08c | ||
|
|
a604b1971b | ||
|
|
68905dd558 | ||
|
|
8f5a435915 | ||
|
|
8e782da3f5 | ||
|
|
9527698e29 | ||
|
|
683b8adb20 | ||
|
|
32b300c101 | ||
|
|
78b3555be2 | ||
|
|
58ae8633bf | ||
|
|
1cb268d3e6 | ||
|
|
8ca49e3c7a | ||
|
|
9a8da656c0 | ||
|
|
5136c8254b | ||
|
|
f80bca816b | ||
|
|
d574dff480 | ||
|
|
de6f6d60c5 | ||
|
|
5271df515c | ||
|
|
2e03c70f5b | ||
|
|
2fa2b4ceaf | ||
|
|
de780af9ce | ||
|
|
4372269a0f | ||
|
|
3cee050668 | ||
|
|
af2c43af77 | ||
|
|
21a0c5bd1e | ||
|
|
cf4ce4ef7e | ||
|
|
33f164d547 | ||
|
|
654f2321bd | ||
|
|
f921d99716 | ||
|
|
39ba9b2068 | ||
|
|
ee6414fd69 | ||
|
|
e7eae76b50 | ||
|
|
7430b4dfda | ||
|
|
9a4e6afb83 | ||
|
|
a7867376bf | ||
|
|
c4ddba5666 | ||
|
|
1e1b61b63f | ||
|
|
e0daa1afd6 | ||
|
|
f558da6b2f | ||
|
|
b9b872f522 | ||
|
|
2b3bcb40cf | ||
|
|
dee03baa34 | ||
|
|
b40308a4e7 | ||
|
|
41d82296a0 | ||
|
|
23634df63d | ||
|
|
f9f8e710b3 | ||
|
|
468449ad49 | ||
|
|
4d56ba12d4 | ||
|
|
64c31d3118 | ||
|
|
8f883b1920 | ||
|
|
a1525837e9 | ||
|
|
7c403c3f9a | ||
|
|
468273dc0b | ||
|
|
9b67117cd3 | ||
|
|
c03904b052 | ||
|
|
53a99c100b | ||
|
|
441af973ec | ||
|
|
2d2e44f43e | ||
|
|
4c09f9b768 | ||
|
|
d4d86a2b8a | ||
|
|
8dd0967419 | ||
|
|
94ca982b17 | ||
|
|
6da30a86ac | ||
|
|
c538ba86a1 | ||
|
|
78fcd48aeb | ||
|
|
a8a2a78c50 | ||
|
|
d0e737bae3 | ||
|
|
6e98be0950 | ||
|
|
8542cbf27b | ||
|
|
3dd38eb845 | ||
|
|
b1cd0a4722 | ||
|
|
06ba4c852c | ||
|
|
89aad16896 | ||
|
|
aa8585edbe | ||
|
|
5388a351ab | ||
|
|
b059808d46 | ||
|
|
2bddfff863 | ||
|
|
007eb48274 | ||
|
|
256fc54b31 | ||
|
|
0143795634 | ||
|
|
c7f9bb3eb7 | ||
|
|
15380867ea | ||
|
|
2247cdb822 | ||
|
|
9b5d57c3ea | ||
|
|
237b0e3f9a | ||
|
|
9171ac7706 | ||
|
|
a522bfe1ae | ||
|
|
dba7d501cb | ||
|
|
7b3f650826 | ||
|
|
3fc9b60d32 | ||
|
|
f50fb3ed40 | ||
|
|
86e87ec519 | ||
|
|
d1cbb419a5 | ||
|
|
78ce972d7a | ||
|
|
6d33742087 | ||
|
|
bad9b8fae3 | ||
|
|
5b0692c3e0 | ||
|
|
8271b7a472 | ||
|
|
72e048b892 | ||
|
|
51376434ba | ||
|
|
efb2828d23 | ||
|
|
64f55bac5d | ||
|
|
a09fc13199 | ||
|
|
0050083cff | ||
|
|
163077bd38 | ||
|
|
16b4317b7a | ||
|
|
2db4300963 | ||
|
|
f54cd3b69e | ||
|
|
4f5a361cab | ||
|
|
c216b04230 | ||
|
|
dfedf8195a | ||
|
|
ae90e81c6e | ||
|
|
674a34b517 | ||
|
|
c8c3acdbbb | ||
|
|
e5b15daa73 | ||
|
|
04c7a4c87f | ||
|
|
99da1baf71 | ||
|
|
f544ff7b45 | ||
|
|
29ed279fa5 | ||
|
|
6a6e974383 | ||
|
|
7a530bea35 | ||
|
|
0cf9672633 | ||
|
|
949d7b00c2 | ||
|
|
200c76b6a8 | ||
|
|
ac5475e3cc | ||
|
|
8b39c20166 | ||
|
|
0c159d6727 | ||
|
|
d773ecb511 | ||
|
|
9bdadef931 | ||
|
|
b2e96ded0f | ||
|
|
f255eda0fa | ||
|
|
adf6bd889b | ||
|
|
3d63c17825 | ||
|
|
56ef81f6a0 | ||
|
|
edda1b0884 | ||
|
|
dd2ac3d447 | ||
|
|
57752f5adc | ||
|
|
0153cb68ed | ||
|
|
e5da190c92 | ||
|
|
1388e12f40 | ||
|
|
0f4e9bf4ec | ||
|
|
c12179cd9b | ||
|
|
cab06be879 | ||
|
|
4c855af84c | ||
|
|
037d85d222 | ||
|
|
d29e8d7e24 | ||
|
|
25e42b3a8e | ||
|
|
3df313064b | ||
|
|
976cf488c2 | ||
|
|
da5e58c4cc | ||
|
|
cfd37110a2 | ||
|
|
d15c5227a1 | ||
|
|
093853a2f2 | ||
|
|
b1dd8934a8 | ||
|
|
1acee78dd3 | ||
|
|
55f21003a3 | ||
|
|
cf5d0a90c0 | ||
|
|
3663adaf73 | ||
|
|
2819f0e19e | ||
|
|
2e110ab492 | ||
|
|
8096218360 | ||
|
|
b6684a0997 | ||
|
|
0759da93d4 | ||
|
|
df38390140 | ||
|
|
c141afcb9c | ||
|
|
f436b38c0a | ||
|
|
34d260e98c | ||
|
|
5a3da7fed8 | ||
|
|
13793b1304 | ||
|
|
04cd5c0d9d | ||
|
|
49bf07d5b6 | ||
|
|
a509edff22 | ||
|
|
faec292c7f | ||
|
|
ccb396bf19 | ||
|
|
d08e9c8269 | ||
|
|
7d73c984fc | ||
|
|
728ab446a3 | ||
|
|
68d724f78d | ||
|
|
a0d858109f | ||
|
|
cb8a2b83c5 | ||
|
|
7303c2dd0c | ||
|
|
f74028bdb9 | ||
|
|
84c1b1df13 | ||
|
|
636e667810 | ||
|
|
ba34c72d0e | ||
|
|
f36383fefd | ||
|
|
b746b13996 | ||
|
|
52976c23c9 | ||
|
|
3553894308 | ||
|
|
e5a9ad7ada | ||
|
|
ffc0732fc2 | ||
|
|
ac4a26219c | ||
|
|
30341caef2 | ||
|
|
dd4081ae21 | ||
|
|
8a9f5bf4ff | ||
|
|
898db7063b | ||
|
|
22a29be31f | ||
|
|
4b643bcdff | ||
|
|
2bf1529f20 | ||
|
|
4f7fa361a2 | ||
|
|
d98e0f0115 | ||
|
|
71cf811d8c | ||
|
|
ebf6b88101 | ||
|
|
4fafb63462 | ||
|
|
f14e785b48 | ||
|
|
fc910941d7 | ||
|
|
c1d1bde444 | ||
|
|
82da93a4b3 | ||
|
|
b4e87757c2 | ||
|
|
2b745f953f | ||
|
|
71ef17fc44 | ||
|
|
dc1e1966e3 | ||
|
|
431f57d91d | ||
|
|
67db5ce64c | ||
|
|
25282cefdb | ||
|
|
6e797d5a04 | ||
|
|
fb0807b0de | ||
|
|
c1f1c3b602 | ||
|
|
9d0d7974d2 | ||
|
|
35d47c03d7 | ||
|
|
44800815bf | ||
|
|
caa1ca4aad | ||
|
|
4e53852695 | ||
|
|
dc8c996690 | ||
|
|
42250502fd | ||
|
|
03bb375882 | ||
|
|
a4e71e0127 | ||
|
|
2697c7b68c | ||
|
|
7653b48694 | ||
|
|
3ffffb8a9b | ||
|
|
088011a7a9 | ||
|
|
928b9d9540 | ||
|
|
f6c531f508 | ||
|
|
0649598760 | ||
|
|
0ac446245c | ||
|
|
67e7931dbf | ||
|
|
bf9e5056dc | ||
|
|
834fd9811d | ||
|
|
c4050d5436 | ||
|
|
41be709fe7 | ||
|
|
289a4be263 | ||
|
|
b191922b21 | ||
|
|
e9083f8e9d | ||
|
|
d59abd0ab8 | ||
|
|
e5f6b7ab05 | ||
|
|
f2c0b1cf7f | ||
|
|
52a1cfaff6 | ||
|
|
b381a4136f | ||
|
|
62fb4281c4 | ||
|
|
10c66b5fff | ||
|
|
9738b20253 | ||
|
|
27ed83fea5 | ||
|
|
931c3f8c4f | ||
|
|
e4c1c18156 | ||
|
|
c3a6281ccd | ||
|
|
eb8193f61c | ||
|
|
3062e00764 | ||
|
|
2b2e00b297 | ||
|
|
e97fbf546b | ||
|
|
e6443e9da5 | ||
|
|
f159faa824 | ||
|
|
4d1cff0dc0 | ||
|
|
7cd1634a6d | ||
|
|
cd67593369 | ||
|
|
86d3f84281 | ||
|
|
5ded9179ee | ||
|
|
dde0b3da81 | ||
|
|
352c1ef3bf | ||
|
|
352422ee2e | ||
|
|
7042fefedf | ||
|
|
13d132f035 | ||
|
|
32ba1825fb | ||
|
|
d21f3a4600 | ||
|
|
401542157c | ||
|
|
1b745a68f9 | ||
|
|
7d9a9cb75f | ||
|
|
b69c0c16e5 | ||
|
|
82c45785bf | ||
|
|
f55d55e2a7 | ||
|
|
84f8cc10b3 | ||
|
|
50195fe35f | ||
|
|
286da58db6 | ||
|
|
08a91ca79d | ||
|
|
5f1255e766 | ||
|
|
433ac24a79 | ||
|
|
abb8a483da | ||
|
|
833c5c5489 | ||
|
|
fd3a2a2d7b | ||
|
|
0611603367 | ||
|
|
c65b034530 | ||
|
|
ddffd8af4b | ||
|
|
b7245c9863 | ||
|
|
f41503bf28 | ||
|
|
55212e424c | ||
|
|
c4bab4ea23 | ||
|
|
31d507114a | ||
|
|
e9ce047da1 | ||
|
|
95a16bae7e | ||
|
|
a950e4cdbe | ||
|
|
da83c197f3 | ||
|
|
f23df1abe4 | ||
|
|
bc8a6a74af | ||
|
|
e01d033a06 | ||
|
|
2facaa84cb | ||
|
|
fc27ff7410 | ||
|
|
34d42f50af | ||
|
|
65d5637b61 | ||
|
|
ed744c4513 | ||
|
|
3e2c02f2d8 | ||
|
|
4b19de11fb | ||
|
|
1901d0e2a9 | ||
|
|
f7ad9eb035 | ||
|
|
8afd7b5e23 | ||
|
|
7e301f0ea8 | ||
|
|
7c7e205dda | ||
|
|
65b20410bd | ||
|
|
18d2576225 | ||
|
|
6c9efc6a72 | ||
|
|
08a05ca96d | ||
|
|
1b4fa375a8 | ||
|
|
90ee02ff03 | ||
|
|
ea56ac8128 | ||
|
|
befb3378cb | ||
|
|
7e8cd912dd | ||
|
|
c3edf3dccc | ||
|
|
9b17eaec2c | ||
|
|
7f63647040 | ||
|
|
1a59823109 | ||
|
|
b3d7a4b467 | ||
|
|
72048d8116 | ||
|
|
a056c9bcd4 | ||
|
|
93a7ef07f5 | ||
|
|
3f2fd68ad9 | ||
|
|
4bb45f7730 | ||
|
|
6584924f62 | ||
|
|
a2373c82f8 | ||
|
|
2f0a5e3674 | ||
|
|
163029b191 | ||
|
|
4dc678c982 | ||
|
|
2a12fec65e | ||
|
|
4e03c48316 | ||
|
|
c58172a029 | ||
|
|
43ee3b117d | ||
|
|
e73a6393d2 | ||
|
|
4d9e20cce0 | ||
|
|
aa8f694efd | ||
|
|
d3658a8c1c | ||
|
|
145e283585 | ||
|
|
13693f1d3f | ||
|
|
9508df3127 | ||
|
|
88158e8d8a | ||
|
|
b2b29baaf0 | ||
|
|
b84455acc7 | ||
|
|
c3c7a8bf95 | ||
|
|
a0479fafae | ||
|
|
68e8da21e4 | ||
|
|
a8f9274eef | ||
|
|
ce6fc1f7f1 | ||
|
|
e553937074 | ||
|
|
3ddcc54ec1 | ||
|
|
f991f4f0fb | ||
|
|
9b6e1fb52a | ||
|
|
54086a1981 | ||
|
|
b03f493d5e | ||
|
|
888e62d071 | ||
|
|
abf3d72383 | ||
|
|
512604b61d | ||
|
|
a4f222a130 | ||
|
|
e09ba25496 | ||
|
|
80771215dd | ||
|
|
06486e3f43 | ||
|
|
3e98998eeb | ||
|
|
54635120ad | ||
|
|
76990cd6a8 | ||
|
|
661a28cd94 | ||
|
|
9dc0b308e7 | ||
|
|
bacab198f9 | ||
|
|
91196709e7 | ||
|
|
3e23d35ec3 | ||
|
|
f35e89ec94 | ||
|
|
6e4610aea9 | ||
|
|
276184469b | ||
|
|
aefe592cdb | ||
|
|
0eb3e799d5 | ||
|
|
28ff991bcb | ||
|
|
4fa891a821 | ||
|
|
f0536a70e1 | ||
|
|
ca2dabe92c | ||
|
|
6d4816c143 | ||
|
|
0fde6e21e7 | ||
|
|
3f816a1d2f | ||
|
|
0c8380b002 | ||
|
|
4e3c74538f | ||
|
|
4165b261a4 | ||
|
|
621c3f1160 | ||
|
|
0e270adedd | ||
|
|
d25b16c711 | ||
|
|
d2612a25a0 | ||
|
|
76717cfcc7 | ||
|
|
2283d89bd1 | ||
|
|
7dc5835e7e | ||
|
|
2619cfd927 | ||
|
|
93855923dd | ||
|
|
a74ff87a44 |
+12
-10
@@ -1,9 +1,8 @@
|
|||||||
name: Parallel URL Fetch
|
name: Parallel URL Fetch
|
||||||
|
|
||||||
on:
|
on:
|
||||||
#如要使用定时运行,请把下面两行开头的#符号删除
|
# schedule:
|
||||||
#schedule:
|
# - cron: '*/10 * * * *' # 每10分钟执行一次(公开库每月2000分钟运行时长,每天64分钟)
|
||||||
#- cron: '*/10 * * * *' # 每10分钟执行一次(公开库每月2000分钟运行时长,每天64分钟)
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -16,23 +15,26 @@ jobs:
|
|||||||
|
|
||||||
- name: Fetch URLs in parallel
|
- name: Fetch URLs in parallel
|
||||||
# secrets设置,变量名称:http
|
# secrets设置,变量名称:http
|
||||||
# 变量值(多个保活网页之间用,分隔):http://保活网址1,http://保活网址2,http://…………
|
# 变量值要求:每个保活/up网页或每个重启/re网页之间用空格或者,或者,间隔开,网页前带http://
|
||||||
|
# 变量值填写示例:http://保活或重启网页1 http://保活或重启网页2 http://保活或重启网页3 ………
|
||||||
run: |
|
run: |
|
||||||
IFS=$',,' read -r -a http <<< "${{ secrets.http }}"
|
IFS=$',, ' read -r -a http <<< "${{ secrets.http }}"
|
||||||
echo "*****************************************************"
|
echo "*****************************************************"
|
||||||
echo "甬哥Github项目 :github.com/yonggekkk"
|
echo "甬哥Github项目 :github.com/yonggekkk"
|
||||||
echo "甬哥Blogger博客 :ygkkk.blogspot.com"
|
echo "甬哥Blogger博客 :ygkkk.blogspot.com"
|
||||||
echo "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
echo "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
||||||
echo "🎉Github定时运行serv00保活网页🎉"
|
echo "🎉Github定时运行serv00保活网页🎉"
|
||||||
echo "请先确认已成功安装甬哥Serv00本地SSH三协议一键脚本"
|
echo "请先确认已成功安装甬哥的serv00的SSH脚本或者Github/VPS/软路由脚本"
|
||||||
echo "脚本地址:https://github.com/yonggekkk/sing-box-yg"
|
echo "脚本地址:https://github.com/yonggekkk/sing-box-yg"
|
||||||
echo "*****************************************************"
|
echo "*****************************************************"
|
||||||
for url in "${http[@]}"; do
|
for url in "${http[@]}"; do
|
||||||
response=$(curl -sk "$url" || true)
|
response=$(curl -sk "$url" || true)
|
||||||
if [[ "$response" == *"网页保活启动"* ]]; then
|
if [[ "$response" == *"网页保活启动"* ]]; then
|
||||||
echo "🎉恭喜!$url ✅运行正常,成功拉起一次保活"
|
echo "🎉恭喜!$url ✅运行正常,成功拉起一次保活"
|
||||||
else
|
elif [[ "$response" == *"主程序重启成功"* ]]; then
|
||||||
echo "💥杯具!$url ❌运行失败,⚠️保活网址是否正确或者Serv00炸了"
|
echo "🎉恭喜!$url ✅运行正常,成功重启一次主程序"
|
||||||
fi
|
else
|
||||||
|
echo "💥杯具!$url ❌运行失败,⚠️网页变量是否填写正确?或者Serv00炸了"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
wait
|
wait
|
||||||
|
|||||||
@@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||||
@@ -1,25 +1,33 @@
|
|||||||
# Sing-box两大脚本
|
### 一、Sing-box-yg精装桶一键五协议共存脚本(VPS专用)
|
||||||
## 一、Sing-box-yg精装桶一键四协议共存脚本(VPS专用)
|
### 二、Serv00/Hostuno-sb-yg多平台一键三协议共存脚本(Serv00/Hostuno专用)
|
||||||
## 二、Serv00多平台一键三协议共存脚本(Serv00专用)
|
|
||||||
|
### 注:本项目分享订阅节点都为本地化生成,不使用节点转换、订阅器等第三方外链引用,无需担心节点订阅被外链作者查看
|
||||||
|
|
||||||
### 交流平台:[甬哥博客地址](https://ygkkk.blogspot.com)、[甬哥YouTube频道](https://www.youtube.com/@ygkkk)、[甬哥TG电报群组](https://t.me/+jZHc6-A-1QQ5ZGVl)、[甬哥TG电报频道](https://t.me/+DkC9ZZUgEFQzMTZl)
|
### 交流平台:[甬哥博客地址](https://ygkkk.blogspot.com)、[甬哥YouTube频道](https://www.youtube.com/@ygkkk)、[甬哥TG电报群组](https://t.me/+jZHc6-A-1QQ5ZGVl)、[甬哥TG电报频道](https://t.me/+DkC9ZZUgEFQzMTZl)
|
||||||
|
|
||||||
|
----------------------------------------------------------------
|
||||||
|
#### 推荐推广:极简 + 轻量 + 快速的多协议的ArgoSBX脚本,请移步到[ArgoSBX脚本项目](https://github.com/yonggekkk/argosbx)
|
||||||
|
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
|
||||||
### 一、Sing-box-yg精装桶小白专享一键四协议共存脚本(VPS专用)
|
### 一、Sing-box-yg精装桶小白专享一键五协议共存脚本(VPS专用)
|
||||||
|
|
||||||
脚本特色:多功能前台显示、高自由度交互体验,全平台全客户端无脑通吃
|
* 支持人气最高的五大协议:Vless-reality-vision、Vmess-ws(tls)/Argo、Hysteria-2、Tuic-v5、Anytls
|
||||||
|
|
||||||
支持人气最高的四大协议:Vless-reality-vision、Vmess-ws(tls)/Argo、Hysteria-2、Tuic-v5
|
* 支持纯IPV6、纯IPV4、双栈VPS,支持amd与arm架构,支持alpine系统,推荐使用最新的Ubuntu系统
|
||||||
|
|
||||||
支持纯IPV6、纯IPV4、双栈VPS,支持amd与arm架构,支持alpine系统,推荐使用最新的Ubuntu系统
|
* 小白简单模式:无需域名证书,回车三次就安装完成,复制、扫描你要的节点配置
|
||||||
|
|
||||||
本项目分享订阅节点为本地化生成,不使用节点转换等第三方外链引用,无需担心节点订阅被外链作者查看
|
|
||||||
|
|
||||||
小白简单模式:无需域名证书,回车三次就安装完成,复制、扫描你要的节点配置
|
|
||||||
|
|
||||||
#### 相关说明及注意点请查看[甬哥博客说明与Sing-box视频教程](https://ygkkk.blogspot.com/2023/10/sing-box-yg.html)
|
#### 相关说明及注意点请查看[甬哥博客说明与Sing-box视频教程](https://ygkkk.blogspot.com/2023/10/sing-box-yg.html)
|
||||||
|
|
||||||
#### 视频教程:
|
#### 视频教程:
|
||||||
|
[SSH连不上?使用VPS内置SSH,配合一键功能化脚本命令,小白也能快速搭节点!(Racknerd等所有VPS通用)](https://youtu.be/vhqPG9h8PB4)
|
||||||
|
|
||||||
|
[Racknerd VPS:小白自建最强翻墙代理协议组合方案;高速、稳定、无视IP被封;解决Google gemini无法使用问题](https://youtu.be/aGEmCu503V8)
|
||||||
|
|
||||||
|
[🥇搭建代理9大问题排行榜:第4名全网99%的人被误导!第1名每个人都被折腾到爆!](https://youtu.be/pJwJBqBkcfw)
|
||||||
|
|
||||||
|
[🥇2025年度代理协议"拉到夯"综合排名](https://youtu.be/IoFtykGXDao)
|
||||||
|
|
||||||
[Sing-box精装桶小白一键脚本(一):配置文件通吃SFA/SFI/SFW三平台客户端,Argo隧道、双证书切换、域名分流](https://youtu.be/QwTapeVPeB0)
|
[Sing-box精装桶小白一键脚本(一):配置文件通吃SFA/SFI/SFW三平台客户端,Argo隧道、双证书切换、域名分流](https://youtu.be/QwTapeVPeB0)
|
||||||
|
|
||||||
@@ -31,17 +39,26 @@
|
|||||||
|
|
||||||
[Sing-box精装桶小白一键脚本(五):集成oblivion warp免费vpn功能,本地WARP+赛风VPN切换分流(30个国家IP)](https://youtu.be/5Y6NPsYPws0)
|
[Sing-box精装桶小白一键脚本(五):集成oblivion warp免费vpn功能,本地WARP+赛风VPN切换分流(30个国家IP)](https://youtu.be/5Y6NPsYPws0)
|
||||||
|
|
||||||
|
[Sing-box精装桶五合一脚本重磅更新(六):新增AnyTLS协议;本地IP订阅自动同步更新,通吃Clash/Mihomo、Sing-box与聚合节点](https://youtu.be/LF0-n6-Z6kI)
|
||||||
|
|
||||||
### 截止目前,推荐使用sing-box官方V1.10.0系列正式版本
|
### VPS专用一键脚本如下:快捷方式:```sb```
|
||||||
|
|
||||||
### VPS专用一键脚本,快捷方式:```sb```
|
|
||||||
```
|
|
||||||
bash <(curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sb.sh)
|
|
||||||
```
|
|
||||||
或者
|
|
||||||
```
|
```
|
||||||
bash <(wget -qO- https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sb.sh)
|
bash <(wget -qO- https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sb.sh)
|
||||||
```
|
```
|
||||||
|
或者
|
||||||
|
```
|
||||||
|
bash <(curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sb.sh)
|
||||||
|
```
|
||||||
|
|
||||||
|
一键快捷命令现实本地IP订阅:```printf '3\n8\n1\n订阅密码' | sb```
|
||||||
|
|
||||||
|
一键快捷命令现实Argo临时隧道:```printf '3\n3\n1\n1' | sb```
|
||||||
|
|
||||||
|
一键快捷命令现实Argo固定隧道:```printf '3\n3\n2\n1\n固定密钥\n固定域名' | sb```
|
||||||
|
|
||||||
|
一键快捷命令现实域名分流:```printf '5\n2\n1\n后缀域名1 后缀域名2' | sb```
|
||||||
|
|
||||||
|
|
||||||
### Sing-box-yg脚本界面预览图(注:相关参数随意填写,仅供围观)
|
### Sing-box-yg脚本界面预览图(注:相关参数随意填写,仅供围观)
|
||||||
|
|
||||||
@@ -49,59 +66,51 @@ bash <(wget -qO- https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/sb
|
|||||||
|
|
||||||
-----------------------------------------------------
|
-----------------------------------------------------
|
||||||
|
|
||||||
### 二、Serv00一键三协议共存脚本(Serv00专用):
|
### 二、Serv00/Hostuno一键三协议共存脚本(Serv00/Hostuno专用):
|
||||||
|
|
||||||
修改自Serv00老王sing-box安装脚本,支持一键三协议:vless-reality、vmess-ws(argo)、hysteria2
|
* 目前免费Serv00使用代理脚本有被封账号的风险,收费版Hostuno不受影响,可正常使用
|
||||||
|
|
||||||
主要增加reality协议默认支持 CF vless/trojan 节点的proxyip以及非标端口的优选反代IP功能
|
* 切勿与其他Serv00脚本混用!!!
|
||||||
|
|
||||||
本项目分享订阅节点为本地化生成,不使用节点转换等第三方外链引用,无需担心节点订阅被外链作者查看
|
* 引用[老王eooce](https://github.com/eooce/Sing-box/blob/test/sb_00.sh)、[frankiejun](https://github.com/frankiejun/serv00-play/blob/main/start.sh)相关功能,支持一键三协议:vless-reality、vmess-ws(argo)、hysteria2
|
||||||
|
|
||||||
|
* 主要增加reality协议默认支持 CF vless/trojan 节点的proxyip以及非标端口的优选反代IP功能
|
||||||
|
|
||||||
|
* 聚合通用节点分享,支持到22个节点:三协议各自三个IP,argo全覆盖13个端口节点,已添加不死优选IP
|
||||||
|
|
||||||
#### 相关说明及注意点请查看[甬哥博客说明与Serv00视频教程](https://ygkkk.blogspot.com/2025/01/serv00.html)
|
#### 相关说明及注意点请查看[甬哥博客说明与Serv00视频教程](https://ygkkk.blogspot.com/2025/01/serv00.html)
|
||||||
|
|
||||||
#### 视频教程:
|
#### 视频教程:
|
||||||
|
|
||||||
[Serv00最全面的代理脚本:独家支持三个IP自定义安装,支持Proxyip+反代IP、支持Argo临时/固定隧道+CDN回源;支持五个节点的Sing-box与Clash订阅配置输出](https://youtu.be/2VF9D6z2z7w)
|
[Serv00免费代理脚本最终教程(一):独家支持三个IP自定义安装,支持Proxyip+反代IP、支持Argo临时/固定隧道+CDN回源;支持五个节点的Sing-box与Clash订阅配置输出](https://youtu.be/2VF9D6z2z7w)
|
||||||
|
|
||||||
[Serv00免费节点最终教程:Serv00不必再登录SSH了,部署保活融为一体,独家支持Github、VPS、软路由多平台多账户通用部署,四大方案总有一款适合你](https://youtu.be/rYeX1iU_iZ0)
|
[Serv00免费代理脚本最终教程(二):Serv00不必再登录SSH了,部署保活融为一体,独家支持Github、VPS、软路由多平台多账户通用部署,四大方案总有一款适合你](https://youtu.be/rYeX1iU_iZ0)
|
||||||
|
|
||||||
|
[Serv00免费代理脚本最终教程(三):多功能网页生成【保活+重启+重置端口+查看订阅节点】、随意重置端口功能;Github+Workers自动执行保活功能任你选!](https://youtu.be/9uCfFNnjNc0)
|
||||||
|
|
||||||
|
[Serv00免费代理脚本最终教程(四):重大更新!支持Argo临时/固定隧道相互切换,实时更新节点信息;完美适配Serv00收费版Hostuno.com](https://youtu.be/XN6_vpz1NhE)
|
||||||
|
|
||||||
|
[Serv00免费代理脚本最终教程(五):Github、VPS、软路由多平台脚本大更新!支持多功能网页,Cron内射保活+网页外射保活,任你选](https://youtu.be/tKaBdbU4G4s)
|
||||||
|
|
||||||
|
### Serv00/Hostuno-sb-yg一键脚本
|
||||||
|
|
||||||
|
* Argo高度自定义:可以重置临时隧道; 可以继续使用上回的固定隧道; 也可以更换固定隧道的域名或token
|
||||||
|
|
||||||
### 方案一、Serv00-sb-yg本地专用一键脚本,快捷方式:```sb```
|
|
||||||
```
|
```
|
||||||
bash <(curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00.sh)
|
bash <(curl -Ls https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00.sh)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Serv00-sb-yg脚本界面预览图(注:仅供围观)
|
#### Serv00/Hostuno-sb-yg脚本界面预览图,仅限方案一的SSH端安装脚本(注:仅供围观)
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
### 方案二、Serv00多账号自动部署脚本:serv00.yml(github专用)
|
|
||||||
|
|
||||||
创建私有库,修改serv00.yml文件的参数,运行github action,自动远程部署且保活单个或多个Serv00账号的节点
|
|
||||||
|
|
||||||
|
|
||||||
### 方案三、Serv00多账号自动部署脚本:kp.sh(VPS、软路由专用)
|
|
||||||
|
|
||||||
修改kp.sh文件的参数,可在多个平台上自动远程部署且保活单个或多个Serv00账号的节点,不可用在serv00本地上,默认nano编辑形式
|
|
||||||
|
|
||||||
也可以手动放在其他目录,做好cron定时运行
|
|
||||||
|
|
||||||
```
|
|
||||||
curl -sSL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/kp.sh -o kp.sh && chmod +x kp.sh && nano kp.sh
|
|
||||||
```
|
|
||||||
运行```bash kp.sh```可测试有效性
|
|
||||||
|
|
||||||
### 注意:
|
|
||||||
|
|
||||||
1、serv00.yml与kp.sh都为"强制保活脚本",就算Serv00清空你服务器上所有文件,只要让你连接成功,就会自动安装脚本保活,保持不死状态
|
|
||||||
|
|
||||||
2、方案一与方案二、三不可混用,方案二与三可相互无缝替换
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------
|
-----------------------------------------------------
|
||||||
|
### 感谢支持!微信打赏甬哥侃侃侃ygkkk
|
||||||
|

|
||||||
|
|
||||||
|
---------------------------------------
|
||||||
### 感谢你右上角的star🌟
|
### 感谢你右上角的star🌟
|
||||||
[](https://starchart.cc/yonggekkk/sing-box-yg)
|
[](https://starchart.cc/yonggekkk/sing-box-yg)
|
||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
#### 声明:所有代码来源于Github社区与ChatGPT的整合,[老王eooce](https://github.com/eooce/Sing-box/blob/test/sb_00.sh)、[frankiejun](https://github.com/frankiejun/serv00-play/blob/main/start.sh)
|
#### 声明:所有代码来源于Github社区与ChatGPT的整合
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,49 @@
|
|||||||
|
name: Keep Servers serv00
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 15 */8 * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
keep_servers_alive:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
ACCOUNTS: >
|
||||||
|
[
|
||||||
|
{"SSH_USER":"123456789", "SSH_PASS":"123456", "HOST":"sxxx.serv00.com"}
|
||||||
|
]
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v4.2.2
|
||||||
|
|
||||||
|
- name: Install required packages
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y sshpass jq
|
||||||
|
|
||||||
|
- name: Process each account
|
||||||
|
run: |
|
||||||
|
echo "*****************************************************"
|
||||||
|
echo "*****************************************************"
|
||||||
|
echo "甬哥Github项目 :github.com/yonggekkk"
|
||||||
|
echo "甬哥Blogger博客 :ygkkk.blogspot.com"
|
||||||
|
echo "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
||||||
|
echo "vps服务器远程登录一次SSH脚本【Github】"
|
||||||
|
echo "*****************************************************"
|
||||||
|
echo "*****************************************************"
|
||||||
|
count=0
|
||||||
|
for account in $(echo "${ACCOUNTS}" | jq -c '.[]'); do
|
||||||
|
count=$((count+1))
|
||||||
|
SSH_USER=$(echo $account | jq -r '.SSH_USER')
|
||||||
|
SSH_PASS=$(echo $account | jq -r '.SSH_PASS')
|
||||||
|
HOST=$(echo $account | jq -r '.HOST')
|
||||||
|
if sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" -q exit; then
|
||||||
|
echo "🎉恭喜!✅第【$count】台服务器连接成功!🚀服务器地址:$HOST ,账户名:$SSH_USER"
|
||||||
|
else
|
||||||
|
echo "===================================================="
|
||||||
|
echo "💥杯具!❌第【$count】台服务器连接失败!🚀服务器地址:$HOST ,账户名:$SSH_USER"
|
||||||
|
echo "⚠️可能账号名、密码、服务器名称输入错误,或者当前服务器在维护中"
|
||||||
|
echo "===================================================="
|
||||||
|
fi
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
require('dotenv').config();
|
require('dotenv').config();
|
||||||
const express = require("express");
|
const express = require("express");
|
||||||
const { exec } = require('child_process');
|
const { spawn, exec } = require("child_process");
|
||||||
const app = express();
|
const app = express();
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
const commandToRun = "cd ~ && bash serv00keep.sh";
|
const commandToRun = "cd ~ && bash serv00keep.sh";
|
||||||
@@ -22,9 +22,9 @@ app.get("/re", (req, res) => {
|
|||||||
pkill -f 'run -c con' || echo "无进程可终止,准备执行重启……"
|
pkill -f 'run -c con' || echo "无进程可终止,准备执行重启……"
|
||||||
sbb="\$(cat sb.txt 2>/dev/null)"
|
sbb="\$(cat sb.txt 2>/dev/null)"
|
||||||
nohup ./"\$sbb" run -c config.json >/dev/null 2>&1 &
|
nohup ./"\$sbb" run -c config.json >/dev/null 2>&1 &
|
||||||
sleep 3
|
sleep 2
|
||||||
cd ~ && bash serv00keep.sh
|
(cd ~ && bash serv00keep.sh >/dev/null 2>&1) &
|
||||||
echo 'Serv00主程序重启成功,请检测三个主节点是否可用,如不可用,可再次刷新重启网页或者卸载重装脚本'
|
echo '主程序重启成功,请检测三个主节点是否可用,如不可用,可再次刷新重启网页或者重置端口'
|
||||||
`;
|
`;
|
||||||
exec(additionalCommands, (err, stdout, stderr) => {
|
exec(additionalCommands, (err, stdout, stderr) => {
|
||||||
console.log('stdout:', stdout);
|
console.log('stdout:', stdout);
|
||||||
@@ -35,10 +35,32 @@ app.get("/re", (req, res) => {
|
|||||||
res.type('text').send(stdout);
|
res.type('text').send(stdout);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const changeportCommands = "cd ~ && bash webport.sh";
|
||||||
|
function runportCommand() {
|
||||||
|
exec(changeportCommands, { maxBuffer: 1024 * 1024 * 10 }, (err, stdout, stderr) => {
|
||||||
|
console.log('stdout:', stdout);
|
||||||
|
console.error('stderr:', stderr);
|
||||||
|
if (err) {
|
||||||
|
console.error('Execution error:', err);
|
||||||
|
return res.status(500).send(`错误:${stderr || stdout}`);
|
||||||
|
}
|
||||||
|
if (stderr) {
|
||||||
|
console.error('stderr output:', stderr);
|
||||||
|
return res.status(500).send(`stderr: ${stderr}`);
|
||||||
|
}
|
||||||
|
res.type('text').send(stdout);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
app.get("/rp", (req, res) => {
|
||||||
|
runportCommand();
|
||||||
|
res.type("html").send("<pre>重置三个节点端口完成!请立即关闭本网页并稍等20秒,将主页后缀改为 /list/你的uuid 可查看更新端口后的节点及订阅信息</pre>");
|
||||||
|
});
|
||||||
app.get("/list/key", (req, res) => {
|
app.get("/list/key", (req, res) => {
|
||||||
const listCommands = `
|
const listCommands = `
|
||||||
USERNAME=$(whoami | tr '[:upper:]' '[:lower:]')
|
USERNAME=$(whoami | tr '[:upper:]' '[:lower:]')
|
||||||
FULL_PATH="/home/\${USERNAME}/domains/\${USERNAME}.serv00.net/logs/list.txt"
|
USERNAME1=$(whoami)
|
||||||
|
FULL_PATH="/home/\${USERNAME1}/domains/\${USERNAME}.serv00.net/logs/list.txt"
|
||||||
cat "\$FULL_PATH"
|
cat "\$FULL_PATH"
|
||||||
`;
|
`;
|
||||||
exec(listCommands, (err, stdout, stderr) => {
|
exec(listCommands, (err, stdout, stderr) => {
|
||||||
@@ -49,10 +71,25 @@ app.get("/list/key", (req, res) => {
|
|||||||
res.type('text').send(stdout);
|
res.type('text').send(stdout);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
app.use((req, res) => {
|
|
||||||
res.status(404).send('浏览器地址:http://where.name.serv00.net 三种路径功能:/up是保活,/re是重启,/list/你的uuid 是节点及订阅信息');
|
app.get("/jc", (req, res) => {
|
||||||
|
const ps = spawn("ps", ["aux"]);
|
||||||
|
res.type("text");
|
||||||
|
ps.stdout.on("data", (data) => res.write(data));
|
||||||
|
ps.stderr.on("data", (data) => res.write(`Error: ${data}`));
|
||||||
|
ps.on("close", (code) => {
|
||||||
|
if (code !== 0) {
|
||||||
|
res.status(500).send(`ps aux 进程退出,错误码: ${code}`);
|
||||||
|
} else {
|
||||||
|
res.end();
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
setInterval(runCustomCommand, 3 * 60 * 1000);
|
|
||||||
|
app.use((req, res) => {
|
||||||
|
res.status(404).send('请在浏览器地址:http://where.name.serv00.net 后面加三种路径功能:/up是保活,/re是重启,/rp是重置节点端口,/jc是查看当前系统进程,/list/你的uuid 是节点及订阅信息');
|
||||||
|
});
|
||||||
|
setInterval(runCustomCommand, (2 * 60 + 15) * 60 * 1000);
|
||||||
app.listen(3000, () => {
|
app.listen(3000, () => {
|
||||||
console.log("服务器运行在端口 3000");
|
console.log("服务器运行在端口 3000");
|
||||||
runCustomCommand();
|
runCustomCommand();
|
||||||
|
|||||||
+85
@@ -0,0 +1,85 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset=utf-8 />
|
||||||
|
<title>Serv00-sb-yg本地SSH专用一键脚本:https://github.com/yonggekkk/sing-box-yg</title>
|
||||||
|
<style type="text/css">
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-image: linear-gradient(137deg, #2E457B 0%, #237431 100%) !important;
|
||||||
|
background-attachment: fixed;
|
||||||
|
color: #333;
|
||||||
|
font-family: Arial, Verdana, Tahoma;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#main {
|
||||||
|
background: #FFF;
|
||||||
|
box-shadow: 0 0 40px #00275A;
|
||||||
|
margin-top: 65px;
|
||||||
|
padding-top: 20px;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mainwrapper {
|
||||||
|
display: table;
|
||||||
|
text-align: center;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
color: #EE6628;
|
||||||
|
font-size: 44px;
|
||||||
|
font-weight: normal;
|
||||||
|
text-shadow: 1px 1px 2px #A7A7A7;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: #385792;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 25px;
|
||||||
|
text-shadow: 1px 1px 2px #D4D4D4;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
text-align: left;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-top: 20px;
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #4D73BB;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover, a:focus {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="main">
|
||||||
|
<div id="mainwrapper">
|
||||||
|
<h1>===========================================</b></h1>
|
||||||
|
<h1>甬哥侃侃侃ygkkk Serv00-sb-yg一键三协议共存脚本</h1>
|
||||||
|
<h1>===========================================</b></h1>
|
||||||
|
<h1>YouTubu视频教程 <a href="https://www.youtube.com/@ygkkk">点击进入</a>.</h1>
|
||||||
|
<h1>Github项目地址 <a href="https://github.com/yonggekkk/sing-box-yg">点击进入</a>.</h1>
|
||||||
|
<h1>教程博客地址 <a href="https://ygkkk.blogspot.com">点击进入</a>.</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -1,14 +1,15 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# 定时设置:*/10 * * * * /bin/bash /root/kp.sh 每10分钟运行一次
|
# 定时设置:*/10 * * * * /bin/bash /root/kp.sh 每10分钟运行一次
|
||||||
|
# 如果你已安装了Serv00本地SSH脚本,不要再运行此脚本部署了,这样会造成进程爆满,必须二选一!
|
||||||
# serv00变量添加规则:
|
# serv00变量添加规则:
|
||||||
# 推荐:为确保节点可用性,建议在Serv00网页不设置端口,脚本会随机生成有效端口,首次运行会中断SSH,请把RES设置为n再执行即可
|
# 如使用保活网页,请不要启用cron,以防止cron与网页保活重复运行造成进程爆满
|
||||||
# RES(必填):n表示每次不重置部署,y表示每次重置部署。REP(必填):n表示不重置随机端口,y表示重置端口(三个端口留空)。SSH_USER(必填)表示serv00账号名。SSH_PASS(必填)表示serv00密码。REALITY表示reality域名(留空表示serv00官方域名:你serv00账号名.serv00.net)。SUUID表示uuid(留空表示随机uuid)。TCP1_PORT表示vless的tcp端口(留空表示随机tcp端口)。TCP2_PORT表示vmess的tcp端口(留空表示随机tcp端口)。UDP_PORT表示hy2的udp端口(留空表示随机udp端口)。HOST(必填)表示登录serv00服务器域名。ARGO_DOMAIN表示argo固定域名(留空表示临时域名)。ARGO_AUTH表示argo固定域名token(留空表示临时域名)。
|
# RES(必填):n表示每次不重置部署,y表示每次重置部署。REP(必填):n表示不重置随机端口(三个端口留空),y表示重置端口(三个端口留空)。SSH_USER(必填)表示serv00账号名。SSH_PASS(必填)表示serv00密码。REALITY表示reality域名(留空表示serv00官方域名:你serv00账号名.serv00.net)。SUUID表示uuid(留空表示随机uuid)。TCP1_PORT表示vless的tcp端口(留空表示随机tcp端口)。TCP2_PORT表示vmess的tcp端口(留空表示随机tcp端口)。UDP_PORT表示hy2的udp端口(留空表示随机udp端口)。HOST(必填)表示登录serv00服务器域名。ARGO_DOMAIN表示argo固定域名(留空表示临时域名)。ARGO_AUTH表示argo固定域名token(留空表示临时域名)。
|
||||||
# 必填变量:RES、REP、SSH_USER、SSH_PASS、HOST
|
# 必填变量:RES、REP、SSH_USER、SSH_PASS、HOST
|
||||||
# 注意[]"",:这些符号不要乱删,按规律对齐
|
# 注意[]"",:这些符号不要乱删,按规律对齐
|
||||||
# 每行一个{serv00服务器},一个服务也可,末尾用,间隔,最后一个服务器末尾无需用,间隔
|
# 每行一个{serv00服务器},一个服务也可,末尾用,间隔,最后一个服务器末尾无需用,间隔
|
||||||
ACCOUNTS='[
|
ACCOUNTS='[
|
||||||
{"RES":"n", "REP":"n", "SSH_USER":"你的serv00账号名", "SSH_PASS":"你的serv00账号密码", "REALITY":"你serv00账号名.serv00.net", "SUUID":"自设UUID", "TCP1_PORT":"vless的tcp端口", "TCP2_PORT":"vmess的tcp端口", "UDP_PORT":"hy2的udp端口", "HOST":"s1.serv00.com", "ARGO_DOMAIN":"", "ARGO_AUTH":""},
|
{"RES":"n", "REP":"n", "SSH_USER":"你的serv00账号名", "SSH_PASS":"你的serv00账号密码", "REALITY":"你serv00账号名.serv00.net", "SUUID":"自设UUID", "TCP1_PORT":"vless的tcp端口", "TCP2_PORT":"vmess的tcp端口", "UDP_PORT":"hy2的udp端口", "HOST":"s1.serv00.com", "ARGO_DOMAIN":"", "ARGO_AUTH":""},
|
||||||
{"RES":"y", "REP":"y", "SSH_USER":"123456", "SSH_PASS":"7890000", "REALITY":"time.is", "SUUID":"73203ee6-b3fa-4a3d-b5df-6bb2f55073ad", "TCP1_PORT":"55254", "TCP2_PORT":"55255", "UDP_PORT":"55256", "HOST":"s16.serv00.com", "ARGO_DOMAIN":"你的argo固定域名", "ARGO_AUTH":"eyJhIjoiOTM3YzFjYWI88552NTFiYTM4ZTY0ZDQzRmlNelF0TkRBd1pUQTRNVEJqTUdVeCJ9"}
|
{"RES":"y", "REP":"y", "SSH_USER":"123456", "SSH_PASS":"7890000", "REALITY":"time.is", "SUUID":"73203ee6-b3fa-4a3d-b5df-6bb2f55073ad", "TCP1_PORT":"", "TCP2_PORT":"", "UDP_PORT":"", "HOST":"s16.serv00.com", "ARGO_DOMAIN":"你的argo固定域名", "ARGO_AUTH":"eyJhIjoiOTM3YzFjYWI88552NTFiYTM4ZTY0ZDQzRmlNelF0TkRBd1pUQTRNVEJqTUdVeCJ9"}
|
||||||
]'
|
]'
|
||||||
run_remote_command() {
|
run_remote_command() {
|
||||||
local RES=$1
|
local RES=$1
|
||||||
@@ -54,7 +55,7 @@ echo "甬哥Github项目 :github.com/yonggekkk"
|
|||||||
echo "甬哥Blogger博客 :ygkkk.blogspot.com"
|
echo "甬哥Blogger博客 :ygkkk.blogspot.com"
|
||||||
echo "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
echo "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
||||||
echo "自动远程部署Serv00三合一协议脚本【VPS+软路由】"
|
echo "自动远程部署Serv00三合一协议脚本【VPS+软路由】"
|
||||||
echo "版本:V25.2.18"
|
echo "版本:V25.3.26"
|
||||||
echo "*****************************************************"
|
echo "*****************************************************"
|
||||||
echo "*****************************************************"
|
echo "*****************************************************"
|
||||||
count=0
|
count=0
|
||||||
@@ -82,7 +83,6 @@ echo "*****************************************************"
|
|||||||
if ! sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" "$check_process" || [[ "$RES" =~ ^[Yy]$ ]]; then
|
if ! sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" "$check_process" || [[ "$RES" =~ ^[Yy]$ ]]; then
|
||||||
echo "⚠️检测到主进程或者argo进程未启动,或者执行重置"
|
echo "⚠️检测到主进程或者argo进程未启动,或者执行重置"
|
||||||
echo "⚠️现在开始修复或重置部署……请稍等"
|
echo "⚠️现在开始修复或重置部署……请稍等"
|
||||||
echo "⚠️中断退出,说明首次设置随机端口完成,请把RES设置为n再执行即可"
|
|
||||||
output=$(run_remote_command "$RES" "$REP" "$SSH_USER" "$SSH_PASS" "${REALITY}" "$SUUID" "$TCP1_PORT" "$TCP2_PORT" "$UDP_PORT" "$HOST" "${ARGO_DOMAIN}" "${ARGO_AUTH}")
|
output=$(run_remote_command "$RES" "$REP" "$SSH_USER" "$SSH_PASS" "${REALITY}" "$SUUID" "$TCP1_PORT" "$TCP2_PORT" "$UDP_PORT" "$HOST" "${ARGO_DOMAIN}" "${ARGO_AUTH}")
|
||||||
echo "远程命令执行结果:$output"
|
echo "远程命令执行结果:$output"
|
||||||
else
|
else
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
+7
-8
@@ -1,8 +1,9 @@
|
|||||||
name: Keep Servers Alive
|
name: Keep Servers Alive
|
||||||
|
# 如果你已安装了Serv00本地SSH脚本,不要再运行此github部署了,这样会造成进程爆满,必须二选一!
|
||||||
on:
|
on:
|
||||||
schedule:
|
#如使用保活网页,请禁用cron,保持下面两行开头的#符号,以防止cron与网页保活重复运行造成进程爆满
|
||||||
- cron: '0 */4 * * *' # 每4小时执行一次(私库每月500分钟运行时长,每天16分钟)
|
#schedule:
|
||||||
|
# - cron: '0 */4 * * *' # 每4小时执行一次(私库每月500分钟运行时长,每天16分钟)
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -10,15 +11,14 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
# serv00变量添加规则:
|
# serv00变量添加规则:
|
||||||
# 推荐:为确保节点可用性,建议在Serv00网页不设置端口,脚本会随机生成有效端口,首次运行会中断SSH,请把RES设置为n再执行即可
|
# RES(必填):n表示每次不重置部署,y表示每次重置部署。REP(必填):n表示不重置随机端口(三个端口留空),y表示重置端口(三个端口留空)。SSH_USER(必填)表示serv00账号名。SSH_PASS(必填)表示serv00密码。REALITY表示reality域名(留空表示serv00官方域名:你serv00账号名.serv00.net)。SUUID表示uuid(留空表示随机uuid)。TCP1_PORT表示vless的tcp端口(留空表示随机tcp端口)。TCP2_PORT表示vmess的tcp端口(留空表示随机tcp端口)。UDP_PORT表示hy2的udp端口(留空表示随机udp端口)。HOST(必填)表示登录serv00服务器域名。ARGO_DOMAIN表示argo固定域名(留空表示临时域名)。ARGO_AUTH表示argo固定域名token(留空表示临时域名)。
|
||||||
# RES(必填):n表示每次不重置部署,y表示每次重置部署。REP(必填):n表示不重置随机端口,y表示重置端口(三个端口留空)。SSH_USER(必填)表示serv00账号名。SSH_PASS(必填)表示serv00密码。REALITY表示reality域名(留空表示serv00官方域名:你serv00账号名.serv00.net)。SUUID表示uuid(留空表示随机uuid)。TCP1_PORT表示vless的tcp端口(留空表示随机tcp端口)。TCP2_PORT表示vmess的tcp端口(留空表示随机tcp端口)。UDP_PORT表示hy2的udp端口(留空表示随机udp端口)。HOST(必填)表示登录serv00服务器域名。ARGO_DOMAIN表示argo固定域名(留空表示临时域名)。ARGO_AUTH表示argo固定域名token(留空表示临时域名)。
|
|
||||||
# 必填变量:RES、REP、SSH_USER、SSH_PASS、HOST
|
# 必填变量:RES、REP、SSH_USER、SSH_PASS、HOST
|
||||||
# 注意[]"",:这些符号不要乱删,按规律对齐
|
# 注意[]"",:这些符号不要乱删,按规律对齐
|
||||||
# 每行一个{serv00服务器},一个服务也可,末尾用,间隔,最后一个服务器末尾无需用,间隔
|
# 每行一个{serv00服务器},一个服务也可,末尾用,间隔,最后一个服务器末尾无需用,间隔
|
||||||
ACCOUNTS: >
|
ACCOUNTS: >
|
||||||
[
|
[
|
||||||
{"RES":"n", "REP":"n", "SSH_USER":"你的serv00账号名", "SSH_PASS":"你的serv00账号密码", "REALITY":"你serv00账号名.serv00.net", "SUUID":"自设UUID", "TCP1_PORT":"vless的tcp端口", "TCP2_PORT":"vmess的tcp端口", "UDP_PORT":"hy2的udp端口", "HOST":"s1.serv00.com", "ARGO_DOMAIN":"", "ARGO_AUTH":""},
|
{"RES":"n", "REP":"n", "SSH_USER":"你的serv00账号名", "SSH_PASS":"你的serv00账号密码", "REALITY":"你serv00账号名.serv00.net", "SUUID":"自设UUID", "TCP1_PORT":"vless的tcp端口", "TCP2_PORT":"vmess的tcp端口", "UDP_PORT":"hy2的udp端口", "HOST":"s1.serv00.com", "ARGO_DOMAIN":"", "ARGO_AUTH":""},
|
||||||
{"RES":"y", "REP":"y", "SSH_USER":"123456", "SSH_PASS":"7890000", "REALITY":"time.is", "SUUID":"73203ee6-b3fa-4a3d-b5df-6bb2f55073ad", "TCP1_PORT":"55254", "TCP2_PORT":"55255", "UDP_PORT":"55256", "HOST":"s16.serv00.com", "ARGO_DOMAIN":"你的argo固定域名", "ARGO_AUTH":"eyJhIjoiOTM3YzFjYWI88552NTFiYTM4ZTY0ZDQzRmlNelF0TkRBd1pUQTRNVEJqTUdVeCJ9"}
|
{"RES":"y", "REP":"y", "SSH_USER":"123456", "SSH_PASS":"7890000", "REALITY":"time.is", "SUUID":"73203ee6-b3fa-4a3d-b5df-6bb2f55073ad", "TCP1_PORT":"", "TCP2_PORT":"", "UDP_PORT":"", "HOST":"s16.serv00.com", "ARGO_DOMAIN":"你的argo固定域名", "ARGO_AUTH":"eyJhIjoiOTM3YzFjYWI88552NTFiYTM4ZTY0ZDQzRmlNelF0TkRBd1pUQTRNVEJqTUdVeCJ9"}
|
||||||
]
|
]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
@@ -59,7 +59,7 @@ jobs:
|
|||||||
echo "甬哥Blogger博客 :ygkkk.blogspot.com"
|
echo "甬哥Blogger博客 :ygkkk.blogspot.com"
|
||||||
echo "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
echo "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
||||||
echo "自动远程部署并保活Serv00三合一协议脚本【Github】"
|
echo "自动远程部署并保活Serv00三合一协议脚本【Github】"
|
||||||
echo "版本:V25.2.18"
|
echo "版本:V25.3.26"
|
||||||
echo "*****************************************************"
|
echo "*****************************************************"
|
||||||
echo "*****************************************************"
|
echo "*****************************************************"
|
||||||
count=0
|
count=0
|
||||||
@@ -87,7 +87,6 @@ jobs:
|
|||||||
if ! sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" "$check_process" || [[ "$RES" =~ ^[Yy]$ ]]; then
|
if ! sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" "$check_process" || [[ "$RES" =~ ^[Yy]$ ]]; then
|
||||||
echo "⚠️检测到主进程或者argo进程未启动,或者执行重置"
|
echo "⚠️检测到主进程或者argo进程未启动,或者执行重置"
|
||||||
echo "⚠️现在开始修复或重置部署……请稍等"
|
echo "⚠️现在开始修复或重置部署……请稍等"
|
||||||
echo "⚠️提示Error: Process completed with exit code 255中断并退出时,说明设置随机端口完成,请把RES、REP设置为n再执行即可"
|
|
||||||
output=$(run_remote_command "$RES" "$REP" "$SSH_USER" "$SSH_PASS" "${REALITY}" "$SUUID" "$TCP1_PORT" "$TCP2_PORT" "$UDP_PORT" "$HOST" "${ARGO_DOMAIN}" "${ARGO_AUTH}")
|
output=$(run_remote_command "$RES" "$REP" "$SSH_USER" "$SSH_PASS" "${REALITY}" "$SUUID" "$TCP1_PORT" "$TCP2_PORT" "$UDP_PORT" "$HOST" "${ARGO_DOMAIN}" "${ARGO_AUTH}")
|
||||||
echo "远程命令执行结果:$output"
|
echo "远程命令执行结果:$output"
|
||||||
else
|
else
|
||||||
|
|||||||
+356
-230
@@ -21,15 +21,14 @@ export IP=${IP:-''}
|
|||||||
export reym=${reym:-''}
|
export reym=${reym:-''}
|
||||||
export reset=${reset:-''}
|
export reset=${reset:-''}
|
||||||
export resport=${resport:-''}
|
export resport=${resport:-''}
|
||||||
|
devil binexec on >/dev/null 2>&1
|
||||||
USERNAME=$(whoami | tr '[:upper:]' '[:lower:]')
|
USERNAME=$(whoami | tr '[:upper:]' '[:lower:]')
|
||||||
HOSTNAME=$(hostname)
|
HOSTNAME=$(hostname)
|
||||||
|
snb=$(hostname | cut -d. -f1)
|
||||||
|
nb=$(hostname | cut -d '.' -f 1 | tr -d 's')
|
||||||
if [[ "$reset" =~ ^[Yy]$ ]]; then
|
if [[ "$reset" =~ ^[Yy]$ ]]; then
|
||||||
#crontab -l | grep -v "serv00keep" >rmcron
|
|
||||||
#crontab rmcron >/dev/null 2>&1
|
|
||||||
#rm rmcron
|
|
||||||
bash -c 'ps aux | grep $(whoami) | grep -v "sshd\|bash\|grep" | awk "{print \$2}" | xargs -r kill -9 >/dev/null 2>&1' >/dev/null 2>&1
|
bash -c 'ps aux | grep $(whoami) | grep -v "sshd\|bash\|grep" | awk "{print \$2}" | xargs -r kill -9 >/dev/null 2>&1' >/dev/null 2>&1
|
||||||
rm -rf domains bin serv00keep.sh
|
devil www list | awk 'NR > 1 && NF {print $1}' | xargs -I {} devil www del {} > /dev/null 2>&1
|
||||||
sed -i '/export PATH="\$HOME\/bin:\$PATH"/d' "${HOME}/.bashrc" >/dev/null 2>&1
|
sed -i '/export PATH="\$HOME\/bin:\$PATH"/d' "${HOME}/.bashrc" >/dev/null 2>&1
|
||||||
source "${HOME}/.bashrc" >/dev/null 2>&1
|
source "${HOME}/.bashrc" >/dev/null 2>&1
|
||||||
find ~ -type f -exec chmod 644 {} \; 2>/dev/null
|
find ~ -type f -exec chmod 644 {} \; 2>/dev/null
|
||||||
@@ -39,43 +38,83 @@ find ~ -type d -empty -exec rmdir {} \; 2>/dev/null
|
|||||||
find ~ -exec rm -rf {} \; 2>/dev/null
|
find ~ -exec rm -rf {} \; 2>/dev/null
|
||||||
echo "重置系统完成"
|
echo "重置系统完成"
|
||||||
fi
|
fi
|
||||||
sleep 2
|
|
||||||
devil www add ${USERNAME}.serv00.net php > /dev/null 2>&1
|
devil www add ${USERNAME}.serv00.net php > /dev/null 2>&1
|
||||||
FILE_PATH="${HOME}/domains/${USERNAME}.serv00.net/public_html"
|
FILE_PATH="${HOME}/domains/${USERNAME}.serv00.net/public_html"
|
||||||
WORKDIR="${HOME}/domains/${USERNAME}.serv00.net/logs"
|
WORKDIR="${HOME}/domains/${USERNAME}.serv00.net/logs"
|
||||||
|
[ -d "$FILE_PATH" ] || mkdir -p "$FILE_PATH"
|
||||||
[ -d "$WORKDIR" ] || (mkdir -p "$WORKDIR" && chmod 777 "$WORKDIR")
|
[ -d "$WORKDIR" ] || (mkdir -p "$WORKDIR" && chmod 777 "$WORKDIR")
|
||||||
|
keep_path="${HOME}/domains/${snb}.${USERNAME}.serv00.net/public_nodejs"
|
||||||
|
[ -d "$keep_path" ] || mkdir -p "$keep_path"
|
||||||
|
|
||||||
read_ip(){
|
if [[ -z "$ARGO_AUTH" ]] && [[ -f "$WORKDIR/ARGO_AUTH.log" ]]; then
|
||||||
nb=$(echo "$HOSTNAME" | cut -d '.' -f 1 | tr -d 's')
|
ARGO_AUTH=$(cat "$WORKDIR/ARGO_AUTH.log" 2>/dev/null)
|
||||||
ym=("$HOSTNAME" "cache$nb.serv00.com" "web$nb.serv00.com")
|
elif [[ -z "$ARGO_AUTH" ]] && [[ ! -f "$WORKDIR/ARGO_AUTH.log" ]]; then
|
||||||
rm -rf ip.txt hy2ip.txt
|
echo "$ARGO_AUTH" > $WORKDIR/ARGO_AUTH.log
|
||||||
dig @8.8.8.8 +time=5 +short "web$nb.serv00.com" >> hy2ip.txt
|
|
||||||
dig @8.8.8.8 +time=5 +short "$HOSTNAME" >> hy2ip.txt
|
|
||||||
dig @8.8.8.8 +time=5 +short "cache$nb.serv00.com" >> hy2ip.txt
|
|
||||||
for host in "${ym[@]}"; do
|
|
||||||
response=$(curl -sL --connect-timeout 5 --max-time 7 "https://ss.serv0.us.kg/api/getip?host=$host")
|
|
||||||
if [[ "$response" =~ ^$|unknown|not|error ]]; then
|
|
||||||
dig @8.8.8.8 +time=5 +short $host >> ip.txt
|
|
||||||
sleep 1
|
|
||||||
else
|
else
|
||||||
echo "$response" | while IFS='|' read -r ip status; do
|
echo "$ARGO_AUTH" > $WORKDIR/ARGO_AUTH.log
|
||||||
if [[ $status == "Accessible" ]]; then
|
ARGO_AUTH=$(cat "$WORKDIR/ARGO_AUTH.log" 2>/dev/null)
|
||||||
echo "$ip: 可用" >> ip.txt
|
fi
|
||||||
|
if [[ -z "$ARGO_DOMAIN" ]] && [[ -f "$WORKDIR/ARGO_DOMAIN.log" ]]; then
|
||||||
|
ARGO_DOMAIN=$(cat "$WORKDIR/ARGO_DOMAIN.log" 2>/dev/null)
|
||||||
|
elif [[ -z "$ARGO_DOMAIN" ]] && [[ ! -f "$WORKDIR/ARGO_DOMAIN.log" ]]; then
|
||||||
|
echo "$ARGO_DOMAIN" > $WORKDIR/ARGO_DOMAIN.log
|
||||||
else
|
else
|
||||||
echo "$ip: 被墙 (Argo与CDN回源节点、proxyip依旧有效)" >> ip.txt
|
echo "$ARGO_DOMAIN" > $WORKDIR/ARGO_DOMAIN.log
|
||||||
fi
|
ARGO_DOMAIN=$(cat "$WORKDIR/ARGO_DOMAIN.log" 2>/dev/null)
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
if [[ -z "$IP" ]]; then
|
if [[ -z "$UUID" ]] && [[ -f "$WORKDIR/UUID.txt" ]]; then
|
||||||
IP=$(grep -m 1 "可用" ip.txt | awk -F ':' '{print $1}')
|
UUID=$(cat "$WORKDIR/UUID.txt" 2>/dev/null)
|
||||||
if [ -z "$IP" ]; then
|
elif [[ -z "$UUID" ]] && [[ ! -f "$WORKDIR/UUID.txt" ]]; then
|
||||||
IP=$(okip)
|
UUID=$(uuidgen -r)
|
||||||
if [ -z "$IP" ]; then
|
echo "$UUID" > $WORKDIR/UUID.txt
|
||||||
IP=$(head -n 1 ip.txt | awk -F ':' '{print $1}')
|
else
|
||||||
|
echo "$UUID" > $WORKDIR/UUID.txt
|
||||||
|
UUID=$(cat "$WORKDIR/UUID.txt" 2>/dev/null)
|
||||||
fi
|
fi
|
||||||
|
curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/app.js -o "$keep_path"/app.js
|
||||||
|
sed -i '' "15s/name/$snb/g" "$keep_path"/app.js
|
||||||
|
sed -i '' "59s/key/$UUID/g" "$keep_path"/app.js
|
||||||
|
sed -i '' "90s/name/$USERNAME/g" "$keep_path"/app.js
|
||||||
|
sed -i '' "90s/where/$snb/g" "$keep_path"/app.js
|
||||||
|
if [[ -z "$reym" ]] && [[ -f "$WORKDIR/reym.txt" ]]; then
|
||||||
|
reym=$(cat "$WORKDIR/reym.txt" 2>/dev/null)
|
||||||
|
elif [[ -z "$reym" ]] && [[ ! -f "$WORKDIR/reym.txt" ]]; then
|
||||||
|
reym=$USERNAME.serv00.net
|
||||||
|
echo "$reym" > $WORKDIR/reym.txt
|
||||||
|
else
|
||||||
|
echo "$reym" > $WORKDIR/reym.txt
|
||||||
|
reym=$(cat "$WORKDIR/reym.txt" 2>/dev/null)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
resallport(){
|
||||||
|
portlist=$(devil port list | grep -E '^[0-9]+[[:space:]]+[a-zA-Z]+' | sed 's/^[[:space:]]*//')
|
||||||
|
if [[ -z "$portlist" ]]; then
|
||||||
|
yellow "无端口"
|
||||||
|
else
|
||||||
|
while read -r line; do
|
||||||
|
port=$(echo "$line" | awk '{print $1}')
|
||||||
|
port_type=$(echo "$line" | awk '{print $2}')
|
||||||
|
yellow "删除端口 $port ($port_type)"
|
||||||
|
devil port del "$port_type" "$port"
|
||||||
|
done <<< "$portlist"
|
||||||
fi
|
fi
|
||||||
|
check_port
|
||||||
|
hyp=$(jq -r '.inbounds[0].listen_port' $WORKDIR/config.json)
|
||||||
|
vlp=$(jq -r '.inbounds[3].listen_port' $WORKDIR/config.json)
|
||||||
|
vmp=$(jq -r '.inbounds[4].listen_port' $WORKDIR/config.json)
|
||||||
|
sed -i '' "12s/$hyp/$hy2_port/g" $WORKDIR/config.json
|
||||||
|
sed -i '' "33s/$hyp/$hy2_port/g" $WORKDIR/config.json
|
||||||
|
sed -i '' "54s/$hyp/$hy2_port/g" $WORKDIR/config.json
|
||||||
|
sed -i '' "75s/$vlp/$vless_port/g" $WORKDIR/config.json
|
||||||
|
sed -i '' "102s/$vmp/$vmess_port/g" $WORKDIR/config.json
|
||||||
|
sed -i '' -e "17s|'$vlp'|'$vless_port'|" serv00keep.sh
|
||||||
|
sed -i '' -e "18s|'$vmp'|'$vmess_port'|" serv00keep.sh
|
||||||
|
sed -i '' -e "19s|'$hyp'|'$hy2_port'|" serv00keep.sh
|
||||||
|
ps aux | grep '[r]un -c con' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2>&1
|
||||||
|
sleep 1
|
||||||
|
curl -sk "http://${snb}.${USERNAME}.serv00.net/up" > /dev/null 2>&1
|
||||||
|
sleep 5
|
||||||
}
|
}
|
||||||
|
|
||||||
okip(){
|
okip(){
|
||||||
@@ -99,47 +138,10 @@ okip(){
|
|||||||
echo "$IP"
|
echo "$IP"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Generating argo Config
|
|
||||||
argo_configure() {
|
|
||||||
if [[ $ARGO_AUTH =~ TunnelSecret ]]; then
|
|
||||||
echo $ARGO_AUTH > tunnel.json
|
|
||||||
cat > tunnel.yml << EOF
|
|
||||||
tunnel: $(cut -d\" -f12 <<< "$ARGO_AUTH")
|
|
||||||
credentials-file: tunnel.json
|
|
||||||
protocol: http2
|
|
||||||
|
|
||||||
ingress:
|
|
||||||
- hostname: $ARGO_DOMAIN
|
|
||||||
service: http://localhost:$vmess_port
|
|
||||||
originRequest:
|
|
||||||
noTLSVerify: true
|
|
||||||
- service: http_status:404
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
uuidport(){
|
|
||||||
if [[ -z "$UUID" ]]; then
|
|
||||||
if [ ! -e UUID.txt ]; then
|
|
||||||
UUID=$(uuidgen -r)
|
|
||||||
echo "$UUID" > UUID.txt
|
|
||||||
else
|
|
||||||
UUID=$(<UUID.txt)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [[ -z "$reym" ]]; then
|
|
||||||
reym=$USERNAME.serv00.net
|
|
||||||
fi
|
|
||||||
if [[ -z "$vless_port" ]] || [[ -z "$vmess_port" ]] || [[ -z "$hy2_port" ]]; then
|
|
||||||
check_port
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
check_port(){
|
check_port(){
|
||||||
port_list=$(devil port list)
|
port_list=$(devil port list)
|
||||||
tcp_ports=$(echo "$port_list" | grep -c "tcp")
|
tcp_ports=$(echo "$port_list" | grep -c "tcp")
|
||||||
udp_ports=$(echo "$port_list" | grep -c "udp")
|
udp_ports=$(echo "$port_list" | grep -c "udp")
|
||||||
|
|
||||||
if [[ $tcp_ports -ne 2 || $udp_ports -ne 1 ]]; then
|
if [[ $tcp_ports -ne 2 || $udp_ports -ne 1 ]]; then
|
||||||
echo "端口数量不符合要求,正在调整..."
|
echo "端口数量不符合要求,正在调整..."
|
||||||
|
|
||||||
@@ -191,16 +193,24 @@ if [[ $tcp_ports -ne 2 || $udp_ports -ne 1 ]]; then
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
echo "端口已调整完成,将断开ssh连接"
|
#echo "端口已调整完成,将断开ssh连接"
|
||||||
sleep 3
|
sleep 3
|
||||||
devil binexec on >/dev/null 2>&1
|
#devil binexec on >/dev/null 2>&1
|
||||||
kill -9 $(ps -o ppid= -p $$) >/dev/null 2>&1
|
#kill -9 $(ps -o ppid= -p $$) >/dev/null 2>&1
|
||||||
|
port_list=$(devil port list)
|
||||||
|
tcp_ports=$(echo "$port_list" | grep -c "tcp")
|
||||||
|
udp_ports=$(echo "$port_list" | grep -c "udp")
|
||||||
|
tcp_ports=$(echo "$port_list" | awk '/tcp/ {print $1}')
|
||||||
|
tcp_port1=$(echo "$tcp_ports" | sed -n '1p')
|
||||||
|
tcp_port2=$(echo "$tcp_ports" | sed -n '2p')
|
||||||
|
udp_port=$(echo "$port_list" | awk '/udp/ {print $1}')
|
||||||
|
purple "当前TCP端口: $tcp_port1 和 $tcp_port2"
|
||||||
|
purple "当前UDP端口: $udp_port"
|
||||||
else
|
else
|
||||||
tcp_ports=$(echo "$port_list" | awk '/tcp/ {print $1}')
|
tcp_ports=$(echo "$port_list" | awk '/tcp/ {print $1}')
|
||||||
tcp_port1=$(echo "$tcp_ports" | sed -n '1p')
|
tcp_port1=$(echo "$tcp_ports" | sed -n '1p')
|
||||||
tcp_port2=$(echo "$tcp_ports" | sed -n '2p')
|
tcp_port2=$(echo "$tcp_ports" | sed -n '2p')
|
||||||
udp_port=$(echo "$port_list" | awk '/udp/ {print $1}')
|
udp_port=$(echo "$port_list" | awk '/udp/ {print $1}')
|
||||||
|
|
||||||
echo "你的vless-reality的TCP端口: $tcp_port1"
|
echo "你的vless-reality的TCP端口: $tcp_port1"
|
||||||
echo "你的vmess的TCP端口(设置Argo固定域名端口):$tcp_port2"
|
echo "你的vmess的TCP端口(设置Argo固定域名端口):$tcp_port2"
|
||||||
echo "你的hysteria2的UDP端口: $udp_port"
|
echo "你的hysteria2的UDP端口: $udp_port"
|
||||||
@@ -210,18 +220,114 @@ export vmess_port=$tcp_port2
|
|||||||
export hy2_port=$udp_port
|
export hy2_port=$udp_port
|
||||||
}
|
}
|
||||||
|
|
||||||
download_and_run_singbox() {
|
get_argodomain() {
|
||||||
if [ ! -s sb.txt ] && [ ! -s ag.txt ]; then
|
if [[ -n $ARGO_AUTH ]]; then
|
||||||
ARCH=$(uname -m) && DOWNLOAD_DIR="." && mkdir -p "$DOWNLOAD_DIR" && FILE_INFO=()
|
echo "$ARGO_DOMAIN" > ARGO_DOMAIN.log
|
||||||
if [ "$ARCH" == "arm" ] || [ "$ARCH" == "arm64" ] || [ "$ARCH" == "aarch64" ]; then
|
echo "$ARGO_DOMAIN"
|
||||||
FILE_INFO=("https://github.com/eooce/test/releases/download/arm64/sb web" "https://github.com/eooce/test/releases/download/arm64/bot13 bot")
|
|
||||||
elif [ "$ARCH" == "amd64" ] || [ "$ARCH" == "x86_64" ] || [ "$ARCH" == "x86" ]; then
|
|
||||||
FILE_INFO=("https://github.com/yonggekkk/Cloudflare_vless_trojan/releases/download/serv00/sb web" "https://github.com/yonggekkk/Cloudflare_vless_trojan/releases/download/serv00/server bot")
|
|
||||||
else
|
else
|
||||||
echo "Unsupported architecture: $ARCH"
|
local retry=0
|
||||||
exit 1
|
local max_retries=6
|
||||||
|
local argodomain=""
|
||||||
|
while [[ $retry -lt $max_retries ]]; do
|
||||||
|
((retry++))
|
||||||
|
argodomain=$(cat boot.log 2>/dev/null | grep -a trycloudflare.com | awk 'NR==2{print}' | awk -F// '{print $2}' | awk '{print $1}')
|
||||||
|
if [[ -n $argodomain ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
if [ -z ${argodomain} ]; then
|
||||||
|
argodomain="Argo临时域名暂时获取失败,Argo节点暂不可用(保活过程中会自动恢复),其他节点依旧可用"
|
||||||
|
fi
|
||||||
|
echo "$argodomain"
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ ! -f serv00keep.sh ]; then
|
||||||
|
curl -sSL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/serv00keep.sh -o serv00keep.sh && chmod +x serv00keep.sh
|
||||||
|
echo '#!/bin/bash
|
||||||
|
red() { echo -e "\e[1;91m$1\033[0m"; }
|
||||||
|
green() { echo -e "\e[1;32m$1\033[0m"; }
|
||||||
|
yellow() { echo -e "\e[1;33m$1\033[0m"; }
|
||||||
|
purple() { echo -e "\e[1;35m$1\033[0m"; }
|
||||||
|
USERNAME=$(whoami | tr '\''[:upper:]'\'' '\''[:lower:]'\'')
|
||||||
|
WORKDIR="${HOME}/domains/${USERNAME}.serv00.net/logs"
|
||||||
|
snb=$(hostname | cut -d. -f1)
|
||||||
|
' > webport.sh
|
||||||
|
declare -f resallport >> webport.sh
|
||||||
|
declare -f check_port >> webport.sh
|
||||||
|
echo 'resallport' >> webport.sh
|
||||||
|
chmod +x webport.sh
|
||||||
|
green "开始安装多功能主页,请稍等……"
|
||||||
|
devil www del ${snb}.${USERNAME}.serv00.net > /dev/null 2>&1
|
||||||
|
devil www add ${USERNAME}.serv00.net php > /dev/null 2>&1
|
||||||
|
devil www add ${snb}.${USERNAME}.serv00.net nodejs /usr/local/bin/node18 > /dev/null 2>&1
|
||||||
|
ln -fs /usr/local/bin/node18 ~/bin/node > /dev/null 2>&1
|
||||||
|
ln -fs /usr/local/bin/npm18 ~/bin/npm > /dev/null 2>&1
|
||||||
|
mkdir -p ~/.npm-global
|
||||||
|
npm config set prefix '~/.npm-global'
|
||||||
|
echo 'export PATH=~/.npm-global/bin:~/bin:$PATH' >> $HOME/.bash_profile && source $HOME/.bash_profile
|
||||||
|
rm -rf $HOME/.npmrc > /dev/null 2>&1
|
||||||
|
cd "$keep_path"
|
||||||
|
npm install basic-auth express dotenv axios --silent > /dev/null 2>&1
|
||||||
|
rm $HOME/domains/${snb}.${USERNAME}.serv00.net/public_nodejs/public/index.html > /dev/null 2>&1
|
||||||
|
devil www restart ${snb}.${USERNAME}.serv00.net
|
||||||
|
green "安装完毕,多功能主页地址:http://${snb}.${USERNAME}.serv00.net"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$resport" =~ ^[Yy]$ ]]; then
|
||||||
|
portlist=$(devil port list | grep -E '^[0-9]+[[:space:]]+[a-zA-Z]+' | sed 's/^[[:space:]]*//')
|
||||||
|
if [[ -z "$portlist" ]]; then
|
||||||
|
yellow "无端口"
|
||||||
|
else
|
||||||
|
while read -r line; do
|
||||||
|
port=$(echo "$line" | awk '{print $1}')
|
||||||
|
port_type=$(echo "$line" | awk '{print $2}')
|
||||||
|
yellow "删除端口 $port ($port_type)"
|
||||||
|
devil port del "$port_type" "$port"
|
||||||
|
done <<< "$portlist"
|
||||||
|
fi
|
||||||
|
check_port
|
||||||
|
fi
|
||||||
|
rm -rf $HOME/domains/${snb}.${USERNAME}.serv00.net/logs/*
|
||||||
|
|
||||||
|
cd $WORKDIR
|
||||||
|
ym=("$HOSTNAME" "cache$nb.serv00.com" "web$nb.serv00.com")
|
||||||
|
rm -rf ip.txt
|
||||||
|
for host in "${ym[@]}"; do
|
||||||
|
response=$(curl -sL --connect-timeout 5 --max-time 7 "https://ss.fkj.pp.ua/api/getip?host=$host")
|
||||||
|
if [[ "$response" =~ (unknown|not|error) ]]; then
|
||||||
|
dig @8.8.8.8 +time=5 +short $host | sort -u >> ip.txt
|
||||||
|
sleep 1
|
||||||
|
else
|
||||||
|
while IFS='|' read -r ip status; do
|
||||||
|
if [[ $status == "Accessible" ]]; then
|
||||||
|
echo "$ip: 可用" >> ip.txt
|
||||||
|
else
|
||||||
|
echo "$ip: 被墙 (Argo与CDN回源节点、proxyip依旧有效)" >> ip.txt
|
||||||
|
fi
|
||||||
|
done <<< "$response"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ ! "$response" =~ (unknown|not|error) ]]; then
|
||||||
|
grep ':' $WORKDIR/ip.txt | sort -u -o $WORKDIR/ip.txt
|
||||||
|
fi
|
||||||
|
if [[ -z "$IP" ]]; then
|
||||||
|
IP=$(grep -m 1 "可用" ip.txt | awk -F ':' '{print $1}')
|
||||||
|
if [ -z "$IP" ]; then
|
||||||
|
IP=$(okip)
|
||||||
|
if [ -z "$IP" ]; then
|
||||||
|
IP=$(head -n 1 ip.txt | awk -F ':' '{print $1}')
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$vless_port" ]] || [[ -z "$vmess_port" ]] || [[ -z "$hy2_port" ]]; then
|
||||||
|
check_port
|
||||||
|
fi
|
||||||
|
if [ ! -s sb.txt ] && [ ! -s ag.txt ]; then
|
||||||
|
DOWNLOAD_DIR="." && mkdir -p "$DOWNLOAD_DIR" && FILE_INFO=()
|
||||||
|
FILE_INFO=("https://github.com/yonggekkk/Cloudflare_vless_trojan/releases/download/serv00/sb web" "https://github.com/yonggekkk/Cloudflare_vless_trojan/releases/download/serv00/server bot")
|
||||||
declare -A FILE_MAP
|
declare -A FILE_MAP
|
||||||
generate_random_name() {
|
generate_random_name() {
|
||||||
local chars=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
|
local chars=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
|
||||||
@@ -280,17 +386,8 @@ echo "${public_key}" > public_key.txt
|
|||||||
fi
|
fi
|
||||||
private_key=$(<private_key.txt)
|
private_key=$(<private_key.txt)
|
||||||
public_key=$(<public_key.txt)
|
public_key=$(<public_key.txt)
|
||||||
|
|
||||||
openssl ecparam -genkey -name prime256v1 -out "private.key"
|
openssl ecparam -genkey -name prime256v1 -out "private.key"
|
||||||
openssl req -new -x509 -days 3650 -key "private.key" -out "cert.pem" -subj "/CN=$USERNAME.serv00.net"
|
openssl req -new -x509 -days 3650 -key "private.key" -out "cert.pem" -subj "/CN=$USERNAME.serv00.net"
|
||||||
|
|
||||||
nb=$(hostname | cut -d '.' -f 1 | tr -d 's')
|
|
||||||
if [[ "$nb" =~ (14|15|16) ]]; then
|
|
||||||
ytb='"jnn-pa.googleapis.com",'
|
|
||||||
fi
|
|
||||||
hy1p=$(sed -n '1p' hy2ip.txt)
|
|
||||||
hy2p=$(sed -n '2p' hy2ip.txt)
|
|
||||||
hy3p=$(sed -n '3p' hy2ip.txt)
|
|
||||||
cat > config.json << EOF
|
cat > config.json << EOF
|
||||||
{
|
{
|
||||||
"log": {
|
"log": {
|
||||||
@@ -300,9 +397,9 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
|||||||
},
|
},
|
||||||
"inbounds": [
|
"inbounds": [
|
||||||
{
|
{
|
||||||
"tag": "hysteria-in",
|
"tag": "hysteria-in1",
|
||||||
"type": "hysteria2",
|
"type": "hysteria2",
|
||||||
"listen": "$hy1p",
|
"listen": "$(dig @8.8.8.8 +time=5 +short "web$nb.serv00.com" | sort -u)",
|
||||||
"listen_port": $hy2_port,
|
"listen_port": $hy2_port,
|
||||||
"users": [
|
"users": [
|
||||||
{
|
{
|
||||||
@@ -321,9 +418,9 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tag": "hysteria-in",
|
"tag": "hysteria-in2",
|
||||||
"type": "hysteria2",
|
"type": "hysteria2",
|
||||||
"listen": "$hy2p",
|
"listen": "$(dig @8.8.8.8 +time=5 +short "$HOSTNAME" | sort -u)",
|
||||||
"listen_port": $hy2_port,
|
"listen_port": $hy2_port,
|
||||||
"users": [
|
"users": [
|
||||||
{
|
{
|
||||||
@@ -342,9 +439,9 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tag": "hysteria-in",
|
"tag": "hysteria-in3",
|
||||||
"type": "hysteria2",
|
"type": "hysteria2",
|
||||||
"listen": "$hy3p",
|
"listen": "$(dig @8.8.8.8 +time=5 +short "cache$nb.serv00.com" | sort -u)",
|
||||||
"listen_port": $hy2_port,
|
"listen_port": $hy2_port,
|
||||||
"users": [
|
"users": [
|
||||||
{
|
{
|
||||||
@@ -406,7 +503,7 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"outbounds": [
|
"outbounds": [
|
||||||
{
|
{
|
||||||
"type": "wireguard",
|
"type": "wireguard",
|
||||||
"tag": "wg",
|
"tag": "wg",
|
||||||
@@ -432,23 +529,27 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
|||||||
"route": {
|
"route": {
|
||||||
"rule_set": [
|
"rule_set": [
|
||||||
{
|
{
|
||||||
"tag": "geosite-google-gemini",
|
"tag": "google-gemini",
|
||||||
"type": "remote",
|
"type": "remote",
|
||||||
"format": "binary",
|
"format": "binary",
|
||||||
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-google-gemini.srs",
|
"url": "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/google-gemini.srs",
|
||||||
"download_detour": "direct"
|
"download_detour": "direct"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
EOF
|
||||||
|
if [[ "$nb" =~ 14|15 ]]; then
|
||||||
|
cat >> config.json <<EOF
|
||||||
"rules": [
|
"rules": [
|
||||||
{
|
{
|
||||||
"domain": [
|
"domain": [
|
||||||
$ytb
|
"jnn-pa.googleapis.com"
|
||||||
"oh.my.god"
|
|
||||||
],
|
],
|
||||||
"outbound": "wg"
|
"outbound": "wg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"rule_set":"geosite-google-gemini",
|
"rule_set":[
|
||||||
|
"google-gemini"
|
||||||
|
],
|
||||||
"outbound": "wg"
|
"outbound": "wg"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -456,6 +557,13 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
else
|
||||||
|
cat >> config.json <<EOF
|
||||||
|
"final": "direct"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
if ! ps aux | grep '[r]un -c con' > /dev/null; then
|
if ! ps aux | grep '[r]un -c con' > /dev/null; then
|
||||||
ps aux | grep '[r]un -c con' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2>&1
|
ps aux | grep '[r]un -c con' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2>&1
|
||||||
@@ -498,8 +606,6 @@ if [ -e "$(basename "${FILE_MAP[bot]}")" ]; then
|
|||||||
if [[ $ARGO_AUTH =~ ^[A-Z0-9a-z=]{120,250}$ ]]; then
|
if [[ $ARGO_AUTH =~ ^[A-Z0-9a-z=]{120,250}$ ]]; then
|
||||||
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 run --token ${ARGO_AUTH}"
|
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 run --token ${ARGO_AUTH}"
|
||||||
args="tunnel --no-autoupdate run --token ${ARGO_AUTH}"
|
args="tunnel --no-autoupdate run --token ${ARGO_AUTH}"
|
||||||
elif [[ $ARGO_AUTH =~ TunnelSecret ]]; then
|
|
||||||
args="tunnel --edge-ip-version auto --config tunnel.yml run"
|
|
||||||
else
|
else
|
||||||
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 --logfile boot.log --loglevel info --url http://localhost:$vmess_port"
|
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 --logfile boot.log --loglevel info --url http://localhost:$vmess_port"
|
||||||
args="tunnel --url http://localhost:$vmess_port --no-autoupdate --logfile boot.log --loglevel info"
|
args="tunnel --url http://localhost:$vmess_port --no-autoupdate --logfile boot.log --loglevel info"
|
||||||
@@ -520,12 +626,11 @@ else
|
|||||||
if [[ $ARGO_AUTH =~ ^[A-Z0-9a-z=]{120,250}$ ]]; then
|
if [[ $ARGO_AUTH =~ ^[A-Z0-9a-z=]{120,250}$ ]]; then
|
||||||
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 run --token ${ARGO_AUTH}"
|
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 run --token ${ARGO_AUTH}"
|
||||||
args="tunnel --no-autoupdate run --token ${ARGO_AUTH}"
|
args="tunnel --no-autoupdate run --token ${ARGO_AUTH}"
|
||||||
elif [[ $ARGO_AUTH =~ TunnelSecret ]]; then
|
|
||||||
args="tunnel --edge-ip-version auto --config tunnel.yml run"
|
|
||||||
else
|
else
|
||||||
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 --logfile boot.log --loglevel info --url http://localhost:$vmess_port"
|
#args="tunnel --edge-ip-version auto --no-autoupdate --protocol http2 --logfile boot.log --loglevel info --url http://localhost:$vmess_port"
|
||||||
args="tunnel --url http://localhost:$vmess_port --no-autoupdate --logfile boot.log --loglevel info"
|
args="tunnel --url http://localhost:$vmess_port --no-autoupdate --logfile boot.log --loglevel info"
|
||||||
fi
|
fi
|
||||||
|
pkill -x "$agg"
|
||||||
nohup ./"$agg" $args >/dev/null 2>&1 &
|
nohup ./"$agg" $args >/dev/null 2>&1 &
|
||||||
sleep 10
|
sleep 10
|
||||||
if pgrep -x "$agg" > /dev/null; then
|
if pgrep -x "$agg" > /dev/null; then
|
||||||
@@ -539,7 +644,12 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
if [ -z "$ARGO_DOMAIN" ] && ! ps aux | grep '[t]unnel --u' > /dev/null; then
|
|
||||||
|
if [ -f "$WORKDIR/boot.log" ]; then
|
||||||
|
argosl=$(cat "$WORKDIR/boot.log" 2>/dev/null | grep -a trycloudflare.com | awk 'NR==2{print}' | awk -F// '{print $2}' | awk '{print $1}')
|
||||||
|
checkhttp=$(curl -o /dev/null -s -w "%{http_code}\n" "https://$argosl")
|
||||||
|
fi
|
||||||
|
if ([ -z "$ARGO_DOMAIN" ] && ! ps aux | grep '[t]unnel --u' > /dev/null) || [[ "$checkhttp" != 404 ]]; then
|
||||||
ps aux | grep '[t]unnel --u' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2>&1
|
ps aux | grep '[t]unnel --u' | awk '{print $2}' | xargs -r kill -9 > /dev/null 2>&1
|
||||||
cfgo
|
cfgo
|
||||||
elif [ -n "$ARGO_DOMAIN" ] && ! ps aux | grep '[t]unnel --n' > /dev/null; then
|
elif [ -n "$ARGO_DOMAIN" ] && ! ps aux | grep '[t]unnel --n' > /dev/null; then
|
||||||
@@ -551,56 +661,82 @@ fi
|
|||||||
sleep 2
|
sleep 2
|
||||||
if ! pgrep -x "$(cat sb.txt)" > /dev/null; then
|
if ! pgrep -x "$(cat sb.txt)" > /dev/null; then
|
||||||
red "主进程未启动,根据以下情况一一排查"
|
red "主进程未启动,根据以下情况一一排查"
|
||||||
yellow "1、网页端权限是否开启"
|
yellow "1、REP选择y重置一次随机端口,三个端口参数留空不填,再改为n(重要)"
|
||||||
yellow "2、网页后台删除所有端口,让脚本自动生成随机可用端口"
|
yellow "2、RES选择y运行一次重置系统,再改为n(重要)"
|
||||||
yellow "3、选择y运行一次重置"
|
yellow "3、当前Serv00服务器炸了?等会再试"
|
||||||
yellow "4、当前Serv00服务器炸了?等会再试"
|
red "4、以上都试了,哥直接躺平,交给进程保活,过会再来看"
|
||||||
red "5、以上都试了,哥直接躺平,交给进程保活,过会再来看"
|
|
||||||
fi
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
get_argodomain() {
|
|
||||||
if [[ -n $ARGO_AUTH ]]; then
|
|
||||||
echo "$ARGO_DOMAIN" > gdym.log
|
|
||||||
echo "$ARGO_DOMAIN"
|
|
||||||
else
|
|
||||||
local retry=0
|
|
||||||
local max_retries=6
|
|
||||||
local argodomain=""
|
|
||||||
while [[ $retry -lt $max_retries ]]; do
|
|
||||||
((retry++))
|
|
||||||
argodomain=$(cat boot.log 2>/dev/null | grep -a trycloudflare.com | awk 'NR==2{print}' | awk -F// '{print $2}' | awk '{print $1}')
|
|
||||||
if [[ -n $argodomain ]]; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 2
|
|
||||||
done
|
|
||||||
if [ -z ${argodomain} ]; then
|
|
||||||
argodomain="Argo临时域名暂时获取失败,Argo节点暂不可用"
|
|
||||||
fi
|
|
||||||
echo "$argodomain"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
get_links(){
|
|
||||||
argodomain=$(get_argodomain)
|
argodomain=$(get_argodomain)
|
||||||
|
rm -rf ${FILE_PATH}/*.txt
|
||||||
echo -e "\e[1;32mArgo域名:\e[1;35m${argodomain}\e[0m\n"
|
echo -e "\e[1;32mArgo域名:\e[1;35m${argodomain}\e[0m\n"
|
||||||
ISP=$(curl -sL --max-time 5 https://speed.cloudflare.com/meta | awk -F\" '{print $26}' | sed -e 's/ /_/g' || echo "0")
|
a=$(dig @8.8.8.8 +time=5 +short "web$nb.serv00.com" | sort -u)
|
||||||
get_name() { if [ "$HOSTNAME" = "s1.ct8.pl" ]; then SERVER="CT8"; else SERVER=$(echo "$HOSTNAME" | cut -d '.' -f 1); fi; echo "$SERVER"; }
|
b=$(dig @8.8.8.8 +time=5 +short "$HOSTNAME" | sort -u)
|
||||||
NAME="$ISP-$(get_name)"
|
c=$(dig @8.8.8.8 +time=5 +short "cache$nb.serv00.com" | sort -u)
|
||||||
rm -rf jh.txt
|
if [[ "$IP" == "$a" ]]; then
|
||||||
vl_link="vless://$UUID@$IP:$vless_port?encryption=none&flow=xtls-rprx-vision&security=reality&sni=$reym&fp=chrome&pbk=$public_key&type=tcp&headerType=none#$NAME-reality"
|
CIP1=$b; CIP2=$c
|
||||||
echo "$vl_link" >> jh.txt
|
elif [[ "$IP" == "$b" ]]; then
|
||||||
vmws_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$NAME-vmess-ws\", \"add\": \"$IP\", \"port\": \"$vmess_port\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\", \"sni\": \"\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
CIP1=$a; CIP2=$c
|
||||||
|
elif [[ "$IP" == "$c" ]]; then
|
||||||
|
CIP1=$a; CIP2=$b
|
||||||
|
else
|
||||||
|
red "执行出错,请卸载脚本再重装一次"
|
||||||
|
fi
|
||||||
|
vl_link="vless://$UUID@$IP:$vless_port?encryption=none&flow=xtls-rprx-vision&security=reality&sni=$reym&fp=chrome&pbk=$public_key&type=tcp&headerType=none#$snb-reality-$USERNAME"
|
||||||
|
echo "$vl_link" > jh.txt
|
||||||
|
vmws_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-$USERNAME\", \"add\": \"$IP\", \"port\": \"$vmess_port\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\", \"sni\": \"\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
echo "$vmws_link" >> jh.txt
|
echo "$vmws_link" >> jh.txt
|
||||||
vmatls_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$NAME-vmess-ws-tls-argo\", \"add\": \"icook.hk\", \"port\": \"8443\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"tls\", \"sni\": \"$argodomain\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
vmatls_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-tls-argo-$USERNAME\", \"add\": \"www.visa.com.hk\", \"port\": \"8443\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"tls\", \"sni\": \"$argodomain\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
echo "$vmatls_link" >> jh.txt
|
echo "$vmatls_link" >> jh.txt
|
||||||
vma_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$NAME-vmess-ws-argo\", \"add\": \"icook.hk\", \"port\": \"8880\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\"}" | base64 -w0)"
|
vma_link="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-argo-$USERNAME\", \"add\": \"www.visa.com.hk\", \"port\": \"8880\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\"}" | base64 -w0)"
|
||||||
echo "$vma_link" >> jh.txt
|
echo "$vma_link" >> jh.txt
|
||||||
hy2_link="hysteria2://$UUID@$IP:$hy2_port?sni=www.bing.com&alpn=h3&insecure=1#$NAME-hy2"
|
hy2_link="hysteria2://$UUID@$IP:$hy2_port?security=tls&sni=www.bing.com&alpn=h3&insecure=1#$snb-hy2-$USERNAME"
|
||||||
echo "$hy2_link" >> jh.txt
|
echo "$hy2_link" >> jh.txt
|
||||||
url=$(cat jh.txt 2>/dev/null)
|
vl_link1="vless://$UUID@$CIP1:$vless_port?encryption=none&flow=xtls-rprx-vision&security=reality&sni=$reym&fp=chrome&pbk=$public_key&type=tcp&headerType=none#$snb-reality-$USERNAME-$CIP1"
|
||||||
baseurl=$(echo -e "$url" | base64 -w 0)
|
echo "$vl_link1" >> jh.txt
|
||||||
|
vmws_link1="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-$USERNAME-$CIP1\", \"add\": \"$CIP1\", \"port\": \"$vmess_port\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\", \"sni\": \"\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vmws_link1" >> jh.txt
|
||||||
|
hy2_link1="hysteria2://$UUID@$CIP1:$hy2_port?security=tls&sni=www.bing.com&alpn=h3&insecure=1#$snb-hy2-$USERNAME-$CIP1"
|
||||||
|
echo "$hy2_link1" >> jh.txt
|
||||||
|
vl_link2="vless://$UUID@$CIP2:$vless_port?encryption=none&flow=xtls-rprx-vision&security=reality&sni=$reym&fp=chrome&pbk=$public_key&type=tcp&headerType=none#$snb-reality-$USERNAME-$CIP2"
|
||||||
|
echo "$vl_link2" >> jh.txt
|
||||||
|
vmws_link2="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-$USERNAME-$CIP2\", \"add\": \"$CIP2\", \"port\": \"$vmess_port\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\", \"sni\": \"\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vmws_link2" >> jh.txt
|
||||||
|
hy2_link2="hysteria2://$UUID@$CIP2:$hy2_port?security=tls&sni=www.bing.com&alpn=h3&insecure=1#$snb-hy2-$USERNAME-$CIP2"
|
||||||
|
echo "$hy2_link2" >> jh.txt
|
||||||
|
|
||||||
|
argosl=$(cat "$WORKDIR/boot.log" 2>/dev/null | grep -a trycloudflare.com | awk 'NR==2{print}' | awk -F// '{print $2}' | awk '{print $1}')
|
||||||
|
checkhttp1=$(curl -o /dev/null -s -w "%{http_code}\n" "https://$argosl")
|
||||||
|
argogd=$(cat $WORKDIR/ARGO_DOMAIN.log 2>/dev/null)
|
||||||
|
checkhttp2=$(curl --max-time 2 -o /dev/null -s -w "%{http_code}\n" "https://$argogd")
|
||||||
|
if [[ "$checkhttp1" == 404 ]] || [[ "$checkhttp2" == 404 ]]; then
|
||||||
|
vmatls_link1="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-tls-argo-$USERNAME-443\", \"add\": \"104.16.0.0\", \"port\": \"443\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"tls\", \"sni\": \"$argodomain\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vmatls_link1" >> jh.txt
|
||||||
|
vmatls_link2="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-tls-argo-$USERNAME-2053\", \"add\": \"104.17.0.0\", \"port\": \"2053\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"tls\", \"sni\": \"$argodomain\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vmatls_link2" >> jh.txt
|
||||||
|
vmatls_link3="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-tls-argo-$USERNAME-2083\", \"add\": \"104.18.0.0\", \"port\": \"2083\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"tls\", \"sni\": \"$argodomain\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vmatls_link3" >> jh.txt
|
||||||
|
vmatls_link4="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-tls-argo-$USERNAME-2087\", \"add\": \"104.19.0.0\", \"port\": \"2087\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"tls\", \"sni\": \"$argodomain\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vmatls_link4" >> jh.txt
|
||||||
|
vmatls_link5="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-tls-argo-$USERNAME-2096\", \"add\": \"104.20.0.0\", \"port\": \"2096\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"tls\", \"sni\": \"$argodomain\", \"alpn\": \"\", \"fp\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vmatls_link5" >> jh.txt
|
||||||
|
vma_link6="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-argo-$USERNAME-80\", \"add\": \"104.21.0.0\", \"port\": \"80\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vma_link6" >> jh.txt
|
||||||
|
vma_link7="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-argo-$USERNAME-8080\", \"add\": \"104.22.0.0\", \"port\": \"8080\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vma_link7" >> jh.txt
|
||||||
|
vma_link8="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-argo-$USERNAME-2052\", \"add\": \"104.24.0.0\", \"port\": \"2052\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vma_link8" >> jh.txt
|
||||||
|
vma_link9="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-argo-$USERNAME-2082\", \"add\": \"104.25.0.0\", \"port\": \"2082\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vma_link9" >> jh.txt
|
||||||
|
vma_link10="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-argo-$USERNAME-2086\", \"add\": \"104.26.0.0\", \"port\": \"2086\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vma_link10" >> jh.txt
|
||||||
|
vma_link11="vmess://$(echo "{ \"v\": \"2\", \"ps\": \"$snb-vmess-ws-argo-$USERNAME-2095\", \"add\": \"104.27.0.0\", \"port\": \"2095\", \"id\": \"$UUID\", \"aid\": \"0\", \"scy\": \"auto\", \"net\": \"ws\", \"type\": \"none\", \"host\": \"$argodomain\", \"path\": \"/$UUID-vm?ed=2048\", \"tls\": \"\"}" | base64 -w0)"
|
||||||
|
echo "$vma_link11" >> jh.txt
|
||||||
|
fi
|
||||||
|
v2sub=$(cat jh.txt)
|
||||||
|
echo "$v2sub" > ${FILE_PATH}/${UUID}_v2sub.txt
|
||||||
|
baseurl=$(base64 -w 0 < jh.txt)
|
||||||
|
|
||||||
cat > sing_box.json <<EOF
|
cat > sing_box.json <<EOF
|
||||||
{
|
{
|
||||||
@@ -702,20 +838,19 @@ cat > sing_box.json <<EOF
|
|||||||
"default": "auto",
|
"default": "auto",
|
||||||
"outbounds": [
|
"outbounds": [
|
||||||
"auto",
|
"auto",
|
||||||
"vless-$NAME",
|
"vless-$snb-$USERNAME",
|
||||||
"vmess-$NAME",
|
"vmess-$snb-$USERNAME",
|
||||||
"hy2-$NAME",
|
"hy2-$snb-$USERNAME",
|
||||||
"vmess-tls-argo-$NAME",
|
"vmess-tls-argo-$snb-$USERNAME",
|
||||||
"vmess-argo-$NAME"
|
"vmess-argo-$snb-$USERNAME"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "vless",
|
"type": "vless",
|
||||||
"tag": "vless-$NAME",
|
"tag": "vless-$snb-$USERNAME",
|
||||||
"server": "$IP",
|
"server": "$IP",
|
||||||
"server_port": $vless_port,
|
"server_port": $vless_port,
|
||||||
"uuid": "$UUID",
|
"uuid": "$UUID",
|
||||||
"packet_encoding": "xudp",
|
|
||||||
"flow": "xtls-rprx-vision",
|
"flow": "xtls-rprx-vision",
|
||||||
"tls": {
|
"tls": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
@@ -734,7 +869,7 @@ cat > sing_box.json <<EOF
|
|||||||
{
|
{
|
||||||
"server": "$IP",
|
"server": "$IP",
|
||||||
"server_port": $vmess_port,
|
"server_port": $vmess_port,
|
||||||
"tag": "vmess-$NAME",
|
"tag": "vmess-$snb-$USERNAME",
|
||||||
"tls": {
|
"tls": {
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"server_name": "www.bing.com",
|
"server_name": "www.bing.com",
|
||||||
@@ -761,7 +896,7 @@ cat > sing_box.json <<EOF
|
|||||||
|
|
||||||
{
|
{
|
||||||
"type": "hysteria2",
|
"type": "hysteria2",
|
||||||
"tag": "hy2-$NAME",
|
"tag": "hy2-$snb-$USERNAME",
|
||||||
"server": "$IP",
|
"server": "$IP",
|
||||||
"server_port": $hy2_port,
|
"server_port": $hy2_port,
|
||||||
"password": "$UUID",
|
"password": "$UUID",
|
||||||
@@ -775,9 +910,9 @@ cat > sing_box.json <<EOF
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"server": "icook.hk",
|
"server": "www.visa.com.hk",
|
||||||
"server_port": 8443,
|
"server_port": 8443,
|
||||||
"tag": "vmess-tls-argo-$NAME",
|
"tag": "vmess-tls-argo-$snb-$USERNAME",
|
||||||
"tls": {
|
"tls": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"server_name": "$argodomain",
|
"server_name": "$argodomain",
|
||||||
@@ -802,9 +937,9 @@ cat > sing_box.json <<EOF
|
|||||||
"uuid": "$UUID"
|
"uuid": "$UUID"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"server": "icook.hk",
|
"server": "www.visa.com.hk",
|
||||||
"server_port": 8880,
|
"server_port": 8880,
|
||||||
"tag": "vmess-argo-$NAME",
|
"tag": "vmess-argo-$snb-$USERNAME",
|
||||||
"tls": {
|
"tls": {
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"server_name": "$argodomain",
|
"server_name": "$argodomain",
|
||||||
@@ -836,11 +971,11 @@ cat > sing_box.json <<EOF
|
|||||||
"tag": "auto",
|
"tag": "auto",
|
||||||
"type": "urltest",
|
"type": "urltest",
|
||||||
"outbounds": [
|
"outbounds": [
|
||||||
"vless-$NAME",
|
"vless-$snb-$USERNAME",
|
||||||
"vmess-$NAME",
|
"vmess-$snb-$USERNAME",
|
||||||
"hy2-$NAME",
|
"hy2-$snb-$USERNAME",
|
||||||
"vmess-tls-argo-$NAME",
|
"vmess-tls-argo-$snb-$USERNAME",
|
||||||
"vmess-argo-$NAME"
|
"vmess-argo-$snb-$USERNAME"
|
||||||
],
|
],
|
||||||
"url": "https://www.gstatic.com/generate_204",
|
"url": "https://www.gstatic.com/generate_204",
|
||||||
"interval": "1m",
|
"interval": "1m",
|
||||||
@@ -935,7 +1070,7 @@ log-level: info
|
|||||||
unified-delay: true
|
unified-delay: true
|
||||||
global-client-fingerprint: chrome
|
global-client-fingerprint: chrome
|
||||||
dns:
|
dns:
|
||||||
enable: true
|
enable: false
|
||||||
listen: :53
|
listen: :53
|
||||||
ipv6: true
|
ipv6: true
|
||||||
enhanced-mode: fake-ip
|
enhanced-mode: fake-ip
|
||||||
@@ -956,7 +1091,7 @@ dns:
|
|||||||
- 240.0.0.0/4
|
- 240.0.0.0/4
|
||||||
|
|
||||||
proxies:
|
proxies:
|
||||||
- name: vless-reality-vision-$NAME
|
- name: vless-reality-vision-$snb-$USERNAME
|
||||||
type: vless
|
type: vless
|
||||||
server: $IP
|
server: $IP
|
||||||
port: $vless_port
|
port: $vless_port
|
||||||
@@ -970,7 +1105,7 @@ proxies:
|
|||||||
public-key: $public_key
|
public-key: $public_key
|
||||||
client-fingerprint: chrome
|
client-fingerprint: chrome
|
||||||
|
|
||||||
- name: vmess-ws-$NAME
|
- name: vmess-ws-$snb-$USERNAME
|
||||||
type: vmess
|
type: vmess
|
||||||
server: $IP
|
server: $IP
|
||||||
port: $vmess_port
|
port: $vmess_port
|
||||||
@@ -986,7 +1121,7 @@ proxies:
|
|||||||
headers:
|
headers:
|
||||||
Host: www.bing.com
|
Host: www.bing.com
|
||||||
|
|
||||||
- name: hysteria2-$NAME
|
- name: hysteria2-$snb-$USERNAME
|
||||||
type: hysteria2
|
type: hysteria2
|
||||||
server: $IP
|
server: $IP
|
||||||
port: $hy2_port
|
port: $hy2_port
|
||||||
@@ -997,9 +1132,9 @@ proxies:
|
|||||||
skip-cert-verify: true
|
skip-cert-verify: true
|
||||||
fast-open: true
|
fast-open: true
|
||||||
|
|
||||||
- name: vmess-tls-argo-$NAME
|
- name: vmess-tls-argo-$snb-$USERNAME
|
||||||
type: vmess
|
type: vmess
|
||||||
server: icook.hk
|
server: www.visa.com.hk
|
||||||
port: 8443
|
port: 8443
|
||||||
uuid: $UUID
|
uuid: $UUID
|
||||||
alterId: 0
|
alterId: 0
|
||||||
@@ -1013,9 +1148,9 @@ proxies:
|
|||||||
headers:
|
headers:
|
||||||
Host: $argodomain
|
Host: $argodomain
|
||||||
|
|
||||||
- name: vmess-argo-$NAME
|
- name: vmess-argo-$snb-$USERNAME
|
||||||
type: vmess
|
type: vmess
|
||||||
server: icook.hk
|
server: www.visa.com.hk
|
||||||
port: 8880
|
port: 8880
|
||||||
uuid: $UUID
|
uuid: $UUID
|
||||||
alterId: 0
|
alterId: 0
|
||||||
@@ -1036,11 +1171,11 @@ proxy-groups:
|
|||||||
interval: 300
|
interval: 300
|
||||||
strategy: round-robin
|
strategy: round-robin
|
||||||
proxies:
|
proxies:
|
||||||
- vless-reality-vision-$NAME
|
- vless-reality-vision-$snb-$USERNAME
|
||||||
- vmess-ws-$NAME
|
- vmess-ws-$snb-$USERNAME
|
||||||
- hysteria2-$NAME
|
- hysteria2-$snb-$USERNAME
|
||||||
- vmess-tls-argo-$NAME
|
- vmess-tls-argo-$snb-$USERNAME
|
||||||
- vmess-argo-$NAME
|
- vmess-argo-$snb-$USERNAME
|
||||||
|
|
||||||
- name: Auto
|
- name: Auto
|
||||||
type: url-test
|
type: url-test
|
||||||
@@ -1048,11 +1183,11 @@ proxy-groups:
|
|||||||
interval: 300
|
interval: 300
|
||||||
tolerance: 50
|
tolerance: 50
|
||||||
proxies:
|
proxies:
|
||||||
- vless-reality-vision-$NAME
|
- vless-reality-vision-$snb-$USERNAME
|
||||||
- vmess-ws-$NAME
|
- vmess-ws-$snb-$USERNAME
|
||||||
- hysteria2-$NAME
|
- hysteria2-$snb-$USERNAME
|
||||||
- vmess-tls-argo-$NAME
|
- vmess-tls-argo-$snb-$USERNAME
|
||||||
- vmess-argo-$NAME
|
- vmess-argo-$snb-$USERNAME
|
||||||
|
|
||||||
- name: Select
|
- name: Select
|
||||||
type: select
|
type: select
|
||||||
@@ -1060,11 +1195,11 @@ proxy-groups:
|
|||||||
- Balance
|
- Balance
|
||||||
- Auto
|
- Auto
|
||||||
- DIRECT
|
- DIRECT
|
||||||
- vless-reality-vision-$NAME
|
- vless-reality-vision-$snb-$USERNAME
|
||||||
- vmess-ws-$NAME
|
- vmess-ws-$snb-$USERNAME
|
||||||
- hysteria2-$NAME
|
- hysteria2-$snb-$USERNAME
|
||||||
- vmess-tls-argo-$NAME
|
- vmess-tls-argo-$snb-$USERNAME
|
||||||
- vmess-argo-$NAME
|
- vmess-argo-$snb-$USERNAME
|
||||||
rules:
|
rules:
|
||||||
- GEOIP,LAN,DIRECT
|
- GEOIP,LAN,DIRECT
|
||||||
- GEOIP,CN,DIRECT
|
- GEOIP,CN,DIRECT
|
||||||
@@ -1072,20 +1207,34 @@ rules:
|
|||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
sleep 2
|
|
||||||
[ -d "$FILE_PATH" ] || mkdir -p "$FILE_PATH"
|
|
||||||
echo "$baseurl" > ${FILE_PATH}/${UUID}_v2sub.txt
|
|
||||||
cat clash_meta.yaml > ${FILE_PATH}/${UUID}_clashmeta.txt
|
cat clash_meta.yaml > ${FILE_PATH}/${UUID}_clashmeta.txt
|
||||||
cat sing_box.json > ${FILE_PATH}/${UUID}_singbox.txt
|
cat sing_box.json > ${FILE_PATH}/${UUID}_singbox.txt
|
||||||
|
curl -sL https://raw.githubusercontent.com/yonggekkk/sing-box-yg/main/index.html -o "$FILE_PATH"/index.html
|
||||||
V2rayN_LINK="https://${USERNAME}.serv00.net/${UUID}_v2sub.txt"
|
V2rayN_LINK="https://${USERNAME}.serv00.net/${UUID}_v2sub.txt"
|
||||||
Clashmeta_LINK="https://${USERNAME}.serv00.net/${UUID}_clashmeta.txt"
|
Clashmeta_LINK="https://${USERNAME}.serv00.net/${UUID}_clashmeta.txt"
|
||||||
Singbox_LINK="https://${USERNAME}.serv00.net/${UUID}_singbox.txt"
|
Singbox_LINK="https://${USERNAME}.serv00.net/${UUID}_singbox.txt"
|
||||||
allip=$(cat hy2ip.txt)
|
hyp=$(jq -r '.inbounds[0].listen_port' config.json)
|
||||||
|
vlp=$(jq -r '.inbounds[3].listen_port' config.json)
|
||||||
|
vmp=$(jq -r '.inbounds[4].listen_port' config.json)
|
||||||
|
showuuid=$(jq -r '.inbounds[0].users[0].password' config.json)
|
||||||
cat > list.txt <<EOF
|
cat > list.txt <<EOF
|
||||||
=================================================================================================
|
=================================================================================================
|
||||||
|
|
||||||
当前客户端正在使用的IP:$IP ,如默认节点IP被墙,可在客户端地址更换以下其他IP
|
当前客户端正在使用的IP:$IP
|
||||||
$allip
|
如默认节点IP被墙,可在客户端地址更换以下其他IP
|
||||||
|
$a
|
||||||
|
$b
|
||||||
|
$c
|
||||||
|
|
||||||
|
当前各协议正在使用的端口如下
|
||||||
|
vless-reality端口:$vlp
|
||||||
|
Vmess-ws端口(设置Argo固定域名端口):$vmp
|
||||||
|
Hysteria2端口:$hyp
|
||||||
|
|
||||||
|
UUID密码:$showuuid
|
||||||
|
|
||||||
|
Argo域名:${argodomain}
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
一、Vless-reality分享链接如下:
|
一、Vless-reality分享链接如下:
|
||||||
@@ -1104,7 +1253,7 @@ CF节点落地到CF网站的地区为:$IP所在地区
|
|||||||
CF节点的TLS必须开启
|
CF节点的TLS必须开启
|
||||||
CF节点落地到非CF网站的地区为:$IP所在地区
|
CF节点落地到非CF网站的地区为:$IP所在地区
|
||||||
|
|
||||||
注:如果serv00的IP被墙,proxyip依旧有效,但用于客户端地址与端口的非标端口反代IP将不可用
|
注:如果serv00的IP被墙,proxyip依旧有效,但用于客户端地址的非标端口反代IP将不可用
|
||||||
注:可能有大佬会扫Serv00的反代IP作为其共享IP库或者出售,请慎重将reality域名设置为CF域名
|
注:可能有大佬会扫Serv00的反代IP作为其共享IP库或者出售,请慎重将reality域名设置为CF域名
|
||||||
-------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -1115,9 +1264,6 @@ CF节点落地到非CF网站的地区为:$IP所在地区
|
|||||||
(该节点默认不支持CDN,如果设置为CDN回源(需域名):客户端地址可自行修改优选IP/域名,7个80系端口随便换,被墙依旧能用!)
|
(该节点默认不支持CDN,如果设置为CDN回源(需域名):客户端地址可自行修改优选IP/域名,7个80系端口随便换,被墙依旧能用!)
|
||||||
$vmws_link
|
$vmws_link
|
||||||
|
|
||||||
Argo域名:${argodomain}
|
|
||||||
如果上面Argo临时域名未生成,以下 2 与 3 的Argo节点将不可用 (打开Argo固定/临时域名网页,显示HTTP ERROR 404说明正常可用)
|
|
||||||
|
|
||||||
2、Vmess-ws-tls_Argo分享链接如下:
|
2、Vmess-ws-tls_Argo分享链接如下:
|
||||||
(该节点为CDN优选IP节点,客户端地址可自行修改优选IP/域名,6个443系端口随便换,被墙依旧能用!)
|
(该节点为CDN优选IP节点,客户端地址可自行修改优选IP/域名,6个443系端口随便换,被墙依旧能用!)
|
||||||
$vmatls_link
|
$vmatls_link
|
||||||
@@ -1133,10 +1279,14 @@ $hy2_link
|
|||||||
-------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
四、以上五个节点的聚合通用订阅分享链接如下:
|
四、聚合通用节点,共计22个节点:
|
||||||
|
3个IP全覆盖:3个reality、3个vmess+ws、3个hy2
|
||||||
|
13个argo节点全覆盖 (已添加CF不死IP):7个关tls 80系端口节点、6个开tls 443系端口节点
|
||||||
|
|
||||||
|
订阅分享链接:
|
||||||
$V2rayN_LINK
|
$V2rayN_LINK
|
||||||
|
|
||||||
以上五个节点聚合通用分享码:
|
剪切分享码:
|
||||||
$baseurl
|
$baseurl
|
||||||
-------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -1150,36 +1300,12 @@ Sing-box订阅分享链接:
|
|||||||
$Singbox_LINK
|
$Singbox_LINK
|
||||||
-------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
多功能主页地址:http://${snb}.${USERNAME}.serv00.net
|
||||||
|
|
||||||
=================================================================================================
|
=================================================================================================
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
cat list.txt
|
cat list.txt
|
||||||
sleep 2
|
sleep 2
|
||||||
rm -rf sb.log core tunnel.yml tunnel.json fake_useragent_0.2.0.json
|
rm -rf sb.log core tunnel.yml tunnel.json fake_useragent_0.2.0.json
|
||||||
}
|
|
||||||
|
|
||||||
if [[ "$resport" =~ ^[Yy]$ ]]; then
|
|
||||||
portlist=$(devil port list | grep -E '^[0-9]+[[:space:]]+[a-zA-Z]+' | sed 's/^[[:space:]]*//')
|
|
||||||
if [[ -z "$portlist" ]]; then
|
|
||||||
yellow "无端口"
|
|
||||||
else
|
|
||||||
while read -r line; do
|
|
||||||
port=$(echo "$line" | awk '{print $1}')
|
|
||||||
port_type=$(echo "$line" | awk '{print $2}')
|
|
||||||
yellow "删除端口 $port ($port_type)"
|
|
||||||
devil port del "$port_type" "$port"
|
|
||||||
done <<< "$portlist"
|
|
||||||
fi
|
|
||||||
check_port
|
|
||||||
fi
|
|
||||||
|
|
||||||
install_singbox() {
|
|
||||||
cd $WORKDIR
|
|
||||||
read_ip
|
|
||||||
argo_configure
|
|
||||||
uuidport
|
|
||||||
download_and_run_singbox
|
|
||||||
get_links
|
|
||||||
cd
|
cd
|
||||||
}
|
|
||||||
install_singbox
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
v25.2.19更新内容:
|
v25.4.1更新内容:
|
||||||
1、更新多功能网页(1、保活:你懂的。2、重启:某主节点不通时。3、查看节点及订阅:你懂的)
|
1、多功能网页增加查看进程功能 /jc
|
||||||
2、支持重置端口选项,现在不必登录serv00网页后台手动重置了
|
2、聚合通用节点分享更新,支持到22个节点:三协议各自三个IP,argo全覆盖13个端口节点,已添加不死优选IP
|
||||||
3、相关说明文字修正
|
3、修复相关BUG及文字修正
|
||||||
更新方式:在线更新
|
本次更新方式:重装更新(在线更新:SSH选择5更新。。重装更新:必须卸载重装)
|
||||||
(更新方式:在线更新与重装更新两种。如重装更新,必须卸载重装)
|
|
||||||
详见:https://ygkkk.blogspot.com/2025/01/serv00.html
|
详见:https://ygkkk.blogspot.com/2025/01/serv00.html
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
v25.2.9更新内容:
|
v26.4.11更新内容:
|
||||||
|
|
||||||
本次更新必须卸载重装
|
注意:如果你现在是v26.3月后的版本,可直接更新。如果是以前版本,必须卸载重装
|
||||||
|
|
||||||
本次更新必须卸载重装
|
|
||||||
|
|
||||||
本次更新必须卸载重装
|
|
||||||
|
|
||||||
更新内容:
|
更新内容:
|
||||||
首次安装增加1.10与1.10后内核的选择,分1.10内核(支持geosite分流)与1.10后内核(不支持geosite分流),菜单8-3可随意切换内核版本
|
1、支持本地IP订阅链接,菜单选项3-8可设置
|
||||||
|
2、支持Anytls协议,自签证书或域名证书都可应用到Anytls
|
||||||
|
3、加入订阅类配置的端口跳跃支持(clash/mihomo支持区间与单端口混合跳跃,singbox支持区间端口跳跃)
|
||||||
|
4、相关配置变更、argo固定临时隧道变更都可自动更新到订阅分享链接
|
||||||
|
|
||||||
详见:https://ygkkk.blogspot.com/2023/10/sing-box-yg.html
|
详见:https://ygkkk.blogspot.com/2023/10/sing-box-yg.html
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
addEventListener('scheduled', event => event.waitUntil(handleScheduled()));
|
||||||
|
// 配合甬哥的serv00的SSH脚本或者Github/VPS/软路由脚本,生成保活网页与重启网页
|
||||||
|
// 每个保活/up网页或每个重启/re网页之间用空格或者,或者,间隔开,网页前带http://
|
||||||
|
const urlString = 'http://保活或重启网页1 http://保活或重启网页2 http://保活或重启网页3 ………';
|
||||||
|
const urls = urlString.split(/[\s,,]+/);
|
||||||
|
const TIMEOUT = 5000;
|
||||||
|
async function fetchWithTimeout(url) {
|
||||||
|
const controller = new AbortController();
|
||||||
|
const timeout = setTimeout(() => controller.abort(), TIMEOUT);
|
||||||
|
try {
|
||||||
|
await fetch(url, { signal: controller.signal });
|
||||||
|
console.log(`✅ 成功: ${url}`);
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`❌ 访问失败: ${url}, 错误: ${error.message}`);
|
||||||
|
} finally {
|
||||||
|
clearTimeout(timeout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async function handleScheduled() {
|
||||||
|
console.log('⏳ 任务开始');
|
||||||
|
await Promise.all(urls.map(fetchWithTimeout));
|
||||||
|
console.log('📊 任务结束');
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user