Exemple #1
0
    def start(self):
        """
        Emulate iptables commands, including permission checking.

        Verified examples:
        * iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
        * iptables -A INPUT -i eth0 -p tcp -s "127.0.0.1" -j DROP

        Others:
        * iptables
        * iptables [[-t | --table] <name>] [-h | --help]
        * iptables [[-t | --table] <name>] [-v | --version]
        * iptables [[-t | --table] <name>] [-F | --flush] <chain>
        * iptables [[-t | --table] <name>] [-L | --list] <chain>
        * iptables [[-t | --table] <name>] [-S | --list-rules] <chain>
        * iptables --this-is-invalid
        """

        # In case of no arguments
        if len(self.args) == 0:
            self.no_command()
            return

        # Utils
        def optional_arg(arg_default):
            def func(option, opt_str, value, parser):
                if parser.rargs and not parser.rargs[0].startswith('-'):
                    val = parser.rargs[0]
                    parser.rargs.pop(0)
                else:
                    val = arg_default
                setattr(parser.values, option.dest, val)

            return func

        # Initialize options
        parser = ModifiedOptionParser(add_help_option=False)
        parser.add_option("-h", "--help", dest="help", action="store_true")
        parser.add_option("-V",
                          "--version",
                          dest="version",
                          action="store_true")
        parser.add_option("-v",
                          "--verbose",
                          dest="verbose",
                          action="store_true")
        parser.add_option("-x", "--exact", dest="exact", action="store_true")
        parser.add_option("--line-numbers",
                          dest="line_numbers",
                          action="store_true")
        parser.add_option("-n",
                          "--numeric",
                          dest="numeric",
                          action="store_true")
        parser.add_option("--modprobe", dest="modprobe", action="store")

        parser.add_option("-t",
                          "--table",
                          dest="table",
                          action="store",
                          default=command_iptables.DEFAULT_TABLE)
        parser.add_option("-F",
                          "--flush",
                          dest="flush",
                          action="callback",
                          callback=optional_arg(True))
        parser.add_option("-Z",
                          "--zero",
                          dest="zero",
                          action="callback",
                          callback=optional_arg(True))
        parser.add_option("-S",
                          "--list-rules",
                          dest="list_rules",
                          action="callback",
                          callback=optional_arg(True))
        parser.add_option("-L",
                          "--list",
                          dest="list",
                          action="callback",
                          callback=optional_arg(True))
        parser.add_option("-A", "--append", dest="append", action="store")
        parser.add_option("-D", "--delete", dest="delete", action="store")
        parser.add_option("-I", "--insert", dest="insert", action="store")
        parser.add_option("-R", "--replace", dest="replace", action="store")
        parser.add_option("-N",
                          "--new-chain",
                          dest="new_chain",
                          action="store")
        parser.add_option("-X",
                          "--delete-chain",
                          dest="delete_chain",
                          action="store")
        parser.add_option("-P", "--policy", dest="policy", action="store")
        parser.add_option("-E",
                          "--rename-chain",
                          dest="rename_chain",
                          action="store")

        parser.add_option("-p", "--protocol", dest="protocol", action="store")
        parser.add_option("-s", "--source", dest="source", action="store")
        parser.add_option("-d",
                          "--destination",
                          dest="destination",
                          action="store")
        parser.add_option("-j", "--jump", dest="jump", action="store")
        parser.add_option("-g", "--goto", dest="goto", action="store")
        parser.add_option("-i",
                          "--in-interface",
                          dest="in_interface",
                          action="store")
        parser.add_option("-o",
                          "--out-interface",
                          dest="out_interface",
                          action="store")
        parser.add_option("-f",
                          "--fragment",
                          dest="fragment",
                          action="store_true")
        parser.add_option("-c",
                          "--set-counters",
                          dest="set_counters",
                          action="store")
        parser.add_option("-m", "--match", dest="match", action="store")

        parser.add_option("--sport",
                          "--source-ports",
                          dest="source_ports",
                          action="store")
        parser.add_option("--dport",
                          "--destination-ports",
                          dest="dest_ports",
                          action="store")
        parser.add_option("--ports", dest="ports", action="store")
        parser.add_option("--state", dest="state", action="store")

        # Parse options or display no files
        try:
            (opts, args) = parser.parse_args(list(self.args))
        except OptionParsingError, e:
            self.bad_argument(self.args[0])
            return
Exemple #2
0
    def call(self):
        """ Add uname command to identify server """

        # Initialize options
        parser = ModifiedOptionParser(add_help_option=False)
        parser.add_option("--help", dest="help", action="store_true")
        parser.add_option("--version", dest="version", action="store_true")
        parser.add_option("-a", "--all", dest="all", action="store_true")
        parser.add_option("-s",
                          "--kenel-name",
                          dest="name",
                          action="store_true")
        parser.add_option("-r",
                          "--kernel-release",
                          dest="release",
                          action="store_true")
        parser.add_option("-v",
                          "--kernel-version",
                          dest="kernel",
                          action="store_true")
        parser.add_option("-m",
                          "--machine",
                          dest="machine",
                          action="store_true")
        parser.add_option("-p",
                          "--processor",
                          dest="processor",
                          action="store_true")
        parser.add_option("-i",
                          "--hardware-platform",
                          dest="hardware",
                          action="store_true")
        parser.add_option("-o",
                          "--operating-system",
                          dest="os",
                          action="store_true")

        try:
            (opts, args) = parser.parse_args(list(self.args))
        except OptionParsingError, e:
            self.bad_argument(self.args[0])
            return
