mirror of
https://github.com/gnh1201/caterpillar.git
synced 2025-03-12 00:45:16 +00:00
Update server.py
This commit is contained in:
parent
c7d434b9b3
commit
8ed755ccd9
39
server.py
39
server.py
|
@ -58,6 +58,7 @@ args = parser.parse_args()
|
||||||
max_connection = args.max_conn
|
max_connection = args.max_conn
|
||||||
buffer_size = args.buffer_size
|
buffer_size = args.buffer_size
|
||||||
accepted_relay = {}
|
accepted_relay = {}
|
||||||
|
resolved_address_list = []
|
||||||
|
|
||||||
# https://stackoverflow.com/questions/25475906/set-ulimit-c-from-outside-shell
|
# https://stackoverflow.com/questions/25475906/set-ulimit-c-from-outside-shell
|
||||||
resource.setrlimit(
|
resource.setrlimit(
|
||||||
|
@ -478,15 +479,18 @@ def proxy_server(webserver, port, scheme, method, url, conn, addr, data):
|
||||||
}
|
}
|
||||||
|
|
||||||
# get client address
|
# get client address
|
||||||
try:
|
print ("[*] resolving the client address...")
|
||||||
_, query_data = jsonrpc2_encode('get_client_address')
|
while len(resolved_address_list) == 0:
|
||||||
query = requests.post(server_url, headers=proxy_data['headers'], data=query_data, timeout=1)
|
try:
|
||||||
if query.status_code == 200:
|
_, query_data = jsonrpc2_encode('get_client_address')
|
||||||
result = query.json()['result']
|
query = requests.post(server_url, headers=proxy_data['headers'], data=query_data, timeout=1)
|
||||||
proxy_data['data']['client_address'] = result['client_address']
|
if query.status_code == 200:
|
||||||
print ("[*] Resolved IP: %s" % (result['client_address']))
|
result = query.json()['result']
|
||||||
except requests.exceptions.ReadTimeout as e:
|
resolved_address_list.append(result['client_address'])
|
||||||
pass
|
print ("[*] resolved IP: %s" % (result['client_address']))
|
||||||
|
except requests.exceptions.ReadTimeout as e:
|
||||||
|
pass
|
||||||
|
proxy_data['data']['client_address'] = resolved_address_list[0]
|
||||||
|
|
||||||
# build a tunnel
|
# build a tunnel
|
||||||
try:
|
try:
|
||||||
|
@ -499,11 +503,20 @@ def proxy_server(webserver, port, scheme, method, url, conn, addr, data):
|
||||||
|
|
||||||
# wait for the relay
|
# wait for the relay
|
||||||
print ("[*] waiting for the relay... %s" % (id))
|
print ("[*] waiting for the relay... %s" % (id))
|
||||||
while not id in accepted_relay:
|
max_reties = 30
|
||||||
|
t = 0
|
||||||
|
while t < max_reties and not id in accepted_relay:
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
sock = accepted_relay[id]
|
t += 1
|
||||||
print ("[*] connected the relay. %s" % (id))
|
if t < max_reties:
|
||||||
sendall(sock, conn, data)
|
sock = accepted_relay[id]
|
||||||
|
print ("[*] connected the relay. %s" % (id))
|
||||||
|
sendall(sock, conn, data)
|
||||||
|
else:
|
||||||
|
resolved_address_list.remove(resolved_address_list[0])
|
||||||
|
print ("[*] the relay is gone. %s" % (id))
|
||||||
|
sock_close(sock, is_ssl)
|
||||||
|
return
|
||||||
|
|
||||||
# get response
|
# get response
|
||||||
i = 0
|
i = 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user