mirror of
https://github.com/lush2020/edgetunnel.git
synced 2026-03-21 17:12:33 +08:00
feat: 优化 SOCKS5 地址解析逻辑,增强用户认证处理
This commit is contained in:
15
_worker.js
15
_worker.js
@@ -187,7 +187,7 @@ export default {
|
||||
const usage = await getUsage(env.CF_ID, env.CF_EMAIL, env.CF_APIKEY, env.CF_ALL);
|
||||
pagesSum = usage[1];
|
||||
workersSum = usage[2];
|
||||
total = 1024 * 100; // 100K
|
||||
total = env.CF_ALL ? Number(env.CF_ALL) : (1024 * 100); // 100K
|
||||
}
|
||||
if (userAgent && userAgent.includes('mozilla')) {
|
||||
return new Response(维列斯Config, {
|
||||
@@ -223,12 +223,13 @@ export default {
|
||||
enableHttp = url.pathname.includes('http://');
|
||||
socks5Address = url.pathname.split('://')[1].split('#')[0];
|
||||
if (socks5Address.includes('@')) {
|
||||
let userPassword = socks5Address.split('@')[0].replaceAll('%3D', '=');
|
||||
const lastAtIndex = socks5Address.lastIndexOf('@');
|
||||
let userPassword = socks5Address.substring(0, lastAtIndex).replaceAll('%3D', '=');
|
||||
const base64Regex = /^(?:[A-Z0-9+/]{4})*(?:[A-Z0-9+/]{2}==|[A-Z0-9+/]{3}=)?$/i;
|
||||
if (base64Regex.test(userPassword) && !userPassword.includes(':')) userPassword = atob(userPassword);
|
||||
socks5Address = `${userPassword}@${socks5Address.split('@')[1]}`;
|
||||
socks5Address = `${userPassword}@${socks5Address.substring(lastAtIndex + 1)}`;
|
||||
}
|
||||
go2Socks5s = ['all in'];
|
||||
go2Socks5s = ['all in'];//开启全局SOCKS5
|
||||
}
|
||||
|
||||
if (socks5Address) {
|
||||
@@ -1201,8 +1202,8 @@ async function httpConnect(addressRemote, portRemote, log) {
|
||||
*/
|
||||
function socks5AddressParser(address) {
|
||||
// 使用 "@" 分割地址,分为认证部分和服务器地址部分
|
||||
// reverse() 是为了处理没有认证信息的情况,确保 latter 总是包含服务器地址
|
||||
let [latter, former] = address.split("@").reverse();
|
||||
const lastAtIndex = address.lastIndexOf("@");
|
||||
let [latter, former] = lastAtIndex === -1 ? [address, undefined] : [address.substring(lastAtIndex + 1), address.substring(0, lastAtIndex)];
|
||||
let username, password, hostname, port;
|
||||
|
||||
// 如果存在 former 部分,说明提供了认证信息
|
||||
@@ -1217,7 +1218,7 @@ function socks5AddressParser(address) {
|
||||
// 解析服务器地址部分
|
||||
const latters = latter.split(":");
|
||||
// 从末尾提取端口号(因为 IPv6 地址中也包含冒号)
|
||||
port = Number(latters.pop());
|
||||
port = Number(latters.pop().replace(/[^\d]/g, ''));
|
||||
if (isNaN(port)) {
|
||||
throw new Error('无效的 SOCKS 地址格式:端口号必须是数字');
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name = "v20250706"
|
||||
name = "v20250711"
|
||||
main = "_worker.js"
|
||||
compatibility_date = "2025-07-06"
|
||||
compatibility_date = "2025-07-11"
|
||||
keep_vars = true
|
||||
Reference in New Issue
Block a user