Advertisement
iko1133

Untitled

Apr 18th, 2021
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. from sys import argv
  2. from dataclasses import dataclass
  3. from socket import *
  4. from threading import Thread
  5. import json
  6.  
  7.  
  8. SOCKET_BUFFER_SIZE = 1024
  9.  
  10.  
  11. @dataclass
  12. class Server:
  13. vhost: str
  14. ip: str
  15. port: int
  16. documentroot: str
  17.  
  18.  
  19. def parse_config_file(path):
  20. servers = []
  21. log_file = ""
  22.  
  23. with open(path) as json_file:
  24. data = json.load(json_file)
  25.  
  26. log_file = data['log']
  27. for server in data['server']:
  28. servers.append(Server(server['vhost'], server['ip'], server['port'], server['documentroot']))
  29.  
  30. return servers, log_file
  31.  
  32.  
  33. def serve_client(_socket, address, keepAliveTime):
  34. print("AAAAAAAAAAAAAA-----------------------------------------------------------------------------")
  35.  
  36. _socket.settimeout(keepAliveTime)
  37.  
  38. print("Set timeout")
  39.  
  40. request = _socket.recv(SOCKET_BUFFER_SIZE).decode('utf-8')
  41. print(request)
  42. print("------------------------------------------------------------------------------------------")
  43.  
  44. # response = str(int() * 2).encode('utf-8')
  45. # _socket.sendall(response)
  46.  
  47. _socket.close()
  48.  
  49.  
  50. def main():
  51. if len(argv) > 2 or len(argv) < 2:
  52. print("Wrong amount of arguments")
  53.  
  54. servers, log_file = parse_config_file(argv[1])
  55.  
  56. curr_server = servers[0]
  57.  
  58. print("Current server: ", curr_server)
  59.  
  60. server_socket = socket(AF_INET, SOCK_STREAM)
  61.  
  62. print(curr_server.ip, curr_server.port)
  63.  
  64. server_socket.bind((curr_server.ip, curr_server.port))
  65.  
  66. server_socket.listen()
  67.  
  68. print("Server listening")
  69.  
  70. # while True:
  71. _socket, client_address = server_socket.accept()
  72.  
  73. print("New connection: {}".format(client_address))
  74. print("HEEEEEEEEEEEEEEEEERRRRRRRRRRRRRRRRRRRRRREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE")
  75.  
  76. tmp_thread = Thread(target=serve_client, args=(_socket, client_address, 5))
  77.  
  78. tmp_thread.start()
  79.  
  80. print("Worker started")
  81.  
  82. server_socket.close()
  83.  
  84. print("Closed")
  85.  
  86.  
  87. if __name__ == "__main__":
  88. main()
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement