コード例 #1
0
ファイル: TestFirewall.py プロジェクト: dhtech/ipplan2sqlite
    def testServerClientRule(self):
        lines = self._load('data/testServerClientRules.txt')
        processor.parse(lines, self.c)
        packages.build(self.packages, self.c)
        firewall.build(self.packages, self.c)
        rules = self._query('SELECT * FROM firewall_rule_ip_level')
        self.assertEquals(len(rules), 1, "Wrong number of firewall rules")

        rule = self._query(
            """SELECT
               from_node_name, to_node_name, flow_name, service_dst_ports
               FROM firewall_rule_ip_level"""
        )[0]
        self.assertEquals(
            rule[0],
            'jumpgate1.event.dreamhack.se',
            "Wrong source host")
        self.assertEquals(
            rule[1],
            'ddns1.event.dreamhack.se',
            "Wrong destination host")
        self.assertEquals(rule[2], 'event', "Wrong flow")
        self.assertEquals(
            rule[3],
            '2022/tcp',
            "Wrong destination port/protocol")
コード例 #2
0
ファイル: TestPackages.py プロジェクト: dhtech/ipplan2sqlite
 def testPackagesLogic(self):
     processor.parse(self._load('data/testParsePackages.txt'), self.c)
     packages.build(
         self._load_YAML('data/manifest.yml')['packages'], self.c)
     pack = self._query('SELECT * FROM package')
     expected = ((1, 'dns', 'last'), (2, 'dhssh', 'test'),
                 (2, 'dns', '(test)'), (2, 'dns', 'last'),
                 (2, 'ldapclient', None), (2, 'syslogclient', None),
                 (3, 'dns', 'last'), (5, 'dhssh', 'test'), (5, 'tac', 'a'),
                 (5, 'tac', 'b'), (6, 'dhssh', 'test'), (6, 'dns', None),
                 (6, 'wwwpub', None), (8, 'dhssh',
                                       'test'), (8, 'syslogclient', None),
                 (8, 'tac', None), (9, 'dhssh', 'test'), (9, 'syslogclient',
                                                          None),
                 (10, 'dhssh', 'test'), (10, 'ldapclient',
                                         None), (10, 'syslogclient', None),
                 (11, 'dhssh', 'test'), (11, 'syslogclient',
                                         None), (15, 'switch', None))
     self.assertEquals(
         len(pack), len(expected),
         "Wrong number of packages in database: got %d, expected %d" %
         (len(pack), len(expected)))
     for i, (node_id, package, option) in enumerate(expected):
         self.assertEquals(pack[i].node_id, node_id)
         self.assertEquals(pack[i].name, package)
         self.assertEquals(pack[i].option, option)
コード例 #3
0
ファイル: TestParser.py プロジェクト: nlindblad/ipplan2sqlite
 def testParseMasterNetwork(self):
     processor.parse(self._load('data/testParseMasterNetwork.txt'), self.c)
     networks = self._query('SELECT * FROM network')
     self.assertEquals(len(networks), 1, "Missing master network")
     self.assertEquals(networks[0].node_id, 1, "Wrong node id")
     self.assertEquals(networks[0].name, 'EVENT@DREAMHACK',
         "Wrong network name")
コード例 #4
0
    def testParseNetworkAndHost(self):
        processor.parse(self._load('data/testParseNetworkAndHost.txt'), self.c)

        self.assertEquals(
            self._query('SELECT COUNT(*) as nbr_of_nodes FROM node')[0][0], 2,
            "Wrong number of nodes")

        host = self._query('SELECT * FROM host')[0]
        self.assertEquals(host.node_id, 2, "Wrong node id")
        self.assertEquals(host.name, 'ddns1.event.dreamhack.se',
                          "Wrong hostname")
        self.assertEquals(host.ipv4_addr, 1297147849, "Wrong IPv4 long")
        self.assertEquals(host.ipv4_addr_txt, '77.80.231.201',
                          "Wrong IPv4 address")
        self.assertEquals(host.ipv6_addr_txt, '2001:67c:24d8:921::201',
                          "Wrong IPv6 address")
        self.assertEquals(host.network_id, 1, "Wrong network id")

        options = self._query('SELECT * FROM option')
        self.assertEquals(len(options), 16, "Wrong number of options")
        correct_options = set(
            ['ipv4f', 'ipv4r', 'ipv6f', 'ipv6f', 'p', 's', 'c', 'othernet'])
        parsed_options = set([str(o[2]) for o in options])
        self.assertEquals(len(correct_options.union(parsed_options)), 8,
                          "Missing or additional options")
