예제 #1
0
파일: ports.py 프로젝트: ptrifonov/easywall
def add_port(port: str, ruletype: str) -> None:
    """
    The function adds a port to the list of open ports.
    """
    rules = RulesHandler()
    rulelist = rules.get_rules_for_web(ruletype)
    rulelist.append(port)
    rules.save_new_rules(ruletype, rulelist)
예제 #2
0
def remove_forwarding(source_port: str, dest_port: str, ruletype: str) -> None:
    """
    TODO: Docu
    """
    rules = RulesHandler()
    rulelist = rules.get_rules_for_web("forwarding")
    rulelist.remove("{}:{}:{}".format(ruletype, source_port, dest_port))
    rules.save_new_rules("forwarding", rulelist)
예제 #3
0
파일: ports.py 프로젝트: ptrifonov/easywall
def remove_port(port: str, ruletype: str) -> None:
    """
    The function deletes a port from the list of open ports.
    """
    rules = RulesHandler()
    rulelist = rules.get_rules_for_web(ruletype)
    rulelist.remove(port)
    rules.save_new_rules(ruletype, rulelist)
예제 #4
0
def remove_port(entry: dict) -> bool:
    """Delete a port from the list of open ports."""
    rules = RulesHandler()
    rulelist = rules.get_rules_for_web(entry["ruletype"])
    for i in range(len(rulelist)):
        if rulelist[i]['port'] == entry["port"]:
            del rulelist[i]
            break
    rules.save_new_rules(entry["ruletype"], rulelist)
    return True
예제 #5
0
파일: custom.py 프로젝트: zroorz/easywall
def custom_save() -> str:
    """the function saves the custom rules into the corresponding rulesfile"""
    utils = Webutils()
    rules = RulesHandler()
    if utils.check_login(request) is True:
        for key, value in request.form.items():
            key = str(key) + ""  # just for ignoring the warning
            rulelist = value.split("\n")
            rules.save_new_rules("custom", rulelist)
        return custom(True)
    return login()
예제 #6
0
def add_port(entry: dict) -> bool:
    """Add a port to the list of open ports."""
    rules = RulesHandler()
    ruletype = entry["ruletype"]
    rulelist = rules.get_rules_for_web(ruletype)
    entry.pop("ruletype", None)  # we dont't want the ruletype to be saved
    duplicate = False
    for i in range(len(rulelist)):
        if rulelist[i]['port'] == entry["port"]:
            duplicate = True
            break
    if duplicate is False:
        rulelist.append(entry)
        rules.save_new_rules(ruletype, rulelist)
        return True
    return False
예제 #7
0
def blacklist_save() -> str:
    """Save the blacklist rules into the corresponding rulesfile."""
    utils = Webutils()
    rules = RulesHandler()
    if utils.check_login(request) is True:
        ipaddress = ""
        rulelist = rules.get_rules_for_web("blacklist")

        for key, value in request.form.items():
            if key == "ipadr":
                # then a new ip address is blacklisted
                ipaddress = value
                rulelist.append(ipaddress)
                rules.save_new_rules("blacklist", rulelist)
            else:
                # then a old ip address is removed
                ipaddress = key
                rulelist.remove(ipaddress)
                rules.save_new_rules("blacklist", rulelist)
        return blacklist(True)
    return login()
예제 #8
0
def whitelist_save():
    """
    the function saves the whitelist rules into the corresponding rulesfile
    """
    utils = Webutils()
    rules = RulesHandler()
    if utils.check_login() is True:
        ipaddress = ""
        rulelist = rules.get_rules_for_web("whitelist")

        for key, value in request.form.items():
            if key == "ipadr":
                # then a new ip address is whitelisted
                ipaddress = value
                rulelist.append(ipaddress)
                rules.save_new_rules("whitelist", rulelist)
            else:
                # then a old ip address is removed
                ipaddress = key
                rulelist.remove(ipaddress)
                rules.save_new_rules("whitelist", rulelist)
        return whitelist(True)
    return login("", None)
