From 6cc1931739bbed3cc9f3b016310b424718a4adba Mon Sep 17 00:00:00 2001
From: CMLiussss <24787744+cmliu@users.noreply.github.com>
Date: Sun, 10 Mar 2024 21:59:08 +0800
Subject: [PATCH] Update _worker.js
---
_worker.js | 78 +++++++++++++++++++++++++++++++-----------------------
1 file changed, 45 insertions(+), 33 deletions(-)
diff --git a/_worker.js b/_worker.js
index 187db78..85394ec 100644
--- a/_worker.js
+++ b/_worker.js
@@ -1,9 +1,11 @@
-// 部署完成后在网址后面加上这个,获取自建节点和机场聚合节点,/?token=auto
+// 部署完成后在网址后面加上这个,获取自建节点和机场聚合节点,/?token=auto或/auto或
let mytoken = 'auto'; //可以随便取,或者uuid生成,https://1024tools.com/uuid
let BotToken =''; //可以为空,或者@BotFather中输入/start,/newbot,并关注机器人
let ChatID =''; //可以为空,或者@userinfobot中获取,/start
+let TG = 0; //1 为推送所有的访问信息,0 为不推送订阅转换后端的访问信息与异常访问
+let SUBUpdateTime = 6; //自定义订阅更新时间,单位小时
//自建节点
const MainData = `
@@ -21,8 +23,6 @@ const urls = [
let subconverter = "api.v1.mk"; //在线订阅转换后端,目前使用肥羊的订阅转换功能。支持自建psub 可自行搭建https://github.com/bulianglin/psub
let subconfig = "https://raw.githubusercontent.com/cmliu/ACL4SSR/main/Clash/config/ACL4SSR_Online_Full.ini"; //订阅配置文件
-//addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) })
-
export default {
async fetch (request,env) {
const userAgentHeader = request.headers.get('User-Agent');
@@ -32,35 +32,15 @@ export default {
mytoken = env.TOKEN || mytoken;
BotToken = env.TGTOKEN || BotToken;
ChatID = env.TGID || ChatID;
+ TG = env.TG || TG;
- if (!(token == mytoken || url.pathname.includes("/"+ mytoken))) {
- //await sendMessage("#Token错误信息", request.headers.get('CF-Connecting-IP'), `Invalid Token: ${token}`);
+ if ( !(token == mytoken || url.pathname == ("/"+ mytoken) || url.pathname.includes("/"+ mytoken + "?")) ) {
+ if ( TG == 1 && url.pathname !== "/" && url.pathname !== "/favicon.ico" ) await sendMessage("#异常访问", request.headers.get('CF-Connecting-IP'), `UA: ${userAgent}\n域名: ${url.hostname}\n入口: ${url.pathname + url.search}`);
return new Response('Hello World!', { status: 403 });
+ } else if ( TG == 1 || !userAgent.includes('subconverter') ){
+ await sendMessage("#获取订阅", request.headers.get('CF-Connecting-IP'), `UA: ${userAgent}\n域名: ${url.hostname}\n入口: ${url.pathname + url.search}`);
}
- let req_data = "";
- req_data += MainData;
-
- try {
- const responses = await Promise.all(urls.map(url => fetch(url,{
- method: 'get',
- headers: {
- 'Accept': 'text/html,application/xhtml+xml,application/xml;',
- 'User-Agent': 'CF-Workers-SUB/cmliu'
- }
- })));
-
- for (const response of responses) {
- if (response.ok) {
- const content = await response.text();
- req_data += atob(content) + '\n';
- }
- }
- } catch (error) {
-
- }
-
- await sendMessage("#获取订阅", request.headers.get('CF-Connecting-IP'), `UA: ${userAgent}\n域名: ${url.hostname}\n入口: ${url.pathname + url.search}`);
if (userAgent.includes('clash')) {
const subconverterUrl = `https://${subconverter}/sub?target=clash&url=${encodeURIComponent(request.url)}&insert=false&config=${encodeURIComponent(subconfig)}&emoji=true&list=false&tfo=false&scv=false&fdn=false&sort=false&new_name=true`;
@@ -73,8 +53,11 @@ export default {
const subconverterContent = await subconverterResponse.text();
- return new Response(subconverterContent, {
- headers: { 'content-type': 'text/plain; charset=utf-8' },
+ return new Response(subconverterContent ,{
+ headers: {
+ "content-type": "text/plain; charset=utf-8",
+ "Profile-Update-Interval": `${SUBUpdateTime}`,
+ }
});
} catch (error) {
return new Response(`Error: ${error.message}`, {
@@ -94,8 +77,11 @@ export default {
const subconverterContent = await subconverterResponse.text();
- return new Response(subconverterContent, {
- headers: { 'content-type': 'text/plain; charset=utf-8' },
+ return new Response(subconverterContent ,{
+ headers: {
+ "content-type": "text/plain; charset=utf-8",
+ "Profile-Update-Interval": `${SUBUpdateTime}`,
+ }
});
} catch (error) {
return new Response(`Error: ${error.message}`, {
@@ -104,6 +90,27 @@ export default {
});
}
} else {
+ let req_data = "";
+ req_data += MainData;
+
+ try {
+ const responses = await Promise.all(urls.map(url => fetch(url,{
+ method: 'get',
+ headers: {
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;',
+ 'User-Agent': 'CF-Workers-SUB/cmliu'
+ }
+ })));
+
+ for (const response of responses) {
+ if (response.ok) {
+ const content = await response.text();
+ req_data += atob(content) + '\n';
+ }
+ }
+ } catch (error) {
+
+ }
//修复中文错误
const utf8Encoder = new TextEncoder();
const encodedData = utf8Encoder.encode(req_data);
@@ -115,7 +122,12 @@ export default {
//console.log(result);
const base64Data = btoa(result);
- return new Response(base64Data);
+ return new Response(base64Data ,{
+ headers: {
+ "content-type": "text/plain; charset=utf-8",
+ "Profile-Update-Interval": `${SUBUpdateTime}`,
+ }
+ });
}
}
};