更新配置页面显示更多配置信息

This commit is contained in:
cmliu
2024-09-04 02:37:27 +08:00
parent f1ac6b0641
commit dad3f7750f
4 changed files with 80 additions and 62 deletions

View File

@@ -31,6 +31,7 @@ let noTLS = 'false';
const expire = 4102329600;//2099-12-31
let proxyIPs;
let socks5s;
let go2Socks5s = [];
let addresses = [];
let addressesapi = [];
let addressesnotls = [];
@@ -62,7 +63,7 @@ export default {
const fakeUserIDMD5 = await MD5MD5(`${userID}${timestamp}`);
fakeUserID = fakeUserIDMD5.slice(0, 8) + "-" + fakeUserIDMD5.slice(8, 12) + "-" + fakeUserIDMD5.slice(12, 16) + "-" + fakeUserIDMD5.slice(16, 20) + "-" + fakeUserIDMD5.slice(20);
fakeHostName = fakeUserIDMD5.slice(6, 9) + "." + fakeUserIDMD5.slice(13, 19);
console.log(`虚假UUID: ${fakeUserID}`); // 打印fakeID
//console.log(`虚假UUID: ${fakeUserID}`); // 打印fakeID
proxyIP = env.PROXYIP || proxyIP;
proxyIPs = await ADD(proxyIP);
@@ -105,6 +106,13 @@ export default {
DLS = env.DLS || DLS;
BotToken = env.TGTOKEN || BotToken;
ChatID = env.TGID || ChatID;
if( env.GO2SOCKS5 ) {
const go2Socks5 = env.GO2SOCKS5;
var addGo2Socks5 = go2Socks5.replace(/[\r\n]+/g, '\n').replace(/,+/g, '\n');
if (addGo2Socks5.charAt(0) == '\n') addGo2Socks5 = addGo2Socks5.slice(1);
if (addGo2Socks5.charAt(addGo2Socks5.length - 1) == '\n') addGo2Socks5 = addGo2Socks5.slice(0, addGo2Socks5.length - 1);
go2Socks5s = addGo2Socks5.split('\n');
}
const upgradeHeader = request.headers.get('Upgrade');
const url = new URL(request.url);
if (url.searchParams.has('sub') && url.searchParams.get('sub') !== '') sub = url.searchParams.get('sub');
@@ -345,6 +353,14 @@ async function vlessOverWSHandler(request) {
* @returns {Promise<void>} 异步操作的 Promise
*/
async function handleTCPOutBound(remoteSocket, addressType, addressRemote, portRemote, rawClientData, webSocket, vlessResponseHeader, log,) {
async function useSocks5Pattern(address) {
if ( go2Socks5s.includes(atob('YWxsIGlu')) ) return true;
return go2Socks5s.some(pattern => {
let regexPattern = pattern.replace(/\*/g, '.*');
let regex = new RegExp(`^${regexPattern}$`, 'i');
return regex.test(address);
});
}
/**
* 连接远程服务器并写入数据
* @param {string} address 要连接的地址
@@ -394,8 +410,10 @@ async function handleTCPOutBound(remoteSocket, addressType, addressRemote, portR
remoteSocketToWS(tcpSocket, webSocket, vlessResponseHeader, null, log);
}
let useSocks = false;
if( go2Socks5s.length > 0 && enableSocks ) useSocks = await useSocks5Pattern(addressRemote);
// 首次尝试连接远程服务器
let tcpSocket = await connectAndWrite(addressRemote, portRemote);
let tcpSocket = await connectAndWrite(addressRemote, portRemote, useSocks);
// 当远程 Socket 就绪时,将其传递给 WebSocket
// 建立从远程服务器到 WebSocket 的数据流,用于将远程服务器的响应发送回客户端
@@ -1164,7 +1182,7 @@ const 啥啥啥_写的这是啥啊 = 'dmxlc3M=';
function 配置信息(UUID, 域名地址) {
const 协议类型 = atob(啥啥啥_写的这是啥啊);
const 别名 = 域名地址;
const 别名 = FileName;
let 地址 = 域名地址;
let 端口 = 443;
@@ -1180,14 +1198,14 @@ function 配置信息(UUID, 域名地址) {
const 指纹 = 'randomized';
if (域名地址.includes('.workers.dev')){
地址 = 'www.wto.org';
地址 = 'visa.cn';
端口 = 80 ;
传输层安全 = ['',false];
}
const v2ray = `${协议类型}://${用户ID}@${地址}:${端口}?encryption=${加密方式}&security=${传输层安全[0]}&sni=${SNI}&fp=${指纹}&type=${传输层协议}&host=${伪装域名}&path=${encodeURIComponent(路径)}#${encodeURIComponent(别名)}`;
const clash = `- type: ${协议类型}
name: ${别名}
name: ${FileName}
server: ${地址}
port: ${端口}
uuid: ${用户ID}
@@ -1242,26 +1260,37 @@ async function getVLESSConfig(userID, hostName, sub, UA, RproxyIP, _url) {
}
if ( userAgent.includes('mozilla') && !subParams.some(_searchParams => _url.searchParams.has(_searchParams))) {
let 订阅器 = `您的订阅内容由 ${sub} 提供维护支持, 自动获取ProxyIP: ${RproxyIP}`;
const newSocks5s = socks5s.map(socks5Address => {
if (socks5Address.includes('@')) return socks5Address.split('@')[1];
else if (socks5Address.includes('//')) return socks5Address.split('//')[1];
else return socks5Address;
});
let socks5List = '';
if( go2Socks5s.length > 0 && enableSocks ) socks5List = `SOCKS5白名单: \n ${go2Socks5s.join('\n ')}\n`
let 订阅器 = '';
if (!sub || sub == '') {
if (!proxyIP || proxyIP =='') {
if (enableSocks) 订阅器 += `您的订阅内容由 内置 addresses/ADD 参数提供, 当前使用的Socks5: ${newSocks5s.join(', ')}`;
else 订阅器 = '您的订阅内容由 内置 addresses/ADD 参数提供, 当前使用的ProxyIP为空, 推荐您设置 proxyIP/PROXYIP ';
} else {
订阅器 = `您的订阅内容由 内置 addresses/ADD 参数提供, 当前使用的ProxyIP: ${proxyIPs.join(', ')}`;
}
} else if (RproxyIP != 'true'){
if (enableSocks) 订阅器 += `, 当前使用的Socks5: ${newSocks5s.join(', ')}`;
else 订阅器 += `, 当前使用的ProxyIP: ${proxyIPs.join(', ')}`;
if (enableSocks) 订阅器 += `CFCDN访问方式: Socks5\n ${newSocks5s.join('\n ')}\n${socks5List}`;
else if (!proxyIP || proxyIP =='') 订阅器 += `CFCDN访问方式: ProxyIP\n ${proxyIPs.join('\n ')}\n`;
else 订阅器 += `CFCDN访问方式: 无法访问, 需要您设置 proxyIP/PROXYIP \n`;
订阅器 += `\n您的订阅内容由 内置 addresses/ADD* 参数变量提供\n`;
if (addresses.length > 0) 订阅器 += `ADDTLS优选域名&IP: \n ${addresses.join('\n ')}\n`;
if (addressesnotls.length > 0) 订阅器 += `ADDNOTLSnoTLS优选域名&IP: \n ${addressesnotls.join('\n ')}\n`;
if (addressesapi.length > 0) 订阅器 += `ADDAPITLS优选域名&IP 的 API: \n ${addressesapi.join('\n ')}\n`;
if (addressesnotlsapi.length > 0) 订阅器 += `ADDNOTLSAPInoTLS优选域名&IP 的 API: \n ${addressesnotlsapi.join('\n ')}\n`;
if (addressescsv.length > 0) 订阅器 += `ADDCSVIPTest测速csv文件 限速 ${DLS} : \n ${addressescsv.join('\n ')}\n`;
} else {
if (enableSocks) 订阅器 += `CFCDN访问方式: Socks5\n ${newSocks5s.join('\n ')}\n${socks5List}`;
else if (!proxyIP || proxyIP =='') 订阅器 += `CFCDN访问方式: ProxyIP\n ${proxyIPs.join('\n ')}\n`;
else if (RproxyIP == 'true') 订阅器 += `CFCDN访问方式: 自动获取ProxyIP\n`;
else 订阅器 += `CFCDN访问方式: 无法访问, 需要您设置 proxyIP/PROXYIP \n`
订阅器 += `\nSUB优选订阅生成器: ${sub}`;
}
return `
################################################################
Subscribe / sub 订阅地址, 支持 Base64、clash-meta、sing-box 订阅格式, ${订阅器}
Subscribe / sub 订阅地址, 支持 Base64、clash-meta、sing-box 订阅格式
---------------------------------------------------------------
快速自适应订阅地址:
https://${proxyhost}${hostName}/${userID}
@@ -1279,6 +1308,18 @@ https://${proxyhost}${hostName}/${userID}?sb
https://${proxyhost}${hostName}/${userID}?singbox
---------------------------------------------------------------
################################################################
${FileName} 配置信息
---------------------------------------------------------------
HOST: ${hostName}
UUID: ${userID}
FKID: ${fakeUserID}
UA: ${UA}
${订阅器}
SUBAPI订阅转换后端: ${subProtocol}://${subconverter}
SUBCONFIG订阅转换配置文件: ${subconfig}
---------------------------------------------------------------
################################################################
v2ray
---------------------------------------------------------------
${v2ray}