コード例 #5
0
    def testServerClientRuleNat(self):
        lines = self._load('data/testServerClientRulesNat.txt')
        processor.parse(lines, self.c)
        packages.build(self.packages, self.c)
        firewall.build(self.packages, self.c)
        rules = self._query('SELECT * FROM firewall_rule_ip_level')
        self.assertEquals(len(rules), 3, "Wrong number of firewall rules")

        non_nat_rule1, nat_rule, non_nat_rule2 = self._query("""SELECT
               from_node_name, to_node_name, flow_name, service_dst_ports
               FROM firewall_rule_ip_level""")
        self.assertEquals(non_nat_rule1[0], 'jumpgate1.event.dreamhack.se',
                          "Wrong source host")
        self.assertEquals(non_nat_rule1[1], 'ddns1.event.dreamhack.se',
                          "Wrong destination host")
        self.assertEquals(non_nat_rule1[2], 'event', "Wrong flow")
        self.assertEquals(non_nat_rule1[3], '2022/tcp',
                          "Wrong destination port/protocol")

        self.assertEquals(nat_rule[0], 'nat.event.dreamhack.se',
                          "Wrong source host")
        self.assertEquals(nat_rule[1], 'ddns1.event.dreamhack.se',
                          "Wrong destination host")
        self.assertEquals(nat_rule[2], 'event', "Wrong flow")
        self.assertEquals(nat_rule[3], '2022/tcp',
                          "Wrong destination port/protocol")

        self.assertEquals(non_nat_rule2[0], 'jumpgate2.event.dreamhack.se',
                          "Wrong source host")
        self.assertEquals(non_nat_rule2[1], 'ddns1.event.dreamhack.se',
                          "Wrong destination host")
        self.assertEquals(non_nat_rule2[2], 'event', "Wrong flow")
        self.assertEquals(non_nat_rule2[3], '2022/tcp',
                          "Wrong destination port/protocol")
コード例 #6
0
    def testSwitchLocationWithMixedLayout(self):
        seatmap = self._load_JSON("data/seatsB19_C19.json")
        processor.parse(self._load("data/testTableB19_C19.txt"), self.c)
        location.add_coordinates(seatmap, self.c)
        switches = self._query("SELECT * FROM switch_coordinates")
        self.assertEquals(len(switches), 5, "Wrong number of switches in database")

        self.assertEquals(switches[0].name, "c19-a.event.dreamhack.local", "Wrong switch name")
        self.assertEquals(switches[0].x, 4, "Wrong x coordinate")
        self.assertEquals(switches[0].y, 129.66666666666666, "Wrong y coordinate")
        self.assertEquals(switches[0].table_name, "C19", "Wrong table name")

        self.assertEquals(switches[1].name, "c19-b.event.dreamhack.local", "Wrong switch name")
        self.assertEquals(switches[1].x, 4, "Wrong x coordinate")
        self.assertEquals(switches[1].y, 77, "Wrong y coordinate")
        self.assertEquals(switches[1].table_name, "C19", "Wrong table name")

        self.assertEquals(switches[2].name, "c19-c.event.dreamhack.local", "Wrong switch name")
        self.assertEquals(switches[2].x, 4, "Wrong x coordinate")
        self.assertEquals(switches[2].y, 24.333333333333332, "Wrong y coordinate")
        self.assertEquals(switches[2].table_name, "C19", "Wrong table name")

        self.assertEquals(switches[3].name, "b19-a.event.dreamhack.local", "Wrong switch name")
        self.assertEquals(switches[3].x, 118.5, "Wrong x coordinate")
        self.assertEquals(switches[3].y, 4, "Wrong y coordinate")
        self.assertEquals(switches[3].table_name, "B19", "Wrong table name")

        self.assertEquals(switches[4].name, "b19-b.event.dreamhack.local", "Wrong switch name")
        self.assertEquals(switches[4].x, 39.5, "Wrong x coordinate")
        self.assertEquals(switches[4].y, 4, "Wrong y coordinate")
        self.assertEquals(switches[4].table_name, "B19", "Wrong table name")