예제 #9
0
class TestRulesHandler(unittest.TestCase):
    """TODO: Doku."""
    def setUp(self) -> None:
        """TODO: Doku."""
        self.rules = RulesHandler()

    def test_get_current_rules(self) -> None:
        """TODO: Doku."""
        ports: list = []
        entry: dict = {}
        entry["description"] = "test"
        entry["port"] = "80"
        entry["ssh"] = False
        ports.append(entry)
        entry = {}
        entry["description"] = "test"
        entry["port"] = "443"
        entry["ssh"] = False
        ports.append(entry)
        self.rules.save_new_rules("tcp", ports)
        self.rules.apply_new_rules()
        self.assertEqual(self.rules.get_current_rules("tcp"), ports)

    def test_get_new_rules(self) -> None:
        """TODO: Doku."""
        ports: list = []
        entry: dict = {}
        entry["description"] = "test"
        entry["port"] = "80"
        entry["ssh"] = False
        ports.append(entry)
        entry = {}
        entry["description"] = "test"
        entry["port"] = "443"
        entry["ssh"] = False
        ports.append(entry)
        self.rules.save_new_rules("tcp", ports)
        self.assertEqual(self.rules.get_new_rules("tcp"), ports)

    def test_backup_current_rules(self) -> None:
        """TODO: Doku."""
        ports: list = []
        entry: dict = {}
        entry["description"] = "test"
        entry["port"] = "80"
        entry["ssh"] = False
        ports.append(entry)
        entry = {}
        entry["description"] = "test"
        entry["port"] = "443"
        entry["ssh"] = False
        ports.append(entry)
        self.rules.save_new_rules("tcp", ports)
        self.rules.apply_new_rules()
        self.rules.backup_current_rules()
        self.assertEqual(self.rules.get_backup_rules("tcp"), ports)

    def test_apply_new_rules(self) -> None:
        """TODO: Doku."""
        ports: list = []
        entry: dict = {}
        entry["description"] = "test"
        entry["port"] = "80"
        entry["ssh"] = False
        ports.append(entry)
        entry = {}
        entry["description"] = "test"
        entry["port"] = "443"
        entry["ssh"] = False
        ports.append(entry)
        self.rules.save_new_rules("tcp", [])
        self.rules.apply_new_rules()
        self.assertEqual(self.rules.get_current_rules("tcp"), [])
        self.rules.save_new_rules("tcp", ports)
        self.rules.apply_new_rules()
        self.assertEqual(self.rules.get_current_rules("tcp"), ports)

    def test_get_rules_for_web(self) -> None:
        """TODO: Doku."""
        ports: list = []
        entry: dict = {}
        entry["description"] = "test"
        entry["port"] = "80"
        entry["ssh"] = False
        ports.append(entry)
        entry = {}
        entry["description"] = "test"
        entry["port"] = "443"
        entry["ssh"] = False
        ports.append(entry)
        self.rules.save_new_rules("tcp", ports)
        self.rules.apply_new_rules()
        self.assertEqual(self.rules.get_rules_for_web("tcp"), ports)
        ports = []
        entry = {}
        entry["description"] = "test"
        entry["port"] = "80"
        entry["ssh"] = False
        ports.append(entry)
        entry = {}
        entry["description"] = "test"
        entry["port"] = "443"
        entry["ssh"] = False
        ports.append(entry)
        entry = {}
        entry["description"] = "test"
        entry["port"] = "8080"
        entry["ssh"] = False
        ports.append(entry)
        self.rules.save_new_rules("tcp", ports)
        self.assertEqual(self.rules.get_rules_for_web("tcp"), ports)

    def test_rollback_from_backup(self) -> None:
        """TODO: Doku."""
        ports: list = []
        entry: dict = {}
        entry["description"] = "test"
        entry["port"] = "80"
        entry["ssh"] = False
        ports.append(entry)
        entry = {}
        entry["description"] = "test"
        entry["port"] = "443"
        entry["ssh"] = False
        ports.append(entry)
        self.rules.save_new_rules("tcp", ports)
        self.rules.apply_new_rules()
        self.rules.backup_current_rules()
        self.rules.save_new_rules("tcp", [])
        self.rules.apply_new_rules()
        self.assertEqual(self.rules.get_current_rules("tcp"), [])
        self.rules.rollback_from_backup()
        self.assertEqual(self.rules.get_current_rules("tcp"), ports)

    def test_diff_new_current(self) -> None:
        """TODO: Doku."""
        ports: list = []
        entry: dict = {}
        entry["description"] = "test"
        entry["port"] = "123"
        entry["ssh"] = False
        ports.append(entry)
        entry = {}
        entry["description"] = "test"
        entry["port"] = "1234"
        entry["ssh"] = False
        ports.append(entry)
        self.rules.save_new_rules("tcp", ports)
        self.rules.apply_new_rules()
        ports = []
        entry = {}
        entry["description"] = "test"
        entry["port"] = "1337"
        entry["ssh"] = False
        ports.append(entry)
        self.rules.save_new_rules("tcp", ports)
        self.assertTrue(self.rules.diff_new_current("tcp"))
        self.rules.apply_new_rules()
        self.assertFalse(self.rules.diff_new_current("tcp"))

    def test_save_new_rules(self) -> None:
        """TODO: Doku."""
        ports: list = []
        entry: dict = {}
        entry["description"] = "test"
        entry["port"] = "80"
        entry["ssh"] = False
        ports.append(entry)
        entry = {}
        entry["description"] = "test"
        entry["port"] = "443"
        entry["ssh"] = False
        ports.append(entry)
        self.rules.save_new_rules("tcp", ports)
        self.assertEqual(self.rules.get_new_rules("tcp"), ports)
