Example #1
0
    def idle(self, conn):
        if self.allDone():
            msg = u"Конец!"
            if self.defeated():
                msg = logic.getReward(self.target, time.time() - self.start_time)
                background.getUrlBackground("hack_done.php?", {"hackers": ",".join(x.getNode() for x in self.offenders.keys()), "target": self.target})

            utils.sendConf(conn, self.name, msg, lambda sess, s: utils.leaveConf(conn, self.name))
            return True

        if not self.offenders:
            self.revive()               

        for l in [self.defenders, self.offenders]:
            [p.idle(conn, self.name) for p in l.values()]

        self.kickDeads(conn)

        currentTime = time.time()
        if currentTime > self.next_question:
            self.question = self.nextQuestion()
            self.next_question = currentTime + self.question.timeout
            #utils.sendConf(conn, self.name, u"%s (время: %d)" % (self.question.text, self.question.timeout))
            utils.sendConf(conn, self.name, self.question.text)
        return False
 def damage(self, conn, by, amount, conf):
     self.health -= amount
     self.attacks_sucessful += 1
     print u"damaged %s by %s by %d" % (self, by, amount)
     utils.sendConf(conn, conf.name, u"%s damages %s by %d" % (by.name, self.name, amount))
     if self.isDead() and by:
         background.getUrlBackground("hack_dead.php?", {"name":str(self.name),"n":str(logic.getHackerTagCount(self.attacks_defended, self.attacks_sucessful))}, conf)
         utils.sendPrivate(conn, self.name, u"You are terminated by %s" % by.name)
Example #3
0
 def printStats(self, conn, person, args):
     now = time.time()
     if self.stat_cooldown == None or now > self.stat_cooldown:
         userlist = []
         for d in self.defenders.itervalues():
             userlist.append("defender\t%s\t%s" % (d.name, d.health))
         for o in self.offenders.itervalues():
             userlist.append("offender\t%s\t%s" % (o.name, o.health))
         msg = u"Conference info:\ntarget\t%s\nhealth\t%s\n\n%s" % (self.target, self.health, "\n".join(userlist))
         utils.sendConf(conn, self.name, unicode(msg))
         self.stat_cooldown = now + config.statCommandCooldown
Example #4
0
 def printStats(self, conn, person, args):
     now = time.time()
     if self.stat_cooldown == None or now > self.stat_cooldown:
         userlist = []
         for d in self.defenders.itervalues():
             userlist.append("defender\t%s\t%s" % (d.name, d.health))
         for o in self.offenders.itervalues():
             userlist.append("offender\t%s\t%s" % (o.name, o.health))
         msg = u"Conference info:\ntarget\t%s\nhealth\t%s\n\n%s" % (
             self.target, self.health, "\n".join(userlist))
         utils.sendConf(conn, self.name, unicode(msg))
         self.stat_cooldown = now + config.statCommandCooldown
