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)
Exemple #2
0
def sids_overflow_callback(sid):    
    socketio.emit("siores", {"data": "conn removed"}, room = sid)
    prettylog([
        "removed SID <{}>".format(sid)
    ])
Exemple #3
0
        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)