コード例 #7
0
 def testParseMasterNetwork(self):
     processor.parse(self._load('data/testParseMasterNetwork.txt'), self.c)
     networks = self._query('SELECT * FROM network')
     self.assertEquals(len(networks), 1, "Missing master network")
     self.assertEquals(networks[0].node_id, 1, "Wrong node id")
     self.assertEquals(networks[0].name, 'EVENT@DREAMHACK',
                       "Wrong network name")
コード例 #8
0
ファイル: TestParser.py プロジェクト: nlindblad/ipplan2sqlite
    def testParseNetworkAndHostNoVlan(self):
        processor.parse(
            self._load('data/testParseNetworkAndHostNoVlan.txt'), self.c)

        host = self._query('SELECT * FROM host')[0]
        self.assertEquals(host.ipv4_addr, 1297147849, "Wrong IPv4 long")
        self.assertEquals(host.ipv4_addr_txt, '77.80.231.201', "Wrong IPv4 address")
        self.assertEquals(host.ipv6_addr_txt, None, "Has an IPv6 address")
        self.assertEquals(host.network_id, 1, "Wrong network id")
コード例 #9
0
    def testParseNetworkAndHostNoVlan(self):
        processor.parse(
            self._load('data/testParseNetworkAndHostNoVlan.txt'), self.c)

        host = self._query('SELECT * FROM host')[0]
        self.assertEquals(host.ipv4_addr, 1297147849, "Wrong IPv4 long")
        self.assertEquals(host.ipv4_addr_txt, '77.80.231.201', "Wrong IPv4 address")
        self.assertEquals(host.ipv6_addr_txt, None, "Has an IPv6 address")
        self.assertEquals(host.network_id, 1, "Wrong network id")
コード例 #10
0
ファイル: TestFirewall.py プロジェクト: dhtech/ipplan2sqlite
 def setUp(self):
     super(TestFirewall, self).setUp()
     manifest = self._load_YAML('data/manifest.yml')
     self.packages = manifest['packages']
     networks.add_all(self.c)
     processor.parse(self._load('data/masterNetwork.txt'), self.c)
     firewall.add_services(manifest['services'], self.c)
     firewall.add_flows(manifest['flows'], self.c)
     firewall.add_flows([x.lower() for x in processor.get_domains()], self.c)
コード例 #11
0
 def setUp(self):
     super(TestFirewall, self).setUp()
     manifest = self._load_YAML('data/manifest.yml')
     self.packages = manifest['packages']
     networks.add_all(self.c)
     processor.parse(self._load('data/masterNetwork.txt'), self.c)
     firewall.add_services(manifest['services'], self.c)
     firewall.add_flows(manifest['flows'], self.c)
     firewall.add_flows([x.lower() for x in processor.get_domains()],
                        self.c)
コード例 #12
0
    def testWorldRule(self):
        processor.parse(self._load('data/testWorldRule.txt'), self.c)
        firewall.build(self.c)
        rules = self._query('SELECT * FROM firewall_rule_ip_level')
        self.assertEquals(len(rules), 1, "Wrong number of firewall rules")

        rule = self._query("""SELECT
               from_node_name, to_node_name, flow_name, service_dst_ports
               FROM firewall_rule_ip_level""")[0]
        self.assertEquals(rule[0], 'ANY', "Wrong source host")
        self.assertEquals(rule[1], 'www.event.dreamhack.se',
                          "Wrong destination host")
        self.assertEquals(rule[2], 'event', "Wrong flow")
        self.assertEquals(rule[3], '80/tcp', "Wrong destination port/protocol")