Example #5
0
    def idle(self, conn):
        while not self.print_queue.empty():
            res = self.print_queue.get()
            logging.info(u"receive result: %s", unicode(res))
            #            if timeout <= time.time():
            utils.sendConf(conn, self.name, res[:MAX_RESULT])
            if self.cmd_request_sent:
                utils.sendConf(
                    conn, self.name, u"Time left: %d sec. Type command." % (int(self.defeated_timeout - time.time()))
                )
                self.cmd_request_sent = None
        #           else:
        #                self.saved_message = (timeout, res)
        #                if self.defeated_timeout:
        #                    utils.sendConf(conn, self.name, u"Time left: %d sec" % (int(self.defeated_timeout - time.time())))
        if self.defeated():
            #            if self.saved_message and self.saved_message[0] <= time.time():
            #                utils.sendConf(conn, self.name, self.saved_message[1])
            #                self.saved_message = None
            if not self.defeated_commands:
                background.getUrlBackground(
                    "hack_done.php?",
                    {"hackers": ",".join(x.getNode() for x in self.offenders.keys()), "target": self.target},
                )
                rewards, score = logic.getRewardAndScore(self.target, time.time() - self.start_time)
                self.defeated_timeout = time.time() + score
                self.defeated_commands = rewards
                self.reward_person = None
                self.reward_timeout = None
                self.cmd_request_sent = None
                self.kickDefenders(conn)
                utils.sendConf(conn, self.name, u"Hacking done. Time left: %d sec. Type command." % (score))
                logging.info(u"%s Hacking done. Time left: %d sec. Type command.", self.target, score)
            else:
                if time.time() > self.defeated_timeout:
                    utils.sendConf(
                        conn,
                        self.name,
                        u"Hacking finished. Connection terminated.",
                        lambda sess, s: utils.leaveConf(conn, self.name),
                    )
                    logging.info(u"%s Finish", self.target)
                    return True
                if self.reward_timeout and time.time() > self.reward_timeout and not self.cmd_request_sent:
                    self.cmd_request_sent = True
                    background.getUrlBackground(
                        "hack_cmd.php?",
                        {"target": self.target, "cmd": self.reward_cmd, "args": " ".join(self.reward_args)},
                        self,
                    )

        if not self.offenders:
            self.revive()
            self.next_question = None
            self.start_time = None
        for l in [self.defenders, self.offenders]:
            [p.idle(conn, self) for p in l.values()]

        self.kickDeads(conn)

        if len(self.offenders) == 0 and len(self.defenders) == 0:
            return True

        if not self.defeated():
            currentTime = time.time()
            if not self.next_question:
                if self.offenders:
                    self.start_time = currentTime
                    self.next_question = currentTime + random.randint(1, config.nextQuestionMaxTimeout)
            else:
                if currentTime > self.next_question:
                    if self.question and self.offenders:
                        person = random.choice(self.offenders.values())
                        person.damage(
                            conn,
                            Person(config.nickname, 0),
                            logic.getSystemDamage(person, self.target, self.question),
                            self,
                        )
                        if logic.policeNotifyOnDamage(person.name):
                            self.sendPoliceNotify(self.target)
                    self.question = self.nextQuestion()
                    logging.info("%s: new question: %s", self.target, self.question.text)
                    self.next_question = currentTime + self.question.timeout
                    utils.sendConf(conn, self.name, self.question.text)
            return False
Example #6
0
    def idle(self, conn):
        while not self.print_queue.empty():
            res = self.print_queue.get()
            logging.info(u"receive result: %s", unicode(res))
            #            if timeout <= time.time():
            utils.sendConf(conn, self.name, res[:MAX_RESULT])
            if self.cmd_request_sent:
                utils.sendConf(
                    conn, self.name, u"Time left: %d sec. Type command." %
                    (int(self.defeated_timeout - time.time())))
                self.cmd_request_sent = None
#           else:


#                self.saved_message = (timeout, res)
#                if self.defeated_timeout:
#                    utils.sendConf(conn, self.name, u"Time left: %d sec" % (int(self.defeated_timeout - time.time())))
        if self.defeated():
            #            if self.saved_message and self.saved_message[0] <= time.time():
            #                utils.sendConf(conn, self.name, self.saved_message[1])
            #                self.saved_message = None
            if not self.defeated_commands:
                background.getUrlBackground(
                    "hack_done.php?", {
                        "hackers":
                        ",".join(x.getNode() for x in self.offenders.keys()),
                        "target":
                        self.target
                    })
                rewards, score = logic.getRewardAndScore(
                    self.target,
                    time.time() - self.start_time)
                self.defeated_timeout = time.time() + score
                self.defeated_commands = rewards
                self.reward_person = None
                self.reward_timeout = None
                self.cmd_request_sent = None
                self.kickDefenders(conn)
                utils.sendConf(
                    conn, self.name,
                    u"Hacking done. Time left: %d sec. Type command." %
                    (score))
                logging.info(
                    u"%s Hacking done. Time left: %d sec. Type command.",
                    self.target, score)
            else:
                if time.time() > self.defeated_timeout:
                    utils.sendConf(
                        conn, self.name,
                        u"Hacking finished. Connection terminated.",
                        lambda sess, s: utils.leaveConf(conn, self.name))
                    logging.info(u"%s Finish", self.target)
                    return True
                if self.reward_timeout and time.time(
                ) > self.reward_timeout and not self.cmd_request_sent:
                    self.cmd_request_sent = True
                    background.getUrlBackground(
                        "hack_cmd.php?", {
                            "target": self.target,
                            "cmd": self.reward_cmd,
                            "args": " ".join(self.reward_args)
                        }, self)

        if not self.offenders:
            self.revive()
            self.next_question = None
            self.start_time = None
        for l in [self.defenders, self.offenders]:
            [p.idle(conn, self) for p in l.values()]

        self.kickDeads(conn)

        if len(self.offenders) == 0 and len(self.defenders) == 0:
            return True

        if not self.defeated():
            currentTime = time.time()
            if not self.next_question:
                if self.offenders:
                    self.start_time = currentTime
                    self.next_question = currentTime + random.randint(
                        1, config.nextQuestionMaxTimeout)
            else:
                if currentTime > self.next_question:
                    if self.question and self.offenders:
                        person = random.choice(self.offenders.values())
                        person.damage(
                            conn, Person(config.nickname, 0),
                            logic.getSystemDamage(person, self.target,
                                                  self.question), self)
                        if logic.policeNotifyOnDamage(person.name):
                            self.sendPoliceNotify(self.target)
                    self.question = self.nextQuestion()
                    logging.info('%s: new question: %s', self.target,
                                 self.question.text)
                    self.next_question = currentTime + self.question.timeout
                    utils.sendConf(conn, self.name, self.question.text)
            return False
