-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmyfirst.js
More file actions
70 lines (58 loc) · 2.2 KB
/
Copy pathmyfirst.js
File metadata and controls
70 lines (58 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const net = require("net");
const server = net.createServer(); //creates an instance of a server
server.on("connection", (clientToProxySocket) => { //once the connection is established, display message
console.log("Client connected to proxy");
clientToProxySocket.once("data", (data) => { //once the client sends data, start the execution of the proxy servers
let isConnectionTLS = data.toString().indexOf("CONNECT") !== -1; //check whether its a connect release
let serverPort = 80;
let serverAddress;
if (isConnectionTLS) {
serverPort = 443; //default port for https
serverAddress = data
.toString().split("CONNECT")[1]
.split(" ")[1]
.split(":")[0];
} else {
serverAddress = data.toString().split("Host: ")[1].split("\n")[0];
}
let proxyToServerSocket = net.createConnection(
{
host: serverAddress,
port: serverPort
},
() => {
console.log("Proxy to server is setup");
}
)
if (isConnectionTLS) {
clientToProxySocket.write("HTTP/1.1 200 OK\r\n\n"); //send response to client that connection is successful
} else {
proxyToServerSocket.write(data); //write data from client request to server
}
clientToProxySocket.pipe(proxyToServerSocket); //send data from client to server
proxyToServerSocket.pipe(clientToProxySocket);// send data from server to client
proxyToServerSocket.on("error", (err) => { //check whether that is and error
console.log("Proxy to server error");
console.log(err);
})
clientToProxySocket.on("error", (err) => {
console.log("Client to proxy error");
})
})
})
server.on("error", (err) => {
console.log("Internal server error");
console.log(err);
})
server.on("close", () => {
console.log("Client disconnected");
})
server.listen(
{
host: "0.0.0.0",
port: 3456, //sets the server to listen for connections on the port 3456
},
() => {
console.log("Server listening on 0.0.0.0:3456");
}
);