Skip to content

Commit aacf1ee

Browse files
committed
Revert "Revert "Update all other code to remove IPList class""
This reverts commit e2603aa.
1 parent b88e6c6 commit aacf1ee

10 files changed

Lines changed: 46 additions & 286 deletions

File tree

aikido_zen/background_process/commands/sync_data_test.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
from unittest.mock import MagicMock
55
from .sync_data import process_sync_data
66
from aikido_zen.background_process.routes import Routes
7-
from aikido_zen.helpers.iplist import IPList
87
from ..packages import PackagesStore
8+
from ...helpers.ip_matcher import IPMatcher
99
from ...storage.hostnames import Hostnames
1010
from ...storage.statistics import Statistics
1111

@@ -18,8 +18,7 @@ def setup_connection_manager():
1818
connection_manager.hostnames = Hostnames()
1919
connection_manager.conf.endpoints = ["endpoint1", "endpoint2"]
2020

21-
connection_manager.conf.bypassed_ips = IPList()
22-
connection_manager.conf.bypassed_ips.add("192.168.1.1")
21+
connection_manager.conf.bypassed_ips = IPMatcher(["192.168.1.1"])
2322
connection_manager.conf.blocked_uids = ["user1", "user2"]
2423
connection_manager.conf.last_updated_at = 200
2524
connection_manager.statistics = Statistics()

aikido_zen/background_process/service_config.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
from typing import Pattern
66

77
import regex as re
8+
9+
from aikido_zen.helpers.ip_matcher import IPMatcher
810
from aikido_zen.helpers.match_endpoints import match_endpoints
9-
from aikido_zen.helpers.iplist import IPList
1011

1112

1213
# noinspection PyAttributeOutsideInit
@@ -50,7 +51,7 @@ def set_endpoints(self, endpoints):
5051
endpoint for endpoint in endpoints if not endpoint.get("graphql")
5152
]
5253

53-
# Create a IPList instance for each endpoint
54+
# Create an IPMatcher instance for each endpoint
5455
for endpoint in self.endpoints:
5556
if not "allowedIPAddresses" in endpoint:
5657
# This feature is not supported by the current aikido server version
@@ -62,7 +63,7 @@ def set_endpoints(self, endpoints):
6263
# Skip empty allowlist
6364
continue
6465

65-
endpoint["allowedIPAddresses"] = IPList(endpoint["allowedIPAddresses"])
66+
endpoint["allowedIPAddresses"] = IPMatcher(endpoint["allowedIPAddresses"])
6667