예제 #10
0
def remove_port(port, ruletype):
    """the function removes a port from the opened port rules file"""
    rules = RulesHandler()
    rulelist = rules.get_rules_for_web(ruletype)
    rulelist.remove(port)
    rules.save_new_rules(ruletype, rulelist)
예제 #11
0
def add_port(port, ruletype):
    """the function adds a port to the opened port rules file"""
    rules = RulesHandler()
    rulelist = rules.get_rules_for_web(ruletype)
    rulelist.append(port)
    rules.save_new_rules(ruletype, rulelist)
예제 #12
0
class TestRulesHandler(unittest.TestCase):
    """
    TODO: Doku
    """
    def setUp(self):
        self.rules = RulesHandler()
        self.rules.rules_firstrun()

    def test_firstrun(self):
        """
        TODO: Doku
        """
        self.rules.rules_firstrun()

    def test_get_current_rules(self):
        """
        TODO: Doku
        """
        write_into_file("{}/current/tcp".format(self.rules.rulesfolder), """80
443
""")
        self.assertEqual(self.rules.get_current_rules("tcp"), ["80", "443"])

    def test_get_new_rules(self):
        """
        TODO: Doku
        """
        write_into_file("{}/new/tcp".format(self.rules.rulesfolder), """80
443
""")
        self.assertEqual(self.rules.get_new_rules("tcp"), ["80", "443"])

    def test_backup_current_rules(self):
        """
        TODO: Doku
        """
        write_into_file("{}/current/tcp".format(self.rules.rulesfolder), """80
443
""")
        write_into_file("{}/backup/tcp".format(self.rules.rulesfolder), "")
        self.rules.backup_current_rules()
        self.assertEqual(
            file_get_contents("{}/backup/tcp".format(self.rules.rulesfolder)),
            """80
443
""")

    def test_apply_new_rules(self):
        """
        TODO: Doku
        """
        write_into_file("{}/new/tcp".format(self.rules.rulesfolder), """80
443
""")
        write_into_file("{}/current/tcp".format(self.rules.rulesfolder), "")
        self.assertEqual(self.rules.get_current_rules("tcp"), [])
        self.rules.apply_new_rules()
        self.assertEqual(self.rules.get_current_rules("tcp"), ["80", "443"])

    def test_rollback_from_backup(self):
        """
        TODO: Doku
        """
        write_into_file("{}/backup/tcp".format(self.rules.rulesfolder), """80
443
""")
        write_into_file("{}/current/tcp".format(self.rules.rulesfolder), "")
        self.assertEqual(self.rules.get_current_rules("tcp"), [])
        self.rules.rollback_from_backup()
        self.assertEqual(self.rules.get_current_rules("tcp"), ["80", "443"])

    def test_get_rules_for_web(self):
        """
        TODO: Doku
        """
        write_into_file("{}/current/tcp".format(self.rules.rulesfolder), """80
443
""")
        self.assertEqual(self.rules.get_rules_for_web("tcp"), ["80", "443"])
        write_into_file("{}/new/tcp".format(self.rules.rulesfolder), """80
443
8080
""")
        self.assertEqual(self.rules.get_rules_for_web("tcp"),
                         ["80", "443", "8080"])

    def test_save_new_rules(self):
        """
        TODO: Doku
        """
        self.rules.save_new_rules("tcp", ["80", "443"])
        self.assertEqual(
            file_get_contents("{}/new/tcp".format(self.rules.rulesfolder)),
            "80\n443")
