myserver.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/usr/bin/env python
  2. import requests,threading,time,json,zlib,gnupg,socket,psutil,os,sys,pymysql,queue,numpy
  3. try:
  4. from http_parser.parser import HttpParser
  5. except ImportError:
  6. from http_parser.pyparser import HttpParser
  7. p = HttpParser()
  8. gpg=gnupg.GPG()
  9. pathname = os.path.dirname(sys.argv[0])
  10. abspath=os.path.abspath(pathname)
  11. configfile=abspath+"/config.json"
  12. try:
  13. cf=open(configfile,"r")
  14. except:
  15. cf=open(configfile+".template","r")
  16. log_conf=json.load(cf)
  17. cf.close()
  18. parameter={"device":socket.gethostname(),"allowed_ip":{"127.0.0.1":"25A4CF79414F10FD"},"gpg_keyid":"25A4CF79414F10FD"}
  19. for n in parameter:
  20. if n in log_conf:
  21. parameter[n]=log_conf[n]
  22. class ClientThread(threading.Thread):
  23. def __init__(self,ip,port,clientsocket):
  24. threading.Thread.__init__(self)
  25. self.ip = ip
  26. self.port = port
  27. self.csocket = clientsocket
  28. print("[+] New thread started for ",ip,":",str(port))
  29. def run(self):
  30. print("Connection from : ",ip,":",str(port))
  31. # clientsock.send("\nWelcome to the server\n\n")
  32. self.csocket.send("\nWelcome to the server\n\n".encode('utf-8'))
  33. data = "dummydata"
  34. body = []
  35. while True:
  36. data = self.csocket.recv(1024)
  37. if not data:
  38. break
  39. recved = len(data)
  40. nparsed = p.execute(data, recved)
  41. assert nparsed == recved
  42. if p.is_headers_complete():
  43. print(p.get_headers())
  44. if p.is_partial_body():
  45. body.append(p.recv_body())
  46. if p.is_message_complete():
  47. break
  48. print("Client(%s:%s) sent : %s"%(self.ip, str(self.port), body))
  49. response="You sent me : "+str(zlib.adler32(body))
  50. self.csocket.send(response.encode('utf-8'))
  51. q.put(data,block=False)
  52. print("Client at ",self.ip," disconnected...")
  53. q=queue.PriorityQueue(maxsize=0)
  54. host = "0.0.0.0"
  55. port = 24048
  56. tcpsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  57. tcpsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  58. tcpsock.bind((host,port))
  59. while True:
  60. tcpsock.listen(4)
  61. print("\nListening for incoming connections...")
  62. (clientsock, (ip, port)) = tcpsock.accept()
  63. if ip in parameter["allowed_ip"]:
  64. newthread = ClientThread(ip, port, clientsock)
  65. newthread.start()
  66. else:
  67. clientsock.close()
  68. print("Denied Access from ",ip)