Example #7
0
 def damage(self, conn, by, amount, conf):
     self.health -= amount
     print "damaged %s by %s by %d" % (self, by, amount)
     utils.sendConf(conn, conf, u"%s наносит %s повреждений: %d" % (by.name, self.name, amount))
     if self.isDead() and by:
         utils.sendPrivate(conn, by.name, u"Личный код атакующего %s" % self.name)
Example #8
0
 def printStats(self, conn, person, args):
     utils.sendConf(conn, self.name, str(self))
 def printStats(self, conn, person, args):
     utils.sendConf(conn, self.name, unicode(self))
Example #10
0
    def idle(self, conn):
        while not self.print_queue.empty():
            res, timeout = self.print_queue.get()
            print u"receive result: %s" % (res)
            if timeout <= time.time():
                utils.sendConf(conn, self.name, res)
            else:
                self.saved_message = (timeout, res)
#                if self.defeated_timeout:
#                    utils.sendConf(conn, self.name, u"Time left: %d sec" % (int(self.defeated_timeout - time.time())))
        if self.defeated():
            if self.saved_message and self.saved_message[0] <= time.time():
                utils.sendConf(conn, self.name, self.saved_message[1])
                self.saved_message = None                                           
    
            if not self.defeated_commands:
                background.getUrlBackground("hack_done.php?", {"hackers": ",".join(x.getNode() for x in self.offenders.keys()), "target": self.target})
                rewards, score = logic.getRewardAndScore(self.target, time.time() - self.start_time)
                self.defeated_timeout = time.time() + score
                self.defeated_commands = rewards
                print rewards
                self.reward_person = None
                self.reward_timeout = None
                self.kickDefenders(conn)
                utils.sendConf(conn, self.name, u"Hacking done. Time left: %d sec. Type command." % (score))
            else:
                if time.time() > self.defeated_timeout:
                    utils.sendConf(conn, self.name, u"Hacking finished. Connection terminated.", lambda sess, s: utils.leaveConf(conn, self.name))
                    return True
                if self.reward_timeout and time.time() > self.reward_timeout:
                    self.reward_person = None
                    self.reward_timeout = None
                    self.saved_message = None
                    utils.sendConf(conn, self.name, u"Time left: %d sec. Type command." % (int(self.defeated_timeout - time.time())))    
            return False

        if not self.offenders:
            self.revive()
            self.next_question = None
            self.start_time = None
        for l in [self.defenders, self.offenders]:
            [p.idle(conn, self) for p in l.values()]

        self.kickDeads(conn)

        currentTime = time.time()
        if not self.next_question:
            if self.offenders:
                self.start_time = currentTime
                self.next_question = currentTime + random.randint(1, config.nextQuestionMaxTimeout)
        else:
            if currentTime > self.next_question:
                if self.question and self.offenders:
                    person = random.choice(self.offenders.values())
                    person.damage(conn, Person(config.nickname, 0), config.systemAttack, self)
                self.question = self.nextQuestion()
                self.next_question = currentTime + self.question.timeout
                utils.sendConf(conn, self.name, self.question.text)
        return False