#!/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)