Пример #1
0
    def proc_flags(self, blue_obj, flag_name, flag):
        if "value" in flag:
            value = flag["value"]
        else:
            raise Exception("No value given for flag %s!" % flag_name)
        if "answer" in flag:
            this_answer = flag["answer"]
        else:
            raise Exception("No answer given for flag %s!" % flag_name)
        if "score" in flag:
            this_score = flag["score"]
            blue_obj.add_flag(flag_name,
                              value,
                              score=this_score,
                              answer=this_answer)
        else:
            blue_obj.add_flag(flag_name, value, answer=this_answer)


if __name__ == "__main__":
    from FlagStore import FlagStore
    from Logger import Logger
    from Queue import Queue
    queue_obj = Queue()
    logger_obj = Logger("JsonConfigTesT")
    flag_store = FlagStore(logger_obj, queue_obj, "test")
    json_obj = JsonConfig("scorebotcfg.json", flag_store)
    (blueteams, injects) = json_obj.process()
    for blueteam in blueteams:
        print blueteam.get_teamname()
Пример #2
0
        elif o in ("-b", "--binjitsu"):
            globalvars.binjitsu = True
        elif o in ("-v", "--verbose"):
            globalvars.verbose = True
        elif o in ("-q", "--quick"):
            globalvars.quick = True
        elif o in ("-q", "--quick"):
            globalvars.quick = True
        elif o in ("-n", "--nomovie"):
            globalvars.nomovie = True
        else:
            assert False, "unhandled option"
    flag_queue_obj = Queue.Queue()
    message_queue_obj = Queue.Queue()
    logger_obj = Logger("scorebot")
    flag_store = FlagStore(logger_obj, flag_queue_obj)
    message_store = MessageStore(logger_obj, message_queue_obj)
    flag_server = FlagServer(logger_obj, flag_queue_obj, message_queue_obj)
    t = threading.Thread(target=flag_server.serve_forever)
    t.start()
    blue_teams = read_config(cfg_file, flag_store)
    myscoreboard = Scoreboard(blue_teams, flag_store, message_store)
    myscoreboard.start()
    for team in blue_teams.keys():
        blue_teams[team].add_queue(flag_queue_obj)
        blue_teams[team].start()
    flag_store.start()
    message_store.start()
    injects.start()

Пример #3
0
 def __init__(self, db_col, cfg_file="scorebotcfg.json", obj_id=None):
     threading.Thread.__init__(self)
     self.col = db_col
     self.flag_queue = Queue.Queue()
     self.flag_answer_queue = Queue.Queue()
     self.msg_queue = Queue.Queue()
     self.logger_obj = Logger("scorebot")
     self.oqueue = Queue.Queue()
     self.equeue = Queue.Queue()
     self.logger = ThreadedLogger("ctfgame.log", self.oqueue, self.equeue)
     self.logger.start()
     self.pp = pprint.PrettyPrinter(indent=2)
     self.blues_queues = {}
     self.teams_rounds = {}
     # todo - fix why this isn't actually the first round!
     self.this_round = 1
     self.interval = 120
     self.inround = False
     self.go_time = time.time()
     self.save_time = time.time()
     self.save_interval = 10
     if obj_id:
         bson_id = ObjectId(obj_id)
         self.obj_id = bson_id
         json_obj = self.col.find_one(self.obj_id)
         if globalvars.debug:
             self.pp.pprint(json_obj)
         game = jaraco.modb.decode(decode_dict(json_obj))
         if "config" in game:
             self.flag_store = FlagStore(self.logger_obj, self.flag_queue,
                                         self.flag_answer_queue)
             self.json_cfg_obj = JsonConfig(cfg_file, self.flag_store)
             (self.blue_teams,
              self.injects) = self.json_cfg_obj.process(game["config"])
         else:
             raise Exception("No config section in restore object!")
         self.message_store = MessageStore(self.logger_obj, self.msg_queue)
         self.flag_server = FlagServer(self.logger_obj, self.flag_queue,
                                       self.flag_answer_queue,
                                       self.msg_queue)
         for team in self.blue_teams.keys():
             self.blue_teams[team].add_queue(self.flag_queue)
         if "scores" in game:
             scores = game["scores"]
             if "blueteams" in scores:
                 for team in self.blue_teams:
                     if team in scores["blueteams"]:
                         blue_score = scores["blueteams"][team]
                         self.blue_teams[team].set_scores(blue_score)
                     else:
                         raise Exception(
                             "Missing scores for team %s in restore object!"
                             % team)
             else:
                 raise Exception(
                     "Missing blueteams score block in restore object!" %
                     team)
         else:
             raise Exception("Missing scores block in restore object!" %
                             team)
         if "flags" in game:
             all_flags = game["flags"]
             self.flag_store.restore(all_flags)
     else:
         self.obj_id = obj_id
         self.flag_store = FlagStore(self.logger_obj, self.flag_queue,
                                     self.flag_answer_queue)
         self.json_cfg_obj = JsonConfig(cfg_file, self.flag_store)
         (self.blue_teams, self.injects) = self.json_cfg_obj.process()
         self.message_store = MessageStore(self.logger_obj, self.msg_queue)
         self.flag_server = FlagServer(self.logger_obj, self.flag_queue,
                                       self.flag_answer_queue,
                                       self.msg_queue)
         for team in self.blue_teams.keys():
             self.blue_teams[team].add_queue(self.flag_queue)
             blue_queue = Queue.Queue()
             self.blues_queues[team] = blue_queue
             self.blue_teams[team].set_queue(blue_queue)
             self.teams_rounds[team] = True
     self.movies = Movies(self.logger_obj)
     #self.movies.set_movie()
     self.bottle_server = BottleServer(self.blue_teams, self.flag_store,
                                       self.message_store, self.movies,
                                       '0.0.0.0', 8090)
Пример #4
0
     elif o in ("-q", "--quick"):
         globalvars.quick = True
     elif o in ("-n", "--nomovie"):
         globalvars.nomovie = True
     elif o in ("-r", "--resume"):
         resume = True
     else:
         assert False, "unhandled option"
 if resume:
     filename = "scorebotcfg.json"
     config = open(filename)
     blueteams_cfg, injects_cfg = config.read().split("\n\n\n")
     flag_queue_obj = Queue.Queue()
     message_queue_obj = Queue.Queue()
     logger_obj = Logger("scorebot")
     flag_store = FlagStore(logger_obj, flag_queue_obj, dbname)
     message_store = MessageStore(logger_obj, message_queue_obj)
     flag_server = FlagServer(logger_obj, flag_queue_obj, message_queue_obj)
     t = threading.Thread(target=flag_server.serve_forever)
     t.start()
     blue_teams = resume_blueTeams(flag_store)
     get_injects(config, blue_teams)
     myscoreboard = Scoreboard(blue_teams, flag_store, message_store)
     myscoreboard.start()
     for team in blue_teams.keys():
         blue_teams[team].add_queue(flag_queue_obj)
         blue_teams[team].start()
     flag_store.start()
     message_store.start()
     injects.start()
 else: