1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/usr/bin/env python
- import requests,threading,time,json,zlib,gnupg,socket,psutil,os,sys,pymysql,queue,numpy
- try:
- from http_parser.parser import HttpParser
- except ImportError:
- from http_parser.pyparser import HttpParser
- p = HttpParser()
- gpg=gnupg.GPG()
- pathname = os.path.dirname(sys.argv[0])
- abspath=os.path.abspath(pathname)
- configfile=abspath+"/config.json"
- try:
- cf=open(configfile,"r")
- except:
- cf=open(configfile+".template","r")
- log_conf=json.load(cf)
- cf.close()
- parameter={"device":socket.gethostname(),"allowed_ip":{"127.0.0.1":"25A4CF79414F10FD"},"gpg_keyid":"25A4CF79414F10FD"}
- for n in parameter:
- if n in log_conf:
- parameter[n]=log_conf[n]
- class ClientThread(threading.Thread):
-
- def __init__(self,ip,port,clientsocket):
- threading.Thread.__init__(self)
- self.ip = ip
- self.port = port
- self.csocket = clientsocket
- print("[+] New thread started for ",ip,":",str(port))
-
-
- def run(self):
- print("Connection from : ",ip,":",str(port))
-
- # clientsock.send("\nWelcome to the server\n\n")
- self.csocket.send("\nWelcome to the server\n\n".encode('utf-8'))
-
- data = "dummydata"
- body = []
- while True:
- data = self.csocket.recv(1024)
- if not data:
- break
- recved = len(data)
- nparsed = p.execute(data, recved)
- assert nparsed == recved
- if p.is_headers_complete():
- print(p.get_headers())
- if p.is_partial_body():
- body.append(p.recv_body())
- if p.is_message_complete():
- break
-
- print("Client(%s:%s) sent : %s"%(self.ip, str(self.port), body))
- response="You sent me : "+str(zlib.adler32(body))
- self.csocket.send(response.encode('utf-8'))
- q.put(data,block=False)
-
- print("Client at ",self.ip," disconnected...")
-
- q=queue.PriorityQueue(maxsize=0)
- host = "0.0.0.0"
- port = 24048
- tcpsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- tcpsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- tcpsock.bind((host,port))
- while True:
- tcpsock.listen(4)
- print("\nListening for incoming connections...")
- (clientsock, (ip, port)) = tcpsock.accept()
- if ip in parameter["allowed_ip"]:
- newthread = ClientThread(ip, port, clientsock)
- newthread.start()
- else:
- clientsock.close()
- print("Denied Access from ",ip)
|