-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.py
More file actions
121 lines (100 loc) · 2.32 KB
/
server.py
File metadata and controls
121 lines (100 loc) · 2.32 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import socket, sys
from thread import *
buffersize = 8193
max_conn = 5
port = 5140
def startserver():
try:
print "\n starting..."
s = socket.socket()
s.bind(('',port))
s.listen(max_conn)
except Exception, e:
print "Something went wrong \n"
print e
sys.exit(2)
while 1:
try:
client_connecion, client_address = s.accept()
in_data = client_connecion.recv(buffersize)
start_new_thread(connection_proxy,(client_connecion,in_data,client_address))
except KeyboardInterrupt:
s.close()
print "\nclosing..."
sys.exit(1)
s.close()
def connection_proxy(client_connecion,in_data,client_address):
try:
first_line = in_data.split('\n')[0]
url = first_line.split(' ')[1]
http_pos = url.find("://")
if http_pos==-1:
temp = url
else:
temp = url[http_pos+3:]
port_position = temp.find(':')
target_server_pos = temp.find(':')
if target_server_pos==-1:
target_server_pos=len(temp)
target_server=""
port=-1
if port_position==-1 or target_server_pos<port_position:
port=80
target_server = temp[:target_server_pos-1]
else:
target_server=temp[:port_position-1]
port = int(temp[port_position+1:target_server_pos - port_position - 1])
#client_connecion.send("reply")
#proxy_connect(target_server,port,client_connecion,client_address,in_data)
except Exception, e:
pass
try:
print target_server
print port
#print in_data
sr = socket.socket()
try:
sr.connect((target_server,port))
except:
print "kuch gadbad hai"
sr.send(in_data)
#client_connecion.send("reply")
while 1:
try:
reply = sr.recv(buffersize)
print reply
except:
print "problem in reply"
if(len(reply)>0):
client_connecion.send(reply)
else:
break
sr.close()
client_connecion.close()
except Exception, e:
sr.close()
client_connecion.close()
sys.exit(1)
def proxy_connect(target_server,port,client_connecion,client_address,in_data):
try:
print target_server+":"
print port
print in_data
sr = socket.socket()
sr.connect((target_server,port))
sr.send(in_data)
client_connecion.send("reply")
while 1:
reply = sr.recv(buffersize)
print reply
if(len(reply)>0):
client_connecion.send("reply")
else:
break
sr.close()
client_connecion.close()
except Exception, e:
sr.close()
client_connecion.close()
sys.exit(1)
startserver()