コード例 #1
0
ファイル: protocol.py プロジェクト: MostAwesomeDude/madcap
    def build_inf(self):
        """
        Build an INF for us.
        """

        d = self.inf.copy()

        # Hubs should never leak PIDs.
        if "PD" in d:
            del d["PD"]

        data = join_flags(d)

        return "%s %s" % (self.sid, data)
コード例 #2
0
ファイル: protocol.py プロジェクト: MostAwesomeDude/madcap
    def handle_SUP(self, data):
        if self.state not in ("PROTOCOL", "NORMAL"):
            self.status(44, "Invalid state", "FCHSUP")
            return

        for flag in data.split(" "):
            feature = flag[2:]
            if flag.startswith("RM"):
                self.features.discard(feature)
            elif flag.startswith("AD"):
                self.features.add(feature)

        if "BASE" not in self.features:
            self.status(45, "Missing required feature", "FCBASE")
            return

        if "TIGR" not in self.features:
            self.status(45, "Missing required feature", "FCTIGR")
            return

        # If in PROTOCOL, reply with SUP, assign and send a SID, and switch to
        # the IDENTIFY state.
        if self.state == "PROTOCOL":
            sup = "ISUP %s" % join_features(self._our_features)
            self.sendLine(sup)
            self.send_sid()

            uptime = int(time.time() - self.factory.started)
            info = {
                "CT": 32,
                "UP": uptime,
            }
            inf = "IINF %s" % join_flags(info)
            self.sendLine(inf)

            self.state = "IDENTIFY"
コード例 #3
0
ファイル: services.py プロジェクト: MostAwesomeDude/madcap
 def build_inf(self):
     return "SERV %s" % join_flags(self.inf)
コード例 #4
0
 def test_join_flags_escaped(self):
     i = {"DE": "current topic"}
     o = "DEcurrent\\stopic"
     self.assertEqual(join_flags(i), o)
コード例 #5
0
 def test_join_flags_multiple(self):
     i = {"HU": "1", "HI": "1"}
     o1 = "HU1 HI1"
     o2 = "HI1 HU1"
     self.assertTrue(join_flags(i) in (o1, o2))
コード例 #6
0
 def test_join_flag_single(self):
     i = {"FS": "0"}
     o = "FS0"
     self.assertEqual(join_flags(i), o)
コード例 #7
0
 def test_join_flags_escaped(self):
     i = {"DE": "current topic"}
     o = "DEcurrent\\stopic"
     self.assertEqual(join_flags(i), o)
コード例 #8
0
 def test_join_flags_multiple(self):
     i = {"HU": "1", "HI": "1"}
     o1 = "HU1 HI1"
     o2 = "HI1 HU1"
     self.assertTrue(join_flags(i) in (o1, o2))
コード例 #9
0
 def test_join_flag_single(self):
     i = {"FS": "0"}
     o = "FS0"
     self.assertEqual(join_flags(i), o)
コード例 #10
0
 def build_inf(self):
     return "SERV %s" % join_flags(self.inf)