mirror of
https://github.com/lush2020/edgetunnel.git
synced 2026-03-24 00:48:39 +08:00
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
import { connect } from 'cloudflare:sockets';
|
|
|
|
export default {
|
|
async fetch(request, env, ctx) {
|
|
console.log('start fetch');
|
|
const cloudflare = 'www.cloudflare.com';
|
|
const floodgap = 'gopher.floodgap.com';
|
|
let host = floodgap;
|
|
const isFloodgap = request.url.includes('floodgap');
|
|
const iscloudflare = request.url.includes('cloudflare');
|
|
if (isFloodgap) {
|
|
host = floodgap;
|
|
}
|
|
if (iscloudflare) {
|
|
host = cloudflare;
|
|
}
|
|
|
|
try {
|
|
const socket = connect(
|
|
{
|
|
hostname: host,
|
|
port: 443,
|
|
},
|
|
{
|
|
secureTransport: 'on',
|
|
}
|
|
);
|
|
console.log('start conneted', host);
|
|
const writer = socket.writable.getWriter();
|
|
const encoder = new TextEncoder();
|
|
const encoded = encoder.encode(
|
|
`GET / HTTP/1.1\r\nHost: ${host}\r\nUser-Agent: curl/8.0.1\r\nAccept: */*\r\n\r\n`
|
|
);
|
|
await writer.write(encoded);
|
|
console.log('write end');
|
|
|
|
return new Response(socket.readable, {
|
|
headers: { 'Content-Type': 'text/plain' },
|
|
});
|
|
} catch (error) {
|
|
return new Response('Socket connection failed: ' + error, {
|
|
status: 500,
|
|
});
|
|
}
|
|
},
|
|
}; |