mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Rewrote server_controller.py functionality
This commit is contained in:
@@ -1,14 +1,33 @@
|
||||
import SocketServer
|
||||
import subprocess
|
||||
import socket
|
||||
import urlparse
|
||||
|
||||
class UDPHandler(SocketServer.BaseRequestHandler):
|
||||
def handle(self):
|
||||
data = self.request[0].strip()
|
||||
socket = self.request[1]
|
||||
print "{} wrote:".format(self.client_address[0])
|
||||
print data
|
||||
socket.sendto(data.upper(), self.client_address)
|
||||
UDP_IP="127.0.0.1"
|
||||
UDP_PORT=8019
|
||||
|
||||
if __name__ == "__main__":
|
||||
HOST, PORT = "localhost", 8019
|
||||
server = SocketServer.UDPServer((HOST, PORT), UDPHandler)
|
||||
server.serve_forever()
|
||||
sock = socket.socket( socket.AF_INET, # Internet
|
||||
socket.SOCK_DGRAM ) # UDP
|
||||
sock.bind( (UDP_IP,UDP_PORT) )
|
||||
|
||||
def handle_message(data, addr):
|
||||
params = urlparse.parse_qs(data)
|
||||
print(data)
|
||||
|
||||
try:
|
||||
if params["type"][0] == "log" and str(params["log"][0]) and str(params["message"][0]):
|
||||
open(params["log"][0],"a+").write(params["message"][0]+"\n")
|
||||
except IOError:
|
||||
pass
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
while True:
|
||||
try:
|
||||
data, addr = sock.recvfrom( 1024 ) # buffer size is 1024 bytes
|
||||
handle_message(data,addr)
|
||||
except socket.timeout:
|
||||
print("No response in 120 seconds.. Trying to reboot server.")
|
||||
subprocess.call("./restart")
|
||||
|
||||
# start expecting a message after the first timeout
|
||||
sock.settimeout(120)
|
||||
Reference in New Issue
Block a user