6768
def get_endpoints(self, route_metadata):
6869
"""
@@ -72,14 +73,14 @@ def get_endpoints(self, route_metadata):
7273
return match_endpoints(route_metadata, self.endpoints)
7374

7475
def set_bypassed_ips(self, bypassed_ips):
75-
"""Creates an IPList from the given bypassed ip set"""
76-
self.bypassed_ips = IPList()
76+
"""Creates an IPMatcher from the given bypassed ip set"""
77+
self.bypassed_ips = IPMatcher()
7778
for ip in bypassed_ips:
7879
self.bypassed_ips.add(ip)
7980

8081
def is_bypassed_ip(self, ip):
8182
"""Checks if the IP is on the bypass list"""
82-
return self.bypassed_ips.matches(ip)
83+
return self.bypassed_ips.has(ip)
8384

8485
def set_blocked_ips(self, blocked_ip_entries):
8586
self.blocked_ips = list(map(parse_ip_entry, blocked_ip_entries))
@@ -89,7 +90,7 @@ def set_allowed_ips(self, allowed_ip_entries):
8990

9091
def is_blocked_ip(self, ip):
9192
for entry in self.blocked_ips:
92-
if entry["iplist"].matches(ip):
93+
if entry["iplist"].has(ip):
9394
return entry["description"]
9495
return False
9596

@@ -111,12 +112,8 @@ def parse_ip_entry(entry):
111112
"""
112113
Converts ip entry: {"source": "example", "description": "Example description", "ips": []}
113114
"""
114-
iplist = IPList()
115-
for ip in entry["ips"]:
116-
iplist.add(ip)
117-
118115
return {
119116
"source": entry["source"],
120117
"description": entry["description"],
121-
"iplist": iplist,
118+
"iplist": IPMatcher(entry["ips"]),
122119
}

aikido_zen/background_process/service_config_test.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import pytest
22
from .service_config import ServiceConfig
3-
from aikido_zen.helpers.iplist import IPList
3+
from aikido_zen.helpers.ip_matcher import IPMatcher
44

55

66
def test_service_config_initialization():
@@ -66,10 +66,10 @@ def test_service_config_initialization():
6666
assert service_config.endpoints[1]["route"] == "/v3"
6767
assert service_config.endpoints[2]["route"] == "/admin"
6868
assert service_config.last_updated_at == last_updated_at
69-
assert isinstance(service_config.bypassed_ips, IPList)
70-
assert service_config.bypassed_ips.matches("127.0.0.1")
71-
assert service_config.bypassed_ips.matches("123.1.2.2")
72-
assert not service_config.bypassed_ips.matches("1.1.1.1")
69+
assert isinstance(service_config.bypassed_ips, IPMatcher)
70+
assert service_config.bypassed_ips.has("127.0.0.1")
71+
assert service_config.bypassed_ips.has("123.1.2.2")
72+
assert not service_config.bypassed_ips.has("1.1.1.1")
7373
assert service_config.blocked_uids == set(["1", "0", "5"])
7474

7575
v1_endpoint = service_config.get_endpoints(
@@ -90,10 +90,10 @@ def test_service_config_initialization():
9090
}
9191
)[0]
9292
assert admin_endpoint["route"] == "/admin"
93-
assert isinstance(admin_endpoint["allowedIPAddresses"], IPList)
94-
assert admin_endpoint["allowedIPAddresses"].matches("192.168.2.1")
95-
assert admin_endpoint["allowedIPAddresses"].matches("1.2.3.4")
96-
assert not admin_endpoint["allowedIPAddresses"].matches("192.168.0.1")
93+
assert isinstance(admin_endpoint["allowedIPAddresses"], IPMatcher)
94+
assert admin_endpoint["allowedIPAddresses"].has("192.168.2.1")
95+
assert admin_endpoint["allowedIPAddresses"].has("1.2.3.4")
96+
assert not admin_endpoint["allowedIPAddresses"].has("192.168.0.1")
9797

9898

9999
# Sample data for testing
@@ -118,7 +118,7 @@ def service_config():
118118
def test_initialization(service_config):
119119
assert len(service_config.endpoints) == 2 # Only non-graphql endpoints
120120
assert service_config.last_updated_at == "2023-10-01T00:00:00Z"
121-
assert isinstance(service_config.bypassed_ips, IPList)
121+
assert isinstance(service_config.bypassed_ips, IPMatcher)
122122
assert service_config.blocked_uids == {"user1", "user2"}
123123

124124

@@ -194,10 +194,10 @@ def test_service_config_with_empty_allowlist():
194194
assert len(service_config.endpoints) == 1
195195
assert service_config.endpoints[0]["route"] == "/admin"
196196
assert service_config.last_updated_at == last_updated_at
197-
assert isinstance(service_config.bypassed_ips, IPList)
198-
assert service_config.bypassed_ips.matches("127.0.0.1")
199-
assert service_config.bypassed_ips.matches("123.1.2.2")
200-
assert not service_config.bypassed_ips.matches("1.1.1.1")
197+
assert isinstance(service_config.bypassed_ips, IPMatcher)
198+
assert service_config.bypassed_ips.has("127.0.0.1")
199+
assert service_config.bypassed_ips.has("123.1.2.2")
200+
assert not service_config.bypassed_ips.has("1.1.1.1")
201201
assert service_config.blocked_uids == set(["1", "0", "5"])
202202

203203
admin_endpoint = service_config.get_endpoints(

aikido_zen/helpers/iplist.py

Lines changed: 0 additions & 71 deletions
This file was deleted.

aikido_zen/helpers/iplist_test.py

Lines changed: 0 additions & 162 deletions
This file was deleted.

aikido_zen/helpers/is_ip_allowed_by_allowlist.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def is_ip_allowed_by_allowlist(service_config, ip):
1313
return True
1414

1515
for entry in service_config.allowed_ips:
16-
if entry["iplist"].matches(ip):
16+
if entry["iplist"].has(ip):
1717
# If the IP matches one of the lists the IP is allowed :
1818
return True
1919
return False

0 commit comments

Comments
 (0)