2023-03-28 17:33:34 +01:00
|
|
|
# Crown Copyright (C) Dstl 2022. DEFCON 703. Shared in confidence.
|
2023-05-25 11:42:19 +01:00
|
|
|
"""A class that implements an access control list rule."""
|
2023-03-28 17:33:34 +01:00
|
|
|
|
2023-05-25 11:42:19 +01:00
|
|
|
|
|
|
|
|
class ACLRule:
|
|
|
|
|
"""Access Control List Rule class."""
|
2023-03-28 17:33:34 +01:00
|
|
|
|
|
|
|
|
def __init__(self, _permission, _source_ip, _dest_ip, _protocol, _port):
|
2023-07-04 11:11:52 +01:00
|
|
|
"""Init.
|
2023-03-28 17:33:34 +01:00
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
_permission: The permission (ALLOW or DENY)
|
|
|
|
|
_source_ip: The source IP address
|
|
|
|
|
_dest_ip: The destination IP address
|
|
|
|
|
_protocol: The rule protocol
|
|
|
|
|
_port: The rule port
|
|
|
|
|
"""
|
|
|
|
|
self.permission = _permission
|
|
|
|
|
self.source_ip = _source_ip
|
|
|
|
|
self.dest_ip = _dest_ip
|
|
|
|
|
self.protocol = _protocol
|
|
|
|
|
self.port = _port
|
|
|
|
|
|
|
|
|
|
def __hash__(self):
|
2023-07-04 11:11:52 +01:00
|
|
|
"""Override the hash function.
|
2023-03-28 17:33:34 +01:00
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
Returns hash of core parameters.
|
|
|
|
|
"""
|
2023-05-25 11:42:19 +01:00
|
|
|
return hash(
|
2023-06-30 09:08:13 +01:00
|
|
|
(
|
|
|
|
|
self.permission,
|
|
|
|
|
self.source_ip,
|
|
|
|
|
self.dest_ip,
|
|
|
|
|
self.protocol,
|
|
|
|
|
self.port,
|
|
|
|
|
)
|
2023-05-25 11:42:19 +01:00
|
|
|
)
|
2023-03-28 17:33:34 +01:00
|
|
|
|
|
|
|
|
def get_permission(self):
|
2023-07-04 11:11:52 +01:00
|
|
|
"""Gets the permission attribute.
|
2023-03-28 17:33:34 +01:00
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
Returns permission attribute
|
|
|
|
|
"""
|
|
|
|
|
return self.permission
|
|
|
|
|
|
|
|
|
|
def get_source_ip(self):
|
2023-07-04 11:11:52 +01:00
|
|
|
"""Gets the source IP address attribute.
|
2023-03-28 17:33:34 +01:00
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
Returns source IP address attribute
|
|
|
|
|
"""
|
|
|
|
|
return self.source_ip
|
|
|
|
|
|
|
|
|
|
def get_dest_ip(self):
|
2023-07-04 11:11:52 +01:00
|
|
|
"""Gets the desintation IP address attribute.
|
2023-03-28 17:33:34 +01:00
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
Returns destination IP address attribute
|
|
|
|
|
"""
|
|
|
|
|
return self.dest_ip
|
|
|
|
|
|
|
|
|
|
def get_protocol(self):
|
2023-07-04 11:11:52 +01:00
|
|
|
"""Gets the protocol attribute.
|
2023-03-28 17:33:34 +01:00
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
Returns protocol attribute
|
|
|
|
|
"""
|
|
|
|
|
return self.protocol
|
|
|
|
|
|
|
|
|
|
def get_port(self):
|
2023-07-04 11:11:52 +01:00
|
|
|
"""Gets the port attribute.
|
2023-03-28 17:33:34 +01:00
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
Returns port attribute
|
|
|
|
|
"""
|
|
|
|
|
return self.port
|