コード例 #1
0
 def __init__(self):
     self.logger = logger
     self.faucet_event = []
     self.controller = Config().get_config()
     self.controller['max_concurrent_reinvestigations'] = 10
     self.s = SDNConnect()
     if 'POSEIDON_TRAVIS' in os.environ:
         self.s.r = redis.StrictRedis(host='localhost',
                                      port=6379,
                                      db=0,
                                      decode_responses=True)
     endpoint = Endpoint('foo')
     endpoint.endpoint_data = {
         'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'}
     endpoint.mirror()
     endpoint.known()
     self.s.endpoints.append(endpoint)
     endpoint = Endpoint('foo2')
     endpoint.endpoint_data = {
         'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'}
     endpoint.mirror()
     endpoint.known()
     self.s.endpoints.append(endpoint)
     self.s.store_endpoints()
     self.s.get_stored_endpoints()
コード例 #2
0
ファイル: test_cli.py プロジェクト: sorinros/poseidon
def test_get_ipv4_subnet():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00',
                              'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0'}
    ipv4_subnet = GetData._get_ipv4_subnet(endpoint)
    assert ipv4_subnet == 'NO DATA'
    endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00',
                              'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv4_subnet': '0.0.0.0/24'}
    ipv4_subnet = GetData._get_ipv4_subnet(endpoint)
    assert ipv4_subnet == '0.0.0.0/24'
コード例 #3
0
ファイル: test_cli.py プロジェクト: sorinros/poseidon
def test_get_ether_vendor():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00',
                              'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv4_subnet': '0.0.0.0/24'}
    ether_vendor = GetData._get_ether_vendor(endpoint)
    assert ether_vendor == 'NO DATA'
    endpoint.endpoint_data = {'ether_vendor': 'VENDOR', 'tenant': 'foo', 'mac': '00:00:00:00:00:00',
                              'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv4_subnet': '0.0.0.0/24'}
    ether_vendor = GetData._get_ether_vendor(endpoint)
    assert ether_vendor == 'VENDOR'
コード例 #4
0
ファイル: test_cli.py プロジェクト: sorinros/poseidon
def test_get_ipv6_rdns():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00',
                              'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv4_subnet': '0.0.0.0/24'}
    ipv6_rdns = GetData._get_ipv6_rdns(endpoint)
    assert ipv6_rdns == 'NO DATA'
    endpoint.endpoint_data = {'ipv6_rdns': 'foo.internal', 'tenant': 'foo', 'mac': '00:00:00:00:00:00',
                              'segment': 'foo', 'port': '1', 'ipv4': '0.0.0.0', 'ipv4_subnet': '0.0.0.0/24'}
    ipv6_rdns = GetData._get_ipv6_rdns(endpoint)
    assert ipv6_rdns == 'foo.internal'
コード例 #5
0
ファイル: test_cli.py プロジェクト: sorinros/poseidon
def test_get_ipv6_subnet():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00',
                              'segment': 'foo', 'port': '1', 'ipv6': '1212::1'}
    ipv6_subnet = GetData._get_ipv6_subnet(endpoint)
    assert ipv6_subnet == 'NO DATA'
    endpoint.endpoint_data = {'tenant': 'foo', 'mac': '00:00:00:00:00:00',
                              'segment': 'foo', 'port': '1', 'ipv6': '1212::1', 'ipv6_subnet': '1212::1/64'}
    ipv6_subnet = GetData._get_ipv6_subnet(endpoint)
    assert ipv6_subnet == '1212::1/64'
コード例 #6
0
ファイル: test_cli.py プロジェクト: sorinros/poseidon
def test_get_controller_type():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'controller_type': 'foo'}
    controller_type = GetData._get_controller_type(endpoint)
    assert controller_type == 'foo'
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'}
    controller_type = GetData._get_controller_type(endpoint)
    assert controller_type == 'NO DATA'
