Skip to content

Commit f3adcd5

Browse files
committed
fix: 将 XHTTP 相关逻辑更名为叉HTTP,更新相关函数和注释
1 parent 878d953 commit f3adcd5

1 file changed

Lines changed: 26 additions & 26 deletions

File tree

_worker.js

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,16 @@ export default {
6868
const 反代上下文 = await 反代参数获取(url, userID, 默认反代IP, 默认反代兜底);
6969
log(`[WebSocket] 命中请求: ${url.pathname}${url.search}`);
7070
return await 处理WS请求(request, userID, url, 反代上下文);
71-
} else if (管理员密码 && !访问路径.startsWith('admin/') && 访问路径 !== 'login' && request.method === 'POST') {// gRPC/XHTTP代理
71+
} else if (管理员密码 && !访问路径.startsWith('admin/') && 访问路径 !== 'login' && request.method === 'POST') {// gRPC/叉HTTP代理
7272
const 反代上下文 = await 反代参数获取(url, userID, 默认反代IP, 默认反代兜底);
73-
const { : 本机Padding头, : 本机Padding键 } = 获取XHTTPPadding标识(userID);
74-
const 命中XHTTP特征 = !!request.headers.get(本机Padding头) || !!url.searchParams.get(本机Padding键);
75-
if (!命中XHTTP特征 && contentType.startsWith('application/grpc')) {
73+
const { : 本机Padding头, : 本机Padding键 } = 获取叉HTTPPadding标识(userID);
74+
const 命中叉HTTP特征 = !!request.headers.get(本机Padding头) || !!url.searchParams.get(本机Padding键);
75+
if (!命中叉HTTP特征 && contentType.startsWith('application/grpc')) {
7676
log(`[gRPC] 命中请求: ${url.pathname}${url.search}`);
7777
return await 处理gRPC请求(request, userID, 反代上下文);
7878
}
79-
log(`[XHTTP] 命中请求: ${url.pathname}${url.search}`);
80-
return await 处理XHTTP请求(request, userID, 反代上下文);
79+
log(`[叉HTTP] 命中请求: ${url.pathname}${url.search}`);
80+
return await 处理叉HTTP请求(request, userID, 反代上下文);
8181
} else {
8282
if (url.protocol === 'http:') return Response.redirect(url.href.replace(`http://${url.hostname}`, `https://${url.hostname}`), 301);
8383
if (!管理员密码) return fetch(Pages静态页面 + '/noADMIN').then(r => { const headers = new Headers(r.headers); headers.set('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate'); headers.set('Pragma', 'no-cache'); headers.set('Expires', '0'); return new Response(r.body, { status: 404, statusText: r.statusText, headers }) });
@@ -527,7 +527,7 @@ export default {
527527
return new Response(await nginx(), { status: 200, headers: { 'Content-Type': 'text/html; charset=UTF-8' } });
528528
}
529529
};
530-
///////////////////////////////////////////////////////////////////////XHTTP传输数据///////////////////////////////////////////////
530+
///////////////////////////////////////////////////////////////////////叉HTTP传输数据///////////////////////////////////////////////
531531
const HPACKHuffman码长 = [
532532
13, 23, 28, 28, 28, 28, 28, 28, 28, 24, 30, 28, 28, 30, 28, 28,
533533
28, 28, 28, 28, 28, 28, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28,
@@ -548,7 +548,7 @@ const HPACKHuffman码长 = [
548548
30
549549
];
550550

551-
function 获取XHTTPPadding标识(yourUUID) {
551+
function 获取叉HTTPPadding标识(yourUUID) {
552552
return { : yourUUID.slice(1, 7), : '_' + yourUUID.slice(1, 7) };
553553
}
554554

@@ -561,7 +561,7 @@ function 计算HPACKHuffman字节长度(字符串) {
561561
return Math.ceil(总位数 / 8);
562562
}
563563

564-
function 提取XHTTPPadding值(request, 本机Padding头, 本机Padding键) {
564+
function 提取叉HTTPPadding值(request, 本机Padding头, 本机Padding键) {
565565
const 头值 = request.headers.get(本机Padding头);
566566
if (头值) {
567567
try {
@@ -575,29 +575,29 @@ function 提取XHTTPPadding值(request, 本机Padding头, 本机Padding键) {
575575
return 请求URL.searchParams.get(本机Padding键) || '';
576576
}
577577

578-
function 校验XHTTPPadding(request, 本机Padding头, 本机Padding键) {
579-
const padding值 = 提取XHTTPPadding值(request, 本机Padding头, 本机Padding键);
578+
function 校验叉HTTPPadding(request, 本机Padding头, 本机Padding键) {
579+
const padding值 = 提取叉HTTPPadding值(request, 本机Padding头, 本机Padding键);
580580
if (!padding值) return true;
581581
const huffman长度 = 计算HPACKHuffman字节长度(padding值);
582582
return huffman长度 >= 98 && huffman长度 <= 1002;
583583
}
584584

585-
const XHTTPBase62字符集 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
586-
function 生成XHTTPPadding串(长度) {
587-
const 字符集长度 = XHTTPBase62字符集.length;
585+
const 叉HTTPBase62字符集 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
586+
function 生成叉HTTPPadding串(长度) {
587+
const 字符集长度 = 叉HTTPBase62字符集.length;
588588
let 结果 = '';
589589
for (let i = 0; i < 长度; i++) {
590-
结果 += XHTTPBase62字符集[Math.floor(Math.random() * 字符集长度)];
590+
结果 += 叉HTTPBase62字符集[Math.floor(Math.random() * 字符集长度)];
591591
}
592592
return 结果;
593593
}
594594

595-
async function 处理XHTTP请求(request, yourUUID, 反代上下文 = {}) {
595+
async function 处理叉HTTP请求(request, yourUUID, 反代上下文 = {}) {
596596
if (!request.body) return new Response('Bad Request', { status: 400 });
597-
const { : 本机Padding头, : 本机Padding键 } = 获取XHTTPPadding标识(yourUUID);
598-
if (!校验XHTTPPadding(request, 本机Padding头, 本机Padding键)) return new Response('Bad Request', { status: 400 });
597+
const { : 本机Padding头, : 本机Padding键 } = 获取叉HTTPPadding标识(yourUUID);
598+
if (!校验叉HTTPPadding(request, 本机Padding头, 本机Padding键)) return new Response('Bad Request', { status: 400 });
599599
const reader = request.body.getReader();
600-
const 首包 = await 读取XHTTP首包(reader, yourUUID);
600+
const 首包 = await 读取叉HTTP首包(reader, yourUUID);
601601
if (!首包) {
602602
try { reader.releaseLock() } catch (e) { }
603603
return new Response('Invalid request', { status: 400 });
@@ -626,11 +626,11 @@ async function 处理XHTTP请求(request, yourUUID, 反代上下文 = {}) {
626626

627627
try {
628628
const 响应URL = new URL('https://x.invalid/');
629-
响应URL.searchParams.set(本机Padding键, 生成XHTTPPadding串(100 + Math.floor(Math.random() * 901)));
629+
响应URL.searchParams.set(本机Padding键, 生成叉HTTPPadding串(100 + Math.floor(Math.random() * 901)));
630630
responseHeaders.set(本机Padding头, 响应URL.toString());
631631
} catch (e) { }
632632

633-
if (首包.isUDP) return 处理XHTTPUDP请求(首包, reader, request, 反代上下文, responseHeaders);
633+
if (首包.isUDP) return 处理叉HTTPUDP请求(首包, reader, request, 反代上下文, responseHeaders);
634634

635635
try { reader.releaseLock() } catch (e) { }
636636

@@ -650,7 +650,7 @@ async function 处理XHTTP请求(request, yourUUID, 反代上下文 = {}) {
650650
try {
651651
socket = await forwardataTCP(首包.hostname, 首包.port, 首包.rawData, 占位WS, 首包.respHeader, remoteConnWrapper, yourUUID, request, 反代上下文, 首包.协议 === 'trojan', 首包.原始数据, true);
652652
} catch (err) {
653-
log(`[XHTTP-Pipe] 连接失败: ${err?.message || err}`);
653+
log(`[叉HTTP-Pipe] 连接失败: ${err?.message || err}`);
654654
清理(err);
655655
return new Response('bad gateway', { status: 502 });
656656
}
@@ -686,7 +686,7 @@ async function 处理XHTTP请求(request, yourUUID, 反代上下文 = {}) {
686686
return new Response(响应流.readable, { status: 200, headers: responseHeaders });
687687
}
688688

689-
function 处理XHTTPUDP请求(首包, reader, request, 反代上下文, responseHeaders) {
689+
function 处理叉HTTPUDP请求(首包, reader, request, 反代上下文, responseHeaders) {
690690
const 木马UDP上下文 = { 缓存: new Uint8Array(0), 反代地址: 反代上下文.木马反代地址 };
691691
return new Response(new ReadableStream({
692692
async start(controller) {
@@ -739,7 +739,7 @@ function 处理XHTTPUDP请求(首包, reader, request, 反代上下文, response
739739
}
740740
} catch (err) {
741741
转发失败 = true;
742-
log(`[XHTTP转发] 处理失败: ${err?.message || err}`);
742+
log(`[叉HTTP转发] 处理失败: ${err?.message || err}`);
743743
closeSocketQuietly(叉桥);
744744
} finally {
745745
const 保持木马UDP反代下行 = !转发失败 && 首包.协议 === 'trojan' && 木马UDP上下文.反代地址 && 木马UDP上下文.反代Socket;
@@ -790,7 +790,7 @@ function 开始TCP连接世代(remoteConnWrapper) {
790790
return { generation, downlinkDrain };
791791
}
792792

793-
async function 读取XHTTP首包(reader, token) {
793+
async function 读取叉HTTP首包(reader, token) {
794794
const decoder = VLESS文本解码器;
795795

796796
const 尝试解析魏烈思首包 = (data) => {
@@ -4676,7 +4676,7 @@ function base64SecretDecode(encoded, secret) {
46764676

46774677
function 获取传输协议配置(配置 = {}) {
46784678
const 是gRPC = 配置.传输协议 === 'grpc';
4679-
const { : 本机Padding头, : 本机Padding键 } = 获取XHTTPPadding标识(配置.UUID);
4679+
const { : 本机Padding头, : 本机Padding键 } = 获取叉HTTPPadding标识(配置.UUID);
46804680
return {
46814681
type: 是gRPC ? (配置.gRPC模式 === 'multi' ? 'grpc&mode=multi' : 'grpc&mode=gun') : (配置.传输协议 === 'xhttp' ? `xhttp&mode=stream-one&extra=%7B%22xPaddingObfsMode%22%3Atrue%2C%22xPaddingMethod%22%3A%22tokenish%22%2C%22xPaddingPlacement%22%3A%22queryInHeader%22%2C%22xPaddingHeader%22%3A%22${本机Padding头}%22%2C%22xPaddingKey%22%3A%22${本机Padding键}%22%7D` : 'ws'),
46824682
路径字段名: 是gRPC ? 'serviceName' : 'path',

0 commit comments

Comments
 (0)