Exemple #3
0
    def start(self):
        """
        Emulate iptables commands, including permission checking.

        Verified examples:
        * iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
        * iptables -A INPUT -i eth0 -p tcp -s "127.0.0.1" -j DROP

        Others:
        * iptables
        * iptables [[-t | --table] <name>] [-h | --help]
        * iptables [[-t | --table] <name>] [-v | --version]
        * iptables [[-t | --table] <name>] [-F | --flush] <chain>
        * iptables [[-t | --table] <name>] [-L | --list] <chain>
        * iptables [[-t | --table] <name>] [-S | --list-rules] <chain>
        * iptables --this-is-invalid
        """

        # In case of no arguments
        if len(self.args) == 0:
            self.no_command()
            return

        # Utils
        def optional_arg(arg_default):
            def func(option,opt_str,value,parser):
                if parser.rargs and not parser.rargs[0].startswith('-'):
                    val=parser.rargs[0]
                    parser.rargs.pop(0)
                else:
                    val=arg_default
                setattr(parser.values,option.dest,val)
            return func

        # Initialize options
        parser = ModifiedOptionParser(add_help_option=False)
        parser.add_option("-h", "--help", dest="help", action="store_true")
        parser.add_option("-V", "--version", dest="version", action="store_true")
        parser.add_option("-v", "--verbose", dest="verbose", action="store_true")
        parser.add_option("-x", "--exact", dest="exact", action="store_true")
        parser.add_option("--line-numbers", dest="line_numbers", action="store_true")
        parser.add_option("-n", "--numeric", dest="numeric", action="store_true")
        parser.add_option("--modprobe", dest="modprobe", action="store")

        parser.add_option("-t", "--table", dest="table", action="store", default=command_iptables.DEFAULT_TABLE)
        parser.add_option("-F", "--flush", dest="flush", action="callback", callback=optional_arg(True))
        parser.add_option("-Z", "--zero", dest="zero", action="callback", callback=optional_arg(True))
        parser.add_option("-S", "--list-rules", dest="list_rules", action="callback", callback=optional_arg(True))
        parser.add_option("-L", "--list", dest="list", action="callback", callback=optional_arg(True))
        parser.add_option("-A", "--append", dest="append", action="store")
        parser.add_option("-D", "--delete", dest="delete", action="store")
        parser.add_option("-I", "--insert", dest="insert", action="store")
        parser.add_option("-R", "--replace", dest="replace", action="store")
        parser.add_option("-N", "--new-chain", dest="new_chain", action="store")
        parser.add_option("-X", "--delete-chain", dest="delete_chain", action="store")
        parser.add_option("-P", "--policy", dest="policy", action="store")
        parser.add_option("-E", "--rename-chain", dest="rename_chain", action="store")

        parser.add_option("-p", "--protocol", dest="protocol", action="store")
        parser.add_option("-s", "--source", dest="source", action="store")
        parser.add_option("-d", "--destination", dest="destination", action="store")
        parser.add_option("-j", "--jump", dest="jump", action="store")
        parser.add_option("-g", "--goto", dest="goto", action="store")
        parser.add_option("-i", "--in-interface", dest="in_interface", action="store")
        parser.add_option("-o", "--out-interface", dest="out_interface", action="store")
        parser.add_option("-f", "--fragment", dest="fragment", action="store_true")
        parser.add_option("-c", "--set-counters", dest="set_counters", action="store")
        parser.add_option("-m", "--match", dest="match", action="store")

        parser.add_option("--sport", "--source-ports", dest="source_ports", action="store")
        parser.add_option("--dport", "--destination-ports", dest="dest_ports", action="store")
        parser.add_option("--ports", dest="ports", action="store")
        parser.add_option("--state", dest="state", action="store")


        # Parse options or display no files
        try:
            (opts, args) = parser.parse_args(list(self.args))
        except OptionParsingError, e:
            self.bad_argument(self.args[0])
            return
Exemple #4
0
    def call(self):
        """ Add uname command to identify server """

        # Initialize options
        parser = ModifiedOptionParser(add_help_option=False)
        parser.add_option("--help", dest="help", action="store_true")
        parser.add_option("--version", dest="version", action="store_true")
        parser.add_option("-a", "--all", dest="all", action="store_true")
        parser.add_option(
            "-s", "--kenel-name", dest="name", action="store_true")
        parser.add_option(
            "-r", "--kernel-release", dest="release", action="store_true")
        parser.add_option(
            "-v", "--kernel-version", dest="kernel", action="store_true")
        parser.add_option(
            "-m", "--machine", dest="machine", action="store_true")
        parser.add_option(
            "-p", "--processor", dest="processor", action="store_true")
        parser.add_option(
            "-i", "--hardware-platform", dest="hardware", action="store_true")
        parser.add_option(
            "-o", "--operating-system", dest="os", action="store_true")

        try:
            (opts, args) = parser.parse_args(list(self.args))
        except OptionParsingError, e:
            self.bad_argument(self.args[0])
            return