コード例 #13
0
 def testAddCoordinates(self):
   seatmap = self._load_JSON("data/seatsB19.json")
   processor.parse(self._load('data/testTableB19.txt'), self.c)
   location.add_coordinates(seatmap, self.c)
   tables = self._query('SELECT * FROM table_coordinates')
   self.assertEquals(len(tables), 1, "Wrong number of tables in database")
   self.assertEquals(tables[0].name, "B19", "Wrong table name")
   self.assertEquals(tables[0].hall, "B", "Wrong hall name")
   self.assertEquals(tables[0].x2, 0, "Wrong x2 coordinate")
   self.assertEquals(tables[0].y1, 8, "Wrong y1 coordinate")
   self.assertEquals(tables[0].y2, 0, "Wrong y2 coordinate")
   self.assertEquals(tables[0].x_start, 0, "Wrong x_start coordinate")
   self.assertEquals(tables[0].y_start, 0, "Wrong y_start coordinate")
   self.assertEquals(tables[0].width, 152, "Wrong width")
   self.assertEquals(tables[0].height, 8, "Wrong height")
   self.assertEquals(tables[0].horizontal, 1, "Wrong horizontal flag")
コード例 #14
0
    def testLocalRule(self):
        processor.parse(self._load('data/testLocalRule.txt'), self.c)
        firewall.build(self.c)
        rules = self._query('SELECT * FROM firewall_rule_ip_level')
        self.assertEquals(len(rules), 1, "Wrong number of firewall rules")

        rule = rules[0]
        self.assertEquals(rule[0], 1, "Wrong rule id")
        self.assertEquals(rule[2], 'EVENT@TECH-SRV-6-JUMPNET',
                          "Wrong source host")
        self.assertEquals(rule[3], '77.80.231.128/28',
                          "Wrong source IPv4 address")
        self.assertEquals(rule[5], 'speedtest1mgmt.event.dreamhack.se',
                          "Wrong destination host")
        self.assertEquals(rule[11], '69/udp',
                          "Wrong destination port/protocol")
コード例 #15
0
  def testSwitchLocationWithMixedLayout(self):
    seatmap = self._load_JSON("data/seatsB19_C19.json")
    processor.parse(self._load('data/testTableB19_C19.txt'), self.c)
    location.add_coordinates(seatmap, self.c)
    switches = self._query('SELECT * FROM switch_coordinates')
    self.assertEquals(len(switches), 5, "Wrong number of switches in database")

    self.assertEquals(
      switches[0].name,
      "c19-a.event.dreamhack.local",
      "Wrong switch name")
    self.assertEquals(switches[0].x, -2, "Wrong x coordinate")
    self.assertEquals(switches[0].y, 24, "Wrong y coordinate")
    self.assertEquals(switches[0].table_name, "C19", "Wrong table name")

    self.assertEquals(
      switches[1].name,
      "c19-b.event.dreamhack.local",
      "Wrong switch name")
    self.assertEquals(switches[1].x, -2, "Wrong x coordinate")
    self.assertEquals(switches[1].y, 78, "Wrong y coordinate")
    self.assertEquals(switches[1].table_name, "C19", "Wrong table name")

    self.assertEquals(
      switches[2].name,
      "c19-c.event.dreamhack.local",
      "Wrong switch name")
    self.assertEquals(switches[2].x, -2, "Wrong x coordinate")
    self.assertEquals(switches[2].y, 130, "Wrong y coordinate")
    self.assertEquals(switches[2].table_name, "C19", "Wrong table name")

    self.assertEquals(
      switches[3].name,
      "b19-a.event.dreamhack.local",
      "Wrong switch name")
    self.assertEquals(switches[3].x, 40, "Wrong x coordinate")
    self.assertEquals(switches[3].y, -4, "Wrong y coordinate")
    self.assertEquals(switches[3].table_name, "B19", "Wrong table name")

    self.assertEquals(
      switches[4].name,
      "b19-b.event.dreamhack.local",
      "Wrong switch name")
    self.assertEquals(switches[4].x, 118, "Wrong x coordinate")
    self.assertEquals(switches[4].y, -4, "Wrong y coordinate")
    self.assertEquals(switches[4].table_name, "B19", "Wrong table name")
