Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
@@ -1,9 +1,8 @@
|
||||
name: Parallel URL Fetch
|
||||
|
||||
on:
|
||||
#如要使用定时运行,请把下面两行开头的#符号删除
|
||||
#schedule:
|
||||
#- cron: '*/10 * * * *' # 每10分钟执行一次(公开库每月2000分钟运行时长,每天64分钟)
|
||||
# schedule:
|
||||
# - cron: '*/10 * * * *' # 每10分钟执行一次(公开库每月2000分钟运行时长,每天64分钟)
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
@@ -16,23 +15,26 @@ jobs:
|
||||
|
||||
- name: Fetch URLs in parallel
|
||||
# secrets设置,变量名称:http
|
||||
# 变量值(多个保活网页之间用,分隔):http://保活网址1,http://保活网址2,http://…………
|
||||
# 变量值要求:每个保活/up网页或每个重启/re网页之间用空格或者,或者,间隔开,网页前带http://
|
||||
# 变量值填写示例:http://保活或重启网页1 http://保活或重启网页2 http://保活或重启网页3 ………
|
||||
run: |
|
||||
IFS=$',,' read -r -a http <<< "${{ secrets.http }}"
|
||||
IFS=$',, ' read -r -a http <<< "${{ secrets.http }}"
|
||||
echo "*****************************************************"
|
||||
echo "甬哥Github项目 :github.com/yonggekkk"
|
||||
echo "甬哥Blogger博客 :ygkkk.blogspot.com"
|
||||
echo "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
||||
echo "🎉Github定时运行serv00保活网页🎉"
|
||||
echo "请先确认已成功安装甬哥Serv00本地SSH三协议一键脚本"
|
||||
echo "请先确认已成功安装甬哥的serv00的SSH脚本或者Github/VPS/软路由脚本"
|
||||
echo "脚本地址:https://github.com/yonggekkk/sing-box-yg"
|
||||
echo "*****************************************************"
|
||||
for url in "${http[@]}"; do
|
||||
response=$(curl -sk "$url" || true)
|
||||
if [[ "$response" == *"网页保活启动"* ]]; then
|
||||
echo "🎉恭喜!$url ✅运行正常,成功拉起一次保活"
|
||||
elif [[ "$response" == *"主程序重启成功"* ]]; then
|
||||
echo "🎉恭喜!$url ✅运行正常,成功重启一次主程序"
|
||||
else
|
||||
echo "💥杯具!$url ❌运行失败,⚠️保活网址是否正确或者Serv00炸了"
|
||||
echo "💥杯具!$url ❌运行失败,⚠️网页变量是否填写正确?或者Serv00炸了"
|
||||
fi
|
||||
done
|
||||
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专用)
|
||||
## 二、Serv00多平台一键三协议共存脚本(Serv00专用)
|
||||
### 一、Sing-box-yg精装桶一键五协议共存脚本(VPS专用)
|
||||
### 二、Serv00/Hostuno-sb-yg多平台一键三协议共存脚本(Serv00/Hostuno专用)
|
||||
|
||||
### 注:本项目分享订阅节点都为本地化生成,不使用节点转换、订阅器等第三方外链引用,无需担心节点订阅被外链作者查看
|
||||
|
||||
### 交流平台:[甬哥博客地址](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)
|
||||
|
||||
#### 视频教程:
|
||||
[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)
|
||||
|
||||
@@ -31,17 +39,26 @@
|
||||
|
||||
[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 <(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脚本界面预览图(注:相关参数随意填写,仅供围观)
|
||||
|
||||
@@ -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最全面的代理脚本:独家支持三个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)
|
||||
```
|
||||
|
||||
### Serv00-sb-yg脚本界面预览图(注:仅供围观)
|
||||

|
||||
|
||||
|
||||
### 方案二、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、方案一与方案二、三不可混用,方案二与三可相互无缝替换
|
||||
|
||||
#### Serv00/Hostuno-sb-yg脚本界面预览图,仅限方案一的SSH端安装脚本(注:仅供围观)
|
||||

|
||||
|
||||
|
||||
-----------------------------------------------------
|
||||
### 感谢支持!微信打赏甬哥侃侃侃ygkkk
|
||||

|
||||
|
||||
---------------------------------------
|
||||
### 感谢你右上角的star🌟
|
||||
[](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();
|
||||
const express = require("express");
|
||||
const { exec } = require('child_process');
|
||||
const { spawn, exec } = require("child_process");
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
const commandToRun = "cd ~ && bash serv00keep.sh";
|
||||
@@ -22,9 +22,9 @@ app.get("/re", (req, res) => {
|
||||
pkill -f 'run -c con' || echo "无进程可终止,准备执行重启……"
|
||||
sbb="\$(cat sb.txt 2>/dev/null)"
|
||||
nohup ./"\$sbb" run -c config.json >/dev/null 2>&1 &
|
||||
sleep 3
|
||||
cd ~ && bash serv00keep.sh
|
||||
echo 'Serv00主程序重启成功,请检测三个主节点是否可用,如不可用,可再次刷新重启网页或者卸载重装脚本'
|
||||
sleep 2
|
||||
(cd ~ && bash serv00keep.sh >/dev/null 2>&1) &
|
||||
echo '主程序重启成功,请检测三个主节点是否可用,如不可用,可再次刷新重启网页或者重置端口'
|
||||
`;
|
||||
exec(additionalCommands, (err, stdout, stderr) => {
|
||||
console.log('stdout:', stdout);
|
||||
@@ -35,10 +35,32 @@ app.get("/re", (req, res) => {
|
||||
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) => {
|
||||
const listCommands = `
|
||||
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"
|
||||
`;
|
||||
exec(listCommands, (err, stdout, stderr) => {
|
||||
@@ -49,10 +71,25 @@ app.get("/list/key", (req, res) => {
|
||||
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, () => {
|
||||
console.log("服务器运行在端口 3000");
|
||||
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
|
||||
# 定时设置:*/10 * * * * /bin/bash /root/kp.sh 每10分钟运行一次
|
||||
# 如果你已安装了Serv00本地SSH脚本,不要再运行此脚本部署了,这样会造成进程爆满,必须二选一!
|
||||
# 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(留空表示临时域名)。
|
||||
# 如使用保活网页,请不要启用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、REP、SSH_USER、SSH_PASS、HOST
|
||||
# 注意[]"",:这些符号不要乱删,按规律对齐
|
||||
# 每行一个{serv00服务器},一个服务也可,末尾用,间隔,最后一个服务器末尾无需用,间隔
|
||||
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":"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() {
|
||||
local RES=$1
|
||||
@@ -54,7 +55,7 @@ echo "甬哥Github项目 :github.com/yonggekkk"
|
||||
echo "甬哥Blogger博客 :ygkkk.blogspot.com"
|
||||
echo "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
||||
echo "自动远程部署Serv00三合一协议脚本【VPS+软路由】"
|
||||
echo "版本:V25.2.18"
|
||||
echo "版本:V25.3.26"
|
||||
echo "*****************************************************"
|
||||
echo "*****************************************************"
|
||||
count=0
|
||||
@@ -82,7 +83,6 @@ echo "*****************************************************"
|
||||
if ! sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" "$check_process" || [[ "$RES" =~ ^[Yy]$ ]]; then
|
||||
echo "⚠️检测到主进程或者argo进程未启动,或者执行重置"
|
||||
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}")
|
||||
echo "远程命令执行结果:$output"
|
||||
else
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+7
-8
@@ -1,8 +1,9 @@
|
||||
name: Keep Servers Alive
|
||||
|
||||
# 如果你已安装了Serv00本地SSH脚本,不要再运行此github部署了,这样会造成进程爆满,必须二选一!
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 */4 * * *' # 每4小时执行一次(私库每月500分钟运行时长,每天16分钟)
|
||||
#如使用保活网页,请禁用cron,保持下面两行开头的#符号,以防止cron与网页保活重复运行造成进程爆满
|
||||
#schedule:
|
||||
# - cron: '0 */4 * * *' # 每4小时执行一次(私库每月500分钟运行时长,每天16分钟)
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
@@ -10,15 +11,14 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
# 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
|
||||
# 注意[]"",:这些符号不要乱删,按规律对齐
|
||||
# 每行一个{serv00服务器},一个服务也可,末尾用,间隔,最后一个服务器末尾无需用,间隔
|
||||
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":"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:
|
||||
- name: Checkout Repository
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
echo "甬哥Blogger博客 :ygkkk.blogspot.com"
|
||||
echo "甬哥YouTube频道 :www.youtube.com/@ygkkk"
|
||||
echo "自动远程部署并保活Serv00三合一协议脚本【Github】"
|
||||
echo "版本:V25.2.18"
|
||||
echo "版本:V25.3.26"
|
||||
echo "*****************************************************"
|
||||
echo "*****************************************************"
|
||||
count=0
|
||||
@@ -87,7 +87,6 @@ jobs:
|
||||
if ! sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$HOST" "$check_process" || [[ "$RES" =~ ^[Yy]$ ]]; then
|
||||
echo "⚠️检测到主进程或者argo进程未启动,或者执行重置"
|
||||
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}")
|
||||
echo "远程命令执行结果:$output"
|
||||
else
|
||||
|
||||
+357
-231
@@ -21,15 +21,14 @@ export IP=${IP:-''}
|
||||
export reym=${reym:-''}
|
||||
export reset=${reset:-''}
|
||||
export resport=${resport:-''}
|
||||
|
||||
devil binexec on >/dev/null 2>&1
|
||||
USERNAME=$(whoami | tr '[:upper:]' '[:lower:]')
|
||||
HOSTNAME=$(hostname)
|
||||
snb=$(hostname | cut -d. -f1)
|
||||
nb=$(hostname | cut -d '.' -f 1 | tr -d 's')
|
||||
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
|
||||
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
|
||||
source "${HOME}/.bashrc" >/dev/null 2>&1
|
||||
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
|
||||
echo "重置系统完成"
|
||||
fi
|
||||
sleep 2
|
||||
devil www add ${USERNAME}.serv00.net php > /dev/null 2>&1
|
||||
FILE_PATH="${HOME}/domains/${USERNAME}.serv00.net/public_html"
|
||||
WORKDIR="${HOME}/domains/${USERNAME}.serv00.net/logs"
|
||||
[ -d "$FILE_PATH" ] || mkdir -p "$FILE_PATH"
|
||||
[ -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(){
|
||||
nb=$(echo "$HOSTNAME" | cut -d '.' -f 1 | tr -d 's')
|
||||
ym=("$HOSTNAME" "cache$nb.serv00.com" "web$nb.serv00.com")
|
||||
rm -rf ip.txt hy2ip.txt
|
||||
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
|
||||
if [[ -z "$ARGO_AUTH" ]] && [[ -f "$WORKDIR/ARGO_AUTH.log" ]]; then
|
||||
ARGO_AUTH=$(cat "$WORKDIR/ARGO_AUTH.log" 2>/dev/null)
|
||||
elif [[ -z "$ARGO_AUTH" ]] && [[ ! -f "$WORKDIR/ARGO_AUTH.log" ]]; then
|
||||
echo "$ARGO_AUTH" > $WORKDIR/ARGO_AUTH.log
|
||||
else
|
||||
echo "$ARGO_AUTH" > $WORKDIR/ARGO_AUTH.log
|
||||
ARGO_AUTH=$(cat "$WORKDIR/ARGO_AUTH.log" 2>/dev/null)
|
||||
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
|
||||
echo "$ARGO_DOMAIN" > $WORKDIR/ARGO_DOMAIN.log
|
||||
ARGO_DOMAIN=$(cat "$WORKDIR/ARGO_DOMAIN.log" 2>/dev/null)
|
||||
fi
|
||||
|
||||
if [[ -z "$UUID" ]] && [[ -f "$WORKDIR/UUID.txt" ]]; then
|
||||
UUID=$(cat "$WORKDIR/UUID.txt" 2>/dev/null)
|
||||
elif [[ -z "$UUID" ]] && [[ ! -f "$WORKDIR/UUID.txt" ]]; then
|
||||
UUID=$(uuidgen -r)
|
||||
echo "$UUID" > $WORKDIR/UUID.txt
|
||||
else
|
||||
echo "$UUID" > $WORKDIR/UUID.txt
|
||||
UUID=$(cat "$WORKDIR/UUID.txt" 2>/dev/null)
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
else
|
||||
echo "$response" | 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
|
||||
fi
|
||||
done
|
||||
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
|
||||
curl -sk "http://${snb}.${USERNAME}.serv00.net/up" > /dev/null 2>&1
|
||||
sleep 5
|
||||
}
|
||||
|
||||
okip(){
|
||||
@@ -99,47 +138,10 @@ okip(){
|
||||
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(){
|
||||
port_list=$(devil port list)
|
||||
tcp_ports=$(echo "$port_list" | grep -c "tcp")
|
||||
udp_ports=$(echo "$port_list" | grep -c "udp")
|
||||
|
||||
if [[ $tcp_ports -ne 2 || $udp_ports -ne 1 ]]; then
|
||||
echo "端口数量不符合要求,正在调整..."
|
||||
|
||||
@@ -191,16 +193,24 @@ if [[ $tcp_ports -ne 2 || $udp_ports -ne 1 ]]; then
|
||||
fi
|
||||
done
|
||||
fi
|
||||
echo "端口已调整完成,将断开ssh连接"
|
||||
#echo "端口已调整完成,将断开ssh连接"
|
||||
sleep 3
|
||||
devil binexec on >/dev/null 2>&1
|
||||
kill -9 $(ps -o ppid= -p $$) >/dev/null 2>&1
|
||||
#devil binexec on >/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
|
||||
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}')
|
||||
|
||||
echo "你的vless-reality的TCP端口: $tcp_port1"
|
||||
echo "你的vmess的TCP端口(设置Argo固定域名端口):$tcp_port2"
|
||||
echo "你的hysteria2的UDP端口: $udp_port"
|
||||
@@ -210,18 +220,114 @@ export vmess_port=$tcp_port2
|
||||
export hy2_port=$udp_port
|
||||
}
|
||||
|
||||
download_and_run_singbox() {
|
||||
if [ ! -s sb.txt ] && [ ! -s ag.txt ]; then
|
||||
ARCH=$(uname -m) && DOWNLOAD_DIR="." && mkdir -p "$DOWNLOAD_DIR" && FILE_INFO=()
|
||||
if [ "$ARCH" == "arm" ] || [ "$ARCH" == "arm64" ] || [ "$ARCH" == "aarch64" ]; then
|
||||
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")
|
||||
get_argodomain() {
|
||||
if [[ -n $ARGO_AUTH ]]; then
|
||||
echo "$ARGO_DOMAIN" > ARGO_DOMAIN.log
|
||||
echo "$ARGO_DOMAIN"
|
||||
else
|
||||
echo "Unsupported architecture: $ARCH"
|
||||
exit 1
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
generate_random_name() {
|
||||
local chars=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
|
||||
@@ -280,17 +386,8 @@ echo "${public_key}" > public_key.txt
|
||||
fi
|
||||
private_key=$(<private_key.txt)
|
||||
public_key=$(<public_key.txt)
|
||||
|
||||
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"
|
||||
|
||||
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
|
||||
{
|
||||
"log": {
|
||||
@@ -300,9 +397,9 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
||||
},
|
||||
"inbounds": [
|
||||
{
|
||||
"tag": "hysteria-in",
|
||||
"tag": "hysteria-in1",
|
||||
"type": "hysteria2",
|
||||
"listen": "$hy1p",
|
||||
"listen": "$(dig @8.8.8.8 +time=5 +short "web$nb.serv00.com" | sort -u)",
|
||||
"listen_port": $hy2_port,
|
||||
"users": [
|
||||
{
|
||||
@@ -321,9 +418,9 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "hysteria-in",
|
||||
"tag": "hysteria-in2",
|
||||
"type": "hysteria2",
|
||||
"listen": "$hy2p",
|
||||
"listen": "$(dig @8.8.8.8 +time=5 +short "$HOSTNAME" | sort -u)",
|
||||
"listen_port": $hy2_port,
|
||||
"users": [
|
||||
{
|
||||
@@ -342,9 +439,9 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
||||
}
|
||||
},
|
||||
{
|
||||
"tag": "hysteria-in",
|
||||
"tag": "hysteria-in3",
|
||||
"type": "hysteria2",
|
||||
"listen": "$hy3p",
|
||||
"listen": "$(dig @8.8.8.8 +time=5 +short "cache$nb.serv00.com" | sort -u)",
|
||||
"listen_port": $hy2_port,
|
||||
"users": [
|
||||
{
|
||||
@@ -432,23 +529,27 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
||||
"route": {
|
||||
"rule_set": [
|
||||
{
|
||||
"tag": "geosite-google-gemini",
|
||||
"tag": "google-gemini",
|
||||
"type": "remote",
|
||||
"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"
|
||||
}
|
||||
],
|
||||
EOF
|
||||
if [[ "$nb" =~ 14|15 ]]; then
|
||||
cat >> config.json <<EOF
|
||||
"rules": [
|
||||
{
|
||||
"domain": [
|
||||
$ytb
|
||||
"oh.my.god"
|
||||
"jnn-pa.googleapis.com"
|
||||
],
|
||||
"outbound": "wg"
|
||||
},
|
||||
{
|
||||
"rule_set":"geosite-google-gemini",
|
||||
"rule_set":[
|
||||
"google-gemini"
|
||||
],
|
||||
"outbound": "wg"
|
||||
}
|
||||
],
|
||||
@@ -456,6 +557,13 @@ hy3p=$(sed -n '3p' hy2ip.txt)
|
||||
}
|
||||
}
|
||||
EOF
|
||||
else
|
||||
cat >> config.json <<EOF
|
||||
"final": "direct"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
|
||||
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
|
||||
@@ -498,8 +606,6 @@ if [ -e "$(basename "${FILE_MAP[bot]}")" ]; 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 --no-autoupdate run --token ${ARGO_AUTH}"
|
||||
elif [[ $ARGO_AUTH =~ TunnelSecret ]]; then
|
||||
args="tunnel --edge-ip-version auto --config tunnel.yml run"
|
||||
else
|
||||
#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"
|
||||
@@ -520,12 +626,11 @@ else
|
||||
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 --no-autoupdate run --token ${ARGO_AUTH}"
|
||||
elif [[ $ARGO_AUTH =~ TunnelSecret ]]; then
|
||||
args="tunnel --edge-ip-version auto --config tunnel.yml run"
|
||||
else
|
||||
#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"
|
||||
fi
|
||||
pkill -x "$agg"
|
||||
nohup ./"$agg" $args >/dev/null 2>&1 &
|
||||
sleep 10
|
||||
if pgrep -x "$agg" > /dev/null; then
|
||||
@@ -539,7 +644,12 @@ else
|
||||
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
|
||||
cfgo
|
||||
elif [ -n "$ARGO_DOMAIN" ] && ! ps aux | grep '[t]unnel --n' > /dev/null; then
|
||||
@@ -551,56 +661,82 @@ fi
|
||||
sleep 2
|
||||
if ! pgrep -x "$(cat sb.txt)" > /dev/null; then
|
||||
red "主进程未启动,根据以下情况一一排查"
|
||||
yellow "1、网页端权限是否开启"
|
||||
yellow "2、网页后台删除所有端口,让脚本自动生成随机可用端口"
|
||||
yellow "3、选择y运行一次重置"
|
||||
yellow "4、当前Serv00服务器炸了?等会再试"
|
||||
red "5、以上都试了,哥直接躺平,交给进程保活,过会再来看"
|
||||
yellow "1、REP选择y重置一次随机端口,三个端口参数留空不填,再改为n(重要)"
|
||||
yellow "2、RES选择y运行一次重置系统,再改为n(重要)"
|
||||
yellow "3、当前Serv00服务器炸了?等会再试"
|
||||
red "4、以上都试了,哥直接躺平,交给进程保活,过会再来看"
|
||||
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)
|
||||
rm -rf ${FILE_PATH}/*.txt
|
||||
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")
|
||||
get_name() { if [ "$HOSTNAME" = "s1.ct8.pl" ]; then SERVER="CT8"; else SERVER=$(echo "$HOSTNAME" | cut -d '.' -f 1); fi; echo "$SERVER"; }
|
||||
NAME="$ISP-$(get_name)"
|
||||
rm -rf jh.txt
|
||||
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"
|
||||
echo "$vl_link" >> jh.txt
|
||||
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)"
|
||||
a=$(dig @8.8.8.8 +time=5 +short "web$nb.serv00.com" | sort -u)
|
||||
b=$(dig @8.8.8.8 +time=5 +short "$HOSTNAME" | sort -u)
|
||||
c=$(dig @8.8.8.8 +time=5 +short "cache$nb.serv00.com" | sort -u)
|
||||
if [[ "$IP" == "$a" ]]; then
|
||||
CIP1=$b; CIP2=$c
|
||||
elif [[ "$IP" == "$b" ]]; then
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
url=$(cat jh.txt 2>/dev/null)
|
||||
baseurl=$(echo -e "$url" | base64 -w 0)
|
||||
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"
|
||||
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
|
||||
{
|
||||
@@ -702,20 +838,19 @@ cat > sing_box.json <<EOF
|
||||
"default": "auto",
|
||||
"outbounds": [
|
||||
"auto",
|
||||
"vless-$NAME",
|
||||
"vmess-$NAME",
|
||||
"hy2-$NAME",
|
||||
"vmess-tls-argo-$NAME",
|
||||
"vmess-argo-$NAME"
|
||||
"vless-$snb-$USERNAME",
|
||||
"vmess-$snb-$USERNAME",
|
||||
"hy2-$snb-$USERNAME",
|
||||
"vmess-tls-argo-$snb-$USERNAME",
|
||||
"vmess-argo-$snb-$USERNAME"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "vless",
|
||||
"tag": "vless-$NAME",
|
||||
"tag": "vless-$snb-$USERNAME",
|
||||
"server": "$IP",
|
||||
"server_port": $vless_port,
|
||||
"uuid": "$UUID",
|
||||
"packet_encoding": "xudp",
|
||||
"flow": "xtls-rprx-vision",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
@@ -734,7 +869,7 @@ cat > sing_box.json <<EOF
|
||||
{
|
||||
"server": "$IP",
|
||||
"server_port": $vmess_port,
|
||||
"tag": "vmess-$NAME",
|
||||
"tag": "vmess-$snb-$USERNAME",
|
||||
"tls": {
|
||||
"enabled": false,
|
||||
"server_name": "www.bing.com",
|
||||
@@ -761,7 +896,7 @@ cat > sing_box.json <<EOF
|
||||
|
||||
{
|
||||
"type": "hysteria2",
|
||||
"tag": "hy2-$NAME",
|
||||
"tag": "hy2-$snb-$USERNAME",
|
||||
"server": "$IP",
|
||||
"server_port": $hy2_port,
|
||||
"password": "$UUID",
|
||||
@@ -775,9 +910,9 @@ cat > sing_box.json <<EOF
|
||||
}
|
||||
},
|
||||
{
|
||||
"server": "icook.hk",
|
||||
"server": "www.visa.com.hk",
|
||||
"server_port": 8443,
|
||||
"tag": "vmess-tls-argo-$NAME",
|
||||
"tag": "vmess-tls-argo-$snb-$USERNAME",
|
||||
"tls": {
|
||||
"enabled": true,
|
||||
"server_name": "$argodomain",
|
||||
@@ -802,9 +937,9 @@ cat > sing_box.json <<EOF
|
||||
"uuid": "$UUID"
|
||||
},
|
||||
{
|
||||
"server": "icook.hk",
|
||||
"server": "www.visa.com.hk",
|
||||
"server_port": 8880,
|
||||
"tag": "vmess-argo-$NAME",
|
||||
"tag": "vmess-argo-$snb-$USERNAME",
|
||||
"tls": {
|
||||
"enabled": false,
|
||||
"server_name": "$argodomain",
|
||||
@@ -836,11 +971,11 @@ cat > sing_box.json <<EOF
|
||||
"tag": "auto",
|
||||
"type": "urltest",
|
||||
"outbounds": [
|
||||
"vless-$NAME",
|
||||
"vmess-$NAME",
|
||||
"hy2-$NAME",
|
||||
"vmess-tls-argo-$NAME",
|
||||
"vmess-argo-$NAME"
|
||||
"vless-$snb-$USERNAME",
|
||||
"vmess-$snb-$USERNAME",
|
||||
"hy2-$snb-$USERNAME",
|
||||
"vmess-tls-argo-$snb-$USERNAME",
|
||||
"vmess-argo-$snb-$USERNAME"
|
||||
],
|
||||
"url": "https://www.gstatic.com/generate_204",
|
||||
"interval": "1m",
|
||||
@@ -935,7 +1070,7 @@ log-level: info
|
||||
unified-delay: true
|
||||
global-client-fingerprint: chrome
|
||||
dns:
|
||||
enable: true
|
||||
enable: false
|
||||
listen: :53
|
||||
ipv6: true
|
||||
enhanced-mode: fake-ip
|
||||
@@ -956,7 +1091,7 @@ dns:
|
||||
- 240.0.0.0/4
|
||||
|
||||
proxies:
|
||||
- name: vless-reality-vision-$NAME
|
||||
- name: vless-reality-vision-$snb-$USERNAME
|
||||
type: vless
|
||||
server: $IP
|
||||
port: $vless_port
|
||||
@@ -970,7 +1105,7 @@ proxies:
|
||||
public-key: $public_key
|
||||
client-fingerprint: chrome
|
||||
|
||||
- name: vmess-ws-$NAME
|
||||
- name: vmess-ws-$snb-$USERNAME
|
||||
type: vmess
|
||||
server: $IP
|
||||
port: $vmess_port
|
||||
@@ -986,7 +1121,7 @@ proxies:
|
||||
headers:
|
||||
Host: www.bing.com
|
||||
|
||||
- name: hysteria2-$NAME
|
||||
- name: hysteria2-$snb-$USERNAME
|
||||
type: hysteria2
|
||||
server: $IP
|
||||
port: $hy2_port
|
||||
@@ -997,9 +1132,9 @@ proxies:
|
||||
skip-cert-verify: true
|
||||
fast-open: true
|
||||
|
||||
- name: vmess-tls-argo-$NAME
|
||||
- name: vmess-tls-argo-$snb-$USERNAME
|
||||
type: vmess
|
||||
server: icook.hk
|
||||
server: www.visa.com.hk
|
||||
port: 8443
|
||||
uuid: $UUID
|
||||
alterId: 0
|
||||
@@ -1013,9 +1148,9 @@ proxies:
|
||||
headers:
|
||||
Host: $argodomain
|
||||
|
||||
- name: vmess-argo-$NAME
|
||||
- name: vmess-argo-$snb-$USERNAME
|
||||
type: vmess
|
||||
server: icook.hk
|
||||
server: www.visa.com.hk
|
||||
port: 8880
|
||||
uuid: $UUID
|
||||
alterId: 0
|
||||
@@ -1036,11 +1171,11 @@ proxy-groups:
|
||||
interval: 300
|
||||
strategy: round-robin
|
||||
proxies:
|
||||
- vless-reality-vision-$NAME
|
||||
- vmess-ws-$NAME
|
||||
- hysteria2-$NAME
|
||||
- vmess-tls-argo-$NAME
|
||||
- vmess-argo-$NAME
|
||||
- vless-reality-vision-$snb-$USERNAME
|
||||
- vmess-ws-$snb-$USERNAME
|
||||
- hysteria2-$snb-$USERNAME
|
||||
- vmess-tls-argo-$snb-$USERNAME
|
||||
- vmess-argo-$snb-$USERNAME
|
||||
|
||||
- name: Auto
|
||||
type: url-test
|
||||
@@ -1048,11 +1183,11 @@ proxy-groups:
|
||||
interval: 300
|
||||
tolerance: 50
|
||||
proxies:
|
||||
- vless-reality-vision-$NAME
|
||||
- vmess-ws-$NAME
|
||||
- hysteria2-$NAME
|
||||
- vmess-tls-argo-$NAME
|
||||
- vmess-argo-$NAME
|
||||
- vless-reality-vision-$snb-$USERNAME
|
||||
- vmess-ws-$snb-$USERNAME
|
||||
- hysteria2-$snb-$USERNAME
|
||||
- vmess-tls-argo-$snb-$USERNAME
|
||||
- vmess-argo-$snb-$USERNAME
|
||||
|
||||
- name: Select
|
||||
type: select
|
||||
@@ -1060,11 +1195,11 @@ proxy-groups:
|
||||
- Balance
|
||||
- Auto
|
||||
- DIRECT
|
||||
- vless-reality-vision-$NAME
|
||||
- vmess-ws-$NAME
|
||||
- hysteria2-$NAME
|
||||
- vmess-tls-argo-$NAME
|
||||
- vmess-argo-$NAME
|
||||
- vless-reality-vision-$snb-$USERNAME
|
||||
- vmess-ws-$snb-$USERNAME
|
||||
- hysteria2-$snb-$USERNAME
|
||||
- vmess-tls-argo-$snb-$USERNAME
|
||||
- vmess-argo-$snb-$USERNAME
|
||||
rules:
|
||||
- GEOIP,LAN,DIRECT
|
||||
- GEOIP,CN,DIRECT
|
||||
@@ -1072,20 +1207,34 @@ rules:
|
||||
|
||||
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 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"
|
||||
Clashmeta_LINK="https://${USERNAME}.serv00.net/${UUID}_clashmeta.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
|
||||
=================================================================================================
|
||||
|
||||
当前客户端正在使用的IP:$IP ,如默认节点IP被墙,可在客户端地址更换以下其他IP
|
||||
$allip
|
||||
当前客户端正在使用的IP:$IP
|
||||
如默认节点IP被墙,可在客户端地址更换以下其他IP
|
||||
$a
|
||||
$b
|
||||
$c
|
||||
|
||||
当前各协议正在使用的端口如下
|
||||
vless-reality端口:$vlp
|
||||
Vmess-ws端口(设置Argo固定域名端口):$vmp
|
||||
Hysteria2端口:$hyp
|
||||
|
||||
UUID密码:$showuuid
|
||||
|
||||
Argo域名:${argodomain}
|
||||
|
||||
-------------------------------------------------------------------------------------------------
|
||||
|
||||
一、Vless-reality分享链接如下:
|
||||
@@ -1104,7 +1253,7 @@ CF节点落地到CF网站的地区为:$IP所在地区
|
||||
CF节点的TLS必须开启
|
||||
CF节点落地到非CF网站的地区为:$IP所在地区
|
||||
|
||||
注:如果serv00的IP被墙,proxyip依旧有效,但用于客户端地址与端口的非标端口反代IP将不可用
|
||||
注:如果serv00的IP被墙,proxyip依旧有效,但用于客户端地址的非标端口反代IP将不可用
|
||||
注:可能有大佬会扫Serv00的反代IP作为其共享IP库或者出售,请慎重将reality域名设置为CF域名
|
||||
-------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -1115,9 +1264,6 @@ CF节点落地到非CF网站的地区为:$IP所在地区
|
||||
(该节点默认不支持CDN,如果设置为CDN回源(需域名):客户端地址可自行修改优选IP/域名,7个80系端口随便换,被墙依旧能用!)
|
||||
$vmws_link
|
||||
|
||||
Argo域名:${argodomain}
|
||||
如果上面Argo临时域名未生成,以下 2 与 3 的Argo节点将不可用 (打开Argo固定/临时域名网页,显示HTTP ERROR 404说明正常可用)
|
||||
|
||||
2、Vmess-ws-tls_Argo分享链接如下:
|
||||
(该节点为CDN优选IP节点,客户端地址可自行修改优选IP/域名,6个443系端口随便换,被墙依旧能用!)
|
||||
$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
|
||||
|
||||
以上五个节点聚合通用分享码:
|
||||
剪切分享码:
|
||||
$baseurl
|
||||
-------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -1150,36 +1300,12 @@ Sing-box订阅分享链接:
|
||||
$Singbox_LINK
|
||||
-------------------------------------------------------------------------------------------------
|
||||
|
||||
多功能主页地址:http://${snb}.${USERNAME}.serv00.net
|
||||
|
||||
=================================================================================================
|
||||
|
||||
EOF
|
||||
cat list.txt
|
||||
sleep 2
|
||||
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
|
||||
}
|
||||
install_singbox
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
v25.2.19更新内容:
|
||||
1、更新多功能网页(1、保活:你懂的。2、重启:某主节点不通时。3、查看节点及订阅:你懂的)
|
||||
2、支持重置端口选项,现在不必登录serv00网页后台手动重置了
|
||||
3、相关说明文字修正
|
||||
更新方式:在线更新
|
||||
(更新方式:在线更新与重装更新两种。如重装更新,必须卸载重装)
|
||||
v25.4.1更新内容:
|
||||
1、多功能网页增加查看进程功能 /jc
|
||||
2、聚合通用节点分享更新,支持到22个节点:三协议各自三个IP,argo全覆盖13个端口节点,已添加不死优选IP
|
||||
3、修复相关BUG及文字修正
|
||||
本次更新方式:重装更新(在线更新:SSH选择5更新。。重装更新:必须卸载重装)
|
||||
详见: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
|
||||
|
||||
@@ -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