@@ -17,8 +17,8 @@ https://raw.githubusercontent.com/mfuu/v2ray/master/v2ray
17
17
`
18
18
19
19
let urls = [ ] ;
20
- let subconverter = "SUBAPI.fxxk.dedyn.io" ; //在线订阅转换后端,目前使用CM的订阅转换功能。支持自建psub 可自行搭建https://github.com/bulianglin/psub
21
- let subconfig = "https://raw.githubusercontent.com/cmliu/ACL4SSR/main/Clash/config/ACL4SSR_Online_MultiCountry.ini" ; //订阅配置文件
20
+ let subConverter = "SUBAPI.fxxk.dedyn.io" ; //在线订阅转换后端,目前使用CM的订阅转换功能。支持自建psub 可自行搭建https://github.com/bulianglin/psub
21
+ let subConfig = "https://raw.githubusercontent.com/cmliu/ACL4SSR/main/Clash/config/ACL4SSR_Online_MultiCountry.ini" ; //订阅配置文件
22
22
let subProtocol = 'https' ;
23
23
24
24
export default {
@@ -31,14 +31,14 @@ export default {
31
31
BotToken = env . TGTOKEN || BotToken ;
32
32
ChatID = env . TGID || ChatID ;
33
33
TG = env . TG || TG ;
34
- subconverter = env . SUBAPI || subconverter ;
35
- if ( subconverter . includes ( "http://" ) ) {
36
- subconverter = subconverter . split ( "//" ) [ 1 ] ;
34
+ subConverter = env . SUBAPI || subConverter ;
35
+ if ( subConverter . includes ( "http://" ) ) {
36
+ subConverter = subConverter . split ( "//" ) [ 1 ] ;
37
37
subProtocol = 'http' ;
38
38
} else {
39
- subconverter = subconverter . split ( "//" ) [ 1 ] || subconverter ;
39
+ subConverter = subConverter . split ( "//" ) [ 1 ] || subConverter ;
40
40
}
41
- subconfig = env . SUBCONFIG || subconfig ;
41
+ subConfig = env . SUBCONFIG || subConfig ;
42
42
FileName = env . SUBNAME || FileName ;
43
43
44
44
const currentDate = new Date ( ) ;
@@ -104,7 +104,7 @@ export default {
104
104
订阅格式 = 'loon' ;
105
105
}
106
106
107
- let subconverterUrl ;
107
+ let subConverterUrl ;
108
108
let 订阅转换URL = `${ url . origin } /${ await MD5MD5 ( fakeToken ) } ?token=${ fakeToken } ` ;
109
109
//console.log(订阅转换URL);
110
110
let req_data = MainData ;
@@ -170,33 +170,33 @@ export default {
170
170
}
171
171
} ) ;
172
172
} else if ( 订阅格式 == 'clash' ) {
173
- subconverterUrl = `${ subProtocol } ://${ subconverter } /sub?target=clash&url=${ encodeURIComponent ( 订阅转换URL ) } &insert=false&config=${ encodeURIComponent ( subconfig ) } &emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true` ;
173
+ subConverterUrl = `${ subProtocol } ://${ subConverter } /sub?target=clash&url=${ encodeURIComponent ( 订阅转换URL ) } &insert=false&config=${ encodeURIComponent ( subConfig ) } &emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true` ;
174
174
} else if ( 订阅格式 == 'singbox' ) {
175
- subconverterUrl = `${ subProtocol } ://${ subconverter } /sub?target=singbox&url=${ encodeURIComponent ( 订阅转换URL ) } &insert=false&config=${ encodeURIComponent ( subconfig ) } &emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true` ;
175
+ subConverterUrl = `${ subProtocol } ://${ subConverter } /sub?target=singbox&url=${ encodeURIComponent ( 订阅转换URL ) } &insert=false&config=${ encodeURIComponent ( subConfig ) } &emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true` ;
176
176
} else if ( 订阅格式 == 'surge' ) {
177
- subconverterUrl = `${ subProtocol } ://${ subconverter } /sub?target=surge&url=${ encodeURIComponent ( 订阅转换URL ) } &insert=false&config=${ encodeURIComponent ( subconfig ) } &emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true` ;
177
+ subConverterUrl = `${ subProtocol } ://${ subConverter } /sub?target=surge&url=${ encodeURIComponent ( 订阅转换URL ) } &insert=false&config=${ encodeURIComponent ( subConfig ) } &emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true` ;
178
178
} else if ( 订阅格式 == 'quanx' ) {
179
- subconverterUrl = `${ subProtocol } ://${ subconverter } /sub?target=quanx&url=${ encodeURIComponent ( 订阅转换URL ) } &insert=false&config=${ encodeURIComponent ( subconfig ) } &emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&udp=true` ;
179
+ subConverterUrl = `${ subProtocol } ://${ subConverter } /sub?target=quanx&url=${ encodeURIComponent ( 订阅转换URL ) } &insert=false&config=${ encodeURIComponent ( subConfig ) } &emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&udp=true` ;
180
180
} else if ( 订阅格式 == 'loon' ) {
181
- subconverterUrl = `${ subProtocol } ://${ subconverter } /sub?target=loon&url=${ encodeURIComponent ( 订阅转换URL ) } &insert=false&config=${ encodeURIComponent ( subconfig ) } &emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false` ;
181
+ subConverterUrl = `${ subProtocol } ://${ subConverter } /sub?target=loon&url=${ encodeURIComponent ( 订阅转换URL ) } &insert=false&config=${ encodeURIComponent ( subConfig ) } &emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false` ;
182
182
}
183
183
//console.log(订阅转换URL);
184
184
try {
185
- const subconverterResponse = await fetch ( subconverterUrl ) ;
185
+ const subConverterResponse = await fetch ( subConverterUrl ) ;
186
186
187
- if ( ! subconverterResponse . ok ) {
187
+ if ( ! subConverterResponse . ok ) {
188
188
return new Response ( base64Data , {
189
189
headers : {
190
190
"content-type" : "text/plain; charset=utf-8" ,
191
191
"Profile-Update-Interval" : `${ SUBUpdateTime } ` ,
192
192
"Subscription-Userinfo" : `upload=${ UD } ; download=${ UD } ; total=${ total } ; expire=${ expire } ` ,
193
193
}
194
194
} ) ;
195
- //throw new Error(`Error fetching subconverterUrl : ${subconverterResponse .status} ${subconverterResponse .statusText}`);
195
+ //throw new Error(`Error fetching subConverterUrl : ${subConverterResponse .status} ${subConverterResponse .statusText}`);
196
196
}
197
- let subconverterContent = await subconverterResponse . text ( ) ;
198
- if ( 订阅格式 == 'clash' ) subconverterContent = await clashFix ( subconverterContent ) ;
199
- return new Response ( subconverterContent , {
197
+ let subConverterContent = await subConverterResponse . text ( ) ;
198
+ if ( 订阅格式 == 'clash' ) subConverterContent = await clashFix ( subConverterContent ) ;
199
+ return new Response ( subConverterContent , {
200
200
headers : {
201
201
"Content-Disposition" : `attachment; filename*=utf-8''${ encodeURIComponent ( FileName ) } ; filename=${ FileName } ` ,
202
202
"content-type" : "text/plain; charset=utf-8" ,
@@ -580,29 +580,29 @@ async function KV(request, env, txt = 'ADD.txt') {
580
580
---------------------------------------------------------------<br>
581
581
自适应订阅地址:<br>
582
582
<a href="javascript:void(0)" onclick="copyToClipboard('https://${ url . hostname } /${ mytoken } ')" style="color:blue;text-decoration:underline;cursor:pointer;">https://${ url . hostname } /${ mytoken } </a><br>
583
- <br>
584
583
Base64订阅地址:<br>
585
584
<a href="javascript:void(0)" onclick="copyToClipboard('https://${ url . hostname } /${ mytoken } ?b64')" style="color:blue;text-decoration:underline;cursor:pointer;">https://${ url . hostname } /${ mytoken } ?b64</a><br>
586
- <br>
587
585
clash订阅地址:<br>
588
586
<a href="javascript:void(0)" onclick="copyToClipboard('https://${ url . hostname } /${ mytoken } ?clash')" style="color:blue;text-decoration:underline;cursor:pointer;">https://${ url . hostname } /${ mytoken } ?clash</a><br>
589
- <br>
590
587
singbox订阅地址:<br>
591
588
<a href="javascript:void(0)" onclick="copyToClipboard('https://${ url . hostname } /${ mytoken } ?sb')" style="color:blue;text-decoration:underline;cursor:pointer;">https://${ url . hostname } /${ mytoken } ?sb</a><br>
592
- <br>
593
589
surge订阅地址:<br>
594
590
<a href="javascript:void(0)" onclick="copyToClipboard('https://${ url . hostname } /${ mytoken } ?surge')" style="color:blue;text-decoration:underline;cursor:pointer;">https://${ url . hostname } /${ mytoken } ?surge</a><br>
595
- <br>
596
591
loon订阅地址:<br>
597
592
<a href="javascript:void(0)" onclick="copyToClipboard('https://${ url . hostname } /${ mytoken } ?loon')" style="color:blue;text-decoration:underline;cursor:pointer;">https://${ url . hostname } /${ mytoken } ?loon</a><br>
598
593
---------------------------------------------------------------<br>
599
594
################################################################<br>
600
- <br>
595
+ 订阅转换配置<br>
596
+ ---------------------------------------------------------------<br>
597
+ SUBAPI(订阅转换后端): ${ subProtocol } ://${ subConverter } <br>
598
+ SUBCONFIG(订阅转换配置文件): ${ subConfig } <br>
599
+ ---------------------------------------------------------------<br>
600
+ ################################################################<br>
601
601
${ FileName } 汇聚订阅编辑:
602
602
<div class="editor-container">
603
603
${ hasKV ? `
604
604
<textarea class="editor"
605
- placeholder="${ decodeURIComponent ( atob ( 'TElOSyVFNyVBNCVCQSVFNCVCRSU4QiVFRiVCQyU5QQp2bGVzcyUzQSUyRiUyRmI3YTM5MmUyLTRlZjAtNDQ5Ni05MGJjLTFjMzdiYjIzNDkwNCU0MGNmLjA5MDIyNy54eXolM0E0NDMlM0ZlbmNyeXB0aW9uJTNEbm9uZSUyNnNlY3VyaXR5JTNEdGxzJTI2c25pJTNEZWRnZXR1bm5lbC0yejIucGFnZXMuZGV2JTI2ZnAlM0RyYW5kb20lMjZ0eXBlJTNEd3MlMjZob3N0JTNEZWRnZXR1bm5lbC0yejIucGFnZXMuZGV2JTI2cGF0aCUzRCUyNTJGJTI1M0ZlZCUyNTNEMjA0OCUyMyUyNUU1JTI1OEElMjVBMCUyNUU1JTI1ODUlMjVBNSUyNUU2JTI1ODglMjU5MSUyNUU3JTI1OUElMjU4NCUyNUU5JTI1QTIlMjU5MSUyNUU5JTI1ODElMjU5M3QubWUlMjUyRkNNTGl1c3NzcyUyNUU4JTI1QTclMjVBMyUyNUU5JTI1OTQlMjU4MSUyNUU2JTI1OUIlMjVCNCUyNUU1JTI1QTQlMjU5QSUyNUU0JTI1QkMlMjU5OCUyNUU5JTI1ODAlMjU4OSUyNUU4JTI1OEElMjU4MiUyNUU3JTI1ODIlMjVCOQp0cm9qYW4lM0ElMkYlMkZDTUxpdXNzc3MlNDAxOTguNjIuNjIuNTIlM0E0NDMlM0ZzZWN1cml0eSUzRHRscyUyNnNuaSUzRHhuLS1paHFyNmZyeThhdnBkbjc5YmV0Yy54bi0tY20tbms3YzAyNWE5dXVhMjYzNWNlc3UudXMua2clMjZhbHBuJTNEaHR0cCUyNTJGMS4xJTI2ZnAlM0RyYW5kb21pemVkJTI2YWxsb3dJbnNlY3VyZSUzRDElMjZ0eXBlJTNEd3MlMjZob3N0JTNEeG4tLWlocXI2ZnJ5OGF2cGRuNzliZXRjLnhuLS1jbS1uazdjMDI1YTl1dWEyNjM1Y2VzdS51cy5rZyUyNnBhdGglM0QlMjUyRiUyNTNGZWQlMjUzRDI1NjAlMjNVUwpzcyUzQSUyRiUyRllXVnpMVEkxTmkxalptSTZZVzFoZW05dWMydHlNRFUlMjUzRCU0MDEzLjI1MC4xMTAuNTYlM0E0NDMlMjNTRwoKJUU2JUIzJUE4JUU2JTg0JThGJUVGJUJDJTlBJUU0JUI4JTgwJUU4JUExJThDJUU0JUI4JTgwJUU0JUI4JUFBJUU4JThBJTgyJUU3JTgyJUI5JUU5JTkzJUJFJUU2JThFJUE1JUU1JThEJUIzJUU1JThGJUFGCgoKJUU4JUFFJUEyJUU5JTk4JTg1JUU5JTkzJUJFJUU2JThFJUE1JUU3JUE0JUJBJUU0JUJFJThCJUVGJUJDJTlBCmh0dHBzJTNBJTJGJTJGc3ViLnhmLmZyZWUuaHIlMkZhdXRvCgolRTYlQjMlQTglRTYlODQlOEYlRUYlQkMlOUElRTQlQjglODAlRTglQTElOEMlRTQlQjglODAlRTYlOUQlQTElRTglQUUlQTIlRTklOTglODUlRTklOTMlQkUlRTYlOEUlQTUlRTUlOEQlQjMlRTUlOEYlQUY=' ) ) } "
605
+ placeholder="${ decodeURIComponent ( atob ( 'TElOSyVFNyVBNCVCQSVFNCVCRSU4QiVFRiVCQyU4OCVFNCVCOCU4MCVFOCVBMSU4QyVFNCVCOCU4MCVFNCVCOCVBQSVFOCU4QSU4MiVFNyU4MiVCOSVFOSU5MyVCRSVFNiU4RSVBNSVFNSU4RCVCMyVFNSU4RiVBRiVFRiVCQyU4OSVFRiVCQyU5QQp2bGVzcyUzQSUyRiUyRjI0NmFhNzk1LTA2MzctNGY0Yy04ZjY0LTJjOGZiMjRjMWJhZCU0MDEyNy4wLjAuMSUzQTEyMzQlM0ZlbmNyeXB0aW9uJTNEbm9uZSUyNnNlY3VyaXR5JTNEdGxzJTI2c25pJTNEVEcuQ01MaXVzc3NzLmxvc2V5b3VyaXAuY29tJTI2YWxsb3dJbnNlY3VyZSUzRDElMjZ0eXBlJTNEd3MlMjZob3N0JTNEVEcuQ01MaXVzc3NzLmxvc2V5b3VyaXAuY29tJTI2cGF0aCUzRCUyNTJGJTI1M0ZlZCUyNTNEMjU2MCUyM0NGbmF0CnRyb2phbiUzQSUyRiUyRmFhNmRkZDJmLWQxY2YtNGE1Mi1iYTFiLTI2NDBjNDFhNzg1NiU0MDIxOC4xOTAuMjMwLjIwNyUzQTQxMjg4JTNGc2VjdXJpdHklM0R0bHMlMjZzbmklM0RoazEyLmJpbGliaWxpLmNvbSUyNmFsbG93SW5zZWN1cmUlM0QxJTI2dHlwZSUzRHRjcCUyNmhlYWRlclR5cGUlM0Rub25lJTIzSEsKc3MlM0ElMkYlMkZZMmhoWTJoaE1qQXRhV1YwWmkxd2IyeDVNVE13TlRveVJYUlFjVzQyU0ZscVZVNWpTRzlvVEdaVmNFWlJkMjVtYWtORFVUVnRhREZ0U21SRlRVTkNkV04xVjFvNVVERjFaR3RTUzBodVZuaDFielUxYXpGTFdIb3lSbTgyYW5KbmRERTRWelkyYjNCMGVURmxOR0p0TVdwNlprTm1RbUklMjUzRCU0MDg0LjE5LjMxLjYzJTNBNTA4NDElMjNERQoKCiVFOCVBRSVBMiVFOSU5OCU4NSVFOSU5MyVCRSVFNiU4RSVBNSVFNyVBNCVCQSVFNCVCRSU4QiVFRiVCQyU4OCVFNCVCOCU4MCVFOCVBMSU4QyVFNCVCOCU4MCVFNiU5RCVBMSVFOCVBRSVBMiVFOSU5OCU4NSVFOSU5MyVCRSVFNiU4RSVBNSVFNSU4RCVCMyVFNSU4RiVBRiVFRiVCQyU4OSVFRiVCQyU5QQpodHRwcyUzQSUyRiUyRnN1Yi54Zi5mcmVlLmhyJTJGYXV0bw==' ) ) } "
606
606
id="content">${ content } </textarea>
607
607
<div class="save-container">
608
608
<button class="save-btn" onclick="saveContent(this)">保存</button>
0 commit comments