예제 #13
0
class TestEasywall(unittest.TestCase):
    """TODO: Doku."""
    def setUp(self) -> None:
        """TODO: Doku."""
        prepare_configuration()
        self.cfg = Config(CONFIG_PATH)
        self.easywall = Easywall(self.cfg)
        self.rules = RulesHandler()

    def tearDown(self) -> None:
        """TODO: Doku."""
        restore_configuration()

    def test_init(self) -> None:
        """TODO: Doku."""
        self.easywall = Easywall(self.cfg)

    def test_apply_not_accepted(self) -> None:
        """TODO: Doku."""
        self.easywall.apply()

    def test_apply_accepted(self) -> None:
        """TODO: Doku."""
        write_into_file(self.easywall.acceptance.filename, "true")
        self.easywall.apply()

    def test_apply_blacklist(self) -> None:
        """TODO: Doku."""
        blacklist = ["192.168.233.254", "1.2.4.5", "2001:db8:a0b:12f0::1"]
        self.rules.save_new_rules("blacklist", blacklist)
        self.rules.apply_new_rules()
        self.easywall.apply_blacklist()

    def test_apply_whitelist(self) -> None:
        """TODO: Doku."""
        whitelist = ["192.168.233.254", "1.2.4.5", "2001:db8:a0b:12f0::1"]
        self.rules.save_new_rules("whitelist", whitelist)
        self.rules.apply_new_rules()
        self.easywall.apply_whitelist()

    def test_apply_rules_port_range(self) -> None:
        """TODO: Doku."""
        udp: list = []
        entry: dict = {}
        entry["description"] = "test"
        entry["port"] = "8080:8085"
        entry["ssh"] = False
        udp.append(entry)
        self.rules.save_new_rules("udp", udp)
        self.rules.apply_new_rules()
        self.easywall.apply_rules("udp")

    def test_apply_custom_rules(self) -> None:
        """TODO: Doku."""
        custom = ["1234"]
        self.rules.save_new_rules("custom", custom)
        self.rules.apply_new_rules()
        self.easywall.apply_custom_rules()

    def test_apply_ssh_port(self) -> None:
        """TODO: Doku."""
        tcp: list = []
        entry: dict = {}
        entry["description"] = "SSH"
        entry["port"] = "22"
        entry["ssh"] = True
        tcp.append(entry)
        self.rules.save_new_rules("tcp", tcp)
        self.rules.apply_new_rules()
        self.easywall.apply_rules("tcp")

    def test_apply_forwarding(self) -> None:
        """TODO: Doku."""
        forwarding = ["tcp:1234:1235"]
        self.rules.save_new_rules("forwarding", forwarding)
        self.rules.apply_new_rules()
        self.easywall.apply_forwarding()