コード例 #16
0
    def testSwitchLocation(self):
        seatmap = self._load_JSON("data/seatsB19.json")
        processor.parse(self._load('data/testTableB19.txt'), self.c)
        location.add_coordinates(seatmap, self.c)
        switches = self._query('SELECT * FROM switch_coordinates')
        self.assertEquals(len(switches), 2,
                          "Wrong number of switches in database")
        self.assertEquals(switches[0].name, "b19-a.event.dreamhack.local",
                          "Wrong switch name")
        self.assertEquals(switches[0].x, 118.5, "Wrong x coordinate")
        self.assertEquals(switches[0].y, 4, "Wrong y coordinate")
        self.assertEquals(switches[0].table_name, "B19", "Wrong table name")

        self.assertEquals(switches[1].name, "b19-b.event.dreamhack.local",
                          "Wrong switch name")
        self.assertEquals(switches[1].x, 39.5, "Wrong x coordinate")
        self.assertEquals(switches[1].y, 4, "Wrong y coordinate")
        self.assertEquals(switches[1].table_name, "B19", "Wrong table name")
コード例 #17
0
    def testPublicRule(self):
        processor.parse(self._load('data/testPublicRule.txt'), self.c)
        firewall.build(self.c)
        rules = self._query('SELECT * FROM firewall_rule_ip_level')
        self.assertEquals(len(rules), 8, "Wrong number of firewall rules")

        rules = self._query("""SELECT
               from_node_name, to_node_name, flow_name, service_dst_ports
               FROM
               firewall_rule_ip_level
               WHERE from_node_name = 'EVENT@DREAMHACK'""")
        self.assertEquals(len(rules), 2, "Wrong number of firewall rules")

        rule = self._query("""SELECT
               from_node_name, to_node_name, flow_name, service_dst_ports
               FROM firewall_rule_ip_level
               WHERE from_node_name = 'EVENT@DREAMHACK'
               AND service_dst_ports = '123/udp,123/tcp'""")
        self.assertEquals(len(rule), 1, "Wrong number of firewall rules")
コード例 #18
0
    def testServerClientRule(self):
        lines = self._load('data/testServerClientRules.txt')
        processor.parse(lines, self.c)
        firewall.build(self.c)
        rules = self._query('SELECT * FROM firewall_rule_ip_level')
        self.assertEquals(len(rules), 1, "Wrong number of firewall rules")

        # TODO(bluecmd) Forgive nl for I have sinned.
        # Write unit tests for pkg=

        rule = self._query("""SELECT
               from_node_name, to_node_name, flow_name, service_dst_ports
               FROM firewall_rule_ip_level""")[0]
        self.assertEquals(rule[0], 'jumpgate1.event.dreamhack.se',
                          "Wrong source host")
        self.assertEquals(rule[1], 'ddns1.event.dreamhack.se',
                          "Wrong destination host")
        self.assertEquals(rule[2], 'event', "Wrong flow")
        self.assertEquals(rule[3], '2022/tcp',
                          "Wrong destination port/protocol")
コード例 #19
0
    def testWorldRule(self):
        processor.parse(self._load('data/testWorldRule.txt'), self.c)
        firewall.build(self.c)
        rules = self._query('SELECT * FROM firewall_rule_ip_level')
        self.assertEquals(len(rules), 1, "Wrong number of firewall rules")

        rule = self._query(
            """SELECT
               from_node_name, to_node_name, flow_name, service_dst_ports
               FROM firewall_rule_ip_level"""
        )[0]
        self.assertEquals(rule[0], 'ANY', "Wrong source host")
        self.assertEquals(
            rule[1],
            'www.event.dreamhack.se',
            "Wrong destination host")
        self.assertEquals(rule[2], 'event', "Wrong flow")
        self.assertEquals(
            rule[3],
            '80/tcp',
            "Wrong destination port/protocol")
コード例 #20
0
    def testLocalRule(self):
        processor.parse(self._load('data/testLocalRule.txt'), self.c)
        firewall.build(self.c)
        rules = self._query('SELECT * FROM firewall_rule_ip_level')
        self.assertEquals(len(rules), 1, "Wrong number of firewall rules")

        rule = rules[0]
        self.assertEquals(rule[0], 1, "Wrong rule id")
        self.assertEquals(rule[2], 'EVENT@TECH-SRV-6-JUMPNET',
            "Wrong source host")
        self.assertEquals(
            rule[3],
            '77.80.231.128/28',
            "Wrong source IPv4 address")
        self.assertEquals(
            rule[5],
            'speedtest1mgmt.event.dreamhack.se',
            "Wrong destination host")
        self.assertEquals(
            rule[11],
            '69/udp',
            "Wrong destination port/protocol")
