def wrapped_f(*args): jsonobj = args[0] rjsonobj = {} connected_sids.enqueue(request.sid) prettylog([ "EV <{}> SID <{}>".format(self.ev,request.sid), "ARGS {}".format(args), "CONNS {}".format(connected_sids.items) ]) if "kind" in jsonobj: try: kind = jsonobj["kind"] if kind == "cmd": key = jsonobj["key"] commandjsonstr = json.dumps({"command": jsonobj["data"], "key": key}) rjsonobj["status"] = geturl(SIMPLE_SERVER_URL + "/" + quote(commandjsonstr)) rjsonobj["key"] = key elif kind == "storebinid": binid = jsonobj["data"] write_string_to_file("binid.txt", binid) except: rjsonobj["status"] = "! command error" emit('siores', {"request": jsonobj, "response": rjsonobj}) f(*args)
def sids_overflow_callback(sid): socketio.emit("siores", {"data": "conn removed"}, room = sid) prettylog([ "removed SID <{}>".format(sid) ])
def wrapped_f(*args): jsonobj = args[0] rjsonobj = {} connected_sids.enqueue(request.sid) prettylog([ "EV <{}> SID <{}>".format(self.ev,request.sid), "ARGS {}".format(args).ljust(160)[:160], "CONNS {}".format(connected_sids.items) ]) if "kind" in jsonobj: try: kind = jsonobj["kind"] if "owner" in jsonobj: rjsonobj["owner"] = jsonobj["owner"] if kind == "cmd": key = jsonobj["key"] commandjsonstr = json.dumps({"command": jsonobj["data"], "key": key}) rjsonobj["status"] = geturl(SIMPLE_SERVER_URL + "/" + quote(commandjsonstr)) rjsonobj["key"] = key elif kind == "storebinid": binid = jsonobj["data"] write_string_to_file("binid.txt", binid) elif kind == "storeconfig": write_string_to_file("localconfig.json", jsonobj["data"]) rjsonobj["kind"] = "configstored" try: print("setting config on firebase") db.child("lichguibotconfig").set(jsonobj["data"]) print("setting config on firebase done") rjsonobj["status"] = "config stored locally and remotely" except: print("setting config on firebase failed") rjsonobj["status"] = "config stored only locally" elif kind == "storedb": try: path = jsonobj["path"] dataobj = jsonobj["dataobj"] rjsonobj["status"] = storedb(path, dataobj) rjsonobj["path"] = path except: traceback.print_exc(file=sys.stderr) rjsonobj["status"] = "! store db failed at {}".format(path) elif kind == "retrievedb": try: path = jsonobj["path"] rjsonobj["dataobj"] , rjsonobj["status"] = retrievedb(path) rjsonobj["path"] = path except: traceback.print_exc(file=sys.stderr) rjsonobj["dataobj"] = None rjsonobj["status"] = "! retrieve db failed at {}".format(path) elif kind == "parsepgn": rjsonobj["historyobj"] = None try: data = jsonobj["data"] rjsonobj["historyobj"] , rjsonobj["status"] = createhistory(data) except: traceback.print_exc(file=sys.stderr) rjsonobj["status"] = "! parse pgn failed" elif kind == "getlocalconfig": rjsonobj["kind"] = "setlocalconfig" try: print("getting config from firebase") rjsonobj["data"] = db.child("lichguibotconfig").get().val() write_string_to_file("localconfig.json", rjsonobj["data"]) print("getting config from firebase done, size", len(rjsonobj["data"])) except: print("getting config from firebase failed, falling back to local config") rjsonobj["data"] = read_string_from_file("localconfig.json", "{}") elif kind == "mainboardmove": try: variantkey = jsonobj["variantkey"] fen = jsonobj["fen"] moveuci = jsonobj["moveuci"] move = chess.Move.from_uci(moveuci) board = get_variant_board(variantkey) board.set_fen(fen) if board.is_legal(move): genboard = board.copy() board.push(move) rjsonobj["kind"] = "setmainboardfen" rjsonobj["fen"] = board.fen() rjsonobj["status"] = "making main board move ok" addpositioninfo(board, rjsonobj, move, genboard) else: rjsonobj["kind"] = "setmainboardfen" rjsonobj["fen"] = fen rjsonobj["status"] = "! making main board move failed, illegal move" addpositioninfo(board, rjsonobj) except: rjsonobj["status"] = "! making main board move failed, fatal" traceback.print_exc(file=sys.stderr) elif kind == "mainboardsetvariant": try: variantkey = jsonobj["variantkey"] board = get_variant_board(variantkey) if variantkey == "chess960": board.set_chess960_pos(random.randint(0, 959)) rjsonobj["kind"] = "setmainboardfen" rjsonobj["fen"] = board.fen() rjsonobj["status"] = "main board variant selected ok" addpositioninfo(board, rjsonobj, "reset") except: rjsonobj["status"] = "! main board variant selection failed" traceback.print_exc(file=sys.stderr) except: rjsonobj["status"] = "! command error" emit('siores', {"request": jsonobj, "response": rjsonobj}) f(*args)