示例#1
0
    def bypass(self, net):
        self.net = net
        #default_routes = self.default_gateway_check()
        self.gw = self.net["gateway"]
        self.gw_6 = self.net["gateway_6"]
        default_interface_4 = self.net["interface"]
        default_interface_6 = self.net["interface_6"]
        no_dnsmasq = config.settings["no_dnsmasq"]

        if self.gw != "None" or self.gw_6 != "None":

            if default_interface_6 != "None":
                self.interface = default_interface_6

            elif default_interface_4 != "None":
                self.interface = default_interface_4

            else:
                self.interface = "None"

            if config.settings["bypass"] == 1:
                bypass.create_cgroup(
                    self.net["user"],
                    self.net["group"],
                    self.interface,
                    gw=self.gw,
                    gw_6=self.gw_6,
                    default_int=self.interface,
                    no_dnsmasq=no_dnsmasq
                    )

                self.kill_dnsmasq()

                #dnsmasq is needed to handle requests from bypass
                if no_dnsmasq == 0:
                    dns_manager.dnsmasq(
                                        self.interface,
                                        "5354",
                                        config.settings["alt_dns1"],
                                        config.settings["alt_dns2"],
                                        "_bypass"
                                        )

            elif config.settings["bypass"] == 0:

                try:
                    bypass.delete_cgroup(self.interface)
                except AttributeError:
                    pass
示例#2
0
    def bypass(self, net):
        self.net = net
        #default_routes = self.default_gateway_check()
        self.gw = self.net["gateway"]
        self.gw_6 = self.net["gateway_6"]
        default_interface_4 = self.net["interface"]
        default_interface_6 = self.net["interface_6"]

        if self.gw != "None" or self.gw_6 != "None":
            try:

                if default_interface_6 != "None":
                    self.interface = default_interface_6

                elif default_interface_4 != "None":
                    self.interface = default_interface_4

                else:
                    self.interface = "None"

                if self.config["bypass"] == 1:
                    bypass.create_cgroup(self.net["user"],
                                         self.net["group"],
                                         self.interface,
                                         gw=self.gw,
                                         gw_6=self.gw_6,
                                         default_int=self.interface)

                    self.kill_dnsmasq()

                    #dnsmasq is needed to handle requests from bypass
                    dns_manager.dnsmasq(self.interface, "5354",
                                        self.config["alt_dns1"],
                                        self.config["alt_dns2"], "_bypass")

                elif self.config["bypass"] == 0:

                    try:
                        bypass.delete_cgroup(self.interface)
                    except AttributeError:
                        pass

            except KeyError:
                self.logger.warning(
                    'Config file corrupted - bypass option does not exist')
示例#3
0
    def bypass(self, ug):
        try:
            self.kill_pid(self.dnsmasq_pid)
        except AttributeError:
            pass

        default_gateway = self.default_gateway_check()["gateway"]
        if default_gateway != "None":
            try:
                if self.config["bypass"] == 1:
                    pid = bypass.create_cgroup(ug["user"], ug["group"],
                                               self.default_interface,
                                               default_gateway)
                    self.dnsmasq_pid = (pid, "dnsmasq")
                elif self.config["bypass"] == 0:
                    try:
                        bypass.delete_cgroup(self.default_interface)
                    except AttributeError:
                        pass
            except KeyError:
                self.logger.warning('Could not read all values from  file')
示例#4
0
    def load_firewall(self, activate):
        try:
            with open('{}/config.json'.format(ROOTDIR), 'r') as c:
                self.config = json.load(c)

        except (FileNotFoundError, json.decoder.JSONDecodeError) as e:
            self.logger.error(
                '{}: Could not open config.json - loading default configuration'
                .format(e))
            with open('{}/default_config.json'.format(ROOTDIR), 'r') as c:
                self.config = json.load(c)

        try:
            self.logger.setLevel(self.config["log_level"].upper())

        except KeyError:
            pass

        try:
            if self.config["fw_gui_only"] == 0:
                activate = 1

        except KeyError:
            activate = 1

        try:
            if self.config["preserve_rules"] == 1:
                preserve = 1
            else:
                preserve = 0

        except KeyError:
            preserve = 0

        try:
            if self.config["block_lan"] == 1:
                block_lan = 1
            else:
                block_lan = 0

        except KeyError:
            block_lan = 0

        try:
            if activate == 1:
                firewall.save_iptables()
                firewall.apply_rules(self.config["firewall"],
                                     block_lan=block_lan,
                                     preserve=preserve)

            elif activate == 2:
                if self.config["fw_gui_only"] == 1:
                    firewall.restore_iptables()
                    firewall.apply_rules(0, block_lan=0, preserve=preserve)

                    try:
                        bypass.delete_cgroup(self.default_interface_4,
                                             self.default_interface_6)

                    except AttributeError:
                        pass

            self.disable_ipv6(self.config["ipv6_disable"])

        except KeyError:
            self.logger.warning('Could not read all values from config file')

        #default dns is always set to the alternative servers
        self.dns = self.config["alt_dns1"]
        self.dns_2 = self.config["alt_dns2"]
        self.dns_bypass = self.config["alt_dns1"]
        self.dns_2_bypass = self.config["alt_dns2"]