コード例 #21
0
ファイル: TestParser.py プロジェクト: nlindblad/ipplan2sqlite
    def testParseNetworkAndHost(self):
        processor.parse(self._load('data/testParseNetworkAndHost.txt'), self.c)

        self.assertEquals(
            self._query('SELECT COUNT(*) as nbr_of_nodes FROM node')[0][0],
            2,
            "Wrong number of nodes")

        host = self._query('SELECT * FROM host')[0]
        self.assertEquals(host.node_id, 2, "Wrong node id")
        self.assertEquals(
            host.name,
            'ddns1.event.dreamhack.se',
            "Wrong hostname")
        self.assertEquals(host.ipv4_addr, 1297147849, "Wrong IPv4 long")
        self.assertEquals(host.ipv4_addr_txt, '77.80.231.201', "Wrong IPv4 address")
        self.assertEquals(
            host.ipv6_addr_txt,
            '2001:67c:24d8:921::201',
            "Wrong IPv6 address")
        self.assertEquals(host.network_id, 1, "Wrong network id")

        options = self._query('SELECT * FROM option')
        self.assertEquals(len(options), 16, "Wrong number of options")
        correct_options = set(
            ['ipv4f',
             'ipv4r',
             'ipv6f',
             'ipv6f',
             'p',
             's',
             'c',
             'othernet'])
        parsed_options = set([str(o[2]) for o in options])
        self.assertEquals(
            len(correct_options.union(parsed_options)),
            8,
            "Missing or additional options")
コード例 #22
0
    def testPublicRule(self):
        processor.parse(self._load('data/testPublicRule.txt'), self.c)
        firewall.build(self.c)
        rules = self._query('SELECT * FROM firewall_rule_ip_level')
        self.assertEquals(len(rules), 8, "Wrong number of firewall rules")

        rules = self._query(
            """SELECT
               from_node_name, to_node_name, flow_name, service_dst_ports
               FROM
               firewall_rule_ip_level
               WHERE from_node_name = 'EVENT@DREAMHACK'"""
        )
        self.assertEquals(len(rules), 2, "Wrong number of firewall rules")

        rule = self._query(
            """SELECT
               from_node_name, to_node_name, flow_name, service_dst_ports
               FROM firewall_rule_ip_level
               WHERE from_node_name = 'EVENT@DREAMHACK'
               AND service_dst_ports = '123/udp,123/tcp'"""
        )
        self.assertEquals(len(rule), 1, "Wrong number of firewall rules")
コード例 #23
0
 def testPackagesLogic(self):
   processor.parse(self._load('data/testParsePackages.txt'), self.c)
   packages.build(self._load_YAML('data/manifest.yml')['packages'], self.c)
   pack = self._query('SELECT * FROM package')
   expected = (
           (1, 'dns', 'last'),
           (2, 'dhssh', 'test'),
           (2, 'dns', '(test)'),
           (2, 'dns', 'last'),
           (2, 'ldapclient', None),
           (2, 'syslogclient', None),
           (3, 'dns', 'last'),
           (5, 'dhssh', 'test'),
           (5, 'tac', 'a'),
           (5, 'tac', 'b'),
           (6, 'dhssh', 'test'),
           (6, 'dns', None),
           (6, 'wwwpub', None),
           (8, 'dhssh', 'test'),
           (8, 'syslogclient', None),
           (8, 'tac', None),
           (9, 'dhssh', 'test'),
           (9, 'syslogclient', None),
           (10, 'dhssh', 'test'),
           (10, 'ldapclient', None),
           (10, 'syslogclient', None),
           (11, 'dhssh', 'test'),
           (11, 'ldapclient', None),
           (11, 'syslogclient', None),
           (15, 'switch', None))
   self.assertEquals(len(pack), len(expected),
           "Wrong number of packages in database: got %d, expected %d" % (
               len(pack), len(expected)))
   for i, (node_id, package, option) in enumerate(expected):
       self.assertEquals(pack[i].node_id, node_id)
       self.assertEquals(pack[i].name, package)
       self.assertEquals(pack[i].option, option)