mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 03:02:54 +00:00
Adds a C library alternative to the ircbot nudge script.
This allows for more secure and stable transmission on Linux, but you might see some improvements on Windows too. Code lies in (confusingly) lib/src. nudge.c should be compiled to lib/nudge.[dll/so] and be linked against netutil.c. There's some horribly hacky code in nudge.c to assemble pickled data, but it's probably the fastest way that's still safe. Signed-off-by: Mloc-Argent <colmohici@gmail.com>
This commit is contained in:
51
lib/DLLSocket/server_controller.py
Normal file
51
lib/DLLSocket/server_controller.py
Normal file
@@ -0,0 +1,51 @@
|
||||
import subprocess
|
||||
import socket
|
||||
import urlparse
|
||||
|
||||
UDP_IP="127.0.0.1"
|
||||
UDP_PORT=8019
|
||||
|
||||
sock = socket.socket( socket.AF_INET, # Internet
|
||||
socket.SOCK_DGRAM ) # UDP
|
||||
sock.bind( (UDP_IP,UDP_PORT) )
|
||||
|
||||
last_ticker_state = None
|
||||
|
||||
def handle_message(data, addr):
|
||||
global last_ticker_state
|
||||
|
||||
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
|
||||
|
||||
try:
|
||||
if params["type"][0] == "ticker_state" and str(params["message"][0]):
|
||||
last_ticker_state = str(params["message"][0])
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
try:
|
||||
if params["type"][0] == "startup" and last_ticker_state:
|
||||
open("crashlog.txt","a+").write("Server exited, last ticker state was: "+last_ticker_state+"\n")
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
sock.settimeout(60*6) # 10 minute timeout
|
||||
while True:
|
||||
try:
|
||||
data, addr = sock.recvfrom( 1024 ) # buffer size is 1024 bytes
|
||||
handle_message(data,addr)
|
||||
except socket.timeout:
|
||||
# try to start the server again
|
||||
print("Server timed out.. attempting restart.")
|
||||
if last_ticker_state:
|
||||
open("crashmsg.txt","a+").write("Server crashed, trying to reboot. last ticker state: "+last_ticker_state+"\n")
|
||||
subprocess.call("killall -9 DreamDaemon")
|
||||
subprocess.call("./start")
|
||||
Reference in New Issue
Block a user