proxy1 / test.js
anews9340's picture
Update test.js
d572193 verified
const http = require('http');
const net = require('net');
const url = require('url');
const PORT = 7860;
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Gemini Proxy is running. Use HTTPS_PROXY environment variable.');
});
var counter=0;
// Handle the HTTP CONNECT method (for HTTPS tunneling)
server.on('connect', (req, clientSocket, head) => {
const { port, hostname } = url.parse(`//${req.url}`, false, true);
console.log(`${counter}: Tunneling to: ${hostname}:${port}`);
counter++;
const serverSocket = net.connect(port || 443, hostname, () => {
// Send 200 Connection Established to the client
clientSocket.write('HTTP/1.1 200 Connection Established\r\n' +
'Proxy-agent: Node.js-Proxy\r\n' +
'\r\n');
serverSocket.write(head);
// Pipe data between client and server
serverSocket.pipe(clientSocket);
clientSocket.pipe(serverSocket);
});
serverSocket.on('error', (err) => {
console.error(`Error connecting to ${hostname}:`, err.message);
clientSocket.end();
});
clientSocket.on('error', (err) => {
console.error('Client socket error:', err.message);
serverSocket.end();
});
});
server.listen(PORT, () => {
console.log(`Gemini Proxy server running on port ${PORT}`);
});