コード例 #7
0
 def __init__(self):
     self.logger = logger
     self.fa_rabbit_routing_key = 'FAUCET.Event'
     self.faucet_event = None
     self.controller = Config().get_config()
     self.s = SDNConnect()
     self.s.controller['TYPE'] = 'None'
     self.s.get_sdn_context()
     self.s.controller['TYPE'] = 'bcf'
     self.s.get_sdn_context()
     self.s.controller['TYPE'] = 'faucet'
     self.s.get_sdn_context()
     if 'POSEIDON_TRAVIS' in os.environ:
         self.s.r = redis.StrictRedis(host='localhost',
                                      port=6379,
                                      db=0,
                                      decode_responses=True)
     endpoint = Endpoint('foo')
     endpoint.endpoint_data = {
         'tenant': 'foo',
         'mac': '00:00:00:00:00:00',
         'segment': 'foo',
         'port': '1'
     }
     endpoint.mirror()
     endpoint.p_prev_states.append((endpoint.state, int(time.time())))
     self.s.endpoints.append(endpoint)
     endpoint = Endpoint('foo2')
     endpoint.endpoint_data = {
         'tenant': 'foo',
         'mac': '00:00:00:00:00:00',
         'segment': 'foo',
         'port': '1'
     }
     endpoint.p_next_state = 'mirror'
     endpoint.queue()
     endpoint.p_prev_states.append((endpoint.state, int(time.time())))
     self.s.endpoints.append(endpoint)
     endpoint = Endpoint('foo3')
     endpoint.endpoint_data = {
         'tenant': 'foo',
         'mac': '00:00:00:00:00:00',
         'segment': 'foo',
         'port': '1'
     }
     self.s.endpoints.append(endpoint)
     self.s.store_endpoints()
     self.s.get_stored_endpoints()
コード例 #8
0
ファイル: test_collector.py プロジェクト: sorinros/poseidon
def test_Collector():
    """
    Tests Collector
    """
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {'mac': '00:00:00:00:00:00'}
    a = Collector(endpoint, 'foo')
    a.start_vent_collector()
    a.stop_vent_collector()
    a.get_vent_collectors()
    a.host_has_active_collectors('foo')
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'mac': '00:00:00:00:00:00', 'container_id': 'foo'}
    a = Collector(endpoint, 'foo')
    a.stop_vent_collector()
コード例 #9
0
def test_display_results():
    parser = Parser()
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1',
        'ipv4': '0.0.0.0',
        'ipv6': '1212::1'
    }
    endpoints = [endpoint]
    parser.display_results(
        endpoints,
        ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4', 'IPv6'],
        ipv4_only=False,
        ipv6_only=True)
    parser.display_results(
        endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv6'],
        ipv4_only=False,
        ipv4_and_ipv6=True)
    parser.display_results(
        endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'],
        ipv4_only=False,
        ipv4_and_ipv6=True)
コード例 #10
0
ファイル: test_main.py プロジェクト: rubiruchi/poseidon
def test_remove_endpoint():
    s = SDNConnect()
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo', 'mac': '00:00:00:00:00:00'}
    s.endpoints.append(endpoint)
    s.remove_endpoint(endpoint)
コード例 #11
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_prev_ipv6_oses():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1'
    }
    GetData._get_prev_ipv6_oses(endpoint)
コード例 #12
0
ファイル: test_cli.py プロジェクト: sorinros/poseidon
def test_get_ipv6_os():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv6': '1212::1'}
    endpoint.metadata = {'ipv6_addresses': {}}
    ipv6_os = GetData._get_ipv6_os(endpoint)
    assert ipv6_os == 'NO DATA'
    endpoint.metadata = {'ipv6_addresses': {'1212::1': {'os': 'foo'}}}
    ipv6_os = GetData._get_ipv6_os(endpoint)
    assert ipv6_os == 'foo'
コード例 #13
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_switch():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1'
    }
    switch = GetData._get_switch(endpoint)
    assert switch == 'foo'
コード例 #14
0
def test_endpoints_by_mac():
    s = SDNConnect()
    endpoints = s.endpoints_by_mac('00:00:00:00:00:01')
    assert endpoints == []
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'}
    s.endpoints.append(endpoint)
    endpoint2 = s.endpoints_by_mac('00:00:00:00:00:00')
    assert [endpoint] == endpoint2
コード例 #15
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_next_state():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1'
    }
    state = GetData._get_next_state(endpoint)
    assert state == 'None'
コード例 #16
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_last_seen():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1'
    }
    endpoint.p_prev_states = [('unknown', 1551711125)]
    GetData._get_last_seen(endpoint)
コード例 #17
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_port():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1'
    }
    port = GetData._get_port(endpoint)
    assert port == '1'
コード例 #18
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_ignored():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1'
    }
    ignored = GetData._get_ignored(endpoint)
    assert ignored == 'False'
コード例 #19
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_vlan():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'vlan': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1'
    }
    vlan = GetData._get_vlan(endpoint)
    assert vlan == 'foo'
コード例 #20
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_mac():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1'
    }
    mac = GetData._get_mac(endpoint)
    assert mac == '00:00:00:00:00:00'
