Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import threading
- from http.server import BaseHTTPRequestHandler, HTTPServer
- # ---------------------------
- # TCP 10012: IP Mapping Server
- # ---------------------------
- class IPMappingHandler(BaseHTTPRequestHandler):
- def log_message(self, format, *args):
- # Override to prevent default logging
- print(f"[HTTP] {self.command} {self.path}")
- def do_GET(self):
- try:
- if self.path.startswith("/ipmapping-rest/otgc/IPMapping/battleroyale/location"):
- json_response = b'{"location": {"latitude": 37.7749, "longitude": -122.4194}, "countryName": "United States","countryCode": "US","region": "NA","city": "unknown"}'
- self.send_response(200)
- self.send_header("Content-Type", "application/json")
- self.send_header("Content-Length", str(len(json_response))) # empty JSON body
- self.send_header("Connection", "Keep-Alive")
- self.end_headers()
- self.wfile.write(json_response)
- else:
- self.send_response(404)
- self.end_headers()
- self.wfile.write(b"")
- except (ConnectionResetError, BrokenPipeError):
- # Client closed connection before server finished sending
- print(f"[HTTP] Client disconnected prematurely: {self.client_address}")
- def run_ipmapper_server(host="0.0.0.0", port=10012):
- server = HTTPServer((host, port), IPMappingHandler)
- print(f"[+] IP Mapper listening on {host}:{port}")
- server.serve_forever()
- # ---------------------------
- # TCP 10023: Matchmaker Server
- # ---------------------------
- def tcp_matchmaker_handler(conn, addr):
- print(f"[TCP] Connection from {addr}")
- try:
- while True:
- data = conn.recv(4096)
- if not data:
- break
- print(f"[TCP] Received {len(data)} bytes from {addr}")
- print(repr(data))
- except Exception as e:
- print(f"[TCP] Error: {e}")
- finally:
- conn.close()
- print(f"[TCP] Connection closed {addr}")
- def run_tcp_matchmaker(host="0.0.0.0", port=10023):
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- s.bind((host, port))
- s.listen()
- print(f"[+] TCP Matchmaker listening on {host}:{port}")
- while True:
- conn, addr = s.accept()
- threading.Thread(target=tcp_matchmaker_handler, args=(conn, addr), daemon=True).start()
- # ---------------------------
- # UDP 10023: Matchmaker Server
- # ---------------------------
- def run_udp_matchmaker(host="0.0.0.0", port=10023):
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- s.bind((host, port))
- print(f"[+] UDP Matchmaker listening on {host}:{port}")
- while True:
- data, addr = s.recvfrom(4096)
- print(f"[UDP] Received {len(data)} bytes from {addr}")
- print(repr(data))
- # ---------------------------
- # Run servers in threads
- # ---------------------------
- if __name__ == "__main__":
- threading.Thread(target=run_ipmapper_server, daemon=True).start()
- threading.Thread(target=run_tcp_matchmaker, daemon=True).start()
- threading.Thread(target=run_udp_matchmaker, daemon=True).start()
- print("[*] All servers running. Press Ctrl+C to exit.")
- try:
- while True:
- pass
- except KeyboardInterrupt:
- print("\n[*] Shutting down")
Advertisement
Add Comment
Please, Sign In to add comment