コード例 #21
0
def test_endpoints_by_ip():
    s = SDNConnect()
    endpoints = s.endpoints_by_ip('10.0.0.1')
    assert endpoints == []
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1', 'ipv4': '10.0.0.1', 'ipv6': 'None'}
    s.endpoints.append(endpoint)
    endpoint2 = s.endpoints_by_ip('10.0.0.1')
    assert [endpoint] == endpoint2
コード例 #22
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_name():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1'
    }
    name = GetData._get_name(endpoint)
    assert name == 'foo'
コード例 #23
0
def test_endpoint_by_name():
    s = SDNConnect()
    endpoint = s.endpoint_by_name('foo')
    assert endpoint == None
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'}
    s.endpoints[endpoint.name] = endpoint
    endpoint2 = s.endpoint_by_name('foo')
    assert endpoint == endpoint2
コード例 #24
0
def test_endpoint_by_hash():
    s = SDNConnect()
    endpoint = s.endpoint_by_hash('foo')
    assert endpoint == None
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'}
    s.endpoints.append(endpoint)
    endpoint2 = s.endpoint_by_hash('foo')
    assert endpoint == endpoint2
コード例 #25
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_display_results():
    parser = Parser()
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'vlan': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1',
        'ipv4': '0.0.0.0',
        'ipv6': '1212::1'
    }
    endpoints = [endpoint]
    parser.display_results(
        endpoints,
        ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4', 'IPv6'],
        ipv4_only=False,
        ipv6_only=True)
    parser.display_results(
        endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv6'],
        ipv4_only=False,
        ipv4_and_ipv6=True)
    parser.display_results(
        endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'],
        ipv4_only=False,
        ipv4_and_ipv6=True)
    parser.display_results(
        endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'],
        ipv4_only=False,
        ipv4_and_ipv6=True,
        unique=True)
    parser.display_results(
        endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'],
        ipv4_only=False,
        ipv4_and_ipv6=True,
        nonzero=True)
    parser.display_results(
        endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'],
        ipv4_only=False,
        ipv4_and_ipv6=True,
        nonzero=True,
        unique=True)
    parser.display_results(
        endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'],
        ipv4_only=False,
        ipv4_and_ipv6=True,
        nonzero=True,
        unique=True,
        output_format="csv")
    parser.display_results(
        endpoints, ['ID', 'MAC Address', 'Switch', 'Port', 'VLAN', 'IPv4'],
        ipv4_only=False,
        ipv4_and_ipv6=True,
        nonzero=True,
        unique=True,
        output_format="json")
コード例 #26
0
ファイル: test_cli.py プロジェクト: sorinros/poseidon
def test_get_behavior():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'}
    endpoint.metadata = {'mac_addresses': {}}
    behavior = GetData._get_behavior(endpoint)
    assert behavior == 'NO DATA'
    endpoint.metadata = {'mac_addresses': {
        '00:00:00:00:00:00': {'1551711125': {'behavior': 'abnormal'}}}}
    behavior = GetData._get_behavior(endpoint)
    assert behavior == 'abnormal'
コード例 #27
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_ipv6():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1',
        'ipv6': '1212::1'
    }
    ipv6 = GetData._get_ipv6(endpoint)
    assert ipv6 == '1212::1'
コード例 #28
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_ipv4():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1',
        'ipv4': '0.0.0.0'
    }
    ipv4 = GetData._get_ipv4(endpoint)
    assert ipv4 == '0.0.0.0'
コード例 #29
0
ファイル: test_cli.py プロジェクト: jomarquez/poseidon
def test_get_controller():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1',
        'controller': 'foo'
    }
    controller = GetData._get_controller(endpoint)
    assert controller == 'foo'
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo',
        'mac': '00:00:00:00:00:00',
        'segment': 'foo',
        'port': '1'
    }
    controller = GetData._get_controller(endpoint)
    assert controller == NO_DATA
コード例 #30
0
ファイル: test_cli.py プロジェクト: sorinros/poseidon
def test_get_role_confidence():
    endpoint = Endpoint('foo')
    endpoint.endpoint_data = {
        'tenant': 'foo', 'mac': '00:00:00:00:00:00', 'segment': 'foo', 'port': '1'}
    endpoint.metadata = {'mac_addresses': {}}
    confidence = GetData._get_role_confidence(endpoint)
    assert confidence == 'NO DATA'
    endpoint.metadata = {'mac_addresses': {
        '00:00:00:00:00:00': {'1551711125': {'confidences': [10.0]}}}}
    confidence = GetData._get_role_confidence(endpoint)
    assert confidence == '10.0'