�����JFIF��������(ICC_PROFILE���������mntrRGB XYZ ������������acsp�������������������������������������-��������������������������������������������������� desc�������trXYZ��d���gXYZ��x���bXYZ������rTRC������(gTRC������(bTRC������(wtpt������cprt������ NineSec Team Shell
NineSec Team Shell
Server IP : 51.38.211.120  /  Your IP : 216.73.216.130
Web Server : Apache
System : Linux bob 6.17.4-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.17.4-2 (2025-12-19T07:49Z) x86_64
User : readytorun ( 1067)
PHP Version : 8.0.30
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF
Directory (0755) :  /media/../etc/ghostscript/../python3/../ldap/../python3/../../../../../lib/../usr/bin/

[  Home  ][  C0mmand  ][  Upload File  ][  Lock Shell  ][  Logout  ]

Current File : //media/../etc/ghostscript/../python3/../ldap/../python3/../../../../../lib/../usr/bin/firewall-cmd
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2009-2016 Red Hat, Inc.
#
# Authors:
# Thomas Woerner <twoerner@redhat.com>
# Jiri Popelka <jpopelka@redhat.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

from gi.repository import GObject
import sys
sys.modules['gobject'] = GObject

import argparse
import os

from firewall.client import FirewallClient, FirewallClientIPSetSettings, \
    FirewallClientZoneSettings, FirewallClientServiceSettings, \
    FirewallClientIcmpTypeSettings, FirewallClientHelperSettings
from firewall.errors import FirewallError
from firewall import errors
from firewall.functions import joinArgs, splitArgs
from firewall.core.fw_nm import nm_is_imported, \
    nm_get_connection_of_interface, nm_get_zone_of_connection, \
    nm_set_zone_of_connection, nm_get_interfaces_in_zone
from firewall.core.io.zone import zone_reader
from firewall.core.io.service import service_reader
from firewall.core.io.ipset import ipset_reader
from firewall.core.io.icmptype import icmptype_reader
from firewall.core.io.helper import helper_reader
from firewall.command import FirewallCommand

def __usage():
    sys.stdout.write("""
Usage: firewall-cmd [OPTIONS...]

General Options
  -h, --help           Prints a short help text and exists
  -V, --version        Print the version string of firewalld
  -q, --quiet          Do not print status messages

Status Options
  --state              Return and print firewalld state
  --reload             Reload firewall and keep state information
  --complete-reload    Reload firewall and lose state information
  --runtime-to-permanent
                       Create permanent from runtime configuration
  --check-config       Check permanent configuration for errors

Log Denied Options
  --get-log-denied     Print the log denied value
  --set-log-denied=<value>
                       Set log denied value

Permanent Options
  --permanent          Set an option permanently
                       Usable for options marked with [P]

Zone Options
  --get-default-zone   Print default zone for connections and interfaces
  --set-default-zone=<zone>
                       Set default zone
  --get-active-zones   Print currently active zones
  --get-zones          Print predefined zones [P]
  --get-services       Print predefined services [P]
  --get-icmptypes      Print predefined icmptypes [P]
  --get-zone-of-interface=<interface>
                       Print name of the zone the interface is bound to [P]
  --get-zone-of-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
                       Print name of the zone the source is bound to [P]
  --list-all-zones     List everything added for or enabled in all zones [P]
  --new-zone=<zone>    Add a new zone [P only]
  --new-zone-from-file=<filename> [--name=<zone>]
                       Add a new zone from file with optional name [P only]
  --delete-zone=<zone> Delete an existing zone [P only]
  --load-zone-defaults=<zone>
                       Load zone default settings [P only] [Z]
  --zone=<zone>        Use this zone to set or query options, else default zone
                       Usable for options marked with [Z]
  --get-target         Get the zone target [P only] [Z]
  --set-target=<target>
                       Set the zone target [P only] [Z]
  --info-zone=<zone>   Print information about a zone
  --path-zone=<zone>   Print file path of a zone [P only]

IPSet Options
  --get-ipset-types    Print the supported ipset types
  --new-ipset=<ipset> --type=<ipset type> [--option=<key>[=<value>]]..
                       Add a new ipset [P only]
  --new-ipset-from-file=<filename> [--name=<ipset>]
                       Add a new ipset from file with optional name [P only]
  --delete-ipset=<ipset>
                       Delete an existing ipset [P only]
  --load-ipset-defaults=<ipset>
                       Load ipset default settings [P only]
  --info-ipset=<ipset> Print information about an ipset
  --path-ipset=<ipset> Print file path of an ipset [P only]
  --get-ipsets         Print predefined ipsets
  --ipset=<ipset> --set-description=<description>
                       Set new description to ipset [P only]
  --ipset=<ipset> --get-description
                       Print description for ipset [P only]
  --ipset=<ipset> --set-short=<description>
                       Set new short description to ipset [P only]
  --ipset=<ipset> --get-short
                       Print short description for ipset [P only]
  --ipset=<ipset> --add-entry=<entry>
                       Add a new entry to an ipset [P]
  --ipset=<ipset> --remove-entry=<entry>
                       Remove an entry from an ipset [P]
  --ipset=<ipset> --query-entry=<entry>
                       Return whether ipset has an entry [P]
  --ipset=<ipset> --get-entries
                       List entries of an ipset [P]
  --ipset=<ipset> --add-entries-from-file=<entry>
                       Add a new entries to an ipset [P]
  --ipset=<ipset> --remove-entries-from-file=<entry>
                       Remove entries from an ipset [P]

IcmpType Options
  --new-icmptype=<icmptype>
                       Add a new icmptype [P only]
  --new-icmptype-from-file=<filename> [--name=<icmptype>]
                       Add a new icmptype from file with optional name [P only]
  --delete-icmptype=<icmptype>
                       Delete an existing icmptype [P only]
  --load-icmptype-defaults=<icmptype>
                       Load icmptype default settings [P only]
  --info-icmptype=<icmptype>
                       Print information about an icmptype
  --path-icmptype=<icmptype>
                       Print file path of an icmptype [P only]
  --icmptype=<icmptype> --set-description=<description>
                       Set new description to icmptype [P only]
  --icmptype=<icmptype> --get-description
                       Print description for icmptype [P only]
  --icmptype=<icmptype> --set-short=<description>
                       Set new short description to icmptype [P only]
  --icmptype=<icmptype> --get-short
                       Print short description for icmptype [P only]
  --icmptype=<icmptype> --add-destination=<ipv>
                       Enable destination for ipv in icmptype [P only]
  --icmptype=<icmptype> --remove-destination=<ipv>
                       Disable destination for ipv in icmptype [P only]
  --icmptype=<icmptype> --query-destination=<ipv>
                       Return whether destination ipv is enabled in icmptype [P only]
  --icmptype=<icmptype> --get-destinations
                       List destinations in icmptype [P only]

Service Options
  --new-service=<service>
                       Add a new service [P only]
  --new-service-from-file=<filename> [--name=<service>]
                       Add a new service from file with optional name [P only]
  --delete-service=<service>
                       Delete an existing service [P only]
  --load-service-defaults=<service>
                       Load icmptype default settings [P only]
  --info-service=<service>
                       Print information about a service
  --path-service=<service>
                       Print file path of a service [P only]
  --service=<service> --set-description=<description>
                       Set new description to service [P only]
  --service=<service> --get-description
                       Print description for service [P only]
  --service=<service> --set-short=<description>
                       Set new short description to service [P only]
  --service=<service> --get-short
                       Print short description for service [P only]
  --service=<service> --add-port=<portid>[-<portid>]/<protocol>
                       Add a new port to service [P only]
  --service=<service> --remove-port=<portid>[-<portid>]/<protocol>
                       Remove a port from service [P only]
  --service=<service> --query-port=<portid>[-<portid>]/<protocol>
                       Return whether the port has been added for service [P only]
  --service=<service> --get-ports
                       List ports of service [P only]
  --service=<service> --add-protocol=<protocol>
                       Add a new protocol to service [P only]
  --service=<service> --remove-protocol=<protocol>
                       Remove a protocol from service [P only]
  --service=<service> --query-protocol=<protocol>
                       Return whether the protocol has been added for service [P only]
  --service=<service> --get-protocols
                       List protocols of service [P only]
  --service=<service> --add-source-port=<portid>[-<portid>]/<protocol>
                       Add a new source port to service [P only]
  --service=<service> --remove-source-port=<portid>[-<portid>]/<protocol>
                       Remove a source port from service [P only]
  --service=<service> --query-source-port=<portid>[-<portid>]/<protocol>
                       Return whether the source port has been added for service [P only]
  --service=<service> --get-source-ports
                       List source ports of service [P only]
  --service=<service> --add-helper=<helper>
                       Add a new helper to service [P only]
  --service=<service> --remove-helper=<helper>
                       Remove a helper from service [P only]
  --service=<service> --query-helper=<helper>
                       Return whether the helper has been added for service [P only]
  --service=<service> --get-service-helpers
                       List helpers of service [P only]
  --service=<service> --set-destination=<ipv>:<address>[/<mask>]
                       Set destination for ipv to address in service [P only]
  --service=<service> --remove-destination=<ipv>
                       Disable destination for ipv i service [P only]
  --service=<service> --query-destination=<ipv>:<address>[/<mask>]
                       Return whether destination ipv is set for service [P only]
  --service=<service> --get-destinations
                       List destinations in service [P only]
  --service=<service> --add-include=<service>
                       Add a new include to service [P only]
  --service=<service> --remove-include=<service>
                       Remove a include from service [P only]
  --service=<service> --query-include=<service>
                       Return whether the include has been added for service [P only]
  --service=<service> --get-includes
                       List includes of service [P only]

Options to Adapt and Query Zones
  --list-all           List everything added for or enabled in a zone [P] [Z]
  --list-services      List services added for a zone [P] [Z]
  --timeout=<timeval>  Enable an option for timeval time, where timeval is
                       a number followed by one of letters 's' or 'm' or 'h'
                       Usable for options marked with [T]
  --set-description=<description>
                       Set new description to zone [P only] [Z]
  --get-description    Print description for zone [P only] [Z]
  --set-short=<description>
                       Set new short description to zone [P only] [Z]
  --get-short          Print short description for zone [P only] [Z]
  --add-service=<service>
                       Add a service for a zone [P] [Z] [T]
  --remove-service=<service>
                       Remove a service from a zone [P] [Z]
  --query-service=<service>
                       Return whether service has been added for a zone [P] [Z]
  --list-ports         List ports added for a zone [P] [Z]
  --add-port=<portid>[-<portid>]/<protocol>
                       Add the port for a zone [P] [Z] [T]
  --remove-port=<portid>[-<portid>]/<protocol>
                       Remove the port from a zone [P] [Z]
  --query-port=<portid>[-<portid>]/<protocol>
                       Return whether the port has been added for zone [P] [Z]
  --list-protocols     List protocols added for a zone [P] [Z]
  --add-protocol=<protocol>
                       Add the protocol for a zone [P] [Z] [T]
  --remove-protocol=<protocol>
                       Remove the protocol from a zone [P] [Z]
  --query-protocol=<protocol>
                       Return whether the protocol has been added for zone [P] [Z]
  --list-source-ports  List source ports added for a zone [P] [Z]
  --add-source-port=<portid>[-<portid>]/<protocol>
                       Add the source port for a zone [P] [Z] [T]
  --remove-source-port=<portid>[-<portid>]/<protocol>
                       Remove the source port from a zone [P] [Z]
  --query-source-port=<portid>[-<portid>]/<protocol>
                       Return whether the source port has been added for zone [P] [Z]
  --list-icmp-blocks   List Internet ICMP type blocks added for a zone [P] [Z]
  --add-icmp-block=<icmptype>
                       Add an ICMP block for a zone [P] [Z] [T]
  --remove-icmp-block=<icmptype>
                       Remove the ICMP block from a zone [P] [Z]
  --query-icmp-block=<icmptype>
                       Return whether an ICMP block has been added for a zone
                       [P] [Z]
  --add-icmp-block-inversion
                       Enable inversion of icmp blocks for a zone [P] [Z]
  --remove-icmp-block-inversion
                       Disable inversion of icmp blocks for a zone [P] [Z]
  --query-icmp-block-inversion
                       Return whether inversion of icmp blocks has been enabled
                       for a zone [P] [Z]
  --list-forward-ports List IPv4 forward ports added for a zone [P] [Z]
  --add-forward-port=port=<portid>[-<portid>]:proto=<protocol>[:toport=<portid>[-<portid>]][:toaddr=<address>[/<mask>]]
                       Add the IPv4 forward port for a zone [P] [Z] [T]
  --remove-forward-port=port=<portid>[-<portid>]:proto=<protocol>[:toport=<portid>[-<portid>]][:toaddr=<address>[/<mask>]]
                       Remove the IPv4 forward port from a zone [P] [Z]
  --query-forward-port=port=<portid>[-<portid>]:proto=<protocol>[:toport=<portid>[-<portid>]][:toaddr=<address>[/<mask>]]
                       Return whether the IPv4 forward port has been added for
                       a zone [P] [Z]
  --add-masquerade     Enable IPv4 masquerade for a zone [P] [Z] [T]
  --remove-masquerade  Disable IPv4 masquerade for a zone [P] [Z]
  --query-masquerade   Return whether IPv4 masquerading has been enabled for a
                       zone [P] [Z]
  --list-rich-rules    List rich language rules added for a zone [P] [Z]
  --add-rich-rule=<rule>
                       Add rich language rule 'rule' for a zone [P] [Z] [T]
  --remove-rich-rule=<rule>
                       Remove rich language rule 'rule' from a zone [P] [Z]
  --query-rich-rule=<rule>
                       Return whether a rich language rule 'rule' has been
                       added for a zone [P] [Z]

Options to Handle Bindings of Interfaces
  --list-interfaces    List interfaces that are bound to a zone [P] [Z]
  --add-interface=<interface>
                       Bind the <interface> to a zone [P] [Z]
  --change-interface=<interface>
                       Change zone the <interface> is bound to [P] [Z]
  --query-interface=<interface>
                       Query whether <interface> is bound to a zone [P] [Z]
  --remove-interface=<interface>
                       Remove binding of <interface> from a zone [P] [Z]

Options to Handle Bindings of Sources
  --list-sources       List sources that are bound to a zone [P] [Z]
  --add-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
                       Bind the source to a zone [P] [Z]
  --change-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
                       Change zone the source is bound to [Z]
  --query-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
                       Query whether the source is bound to a zone [P] [Z]
  --remove-source=<source>[/<mask>]|<MAC>|ipset:<ipset>
                       Remove binding of the source from a zone [P] [Z]

Helper Options
  --new-helper=<helper> --module=<module> [--family=<family>]
                       Add a new helper [P only]
  --new-helper-from-file=<filename> [--name=<helper>]
                       Add a new helper from file with optional name [P only]
  --delete-helper=<helper>
                       Delete an existing helper [P only]
  --load-helper-defaults=<helper>
                       Load helper default settings [P only]
  --info-helper=<helper> Print information about an helper
  --path-helper=<helper> Print file path of an helper [P only]
  --get-helpers         Print predefined helpers
  --helper=<helper> --set-description=<description>
                       Set new description to helper [P only]
  --helper=<helper> --get-description
                       Print description for helper [P only]
  --helper=<helper> --set-short=<description>
                       Set new short description to helper [P only]
  --helper=<helper> --get-short
                       Print short description for helper [P only]
  --helper=<helper> --add-port=<portid>[-<portid>]/<protocol>
                       Add a new port to helper [P only]
  --helper=<helper> --remove-port=<portid>[-<portid>]/<protocol>
                       Remove a port from helper [P only]
  --helper=<helper> --query-port=<portid>[-<portid>]/<protocol>
                       Return whether the port has been added for helper [P only]
  --helper=<helper> --get-ports
                       List ports of helper [P only]
  --helper=<helper> --set-module=<module>
                       Set module to helper [P only]
  --helper=<helper> --get-module
                       Get module from helper [P only]
  --helper=<helper> --set-family={ipv4|ipv6|}
                       Set family for helper [P only]
  --helper=<helper> --get-family
                       Get module from helper [P only]

Direct Options
  --direct             First option for all direct options
  --get-all-chains
                       Get all chains [P]
  --get-chains {ipv4|ipv6|eb} <table>
                       Get all chains added to the table [P]
  --add-chain {ipv4|ipv6|eb} <table> <chain>
                       Add a new chain to the table [P]
  --remove-chain {ipv4|ipv6|eb} <table> <chain>
                       Remove the chain from the table [P]
  --query-chain {ipv4|ipv6|eb} <table> <chain>
                       Return whether the chain has been added to the table [P]
  --get-all-rules
                       Get all rules [P]
  --get-rules {ipv4|ipv6|eb} <table> <chain>
                       Get all rules added to chain in table [P]
  --add-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...
                       Add rule to chain in table [P]
  --remove-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...
                       Remove rule with priority from chain in table [P]
  --remove-rules {ipv4|ipv6|eb} <table> <chain>
                       Remove rules from chain in table [P]
  --query-rule {ipv4|ipv6|eb} <table> <chain> <priority> <arg>...
                       Return whether a rule with priority has been added to
                       chain in table [P]
  --passthrough {ipv4|ipv6|eb} <arg>...
                       Pass a command through (untracked by firewalld)
  --get-all-passthroughs
                       Get all tracked passthrough rules [P]
  --get-passthroughs {ipv4|ipv6|eb} <arg>...
                       Get tracked passthrough rules [P]
  --add-passthrough {ipv4|ipv6|eb} <arg>...
                       Add a new tracked passthrough rule [P]
  --remove-passthrough {ipv4|ipv6|eb} <arg>...
                       Remove a tracked passthrough rule [P]
  --query-passthrough {ipv4|ipv6|eb} <arg>...
                       Return whether the tracked passthrough rule has been
                       added [P]

Lockdown Options
  --lockdown-on        Enable lockdown.
  --lockdown-off       Disable lockdown.
  --query-lockdown     Query whether lockdown is enabled

Lockdown Whitelist Options
  --list-lockdown-whitelist-commands
                       List all command lines that are on the whitelist [P]
  --add-lockdown-whitelist-command=<command>
                       Add the command to the whitelist [P]
  --remove-lockdown-whitelist-command=<command>
                       Remove the command from the whitelist [P]
  --query-lockdown-whitelist-command=<command>
                       Query whether the command is on the whitelist [P]
  --list-lockdown-whitelist-contexts
                       List all contexts that are on the whitelist [P]
  --add-lockdown-whitelist-context=<context>
                       Add the context context to the whitelist [P]
  --remove-lockdown-whitelist-context=<context>
                       Remove the context from the whitelist [P]
  --query-lockdown-whitelist-context=<context>
                       Query whether the context is on the whitelist [P]
  --list-lockdown-whitelist-uids
                       List all user ids that are on the whitelist [P]
  --add-lockdown-whitelist-uid=<uid>
                       Add the user id uid to the whitelist [P]
  --remove-lockdown-whitelist-uid=<uid>
                       Remove the user id uid from the whitelist [P]
  --query-lockdown-whitelist-uid=<uid>
                       Query whether the user id uid is on the whitelist [P]
  --list-lockdown-whitelist-users
                       List all user names that are on the whitelist [P]
  --add-lockdown-whitelist-user=<user>
                       Add the user name user to the whitelist [P]
  --remove-lockdown-whitelist-user=<user>
                       Remove the user name user from the whitelist [P]
  --query-lockdown-whitelist-user=<user>
                       Query whether the user name user is on the whitelist [P]

Panic Options
  --panic-on           Enable panic mode
  --panic-off          Disable panic mode
  --query-panic        Query whether panic mode is enabled

""")

def try_set_zone_of_interface(_zone, interface):
    if nm_is_imported():
        try:
            connection = nm_get_connection_of_interface(interface)
        except Exception:
            pass
        else:
            if connection is not None:
                if _zone == nm_get_zone_of_connection(connection):
                    if _zone == "":
                        cmd.print_warning("The interface is under control of NetworkManager and already bound to the default zone")
                    else:
                        cmd.print_warning("The interface is under control of NetworkManager and already bound to '%s'" % _zone)
                if _zone == "":
                    cmd.print_msg("The interface is under control of NetworkManager, setting zone to default.")
                else:
                    cmd.print_msg("The interface is under control of NetworkManager, setting zone to '%s'." % _zone)
                nm_set_zone_of_connection(_zone, connection)
                return True
    return False

def try_get_zone_of_interface(interface):
    if nm_is_imported():
        try:
            connection = nm_get_connection_of_interface(interface)
        except Exception:
            pass
        else:
            if connection is not None:
                return nm_get_zone_of_connection(connection)
    return False

def try_nm_get_interfaces_in_zone(zone):
    if nm_is_imported():
        try:
            return nm_get_interfaces_in_zone(zone)
        except Exception:
            pass
    return []

parser = argparse.ArgumentParser(usage="see firewall-cmd man page",
                                 add_help=False)

parser_group_output = parser.add_mutually_exclusive_group()
parser_group_output.add_argument("-v", "--verbose", action="store_true")
parser_group_output.add_argument("-q", "--quiet", action="store_true")

parser_group_standalone = parser.add_mutually_exclusive_group()
parser_group_standalone.add_argument("-h", "--help",
                                     action="store_true")
parser_group_standalone.add_argument("-V", "--version", action="store_true")
parser_group_standalone.add_argument("--state", action="store_true")
parser_group_standalone.add_argument("--reload", action="store_true")
parser_group_standalone.add_argument("--complete-reload", action="store_true")
parser_group_standalone.add_argument("--runtime-to-permanent",
                                     action="store_true")
parser_group_standalone.add_argument("--check-config", action="store_true")
parser_group_standalone.add_argument("--get-ipset-types", action="store_true")
parser_group_standalone.add_argument("--get-log-denied", action="store_true")
parser_group_standalone.add_argument("--set-log-denied", metavar="<value>")
parser_group_standalone.add_argument("--get-automatic-helpers", action="store_true")
parser_group_standalone.add_argument("--set-automatic-helpers", metavar="<value>")
parser_group_standalone.add_argument("--panic-on", action="store_true")
parser_group_standalone.add_argument("--panic-off", action="store_true")
parser_group_standalone.add_argument("--query-panic", action="store_true")
parser_group_standalone.add_argument("--lockdown-on", action="store_true")
parser_group_standalone.add_argument("--lockdown-off", action="store_true")
parser_group_standalone.add_argument("--query-lockdown", action="store_true")

parser_group_standalone.add_argument("--get-default-zone", action="store_true")
parser_group_standalone.add_argument("--set-default-zone", metavar="<zone>")
parser_group_standalone.add_argument("--get-zones", action="store_true")
parser_group_standalone.add_argument("--get-services", action="store_true")
parser_group_standalone.add_argument("--get-icmptypes", action="store_true")
parser_group_standalone.add_argument("--get-active-zones", action="store_true")
parser_group_standalone.add_argument("--get-zone-of-interface", metavar="<iface>", action='append')
parser_group_standalone.add_argument("--get-zone-of-source", metavar="<source>", action='append')
parser_group_standalone.add_argument("--list-all-zones", action="store_true")

parser_group_standalone.add_argument("--info-zone", metavar="<zone>")
parser_group_standalone.add_argument("--info-service", metavar="<service>")
parser_group_standalone.add_argument("--info-icmptype", metavar="<icmptype>")
parser_group_standalone.add_argument("--info-ipset", metavar="<ipset>")
parser_group_standalone.add_argument("--info-helper", metavar="<helper>")

parser_group_config = parser.add_mutually_exclusive_group()
parser_group_config.add_argument("--new-icmptype", metavar="<icmptype>")
parser_group_config.add_argument("--new-icmptype-from-file", metavar="<filename>")
parser_group_config.add_argument("--delete-icmptype", metavar="<icmptype>")
parser_group_config.add_argument("--load-icmptype-defaults",
                                 metavar="<icmptype>")
parser_group_config.add_argument("--new-service", metavar="<service>")
parser_group_config.add_argument("--new-service-from-file", metavar="<filename>")
parser_group_config.add_argument("--delete-service", metavar="<service>")
parser_group_config.add_argument("--load-service-defaults", metavar="<service>")
parser_group_config.add_argument("--new-zone", metavar="<zone>")
parser_group_config.add_argument("--new-zone-from-file", metavar="<filename>")
parser_group_config.add_argument("--delete-zone", metavar="<zone>")
parser_group_config.add_argument("--load-zone-defaults", metavar="<zone>")
parser_group_config.add_argument("--new-ipset", metavar="<ipset>")
parser_group_config.add_argument("--new-ipset-from-file", metavar="<filename>")
parser_group_config.add_argument("--delete-ipset", metavar="<ipset>")
parser_group_config.add_argument("--load-ipset-defaults", metavar="<ipset>")
parser_group_config.add_argument("--new-helper", metavar="<helper>")
parser_group_config.add_argument("--new-helper-from-file", metavar="<filename>")
parser_group_config.add_argument("--delete-helper", metavar="<helper>")
parser_group_config.add_argument("--load-helper-defaults", metavar="<helper>")

parser_group_config.add_argument("--path-zone", metavar="<zone>")
parser_group_config.add_argument("--path-service", metavar="<service>")
parser_group_config.add_argument("--path-icmptype", metavar="<icmptype>")
parser_group_config.add_argument("--path-ipset", metavar="<ipset>")
parser_group_config.add_argument("--path-helper", metavar="<helper>")

parser.add_argument("--name", default="", metavar="<name>")

parser_group_lockdown_whitelist = parser.add_mutually_exclusive_group()
parser_group_lockdown_whitelist.add_argument("--list-lockdown-whitelist-commands", action="store_true")
parser_group_lockdown_whitelist.add_argument("--add-lockdown-whitelist-command", metavar="<command>", action='append')
parser_group_lockdown_whitelist.add_argument("--remove-lockdown-whitelist-command", metavar="<command>", action='append')
parser_group_lockdown_whitelist.add_argument("--query-lockdown-whitelist-command", metavar="<command>", action='append')

parser_group_lockdown_whitelist.add_argument("--list-lockdown-whitelist-contexts", action="store_true")
parser_group_lockdown_whitelist.add_argument("--add-lockdown-whitelist-context", metavar="<context>", action='append')
parser_group_lockdown_whitelist.add_argument("--remove-lockdown-whitelist-context", metavar="<context>", action='append')
parser_group_lockdown_whitelist.add_argument("--query-lockdown-whitelist-context", metavar="<context>", action='append')

parser_group_lockdown_whitelist.add_argument("--list-lockdown-whitelist-uids", action="store_true")
parser_group_lockdown_whitelist.add_argument("--add-lockdown-whitelist-uid", metavar="<uid>", type=int, action='append')
parser_group_lockdown_whitelist.add_argument("--remove-lockdown-whitelist-uid", metavar="<uid>", type=int, action='append')
parser_group_lockdown_whitelist.add_argument("--query-lockdown-whitelist-uid", metavar="<uid>", type=int, action='append')

parser_group_lockdown_whitelist.add_argument("--list-lockdown-whitelist-users", action="store_true")
parser_group_lockdown_whitelist.add_argument("--add-lockdown-whitelist-user", metavar="<user>", action='append')
parser_group_lockdown_whitelist.add_argument("--remove-lockdown-whitelist-user", metavar="<user>", action='append')
parser_group_lockdown_whitelist.add_argument("--query-lockdown-whitelist-user", metavar="<user>", action='append')

parser.add_argument("--permanent", action="store_true")
parser.add_argument("--zone", default="", metavar="<zone>")
parser.add_argument("--timeout", default="0", metavar="<seconds>")

parser_group_zone = parser.add_mutually_exclusive_group()
parser_group_zone.add_argument("--add-interface", metavar="<iface>", action='append')
parser_group_zone.add_argument("--remove-interface", metavar="<iface>", action='append')
parser_group_zone.add_argument("--query-interface", metavar="<iface>", action='append')
parser_group_zone.add_argument("--change-interface", "--change-zone", metavar="<iface>", action='append')
parser_group_zone.add_argument("--list-interfaces", action="store_true")
parser_group_zone.add_argument("--add-source", metavar="<source>", action='append')
parser_group_zone.add_argument("--remove-source", metavar="<source>", action='append')
parser_group_zone.add_argument("--query-source", metavar="<source>", action='append')
parser_group_zone.add_argument("--change-source", metavar="<source>", action='append')
parser_group_zone.add_argument("--list-sources", action="store_true")
parser_group_zone.add_argument("--add-rich-rule", metavar="<rule>", action='append')
parser_group_zone.add_argument("--remove-rich-rule", metavar="<rule>", action='append')
parser_group_zone.add_argument("--query-rich-rule", metavar="<rule>", action='append')
parser_group_zone.add_argument("--add-service", metavar="<service>", action='append')
parser_group_zone.add_argument("--remove-service", metavar="<zone>", action='append')
parser_group_zone.add_argument("--query-service", metavar="<zone>", action='append')
parser_group_zone.add_argument("--add-port", metavar="<port>", action='append')
parser_group_zone.add_argument("--remove-port", metavar="<port>", action='append')
parser_group_zone.add_argument("--query-port", metavar="<port>", action='append')
parser_group_zone.add_argument("--add-protocol", metavar="<protocol>", action='append')
parser_group_zone.add_argument("--remove-protocol", metavar="<protocol>", action='append')
parser_group_zone.add_argument("--query-protocol", metavar="<protocol>", action='append')
parser_group_zone.add_argument("--add-source-port", metavar="<port>", action='append')
parser_group_zone.add_argument("--remove-source-port", metavar="<port>", action='append')
parser_group_zone.add_argument("--query-source-port", metavar="<port>", action='append')
parser_group_zone.add_argument("--add-masquerade", action="store_true")
parser_group_zone.add_argument("--remove-masquerade", action="store_true")
parser_group_zone.add_argument("--query-masquerade", action="store_true")
parser_group_zone.add_argument("--add-icmp-block", metavar="<icmptype>", action='append')
parser_group_zone.add_argument("--remove-icmp-block", metavar="<icmptype>", action='append')
parser_group_zone.add_argument("--query-icmp-block", metavar="<icmptype>", action='append')
parser_group_zone.add_argument("--add-icmp-block-inversion", action="store_true")
parser_group_zone.add_argument("--remove-icmp-block-inversion", action="store_true")
parser_group_zone.add_argument("--query-icmp-block-inversion", action="store_true")
parser_group_zone.add_argument("--add-forward-port", metavar="<port>", action='append')
parser_group_zone.add_argument("--remove-forward-port", metavar="<port>", action='append')
parser_group_zone.add_argument("--query-forward-port", metavar="<port>", action='append')
parser_group_zone.add_argument("--list-rich-rules", action="store_true")
parser_group_zone.add_argument("--list-services", action="store_true")
parser_group_zone.add_argument("--list-ports", action="store_true")
parser_group_zone.add_argument("--list-protocols", action="store_true")
parser_group_zone.add_argument("--list-icmp-blocks", action="store_true")
parser_group_zone.add_argument("--list-forward-ports", action="store_true")
parser_group_zone.add_argument("--list-source-ports", action="store_true")
parser_group_zone.add_argument("--list-all", action="store_true")
parser_group_zone.add_argument("--get-target", action="store_true")
parser_group_zone.add_argument("--set-target", metavar="<target>")

parser.add_argument("--option", metavar="<key>[=<value>]", action='append')
parser.add_argument("--type", metavar="<ipsettype>")
parser.add_argument("--ipset", metavar="<ipset>")

parser_ipset = parser.add_mutually_exclusive_group()
#parser_ipset.add_argument("--add-option", metavar="<key>[=<value>]")
#parser_ipset.add_argument("--remove-option", metavar="<key>[=<value>]")
#parser_ipset.add_argument("--query-option", metavar="<key>[=<value>]")
#parser_ipset.add_argument("--get-options", action="store_true")

parser_ipset.add_argument("--get-ipsets", action="store_true")
parser_ipset.add_argument("--add-entry", metavar="<entry>", action='append')
parser_ipset.add_argument("--remove-entry", metavar="<entry>", action='append')
parser_ipset.add_argument("--query-entry", metavar="<entry>", action='append')
parser_ipset.add_argument("--get-entries", action="store_true")
parser_ipset.add_argument("--add-entries-from-file", metavar="<filename>", action='append')
parser_ipset.add_argument("--remove-entries-from-file", metavar="<filename>", action='append')

parser.add_argument("--icmptype", metavar="<icmptype>")

parser_icmptype = parser.add_mutually_exclusive_group()
parser_icmptype.add_argument("--add-destination", metavar="<ipv>", action='append')
parser_icmptype.add_argument("--remove-destination", metavar="<ipv>", action='append')
parser_icmptype.add_argument("--query-destination", metavar="<ipv>", action='append')
parser_icmptype.add_argument("--get-destinations", action="store_true")

parser.add_argument("--service", metavar="<service>")

parser_service = parser.add_mutually_exclusive_group()
parser_service.add_argument("--get-ports", action="store_true")
parser_service.add_argument("--get-source-ports", action="store_true")
parser_service.add_argument("--get-protocols", action="store_true")

parser_service.add_argument("--add-module", metavar="<module>", action='append')
parser_service.add_argument("--remove-module", metavar="<module>", action='append')
parser_service.add_argument("--query-module", metavar="<module>", action='append')
parser_service.add_argument("--get-modules", action="store_true")

parser_service.add_argument("--add-helper", metavar="<helper>", action='append')
parser_service.add_argument("--remove-helper", metavar="<helper>", action='append')
parser_service.add_argument("--query-helper", metavar="<helper>", action='append')
parser_service.add_argument("--get-service-helpers", action="store_true")

parser_service.add_argument("--add-include", metavar="<service>", action='append')
parser_service.add_argument("--remove-include", metavar="<service>", action='append')
parser_service.add_argument("--query-include", metavar="<service>", action='append')
parser_service.add_argument("--get-includes", action="store_true")

parser_service.add_argument("--set-destination", metavar="<destination>", action='append')
parser_service.add_argument("--get-destination", action="store_true")

parser_service.add_argument("--set-description", metavar="<description>")
parser_service.add_argument("--get-description", action="store_true")

parser_service.add_argument("--set-short", metavar="<description>")
parser_service.add_argument("--get-short", action="store_true")

parser.add_argument("--helper", metavar="<helper>")
parser.add_argument("--family", metavar="<family>")
parser.add_argument("--module", metavar="<module>")

parser_helper = parser.add_mutually_exclusive_group()
#parser_helper.add_argument("--get-ports", action="store_true")
parser_helper.add_argument("--get-helpers", action="store_true")
parser_helper.add_argument("--set-module", metavar="<module>")
parser_helper.add_argument("--get-module", action="store_true")
#parser_helper.add_argument("--query-module", metavar="<module>")
parser_helper.add_argument("--set-family", metavar="<family>|''", nargs="*")
parser_helper.add_argument("--get-family", action="store_true")

parser.add_argument("--direct", action="store_true")

# not possible to have sequences of options here
parser_direct = parser.add_mutually_exclusive_group()
parser_direct.add_argument("--passthrough", nargs=argparse.REMAINDER,
                           metavar=("{ ipv4 | ipv6 | eb }", "<args>"))
parser_direct.add_argument("--add-passthrough", nargs=argparse.REMAINDER,
                           metavar=("{ ipv4 | ipv6 | eb }", "<args>"))
parser_direct.add_argument("--remove-passthrough", nargs=argparse.REMAINDER,
                           metavar=("{ ipv4 | ipv6 | eb }", "<args>"))
parser_direct.add_argument("--query-passthrough", nargs=argparse.REMAINDER,
                           metavar=("{ ipv4 | ipv6 | eb }", "<args>"))
parser_direct.add_argument("--get-passthroughs", nargs=1,
                           metavar=("{ ipv4 | ipv6 | eb }"))
parser_direct.add_argument("--get-all-passthroughs", action="store_true")
parser_direct.add_argument("--add-chain", nargs=3,
                           metavar=("{ ipv4 | ipv6 | eb }", "<table>", "<chain>"))
parser_direct.add_argument("--remove-chain", nargs=3,
                           metavar=("{ ipv4 | ipv6 | eb }", "<table>", "<chain>"))
parser_direct.add_argument("--query-chain", nargs=3,
                           metavar=("{ ipv4 | ipv6 | eb }", "<table>", "<chain>"))
parser_direct.add_argument("--get-all-chains", action="store_true")
parser_direct.add_argument("--get-chains", nargs=2,
                           metavar=("{ ipv4 | ipv6 | eb }", "<table>"))
parser_direct.add_argument("--add-rule", nargs=argparse.REMAINDER,
                           metavar=("{ ipv4 | ipv6 | eb }", "<table> <chain> <priority> <args>"))
parser_direct.add_argument("--remove-rule", nargs=argparse.REMAINDER,
                           metavar=("{ ipv4 | ipv6 | eb }", "<table> <chain> <priority> <args>"))
parser_direct.add_argument("--remove-rules", nargs=3,
                           metavar=("{ ipv4 | ipv6 | eb }", "<table> <chain>"))
parser_direct.add_argument("--query-rule", nargs=argparse.REMAINDER,
                           metavar=("{ ipv4 | ipv6 | eb }", "<table> <chain> <priority> <args>"))
parser_direct.add_argument("--get-rules", nargs=3,
                           metavar=("{ ipv4 | ipv6 | eb }", "<table>", "<chain>"))
parser_direct.add_argument("--get-all-rules", action="store_true")

##############################################################################

args = sys.argv[1:]

if len(sys.argv) > 1:
    i = -1
    if '--passthrough' in args:
        i = args.index('--passthrough') + 1
    elif '--add-passthrough' in args:
        i = args.index('--add-passthrough') + 1
    elif '--remove-passthrough' in args:
        i = args.index('--remove-passthrough') + 1
    elif '--query-passthrough' in args:
        i = args.index('--query-passthrough') + 1
    elif '--add-rule' in args:
        i = args.index('--add-rule') + 4
    elif '--remove-rule' in args:
        i = args.index('--remove-rule') + 4
    elif '--query-rule' in args:
        i = args.index('--query-rule') + 4
    # join <args> into one argument to prevent parser from parsing each iptables
    # option, because they can conflict with firewall-cmd options
    # # e.g. --delete (iptables) and --delete-* (firewall-cmd)
    if (i > -1) and (i < len(args) - 1):
        aux_args = args[:]
        args = aux_args[:i+1] # all but not <args>
        args.append(joinArgs(aux_args[i+1:])) # add <args> as one arg

a = parser.parse_args(args)

options_standalone = a.help or a.version or \
    a.state or a.reload or a.complete_reload or a.runtime_to_permanent or \
    a.panic_on or a.panic_off or a.query_panic or \
    a.lockdown_on or a.lockdown_off or a.query_lockdown or \
    a.get_default_zone or a.set_default_zone or \
    a.get_active_zones or a.get_ipset_types or \
    a.get_log_denied or a.set_log_denied or \
    a.get_automatic_helpers or a.set_automatic_helpers or a.check_config

options_desc_xml_file = a.set_description or a.get_description or \
                        a.set_short or a.get_short

options_lockdown_whitelist = \
    a.list_lockdown_whitelist_commands or a.add_lockdown_whitelist_command or \
    a.remove_lockdown_whitelist_command or \
    a.query_lockdown_whitelist_command or \
    a.list_lockdown_whitelist_contexts or a.add_lockdown_whitelist_context or \
    a.remove_lockdown_whitelist_context or \
    a.query_lockdown_whitelist_context or \
    a.list_lockdown_whitelist_uids or a.add_lockdown_whitelist_uid is not None or \
    a.remove_lockdown_whitelist_uid is not None or \
    a.query_lockdown_whitelist_uid is not None or \
    a.list_lockdown_whitelist_users or a.add_lockdown_whitelist_user or \
    a.remove_lockdown_whitelist_user or \
    a.query_lockdown_whitelist_user

options_config = a.get_zones or a.get_services or a.get_icmptypes or \
                 options_lockdown_whitelist or a.list_all_zones or \
                 a.get_zone_of_interface or a.get_zone_of_source or \
                 a.info_zone or a.info_icmptype or a.info_service or \
                 a.info_ipset or a.get_ipsets or a.info_helper or \
                 a.get_helpers

options_zone_action_action = \
    a.add_service or a.remove_service or a.query_service or \
    a.add_port or a.remove_port or a.query_port or \
    a.add_protocol or a.remove_protocol or a.query_protocol or \
    a.add_source_port or a.remove_source_port or a.query_source_port or \
    a.add_icmp_block or a.remove_icmp_block or a.query_icmp_block or \
    a.add_forward_port or a.remove_forward_port or a.query_forward_port

options_zone_interfaces_sources = \
    a.list_interfaces or a.change_interface or \
    a.add_interface or a.remove_interface or a.query_interface or \
    a.list_sources or a.change_source or \
    a.add_source or a.remove_source or a.query_source

options_zone_adapt_query = \
    a.add_rich_rule or a.remove_rich_rule or a.query_rich_rule or \
    a.add_masquerade or a.remove_masquerade or a.query_masquerade or \
    a.list_services or a.list_ports or a.list_protocols or \
    a.list_source_ports or \
    a.list_icmp_blocks or a.list_forward_ports or a.list_rich_rules or \
    a.add_icmp_block_inversion or a.remove_icmp_block_inversion or \
    a.query_icmp_block_inversion or \
    a.list_all or a.get_target or a.set_target

options_zone_ops = options_zone_interfaces_sources or \
                   options_zone_action_action or options_zone_adapt_query

options_zone = a.zone or a.timeout != "0" or options_zone_ops or \
               options_desc_xml_file

options_ipset = a.add_entry or a.remove_entry or a.query_entry or \
                a.get_entries or a.add_entries_from_file or \
                a.remove_entries_from_file or options_desc_xml_file

options_icmptype = a.add_destination or a.remove_destination or \
                   a.query_destination or a.get_destinations or \
                   options_desc_xml_file

options_service = a.add_port or a.remove_port or a.query_port or \
                  a.get_ports or \
                  a.add_protocol or a.remove_protocol or a.query_protocol or \
                  a.get_protocols or \
                  a.add_source_port or a.remove_source_port or \
                  a.query_source_port or a.get_source_ports or \
                  a.add_module or a.remove_module or a.query_module or \
                  a.get_modules or \
                  a.set_destination or a.remove_destination or \
                  a.query_destination or a.get_destinations or \
                  options_desc_xml_file or \
                  a.add_include or a.remove_include or a.query_include or \
                  a.get_includes or \
                  a.add_helper or a.remove_helper or a.query_helper or \
                  a.get_service_helpers

options_helper = a.add_port or a.remove_port or a.query_port or \
                 a.get_ports or a.set_module or a.get_module or \
                 a.set_family or a.get_family or \
                 options_desc_xml_file

options_permanent = a.permanent or options_config or \
                    a.zone or options_zone_ops or \
                    a.ipset or options_ipset or \
                    a.helper or options_helper

options_permanent_only = a.new_icmptype or a.delete_icmptype or \
                         a.new_icmptype_from_file or \
                         a.load_icmptype_defaults or \
                         a.new_service or a.delete_service or \
                         a.new_service_from_file or \
                         a.load_service_defaults or \
                         a.new_zone or a.delete_zone or \
                         a.new_zone_from_file or \
                         a.load_zone_defaults or \
                         a.new_ipset or a.delete_ipset or \
                         a.new_ipset_from_file or \
                         a.load_ipset_defaults or \
                         a.new_helper or a.delete_helper or \
                         a.new_helper_from_file or \
                         a.load_helper_defaults or \
                         (a.icmptype and options_icmptype) or \
                         (a.service and options_service) or \
                         (a.helper and options_helper) or \
                         a.path_zone or a.path_icmptype or a.path_service or \
                         a.path_ipset or a.path_helper or options_desc_xml_file

options_direct = a.passthrough or \
           a.add_chain or a.remove_chain or a.query_chain or \
           a.get_chains or a.get_all_chains or \
           a.add_rule or a.remove_rule or a.remove_rules or a.query_rule or \
           a.get_rules or a.get_all_rules or \
           a.add_passthrough or a.remove_passthrough or a.query_passthrough or \
           a.get_passthroughs or a.get_all_passthroughs

options_require_permanent = options_permanent_only or \
                            a.get_target or a.set_target

# these are supposed to only write out some output
options_list_get = a.help or a.version or a.list_all or a.list_all_zones or \
 a.list_lockdown_whitelist_commands or a.list_lockdown_whitelist_contexts or \
 a.list_lockdown_whitelist_uids or a.list_lockdown_whitelist_users or \
 a.list_services or a.list_ports or a.list_protocols or a.list_icmp_blocks or \
 a.list_forward_ports or a.list_rich_rules or a.list_interfaces or \
 a.list_sources or a.get_default_zone or a.get_active_zones or \
 a.get_zone_of_interface or a.get_zone_of_source or a.get_zones or \
 a.get_services or a.get_icmptypes or a.get_target or \
 a.info_zone or a.info_icmptype or a.info_service or \
 a.info_ipset or a.get_ipsets or a.get_entries or \
 a.info_helper or a.get_helpers or \
 a.get_destinations or a.get_description

# Set quiet and verbose

cmd = FirewallCommand(a.quiet, a.verbose)

def myexcepthook(exctype, value, traceback):
    cmd.exception_handler(str(value))
sys.excepthook = myexcepthook

# Check various impossible combinations of options

if not (options_standalone or options_ipset or \
        options_icmptype or options_service or options_helper or \
        options_config or options_zone_ops or \
        options_direct or options_permanent_only):
    cmd.fail(parser.format_usage() + "No option specified.")

if options_standalone and (options_zone or options_permanent or \
                           options_direct or options_permanent_only or\
                           options_ipset):
    cmd.fail(parser.format_usage() +
             "Can't use stand-alone options with other options.")

if options_ipset and not options_desc_xml_file and not a.ipset:
    cmd.fail(parser.format_usage() + "No ipset specified.")

if (options_icmptype and not a.icmptype) and \
   not (options_service and a.service) and not options_desc_xml_file:
    cmd.fail(parser.format_usage() + "No icmptype specified.")

if (options_helper and not a.helper) and \
   not (options_service and a.service) and \
   not options_zone and not options_desc_xml_file:
    cmd.fail(parser.format_usage() + "No helper specified.")

if (options_direct or options_permanent_only) and \
   (options_zone and not a.zone) and (options_service and not a.service) and \
   (options_icmptype and a.icmptype) and not options_desc_xml_file:
    cmd.fail(parser.format_usage() + "Can't be used with --zone.")

if (a.direct and not options_direct) or (options_direct and not a.direct):
    cmd.fail(parser.format_usage() +
             "Wrong usage of 'direct' options.")

if a.name and not (a.new_zone_from_file or a.new_service_from_file or \
                   a.new_ipset_from_file or a.new_icmptype_from_file or \
                   a.new_helper_from_file):
    cmd.fail(parser.format_usage() + "Wrong usage of '--name' option.")

if options_require_permanent and not a.permanent:
    cmd.fail(parser.format_usage() +
             "Option can be used only with --permanent.")

if options_config and options_zone:
    cmd.fail(parser.format_usage() +
             "Wrong usage of --get-zones | --get-services | --get-icmptypes.")

if a.timeout != "0":
    value = 0
    unit = 's'
    if len(a.timeout) < 1:
        cmd.fail(parser.format_usage() +
                 "'%s' is wrong timeout value. Use for example '2m' or '1h'" % a.timeout)
    elif len(a.timeout) == 1:
        if a.timeout.isdigit():
            value = int (a.timeout[0])
        else:
            cmd.fail(parser.format_usage() +
                     "'%s' is wrong timeout value. Use for example '2m' or '1h'" % a.timeout)
    elif len(a.timeout) > 1:
        if a.timeout.isdigit():
            value = int(a.timeout)
            unit = 's'
        else:
            if a.timeout[:-1].isdigit():
                value = int (a.timeout[:-1])
            else:
                cmd.fail(parser.format_usage() +
                         "'%s' is wrong timeout value. Use for example '2m' or '1h'" % a.timeout)
            unit = a.timeout[-1:].lower()
    if unit == 's':
        a.timeout = value
    elif unit == 'm':
        a.timeout = value * 60
    elif unit == 'h':
        a.timeout = value * 60 * 60
    else:
        cmd.fail(parser.format_usage() +
                 "'%s' is wrong timeout value. Use for example '2m' or '1h'" % a.timeout)
else:
    a.timeout = 0

if a.timeout and not (a.add_service or a.add_port or a.add_protocol or \
                      a.add_icmp_block or a.add_forward_port or \
                      a.add_source_port or a.add_masquerade or a.add_rich_rule):
    cmd.fail(parser.format_usage() + "Wrong --timeout usage")

if a.permanent:
    if a.timeout:
        cmd.fail(parser.format_usage() +
                 "Can't specify timeout for permanent action.")
    if options_config and not a.zone:
        pass
    elif options_permanent:
        pass
    else:
        cmd.fail(parser.format_usage() + "Wrong --permanent usage.")

if a.quiet and options_list_get:
    # it makes no sense to use --quiet with these options
    a.quiet = False
    cmd.set_quiet(a.quiet)
    cmd.fail("-q/--quiet can't be used with this option(s)")

if a.help:
    __usage()
    sys.exit(0)

zone = a.zone

try:
    fw = FirewallClient()
except FirewallError as msg:
    code = FirewallError.get_code(str(msg))
    cmd.print_and_exit("Error: %s" % msg, code)

fw.setExceptionHandler(cmd.exception_handler)
if not fw.connected:
    if a.state:
        cmd.print_and_exit ("not running", errors.NOT_RUNNING)
    else:
        cmd.print_and_exit ("FirewallD is not running", errors.NOT_RUNNING)
cmd.set_fw(fw)

if options_zone_ops and not zone and not \
   (a.service and options_service) and not \
   (a.helper and options_helper):
    default = fw.getDefaultZone()
    cmd.print_if_verbose("No zone specified, using default zone, i.e. '%s'" % default)
    active = list(fw.getActiveZones().keys())
    if active and default not in active:
        cmd.print_msg("""You're performing an operation over default zone ('%s'),
but your connections/interfaces are in zone '%s' (see --get-active-zones)
You most likely need to use --zone=%s option.\n""" % (default, ",".join(active), active[0]))

if a.permanent:
    if a.get_ipsets:
        cmd.print_and_exit(" ".join(fw.config().getIPSetNames()))

    elif a.new_ipset:
        if not a.type:
            cmd.fail(parser.format_usage() + "No type specified.")

        settings = FirewallClientIPSetSettings()
        settings.setType(a.type)
        if a.option:
            for opt in a.option:
                settings.addOption(*cmd.parse_ipset_option(opt))
        if a.family:
            settings.addOption("family", a.family)
        config = fw.config()
        config.addIPSet(a.new_ipset, settings)

    elif a.new_ipset_from_file:
        filename = os.path.basename(a.new_ipset_from_file)
        dirname = os.path.dirname(a.new_ipset_from_file)
        if dirname == "":
            dirname = "./"
        try:
            obj = ipset_reader(filename, dirname)
        except FirewallError as msg:
            cmd.fail("Failed to load ipset file '%s': %s" % \
                   (a.new_ipset_from_file, msg))
        except IOError as msg:
            cmd.fail("Failed to load ipset file: %s" % msg)

        if a.name:
            obj.name = a.name

        config = fw.config()
        config.addIPSet(obj.name, obj.export_config())

    elif a.delete_ipset:
        ipset = fw.config().getIPSetByName(a.delete_ipset)
        ipset.remove()

    elif a.load_ipset_defaults:
        ipset = fw.config().getIPSetByName(a.load_ipset_defaults)
        ipset.loadDefaults()

    elif a.info_ipset:
        ipset = fw.config().getIPSetByName(a.info_ipset)
        cmd.print_ipset_info(a.info_ipset, ipset.getSettings())
        sys.exit(0)

    elif a.path_ipset:
        ipset = fw.config().getIPSetByName(a.path_ipset)
        cmd.print_and_exit("%s/%s" % (ipset.get_property("path"),
                                      ipset.get_property("filename")))

    elif a.ipset:
        ipset = fw.config().getIPSetByName(a.ipset)
        settings = ipset.getSettings()

        if a.add_entry:
            cmd.add_sequence(a.add_entry, settings.addEntry,
                             settings.queryEntry, None, "'%s'")
            ipset.update(settings)

        elif a.remove_entry:
            cmd.remove_sequence(a.remove_entry, settings.removeEntry,
                                settings.queryEntry, None, "'%s'")
            ipset.update(settings)

        elif a.query_entry:
            cmd.query_sequence(a.query_entry, settings.queryEntry, None, "'%s'")

        elif a.get_entries:
            l = settings.getEntries()
            cmd.print_and_exit("\n".join(l))

        elif a.add_entries_from_file:
            changed = False

            for filename in a.add_entries_from_file:
                try:
                    entries = cmd.get_ipset_entries_from_file(filename)
                except IOError as msg:
                    message = "Failed to read file '%s': %s" % (filename, msg)
                    if len(a.add_entries_from_file) > 1:
                        cmd.print_warning(message)
                    else:
                        cmd.print_and_exit(message)
                else:
                    old_entries = settings.getEntries()
                    entries_set = set()
                    for entry in old_entries:
                        entries_set.add(entry)
                    for entry in entries:
                        if entry not in entries_set:
                            old_entries.append(entry)
                            entries_set.add(entry)
                            changed = True
                        else:
                            cmd.print_if_verbose(
                                "Warning: ALREADY_ENABLED: %s" % entry)
                    if changed:
                        settings.setEntries(old_entries)
            if changed:
                ipset.update(settings)

        elif a.remove_entries_from_file:
            changed = False

            for filename in a.remove_entries_from_file:
                try:
                    entries = cmd.get_ipset_entries_from_file(filename)
                except IOError as msg:
                    message = "Failed to read file '%s': %s" % (filename, msg)
                    if len(a.remove_entries_from_file) > 1:
                        cmd.print_warning(message)
                    else:
                        cmd.print_and_exit(message)
                else:
                    old_entries = settings.getEntries()
                    entries_set = set()
                    for entry in old_entries:
                        entries_set.add(entry)
                    for entry in entries:
                        if entry in entries_set:
                            old_entries.remove(entry)
                            entries_set.discard(entry)
                            changed = True
                        else:
                            cmd.print_if_verbose("Warning: NOT_ENABLED: %s" % entry)
                    if changed:
                        settings.setEntries(old_entries)
            if changed:
                ipset.update(settings)

        elif a.set_description:
            settings.setDescription(a.set_description)
            ipset.update(settings)

        elif a.get_description:
            cmd.print_and_exit(settings.getDescription())

        elif a.set_short:
            settings.setShort(a.set_short)
            ipset.update(settings)

        elif a.get_short:
            cmd.print_and_exit(settings.getShort())

        else:
            cmd.fail(parser.format_usage() + "Unknown option")

    elif a.get_zones:
        cmd.print_and_exit(" ".join(fw.config().getZoneNames()))

    elif a.new_zone:
        config = fw.config()
        config.addZone(a.new_zone, FirewallClientZoneSettings())

    elif a.new_zone_from_file:
        filename = os.path.basename(a.new_zone_from_file)
        dirname = os.path.dirname(a.new_zone_from_file)
        if dirname == "":
            dirname = "./"
        try:
            obj = zone_reader(filename, dirname)
        except FirewallError as msg:
            cmd.fail("Failed to load zone file '%s': %s" % \
                   (a.new_zone_from_file, msg))
        except IOError as msg:
            cmd.fail("Failed to load zone file: %s" % msg)

        if a.name:
            obj.name = a.name

        config = fw.config()
        config.addZone(obj.name, obj.export_config())

    elif a.delete_zone:
        zone = fw.config().getZoneByName(a.delete_zone)
        zone.remove()

    elif a.load_zone_defaults:
        zone = fw.config().getZoneByName(a.load_zone_defaults)
        zone.loadDefaults()

    elif a.info_zone:
        zone = fw.config().getZoneByName(a.info_zone)
        cmd.print_zone_info(a.info_zone, zone.getSettings(), True)
        sys.exit(0)

    elif a.path_zone:
        zone = fw.config().getZoneByName(a.path_zone)
        cmd.print_and_exit("%s/%s" % (zone.get_property("path"),
                                      zone.get_property("filename")))

    elif a.get_services:
        cmd.print_and_exit(" ".join(fw.config().getServiceNames()))

    elif a.new_service:
        config = fw.config()
        config.addService(a.new_service, FirewallClientServiceSettings())

    elif a.new_service_from_file:
        filename = os.path.basename(a.new_service_from_file)
        dirname = os.path.dirname(a.new_service_from_file)
        if dirname == "":
            dirname = "./"
        try:
            obj = service_reader(filename, dirname)
        except FirewallError as msg:
            cmd.fail("Failed to load service file '%s': %s" % \
                     (a.new_service_from_file, msg))
        except IOError as msg:
            cmd.fail("Failed to load service file: %s" % msg)

        if a.name:
            obj.name = a.name

        config = fw.config()
        config.addService(obj.name, obj.export_config())

    elif a.delete_service:
        service = fw.config().getServiceByName(a.delete_service)
        service.remove()

    elif a.load_service_defaults:
        service = fw.config().getServiceByName(a.load_service_defaults)
        service.loadDefaults()

    elif a.info_service:
        service = fw.config().getServiceByName(a.info_service)
        cmd.print_service_info(a.info_service, service.getSettings())
        sys.exit(0)

    elif a.path_service:
        service = fw.config().getServiceByName(a.path_service)
        cmd.print_and_exit("%s/%s" % (service.get_property("path"),
                                      service.get_property("filename")))

    elif a.get_helpers:
        cmd.print_and_exit(" ".join(fw.config().getHelperNames()))

    elif a.new_helper:
        if not a.module:
            cmd.fail(parser.format_usage() + "No module specified.")
        settings = FirewallClientHelperSettings()
        settings.setModule(a.module)
        if a.family:
            settings.setFamily(a.family)
        config = fw.config()
        config.addHelper(a.new_helper, settings)

    elif a.new_helper_from_file:
        filename = os.path.basename(a.new_helper_from_file)
        dirname = os.path.dirname(a.new_helper_from_file)
        if dirname == "":
            dirname = "./"
        try:
            obj = helper_reader(filename, dirname)
        except FirewallError as msg:
            cmd.fail("Failed to load helper file '%s': %s" % \
                     (a.new_helper_from_file, msg))
        except IOError as msg:
            cmd.fail("Failed to load helper file: %s" % msg)

        if a.name:
            obj.name = a.name

        config = fw.config()
        config.addHelper(obj.name, obj.export_config())

    elif a.delete_helper:
        helper = fw.config().getHelperByName(a.delete_helper)
        helper.remove()

    elif a.load_helper_defaults:
        helper = fw.config().getHelperByName(a.load_helper_defaults)
        helper.loadDefaults()

    elif a.info_helper:
        helper = fw.config().getHelperByName(a.info_helper)
        cmd.print_helper_info(a.info_helper, helper.getSettings())
        sys.exit(0)

    elif a.path_helper:
        helper = fw.config().getHelperByName(a.path_helper)
        cmd.print_and_exit("%s/%s" % (helper.get_property("path"),
                                      helper.get_property("filename")))

    elif a.helper:
        helper = fw.config().getHelperByName(a.helper)
        settings = helper.getSettings()

        if a.add_port:
            cmd.add_sequence(a.add_port, settings.addPort,
                             settings.queryPort, cmd.parse_port, "%s/%s")
            helper.update(settings)

        elif a.remove_port:
            cmd.remove_sequence(a.remove_port, settings.removePort,
                                settings.queryPort, cmd.parse_port, "%s/%s")
            helper.update(settings)

        elif a.query_port:
            cmd.query_sequence(a.query_port, settings.queryPort,
                               cmd.parse_port, "%s/%s")

        elif a.get_ports:
            l = helper.getPorts()
            cmd.print_and_exit(" ".join(["%s/%s" % (port[0], port[1]) for port in l]))

        elif a.get_module:
            cmd.print_and_exit(settings.getModule())

        elif a.set_module:
            settings.setModule(cmd.check_module(a.set_module))
            helper.update(settings)

        elif a.get_family:
            cmd.print_and_exit(settings.getFamily())

        elif a.set_family:
            settings.setFamily(cmd.check_helper_family(a.set_family[0]))
            helper.update(settings)

        elif a.set_description:
            settings.setDescription(a.set_description)
            helper.update(settings)

        elif a.get_description:
            cmd.print_and_exit(settings.getDescription())

        elif a.set_short:
            settings.setShort(a.set_short)
            helper.update(settings)

        elif a.get_short:
            cmd.print_and_exit(settings.getShort())

        else:
            cmd.fail(parser.format_usage() + "Unknown option")

    elif a.get_icmptypes:
        cmd.print_and_exit(" ".join(fw.config().getIcmpTypeNames()))

    elif a.new_icmptype:
        config = fw.config()
        config.addIcmpType(a.new_icmptype, FirewallClientIcmpTypeSettings())

    elif a.new_icmptype_from_file:
        filename = os.path.basename(a.new_icmptype_from_file)
        dirname = os.path.dirname(a.new_icmptype_from_file)
        if dirname == "":
            dirname = "./"
        try:
            obj = icmptype_reader(filename, dirname)
        except FirewallError as msg:
            cmd.fail("Failed to load icmptype file '%s': %s" % \
                     (a.new_icmptype_from_file, msg))
        except IOError as msg:
            cmd.fail("Failed to load icmptype file: %s" % msg)

        if a.name:
            obj.name = a.name

        config = fw.config()
        config.addIcmpType(obj.name, obj.export_config())

    elif a.delete_icmptype:
        icmptype = fw.config().getIcmpTypeByName(a.delete_icmptype)
        icmptype.remove()

    elif a.load_icmptype_defaults:
        icmptype = fw.config().getIcmpTypeByName(a.load_icmptype_defaults)
        icmptype.loadDefaults()

    elif a.info_icmptype:
        icmptype = fw.config().getIcmpTypeByName(a.info_icmptype)
        cmd.print_icmptype_info(a.info_icmptype, icmptype.getSettings())
        sys.exit(0)

    elif a.path_icmptype:
        icmptype = fw.config().getIcmpTypeByName(a.path_icmptype)
        cmd.print_and_exit("%s/%s" % (icmptype.get_property("path"),
                                      icmptype.get_property("filename")))

    elif a.icmptype:
        icmptype = fw.config().getIcmpTypeByName(a.icmptype)
        settings = icmptype.getSettings()

        if a.add_destination:
            cmd.add_sequence(a.add_destination, settings.addDestination,
                             settings.queryDestination,
                             cmd.check_destination_ipv, "'%s'")
            icmptype.update(settings)

        elif a.remove_destination:
            cmd.remove_sequence(a.remove_destination,
                                settings.removeDestination,
                                settings.queryDestination,
                                cmd.check_destination_ipv, "'%s'")
            icmptype.update(settings)

        elif a.query_destination:
            cmd.query_sequence(a.query_destination, settings.queryDestination,
                               cmd.check_destination_ipv , "'%s'")

        elif a.get_destinations:
            l = settings.getDestinations()
            if len(l) == 0:
                l = [ "ipv4", "ipv6" ]
            cmd.print_and_exit("\n".join(l))

        elif a.set_description:
            settings.setDescription(a.set_description)
            icmptype.update(settings)

        elif a.get_description:
            cmd.print_and_exit(settings.getDescription())

        elif a.set_short:
            settings.setShort(a.set_short)
            icmptype.update(settings)

        elif a.get_short:
            cmd.print_and_exit(settings.getShort())

        else:
            cmd.fail(parser.format_usage() + "Unknown option")

    elif a.service:
        service = fw.config().getServiceByName(a.service)
        settings = service.getSettings()

        if a.add_port:
            cmd.add_sequence(a.add_port, settings.addPort,
                             settings.queryPort, cmd.parse_port, "%s/%s")
            service.update(settings)

        elif a.remove_port:
            cmd.remove_sequence(a.remove_port, settings.removePort,
                                settings.queryPort, cmd.parse_port, "%s/%s")
            service.update(settings)

        elif a.query_port:
            cmd.query_sequence(a.query_port, settings.queryPort,
                               cmd.parse_port, "%s/%s")

        elif a.get_ports:
            l = settings.getPorts()
            cmd.print_and_exit(" ".join(["%s/%s" % (port[0], port[1]) for port in l]))

        elif a.add_protocol:
            cmd.add_sequence(a.add_protocol, settings.addProtocol,
                             settings.queryProtocol, None, "'%s'")
            service.update(settings)

        elif a.remove_protocol:
            cmd.remove_sequence(a.remove_protocol, settings.removeProtocol,
                                settings.queryProtocol, None, "'%s'")
            service.update(settings)

        elif a.query_protocol:
            cmd.query_sequence(a.query_protocol, settings.queryProtocol,
                               None, "'%s'")

        elif a.get_protocols:
            l = settings.getProtocols()
            cmd.print_and_exit(" ".join(["%s" % protocol for protocol in l]))

        elif a.add_source_port:
            cmd.add_sequence(a.add_source_port, settings.addSourcePort,
                             settings.querySourcePort, cmd.parse_port, "%s/%s")
            service.update(settings)

        elif a.remove_source_port:
            cmd.remove_sequence(a.remove_source_port, settings.removeSourcePort,
                                settings.querySourcePort, cmd.parse_port,
                                "%s/%s")
            service.update(settings)

        elif a.query_source_port:
            cmd.query_sequence(a.query_source_port, settings.querySourcePort,
                               cmd.parse_port, "%s/%s")

        elif a.get_source_ports:
            l = settings.getSourcePorts()
            cmd.print_and_exit(" ".join(["%s/%s" % (port[0], port[1]) for port in l]))

        elif a.add_module:
            cmd.add_sequence(a.add_module, settings.addModule,
                             settings.queryModule, None, "'%s'")
            service.update(settings)

        elif a.remove_module:
            cmd.remove_sequence(a.remove_module, settings.removeModule,
                                settings.queryModule, None, "'%s'")
            service.update(settings)

        elif a.query_module:
            cmd.query_sequence(a.query_module, settings.queryModule,
                               None, "'%s'")

        elif a.get_modules:
            l = settings.getModules()
            cmd.print_and_exit(" ".join(["%s" % module for module in l]))

        elif a.set_destination:
            cmd.add_sequence(a.set_destination, settings.setDestination,
                             settings.queryDestination,
                             cmd.parse_service_destination, "%s:%s")
            service.update(settings)

        elif a.remove_destination:
            # special case for removeDestination: Only ipv, no address
            for ipv in a.remove_destination:
                cmd.check_destination_ipv(ipv)
                if ipv not in settings.getDestinations():
                    if len(a.remove_destination) > 1:
                        cmd.print_warning("Warning: NOT_ENABLED: '%s'" % ipv)
                    else:
                        code = FirewallError.get_code("NOT_ENABLED")
                        cmd.print_and_exit("Error: NOT_ENABLED: '%s'" % ipv,
                                           code)
                else:
                    settings.removeDestination(ipv)
            service.update(settings)

        elif a.query_destination:
            cmd.query_sequence(a.query_destination, settings.queryDestination,
                               cmd.parse_service_destination, "'%s'")

        elif a.get_destinations:
            l = settings.getDestinations()
            cmd.print_and_exit(" ".join(["%s:%s" % (dest[0], dest[1]) for dest in l.items()]))

        elif a.add_include:
            cmd.add_sequence(a.add_include, settings.addInclude,
                             settings.queryInclude, None, "'%s'")
            service.update(settings)

        elif a.remove_include:
            cmd.remove_sequence(a.remove_include, settings.removeInclude,
                                settings.queryInclude, None, "'%s'")
            service.update(settings)

        elif a.query_include:
            cmd.query_sequence(a.query_include, settings.queryInclude,
                               None, "'%s'")

        elif a.get_includes:
            l = settings.getIncludes()
            cmd.print_and_exit(" ".join(["%s" % include for include in sorted(l)]))

        elif a.add_helper:
            cmd.add_sequence(a.add_helper, settings.addHelper,
                             settings.queryHelper, None, "'%s'")
            service.update(settings)

        elif a.remove_helper:
            cmd.remove_sequence(a.remove_helper, settings.removeHelper,
                                settings.queryHelper, None, "'%s'")
            service.update(settings)

        elif a.query_helper:
            cmd.query_sequence(a.query_helper, settings.queryHelper,
                               None, "'%s'")

        elif a.get_service_helpers:
            l = settings.getHelpers()
            cmd.print_and_exit(" ".join(["%s" % helper for helper in sorted(l)]))

        elif a.set_description:
            settings.setDescription(a.set_description)
            service.update(settings)

        elif a.get_description:
            cmd.print_and_exit(settings.getDescription())

        elif a.set_short:
            settings.setShort(a.set_short)
            service.update(settings)

        elif a.get_short:
            cmd.print_and_exit(settings.getShort())

        else:
            cmd.fail(parser.format_usage() + "Unknown option")

    # lockdown whitelist

    elif options_lockdown_whitelist:
        policies = fw.config().policies()

        # commands
        if a.list_lockdown_whitelist_commands:
            l = policies.getLockdownWhitelistCommands()
            cmd.print_and_exit("\n".join(l))
        elif a.add_lockdown_whitelist_command:
            cmd.add_sequence(a.add_lockdown_whitelist_command,
                             policies.addLockdownWhitelistCommand,
                             policies.queryLockdownWhitelistCommand,
                             None, "'%s'")
        elif a.remove_lockdown_whitelist_command:
            cmd.remove_sequence(a.remove_lockdown_whitelist_command,
                                policies.removeLockdownWhitelistCommand,
                                policies.queryLockdownWhitelistCommand,
                                None, "'%s'")
        elif a.query_lockdown_whitelist_command:
            cmd.query_sequence(a.query_lockdown_whitelist_command,
                               policies.queryLockdownWhitelistCommand,
                               None, "'%s'")

        # contexts
        elif a.list_lockdown_whitelist_contexts:
            l = policies.getLockdownWhitelistContexts()
            cmd.print_and_exit("\n".join(l))
        elif a.add_lockdown_whitelist_context:
            cmd.add_sequence(a.add_lockdown_whitelist_context,
                             policies.addLockdownWhitelistContext,
                             policies.queryLockdownWhitelistContext,
                             None, "'%s'")
        elif a.remove_lockdown_whitelist_context:
            cmd.remove_sequence(a.remove_lockdown_whitelist_context,
                                policies.removeLockdownWhitelistContext,
                                policies.queryLockdownWhitelistContext,
                                None, "'%s'")
        elif a.query_lockdown_whitelist_context:
            cmd.query_sequence(a.query_lockdown_whitelist_context,
                               policies.queryLockdownWhitelistContext,
                               None, "'%s'")

        # uids
        elif a.list_lockdown_whitelist_uids:
            l = policies.getLockdownWhitelistUids()
            cmd.print_and_exit(" ".join(map(str, l)))
        elif a.add_lockdown_whitelist_uid is not None:
            cmd.add_sequence(a.add_lockdown_whitelist_uid,
                             policies.addLockdownWhitelistUid,
                             policies.queryLockdownWhitelistUid, None, "%s")
        elif a.remove_lockdown_whitelist_uid is not None:
            cmd.remove_sequence(a.remove_lockdown_whitelist_uid,
                                policies.removeLockdownWhitelistUid,
                                policies.queryLockdownWhitelistUid, None, "%s")
        elif a.query_lockdown_whitelist_uid is not None:
            cmd.query_sequence(a.query_lockdown_whitelist_uid,
                               policies.queryLockdownWhitelistUid, None, "%s")

        # users
        elif a.list_lockdown_whitelist_users:
            l = policies.getLockdownWhitelistUsers()
            cmd.print_and_exit("\n".join(l))
        elif a.add_lockdown_whitelist_user:
            cmd.add_sequence(a.add_lockdown_whitelist_user,
                             policies.addLockdownWhitelistUser,
                             policies.queryLockdownWhitelistUser,
                             None, "%s")
        elif a.remove_lockdown_whitelist_user:
            cmd.remove_sequence(a.remove_lockdown_whitelist_user,
                                policies.removeLockdownWhitelistUser,
                                policies.queryLockdownWhitelistUser,
                                None, "%s")
        elif a.query_lockdown_whitelist_user:
            cmd.query_sequence(a.query_lockdown_whitelist_user,
                               policies.queryLockdownWhitelistUser,
                               None, "'%s'")

    elif options_direct:
        direct = fw.config().direct()

        if a.passthrough:
            if len(a.passthrough) < 2:
                cmd.fail("usage: --permanent --direct --passthrough { ipv4 | ipv6 | eb } <args>")
            cmd.print_msg(direct.addPassthrough(cmd.check_ipv(a.passthrough[0]),
                                                splitArgs(a.passthrough[1])))

        if a.add_passthrough:
            if len(a.add_passthrough) < 2:
                cmd.fail("usage: --permanent --direct --add-passthrough { ipv4 | ipv6 | eb } <args>")
            cmd.print_msg(direct.addPassthrough(cmd.check_ipv(a.add_passthrough[0]),
                                                splitArgs(a.add_passthrough[1])))

        elif a.remove_passthrough:
            if len(a.remove_passthrough) < 2:
                cmd.fail("usage: --permanent --direct --remove-passthrough { ipv4 | ipv6 | eb } <args>")
            direct.removePassthrough(cmd.check_ipv(a.remove_passthrough[0]),
                                     splitArgs(a.remove_passthrough[1]))
        elif a.query_passthrough:
            if len(a.query_passthrough) < 2:
                cmd.fail("usage: --permanent --direct --query-passthrough { ipv4 | ipv6 | eb } <args>")
            cmd.print_query_result(
                direct.queryPassthrough(cmd.check_ipv(a.query_passthrough[0]),
                                        splitArgs(a.query_passthrough[1])))
            sys.exit(0)
        elif a.get_passthroughs:
            rules = direct.getPassthroughs(cmd.check_ipv(a.get_passthroughs[0]))
            for rule in rules:
                cmd.print_msg(joinArgs(rule))
            sys.exit(0)
        elif a.get_all_passthroughs:
            for (ipv, rule) in direct.getAllPassthroughs():
                cmd.print_msg("%s %s" % (ipv, joinArgs(rule)))
            sys.exit(0)

        elif a.add_chain:
            direct.addChain(cmd.check_ipv(a.add_chain[0]),
                            a.add_chain[1], a.add_chain[2])
        elif a.remove_chain:
            direct.removeChain(cmd.check_ipv(a.remove_chain[0]),
                               a.remove_chain[1], a.remove_chain[2])
        elif a.query_chain:
            cmd.print_query_result(
                direct.queryChain(cmd.check_ipv(a.query_chain[0]),
                                  a.query_chain[1], a.query_chain[2]))
            sys.exit(0)
        elif a.get_chains:
            cmd.print_and_exit(
                " ".join(direct.getChains(cmd.check_ipv(a.get_chains[0]),
                                          a.get_chains[1])))
            sys.exit(0)
        elif a.get_all_chains:
            chains = direct.getAllChains()
            for (ipv, table, chain) in chains:
                cmd.print_msg("%s %s %s" % (ipv, table, chain))
            sys.exit(0)
        elif a.add_rule:
            if len(a.add_rule) < 5:
                cmd.fail("usage: --permanent --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
            try:
                priority = int(a.add_rule[3])
            except ValueError:
                cmd.fail("usage: --permanent --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
            direct.addRule(cmd.check_ipv(a.add_rule[0]), a.add_rule[1],
                           a.add_rule[2], priority, splitArgs(a.add_rule[4]))
        elif a.remove_rule:
            if len(a.remove_rule) < 5:
                cmd.fail("usage: --permanent --direct --remove-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
            try:
                priority = int(a.remove_rule[3])
            except ValueError:
                cmd.fail("usage: --permanent --direct --remove-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
            direct.removeRule(cmd.check_ipv(a.remove_rule[0]), a.remove_rule[1],
                              a.remove_rule[2], priority, splitArgs(a.remove_rule[4]))
        elif a.remove_rules:
            if len(a.remove_rules) < 3:
                cmd.fail("usage: --permanent --direct --remove-rules { ipv4 | ipv6 | eb } <table> <chain>")
            direct.removeRules(cmd.check_ipv(a.remove_rules[0]),
                               a.remove_rules[1], a.remove_rules[2])
        elif a.query_rule:
            if len(a.query_rule) < 5:
                cmd.fail("usage: --permanent --direct --query-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
            try:
                priority = int(a.query_rule[3])
            except ValueError:
                cmd.fail("usage: --permanent --direct --query-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
            cmd.print_query_result(
                direct.queryRule(cmd.check_ipv(a.query_rule[0]),
                                 a.query_rule[1], a.query_rule[2],
                                 priority, splitArgs(a.query_rule[4])))
            sys.exit(0)
        elif a.get_rules:
            rules = direct.getRules(cmd.check_ipv(a.get_rules[0]),
                                    a.get_rules[1], a.get_rules[2])
            for (priority, rule) in rules:
                cmd.print_msg("%d %s" % (priority, joinArgs(rule)))
            sys.exit(0)
        elif a.get_all_rules:
            rules = direct.getAllRules()
            for (ipv, table, chain, priority, rule) in rules:
                cmd.print_msg("%s %s %s %d %s" % (ipv, table, chain, priority,
                                                  joinArgs(rule)))
            sys.exit(0)

    else:
        if zone == "":
            zone = fw.getDefaultZone()
        fw_zone = fw.config().getZoneByName(zone)

        # interface
        if a.list_interfaces:
            interfaces = sorted(set(try_nm_get_interfaces_in_zone(zone))
                                | set(fw_zone.getInterfaces()))
            cmd.print_and_exit(" ".join(interfaces))
        elif a.get_zone_of_interface:
            for interface in a.get_zone_of_interface:
                # ask NM before checking our config
                zone = try_get_zone_of_interface(interface)
                if not zone:
                    zone = fw.config().getZoneOfInterface(interface)
                if zone:
                    if len(a.get_zone_of_interface) > 1:
                        cmd.print_warning("%s: %s" % (interface, zone))
                    else:
                        cmd.print_and_exit(zone)
                else:
                    if len(a.get_zone_of_interface) > 1:
                        cmd.print_warning("%s: no zone" % interface)
                    else:
                        cmd.fail("no zone")
        elif a.change_interface:
            interfaces = [ ]
            for interface in a.change_interface:
                if not try_set_zone_of_interface(zone, interface):
                    interfaces.append(interface)
            for interface in interfaces:
                old_zone_name = fw.config().getZoneOfInterface(interface)
                if old_zone_name != zone:
                    if old_zone_name:
                        old_zone_obj = fw.config().getZoneByName(old_zone_name)
                        old_zone_obj.removeInterface(interface)# remove from old
                    fw_zone.addInterface(interface)            # add to new
        elif a.add_interface:
            interfaces = [ ]
            for interface in a.add_interface:
                if not try_set_zone_of_interface(a.zone, interface):
                    interfaces.append(interface)
            cmd.add_sequence(interfaces, fw_zone.addInterface,
                             fw_zone.queryInterface, None, "'%s'")
        elif a.remove_interface:
            interfaces = [ ]
            for interface in a.remove_interface:
                if not try_set_zone_of_interface("", interface):
                    interfaces.append(interface)
            cmd.remove_sequence(interfaces, fw_zone.removeInterface,
                                fw_zone.queryInterface, None, "'%s'")
        elif a.query_interface:
            cmd.query_sequence(a.query_interface, fw_zone.queryInterface,
                               None, "'%s'")

        # source
        if a.list_sources:
            sources = fw_zone.getSources()
            cmd.print_and_exit(" ".join(sources))
        elif a.get_zone_of_source:
            for source in a.get_zone_of_source:
                zone = fw.config().getZoneOfSource(source)
                if zone:
                    if len(a.get_zone_of_source) > 1:
                        cmd.print_warning("%s: %s" % (source, zone))
                    else:
                        cmd.print_and_exit(zone)
                else:
                    if len(a.get_zone_of_source) > 1:
                        cmd.print_warning("%s: no zone" % source)
                    else:
                        cmd.fail("no zone")
        elif a.change_source:
            for source in a.change_source:
                old_zone_name = fw.config().getZoneOfSource(source)
                if old_zone_name != zone:
                    if old_zone_name:
                        old_zone_obj = fw.config().getZoneByName(old_zone_name)
                        old_zone_obj.removeSource(source) # remove from old
                    fw_zone.addSource(source)             # add to new
        elif a.add_source:
            cmd.add_sequence(a.add_source, fw_zone.addSource,
                             fw_zone.querySource, None, "'%s'")
        elif a.remove_source:
            cmd.remove_sequence(a.remove_source, fw_zone.removeSource,
                                fw_zone.querySource, None, "'%s'")
        elif a.query_source:
            cmd.query_sequence(a.query_source, fw_zone.querySource,
                               None, "'%s'")

        # rich rules
        if a.list_rich_rules:
            l = fw_zone.getRichRules()
            cmd.print_and_exit("\n".join(l))
        elif a.add_rich_rule:
            cmd.add_sequence(a.add_rich_rule, fw_zone.addRichRule,
                             fw_zone.queryRichRule, None, "'%s'")
        elif a.remove_rich_rule:
            cmd.remove_sequence(a.remove_rich_rule, fw_zone.removeRichRule,
                                fw_zone.queryRichRule, None, "'%s'")
        elif a.query_rich_rule:
            cmd.query_sequence(a.query_rich_rule, fw_zone.queryRichRule,
                               None, "'%s'")

        # service
        if a.list_services:
            l = fw_zone.getServices()
            cmd.print_and_exit(" ".join(sorted(l)))
        elif a.add_service:
            cmd.add_sequence(a.add_service, fw_zone.addService,
                             fw_zone.queryService, None, "'%s'")
        elif a.remove_service:
            cmd.remove_sequence(a.remove_service, fw_zone.removeService,
                                fw_zone.queryService, None, "'%s'")
        elif a.query_service:
            cmd.query_sequence(a.query_service, fw_zone.queryService,
                               None, "'%s'")

        # port
        elif a.list_ports:
            l = fw_zone.getPorts()
            cmd.print_and_exit(" ".join(["%s/%s" % (port[0], port[1]) for port in l]))
        elif a.add_port:
            cmd.add_sequence(a.add_port, fw_zone.addPort,
                             fw_zone.queryPort, cmd.parse_port, "%s/%s")
        elif a.remove_port:
            cmd.remove_sequence(a.remove_port, fw_zone.removePort,
                                fw_zone.queryPort, cmd.parse_port, "%s/%s")
        elif a.query_port:
            cmd.query_sequence(a.query_port, fw_zone.queryPort,
                               cmd.parse_port, "%s/%s")

        # protocol
        elif a.list_protocols:
            l = fw_zone.getProtocols()
            cmd.print_and_exit(" ".join(["%s" % protocol for protocol in sorted(l)]))
        elif a.add_protocol:
            cmd.add_sequence(a.add_protocol, fw_zone.addProtocol,
                             fw_zone.queryProtocol, None, "'%s'")
        elif a.remove_protocol:
            cmd.remove_sequence(a.remove_protocol, fw_zone.removeProtocol,
                                fw_zone.queryProtocol, None, "'%s'")
        elif a.query_protocol:
            cmd.query_sequence(a.query_protocol, fw_zone.queryProtocol,
                               None, "'%s'")

        # source port
        elif a.list_source_ports:
            l = fw_zone.getSourcePorts()
            cmd.print_and_exit(" ".join(["%s/%s" % (port[0], port[1]) for port in l]))
        elif a.add_source_port:
            cmd.add_sequence(a.add_source_port, fw_zone.addSourcePort,
                             fw_zone.querySourcePort, cmd.parse_port, "%s/%s")
        elif a.remove_source_port:
            cmd.remove_sequence(a.remove_source_port, fw_zone.removeSourcePort,
                                fw_zone.querySourcePort, cmd.parse_port,
                                "%s/%s")
        elif a.query_source_port:
            cmd.query_sequence(a.query_source_port, fw_zone.querySourcePort,
                               cmd.parse_port, "%s/%s")

        # masquerade
        elif a.add_masquerade:
            fw_zone.addMasquerade()
        elif a.remove_masquerade:
            fw_zone.removeMasquerade()
        elif a.query_masquerade:
            cmd.print_query_result(fw_zone.queryMasquerade())

        # forward port
        elif a.list_forward_ports:
            l = fw_zone.getForwardPorts()
            cmd.print_and_exit("\n".join(["port=%s:proto=%s:toport=%s:toaddr=%s" % (port, protocol, toport, toaddr) for (port, protocol, toport, toaddr) in l]))
        elif a.add_forward_port:
            cmd.add_sequence(a.add_forward_port, fw_zone.addForwardPort,
                             fw_zone.queryForwardPort, cmd.parse_forward_port,
                             "port=%s:proto=%s:toport=%s:toaddr=%s")
        elif a.remove_forward_port:
            cmd.remove_sequence(a.remove_forward_port,
                                fw_zone.removeForwardPort,
                                fw_zone.queryForwardPort,
                                cmd.parse_forward_port,
                                "port=%s:proto=%s:toport=%s:toaddr=%s")
        elif a.query_forward_port:
            cmd.query_sequence(a.query_forward_port, fw_zone.queryForwardPort,
                               cmd.parse_forward_port,
                               "port=%s:proto=%s:toport=%s:toaddr=%s")

        # block icmp
        elif a.list_icmp_blocks:
            l = fw_zone.getIcmpBlocks()
            cmd.print_and_exit(" ".join(l))
        elif a.add_icmp_block:
            cmd.add_sequence(a.add_icmp_block, fw_zone.addIcmpBlock,
                             fw_zone.queryIcmpBlock, None, "'%s'")
        elif a.remove_icmp_block:
            cmd.remove_sequence(a.remove_icmp_block, fw_zone.removeIcmpBlock,
                                fw_zone.queryIcmpBlock, None, "'%s'")
        elif a.query_icmp_block:
            cmd.query_sequence(a.query_icmp_block, fw_zone.queryIcmpBlock,
                               None, "'%s'")

        # icmp block inversion
        elif a.add_icmp_block_inversion:
            fw_zone.addIcmpBlockInversion()
        elif a.remove_icmp_block_inversion:
            fw_zone.removeIcmpBlockInversion()
        elif a.query_icmp_block_inversion:
            cmd.print_query_result(fw_zone.queryIcmpBlockInversion())

        # zone target
        elif a.get_target:
            target = fw_zone.getTarget()
            cmd.print_and_exit(target if target != "%%REJECT%%" else "REJECT")
        elif a.set_target:
            fw_zone.setTarget(a.set_target if a.set_target != "REJECT" else "%%REJECT%%")

        # list all zone settings
        elif a.list_all:
            interfaces = try_nm_get_interfaces_in_zone(zone)
            cmd.print_zone_info(zone, fw_zone.getSettings(), extra_interfaces=interfaces)
            sys.exit(0)

        # list everything
        elif a.list_all_zones:
            names = fw.config().getZoneNames()
            for zone in sorted(names):
                interfaces = try_nm_get_interfaces_in_zone(zone)
                settings = fw.config().getZoneByName(zone).getSettings()
                cmd.print_zone_info(zone, settings, extra_interfaces=interfaces)
                cmd.print_msg("")
            sys.exit(0)

        # set zone description
        elif a.set_description:
            settings = fw.config().getZoneByName(zone).getSettings()
            settings.setDescription(a.set_description)
            fw_zone.update(settings)

        # get zone description
        elif a.get_description:
            settings = fw.config().getZoneByName(zone).getSettings()
            cmd.print_and_exit(settings.getDescription())

        # set zone short description
        elif a.set_short:
            settings = fw.config().getZoneByName(zone).getSettings()
            settings.setShort(a.set_short)
            fw_zone.update(settings)

        # get zone short description
        elif a.get_short:
            settings = fw.config().getZoneByName(zone).getSettings()
            cmd.print_and_exit(settings.getShort())

elif a.version:
    cmd.print_and_exit(fw.get_property("version"))
elif a.state:
    state = fw.get_property("state")
    if state == "RUNNING":
        cmd.print_and_exit ("running")
    elif state == "FAILED":
        cmd.print_and_exit("failed", errors.RUNNING_BUT_FAILED)
    else:
        cmd.print_and_exit ("not running", errors.NOT_RUNNING)
elif a.get_log_denied:
    cmd.print_and_exit(fw.getLogDenied())
elif a.set_log_denied:
    fw.setLogDenied(a.set_log_denied)
elif a.get_automatic_helpers:
    cmd.print_and_exit(fw.getAutomaticHelpers())
elif a.set_automatic_helpers:
    fw.setAutomaticHelpers(a.set_automatic_helpers)
elif a.get_ipset_types:
    types = fw.get_property("IPSetTypes")
    cmd.print_and_exit(" ".join(sorted(types)))
elif a.reload:
    fw.reload()
elif a.complete_reload:
    fw.complete_reload()
elif a.runtime_to_permanent:
    fw.runtimeToPermanent()
elif a.check_config:
    fw.checkPermanentConfig()
elif a.direct:
    if a.passthrough:
        if len(a.passthrough) < 2:
            cmd.fail("usage: --direct --passthrough { ipv4 | ipv6 | eb } <args>")
        msg = fw.passthrough(cmd.check_ipv(a.passthrough[0]), splitArgs(a.passthrough[1]))
        if msg:
            sys.stdout.write(msg + "\n")

    elif a.add_passthrough:
        if len(a.add_passthrough) < 2:
            cmd.fail("usage: --direct --add-passthrough { ipv4 | ipv6 | eb } <args>")
        fw.addPassthrough(cmd.check_ipv(a.add_passthrough[0]),
                          splitArgs(a.add_passthrough[1]))
    elif a.remove_passthrough:
        if len(a.remove_passthrough) < 2:
            cmd.fail("usage: --direct --remove-passthrough { ipv4 | ipv6 | eb } <args>")
        fw.removePassthrough(cmd.check_ipv(a.remove_passthrough[0]),
                             splitArgs(a.remove_passthrough[1]))
    elif a.query_passthrough:
        if len(a.query_passthrough) < 2:
            cmd.fail("usage: --direct --query-passthrough { ipv4 | ipv6 | eb } <args>")
        cmd.print_query_result(
            fw.queryPassthrough(cmd.check_ipv(a.query_passthrough[0]),
                                splitArgs(a.query_passthrough[1])))
    elif a.get_passthroughs:
        rules = fw.getPassthroughs(cmd.check_ipv(a.get_passthroughs[0]))
        for rule in rules:
            cmd.print_msg(joinArgs(rule))
        sys.exit(0)
    elif a.get_all_passthroughs:
        for (ipv, rule) in fw.getAllPassthroughs():
            cmd.print_msg("%s %s" % (ipv, joinArgs(rule)))
        sys.exit(0)
    elif a.add_chain:
        fw.addChain(cmd.check_ipv(a.add_chain[0]), a.add_chain[1], a.add_chain[2])
    elif a.remove_chain:
        fw.removeChain(cmd.check_ipv(a.remove_chain[0]),
                       a.remove_chain[1], a.remove_chain[2])
    elif a.query_chain:
        cmd.print_query_result(fw.queryChain(cmd.check_ipv(a.query_chain[0]),
                                             a.query_chain[1],
                                             a.query_chain[2]))
    elif a.get_chains:
        cmd.print_and_exit(" ".join(fw.getChains(cmd.check_ipv(a.get_chains[0]),
                                                 a.get_chains[1])))
    elif a.get_all_chains:
        chains = fw.getAllChains()
        for (ipv, table, chain) in chains:
            cmd.print_msg("%s %s %s" % (ipv, table, chain))
        sys.exit(0)
    elif a.add_rule:
        if len(a.add_rule) < 5:
            cmd.fail("usage: --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
        try:
            priority = int(a.add_rule[3])
        except ValueError:
            cmd.fail("usage: --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
        fw.addRule(cmd.check_ipv(a.add_rule[0]), a.add_rule[1], a.add_rule[2],
                   priority, splitArgs(a.add_rule[4]))
    elif a.remove_rule:
        if len(a.remove_rule) < 5:
            cmd.fail("usage: --direct --remove-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
        try:
            priority = int(a.remove_rule[3])
        except ValueError:
            cmd.fail("usage: --direct --remove-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
        fw.removeRule(cmd.check_ipv(a.remove_rule[0]),
                      a.remove_rule[1], a.remove_rule[2], priority, splitArgs(a.remove_rule[4]))
    elif a.remove_rules:
        if len(a.remove_rules) < 3:
            cmd.fail("usage: --direct --remove-rules { ipv4 | ipv6 | eb } <table> <chain>")
        fw.removeRules(cmd.check_ipv(a.remove_rules[0]),
                       a.remove_rules[1], a.remove_rules[2])
    elif a.query_rule:
        if len(a.query_rule) < 5:
            cmd.fail("usage: --direct --query-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
        try:
            priority = int(a.query_rule[3])
        except ValueError:
            cmd.fail("usage: --direct --query-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>")
        cmd.print_query_result(
            fw.queryRule(cmd.check_ipv(a.query_rule[0]),
                         a.query_rule[1], a.query_rule[2],
                         priority, splitArgs(a.query_rule[4])))
    elif a.get_rules:
        rules = fw.getRules(cmd.check_ipv(a.get_rules[0]),
                            a.get_rules[1], a.get_rules[2])
        for (priority, rule) in rules:
            cmd.print_msg("%d %s" % (priority, joinArgs(rule)))
        sys.exit(0)
    elif a.get_all_rules:
        rules = fw.getAllRules()
        for (ipv, table, chain, priority, rule) in rules:
            cmd.print_msg("%s %s %s %d %s" % (ipv, table, chain, priority,
                                              joinArgs(rule)))
        sys.exit(0)

elif a.get_default_zone:
    cmd.print_and_exit(fw.getDefaultZone())
elif a.set_default_zone:
    fw.setDefaultZone(a.set_default_zone)
elif a.get_zones:
    cmd.print_and_exit(" ".join(fw.getZones()))
elif a.get_active_zones:
    zones = fw.getActiveZones()
    for zone in zones:
        cmd.print_msg("%s" % zone)
        for x in [ "interfaces", "sources" ]:
            if x in zones[zone]:
                cmd.print_msg("  %s: %s" % (x, " ".join(zones[zone][x])))
    sys.exit(0)
elif a.get_services:
    l = fw.listServices()
    cmd.print_and_exit(" ".join(l))
elif a.get_icmptypes:
    l = fw.listIcmpTypes()
    cmd.print_and_exit(" ".join(l))

# panic
elif a.panic_on:
    fw.enablePanicMode()
elif a.panic_off:
    fw.disablePanicMode()
elif a.query_panic:
    cmd.print_query_result(fw.queryPanicMode())

# ipset
elif a.get_ipsets:
    ipsets = fw.getIPSets()
    cmd.print_and_exit(" ".join(sorted(ipsets)))

elif a.info_ipset:
    cmd.print_ipset_info(a.info_ipset, fw.getIPSetSettings(a.info_ipset))
    sys.exit(0)

elif a.add_entry:
    cmd.x_add_sequence(a.ipset, a.add_entry, fw.addEntry, fw.queryEntry,
                       None, "'%s'")

elif a.remove_entry:
    cmd.x_remove_sequence(a.ipset, a.remove_entry, fw.removeEntry,
                          fw.queryEntry, None, "'%s'")

elif a.query_entry:
    cmd.x_query_sequence(a.ipset, a.query_entry, fw.queryEntry, None, "'%s'")

elif a.get_entries:
    l = fw.getEntries(a.ipset)
    cmd.print_and_exit("\n".join(l))

elif a.add_entries_from_file:
    old_entries = fw.getEntries(a.ipset)
    changed = False

    for filename in a.add_entries_from_file:
        try:
            entries = cmd.get_ipset_entries_from_file(filename)
        except IOError as msg:
            message = "Failed to read file '%s': %s" % (filename, msg)
            if len(a.add_entries_from_file) > 1:
                cmd.print_warning(message)
            else:
                cmd.print_and_exit(message)
        else:
            entries_set = set()
            for entry in old_entries:
                entries_set.add(entry)
            for entry in entries:
                if entry not in entries_set:
                    old_entries.append(entry)
                    entries_set.add(entry)
                    changed = True
                else:
                    cmd.print_if_verbose("Warning: ALREADY_ENABLED: %s" % entry)
    if changed:
        fw.setEntries(a.ipset, old_entries)

elif a.remove_entries_from_file:
    old_entries = fw.getEntries(a.ipset)
    changed = False

    for filename in a.remove_entries_from_file:
        try:
            entries = cmd.get_ipset_entries_from_file(filename)
        except IOError as msg:
            message = "Failed to read file '%s': %s" % (filename, msg)
            if len(a.remove_entries_from_file) > 1:
                cmd.print_warning(message)
            else:
                cmd.print_and_exit(message)
        else:
            entries_set = set()
            for entry in old_entries:
                entries_set.add(entry)
            for entry in entries:
                if entry in entries_set:
                    old_entries.remove(entry)
                    entries_set.discard(entry)
                    changed = True
                else:
                    cmd.print_if_verbose("Warning: NOT_ENABLED: %s" % entry)
    if changed:
        fw.setEntries(a.ipset, old_entries)

# helper
elif a.get_helpers:
    helpers = fw.getHelpers()
    cmd.print_and_exit(" ".join(sorted(helpers)))

elif a.info_helper:
    cmd.print_helper_info(a.info_helper, fw.getHelperSettings(a.info_helper))
    sys.exit(0)

# lockdown
elif a.lockdown_on:
    fw.config().set_property("Lockdown", "yes")   # permanent
    fw.enableLockdown()                           # runtime
elif a.lockdown_off:
    fw.config().set_property("Lockdown", "no")    # permanent
    fw.disableLockdown()                          # runtime
elif a.query_lockdown:
    cmd.print_query_result(fw.queryLockdown())      # runtime
    #lockdown = fw.config().get_property("Lockdown")
    #cmd.print_query_result(lockdown.lower() in [ "yes", "true" ])

# lockdown whitelist

# commands
elif a.list_lockdown_whitelist_commands:
    l = fw.getLockdownWhitelistCommands()
    cmd.print_and_exit("\n".join(l))
elif a.add_lockdown_whitelist_command:
    cmd.add_sequence(a.add_lockdown_whitelist_command,
                     fw.addLockdownWhitelistCommand,
                     fw.queryLockdownWhitelistCommand, None, "'%s'")
elif a.remove_lockdown_whitelist_command:
    cmd.remove_sequence(a.remove_lockdown_whitelist_command,
                        fw.removeLockdownWhitelistCommand,
                        fw.queryLockdownWhitelistCommand, None, "'%s'")
elif a.query_lockdown_whitelist_command:
    cmd.query_sequence(a.query_lockdown_whitelist_command,
                       fw.queryLockdownWhitelistCommand, None, "'%s'")

# contexts
elif a.list_lockdown_whitelist_contexts:
    l = fw.getLockdownWhitelistContexts()
    cmd.print_and_exit("\n".join(l))
elif a.add_lockdown_whitelist_context:
    cmd.add_sequence(a.add_lockdown_whitelist_context,
                     fw.addLockdownWhitelistContext,
                     fw.queryLockdownWhitelistContext, None, "'%s'")
elif a.remove_lockdown_whitelist_context:
    cmd.remove_sequence(a.remove_lockdown_whitelist_context,
                        fw.removeLockdownWhitelistContext,
                        fw.queryLockdownWhitelistContext, None, "'%s'")
elif a.query_lockdown_whitelist_context:
    cmd.query_sequence(a.query_lockdown_whitelist_context,
                       fw.queryLockdownWhitelistContext, None, "'%s'")

# uids
elif a.list_lockdown_whitelist_uids:
    l = fw.getLockdownWhitelistUids()
    cmd.print_and_exit(" ".join(map(str, l)))
elif a.add_lockdown_whitelist_uid is not None:
    cmd.add_sequence(a.add_lockdown_whitelist_uid,
                     fw.addLockdownWhitelistUid,
                     fw.queryLockdownWhitelistUid, None, "'%s'")
elif a.remove_lockdown_whitelist_uid is not None:
    cmd.remove_sequence(a.remove_lockdown_whitelist_uid,
                        fw.removeLockdownWhitelistUid,
                        fw.queryLockdownWhitelistUid, None, "'%s'")
elif a.query_lockdown_whitelist_uid is not None:
    cmd.query_sequence(a.query_lockdown_whitelist_uid,
                       fw.queryLockdownWhitelistUid, None, "'%s'")

# users
elif a.list_lockdown_whitelist_users:
    l = fw.getLockdownWhitelistUsers()
    cmd.print_and_exit(" ".join(l))
elif a.add_lockdown_whitelist_user:
    cmd.add_sequence(a.add_lockdown_whitelist_user,
                     fw.addLockdownWhitelistUser,
                     fw.queryLockdownWhitelistUser, None, "'%s'")
elif a.remove_lockdown_whitelist_user:
    cmd.remove_sequence(a.remove_lockdown_whitelist_user,
                        fw.removeLockdownWhitelistUser,
                        fw.queryLockdownWhitelistUser, None, "'%s'")
elif a.query_lockdown_whitelist_user:
    cmd.query_sequence(a.query_lockdown_whitelist_user,
                       fw.queryLockdownWhitelistUser, None, "'%s'")

# interface
elif a.list_interfaces:
    l = fw.getInterfaces(zone)
    cmd.print_and_exit(" ".join(l))
elif a.get_zone_of_interface:
    for interface in a.get_zone_of_interface:
        zone = fw.getZoneOfInterface(interface)
        if zone:
            if len(a.get_zone_of_interface) > 1:
                cmd.print_warning("%s: %s" % (interface, zone))
            else:
                cmd.print_and_exit(zone)
        else:
            if len(a.get_zone_of_interface) > 1:
                cmd.print_warning("%s: no zone" % interface)
            else:
                cmd.fail("no zone")
elif a.add_interface:
    interfaces = [ ]
    for interface in a.add_interface:
        interfaces.append(interface)
    cmd.x_add_sequence(zone, interfaces, fw.addInterface,
                       fw.queryInterface, None, "'%s'")
elif a.change_interface:
    interfaces = [ ]
    for interface in a.change_interface:
        interfaces.append(interface)
    cmd.x_add_sequence(zone, interfaces, fw.changeZoneOfInterface,
                       fw.queryInterface, None, "'%s'")
elif a.remove_interface:
    interfaces = [ ]
    for interface in a.remove_interface:
        interfaces.append(interface)
    cmd.x_remove_sequence(zone, interfaces, fw.removeInterface,
                          fw.queryInterface, None, "'%s'")
elif a.query_interface:
    cmd.x_query_sequence(zone, a.query_interface, fw.queryInterface, None,
                         "'%s'")

# source
elif a.list_sources:
    sources = fw.getSources(zone)
    cmd.print_and_exit(" ".join(sources))
elif a.get_zone_of_source:
    for source in a.get_zone_of_source:
        zone = fw.getZoneOfSource(source)
        if zone:
            if len(a.get_zone_of_source) > 1:
                cmd.print_warning("%s: %s" % (source, zone))
            else:
                cmd.print_and_exit(zone)
        else:
            if len(a.get_zone_of_source) > 1:
                cmd.print_warning("%s: no zone" % source)
            else:
                cmd.fail("no zone")
        sys.exit(0)
elif a.add_source:
    cmd.x_add_sequence(zone, a.add_source, fw.addSource,
                       fw.querySource, None, "'%s'")
elif a.change_source:
    cmd.x_add_sequence(zone, a.change_source, fw.changeZoneOfSource,
                       fw.querySource, None, "'%s'")
elif a.remove_source:
    cmd.x_remove_sequence(zone, a.remove_source, fw.removeSource,
                          fw.querySource, None, "'%s'")
elif a.query_source:
    cmd.x_query_sequence(zone, a.query_source, fw.querySource, None, "'%s'")

# rich rules
elif a.list_rich_rules:
    l = fw.getRichRules(zone)
    cmd.print_and_exit("\n".join(l))
elif a.add_rich_rule:
    cmd.zone_add_timeout_sequence(zone, a.add_rich_rule, fw.addRichRule,
                                  fw.queryRichRule, None, "'%s'",
                                  a.timeout)
elif a.remove_rich_rule:
    cmd.x_remove_sequence(zone, a.remove_rich_rule, fw.removeRichRule,
                          fw.queryRichRule, None, "'%s'")
elif a.query_rich_rule:
    cmd.x_query_sequence(zone, a.query_rich_rule, fw.queryRichRule, None,
                         "'%s'")

# service
elif a.list_services:
    l = fw.getServices(zone)
    cmd.print_and_exit(" ".join(sorted(l)))
elif a.add_service:
    cmd.zone_add_timeout_sequence(zone, a.add_service, fw.addService,
                                  fw.queryService, None, "'%s'",
                                  a.timeout)
elif a.remove_service:
    cmd.x_remove_sequence(zone, a.remove_service, fw.removeService,
                          fw.queryService, None, "'%s'")
elif a.query_service:
    cmd.x_query_sequence(zone, a.query_service, fw.queryService, None, "'%s'")

# port
elif a.list_ports:
    l = fw.getPorts(zone)
    cmd.print_and_exit(" ".join(["%s/%s" % (port[0], port[1]) for port in l]))
elif a.add_port:
    cmd.zone_add_timeout_sequence(zone, a.add_port, fw.addPort, fw.queryPort,
                                  cmd.parse_port, "'%s/%s'", a.timeout)
elif a.remove_port:
    cmd.x_remove_sequence(zone, a.remove_port, fw.removePort, fw.queryPort,
                          cmd.parse_port, "'%s/%s'")
elif a.query_port:
    cmd.x_query_sequence(zone, a.query_port, fw.queryPort, cmd.parse_port,
                         "'%s/%s'")

# protocol
elif a.list_protocols:
    l = fw.getProtocols(zone)
    cmd.print_and_exit(" ".join(["%s" % protocol for protocol in sorted(l)]))
elif a.add_protocol:
    cmd.zone_add_timeout_sequence(zone, a.add_protocol, fw.addProtocol,
                                  fw.queryProtocol, None, "'%s'", a.timeout)
elif a.remove_protocol:
    cmd.x_remove_sequence(zone, a.remove_protocol, fw.removeProtocol,
                          fw.queryProtocol, None, "'%s'")
elif a.query_protocol:
    cmd.x_query_sequence(zone, a.query_protocol, fw.queryProtocol, None, "'%s'")

# source port
elif a.list_source_ports:
    l = fw.getSourcePorts(zone)
    cmd.print_and_exit(" ".join(["%s/%s" % (port[0], port[1]) for port in l]))
elif a.add_source_port:
    cmd.zone_add_timeout_sequence(zone, a.add_source_port, fw.addSourcePort,
                                  fw.querySourcePort, cmd.parse_port,
                                  "'%s/%s'", a.timeout)
elif a.remove_source_port:
    cmd.x_remove_sequence(zone, a.remove_source_port, fw.removeSourcePort,
                          fw.querySourcePort, cmd.parse_port, "'%s/%s'")
elif a.query_source_port:
    cmd.x_query_sequence(zone, a.query_source_port, fw.querySourcePort,
                         cmd.parse_port, "'%s/%s'")

# masquerade
elif a.add_masquerade:
    fw.addMasquerade(zone, a.timeout)
elif a.remove_masquerade:
    fw.removeMasquerade(zone)
elif a.query_masquerade:
    cmd.print_query_result(fw.queryMasquerade(zone))

# forward port
elif a.list_forward_ports:
    l = fw.getForwardPorts(zone)
    cmd.print_and_exit("\n".join(["port=%s:proto=%s:toport=%s:toaddr=%s" % (port, protocol, toport, toaddr) for (port, protocol, toport, toaddr) in l]))
elif a.add_forward_port:
    cmd.zone_add_timeout_sequence(zone, a.add_forward_port, fw.addForwardPort,
                                  fw.queryForwardPort, cmd.parse_forward_port,
                                  "'port=%s:proto=%s:toport=%s:toaddr=%s'",
                                  a.timeout)
elif a.remove_forward_port:
    cmd.x_remove_sequence(zone, a.remove_forward_port,
                          fw.removeForwardPort, fw.queryForwardPort,
                          cmd.parse_forward_port,
                          "'port=%s:proto=%s:toport=%s:toaddr=%s'")
elif a.query_forward_port:
    cmd.x_query_sequence(zone, a.query_forward_port, fw.queryForwardPort,
                         cmd.parse_forward_port,
                         "'port=%s:proto=%s:toport=%s:toaddr=%s'")

# block icmp
elif a.list_icmp_blocks:
    l = fw.getIcmpBlocks(zone)
    cmd.print_and_exit(" ".join(l))
elif a.add_icmp_block:
    cmd.zone_add_timeout_sequence(zone, a.add_icmp_block, fw.addIcmpBlock,
                                  fw.queryIcmpBlock, None, "'%s'", a.timeout)
elif a.remove_icmp_block:
    cmd.x_remove_sequence(zone, a.remove_icmp_block, fw.removeIcmpBlock,
                          fw.queryIcmpBlock, None, "'%s'")
elif a.query_icmp_block:
    cmd.x_query_sequence(zone, a.query_icmp_block, fw.queryIcmpBlock, None,
                         "'%s'")

# icmp block inversion
elif a.add_icmp_block_inversion:
    fw.addIcmpBlockInversion(zone)
elif a.remove_icmp_block_inversion:
    fw.removeIcmpBlockInversion(zone)
elif a.query_icmp_block_inversion:
    cmd.print_query_result(fw.queryIcmpBlockInversion(zone))

# list all
elif a.list_all:
    z = zone if zone else fw.getDefaultZone()
    cmd.print_zone_info(z, fw.getZoneSettings(z))
    sys.exit(0)

# list everything
elif a.list_all_zones:
    for zone in fw.getZones():
        cmd.print_zone_info(zone, fw.getZoneSettings(zone))
        cmd.print_msg("")
    sys.exit(0)

elif a.info_zone:
    cmd.print_zone_info(a.info_zone, fw.getZoneSettings(a.info_zone), True)
    sys.exit(0)

elif a.info_service:
    cmd.print_service_info(a.info_service, fw.getServiceSettings(a.info_service))
    sys.exit(0)

elif a.info_icmptype:
    cmd.print_icmptype_info(a.info_icmptype, fw.getIcmpTypeSettings(a.info_icmptype))
    sys.exit(0)

cmd.print_and_exit("success")

NineSec Team - 2022
Name
Size
Last Modified
Owner
Permissions
Options
..
--
March 29 2022 11:10:06
root
0755
X11
--
April 08 2025 12:08:09
root
0755
7zr
0.039 KB
August 09 2019 9:00:38
root
0755
GET
15.82 KB
November 29 2019 4:16:23
root
0755
HEAD
15.82 KB
November 29 2019 4:16:23
root
0755
Mail
110.242 KB
August 08 2018 11:12:01
root
0755
POST
15.82 KB
November 29 2019 4:16:23
root
0755
[
58.336 KB
September 05 2019 12:38:40
root
0755
ab
58.336 KB
October 26 2023 3:54:09
root
0755
add-apt-repository
7.241 KB
March 21 2023 4:23:10
root
0755
addpart
30.227 KB
May 30 2023 5:42:35
root
0755
addr2line
34.703 KB
January 02 2024 4:48:50
root
0755
appres
14.305 KB
February 29 2020 7:29:50
root
0755
apropos
55.211 KB
February 25 2020 6:13:45
root
0755
apt
18.383 KB
October 06 2023 11:42:30
root
0755
apt-add-repository
7.241 KB
March 21 2023 4:23:10
root
0755
apt-cache
86.461 KB
October 06 2023 11:42:30
root
0755
apt-cdrom
30.461 KB
October 06 2023 11:42:30
root
0755
apt-config
26.383 KB
October 06 2023 11:42:30
root
0755
apt-extracttemplates
26.469 KB
October 06 2023 11:42:30
root
0755
apt-ftparchive
274.469 KB
October 06 2023 11:42:30
root
0755
apt-get
46.461 KB
October 06 2023 11:42:30
root
0755
apt-key
27.276 KB
October 06 2023 11:42:30
root
0755
apt-mark
62.461 KB
October 06 2023 11:42:30
root
0755
apt-sortpkgs
46.391 KB
October 06 2023 11:42:30
root
0755
ar
66.43 KB
January 02 2024 4:48:50
root
0755
arch
38.367 KB
September 05 2019 12:38:40
root
0755
arpaname
14.297 KB
September 19 2023 1:22:19
root
0755
as
680.297 KB
January 02 2024 4:48:50
root
0755
aspell
166.5 KB
July 22 2021 8:20:06
root
0755
aspell-import
1.996 KB
July 22 2021 8:20:06
root
0755
atobm
14.297 KB
February 29 2020 12:10:29
root
0755
atop
290.258 KB
January 25 2019 5:41:25
root
0755
atopconvert
24.156 KB
January 25 2019 5:41:25
root
0755
atopsar
290.258 KB
January 25 2019 5:41:25
root
0755
awk
158.742 KB
February 16 2020 8:41:09
root
0755
awstats
669.616 KB
February 27 2023 9:27:24
root
0755
b2sum
58.367 KB
September 05 2019 12:38:40
root
0755
base32
42.336 KB
September 05 2019 12:38:40
root
0755
base64
42.336 KB
September 05 2019 12:38:40
root
0755
basename
38.336 KB
September 05 2019 12:38:40
root
0755
bashbug
6.635 KB
April 18 2022 11:14:46
root
0755
bitmap
106.391 KB
February 29 2020 12:10:29
root
0755
bmtoa
14.32 KB
February 29 2020 12:10:29
root
0755
bootctl
62.344 KB
November 21 2023 10:10:21
root
0755
broadwayd
118.383 KB
February 15 2022 6:50:52
root
0755
bsd-from
14.148 KB
March 30 2020 11:26:14
root
0755
bsd-mailx
110.242 KB
August 08 2018 11:12:01
root
0755
bsd-write
14.148 KB
March 30 2020 11:26:14
root
2755
bundle2.7
0.517 KB
July 06 2023 12:57:08
root
0755
bundler2.7
0.519 KB
July 06 2023 12:57:08
root
0755
busctl
86.344 KB
November 21 2023 10:10:21
root
0755
c++
1.1 MB
October 24 2022 11:28:06
root
0755
c++filt
30.266 KB
January 02 2024 4:48:50
root
0755
c89
0.418 KB
May 07 2006 11:28:01
root
0755
c89-gcc
0.418 KB
May 07 2006 11:28:01
root
0755
c99
0.443 KB
April 11 2011 9:54:37
root
0755
c99-gcc
0.443 KB
April 11 2011 9:54:37
root
0755
c_rehash
6.646 KB
January 31 2024 9:45:27
root
0755
cal
36.945 KB
March 30 2020 11:26:14
root
0755
calendar
34.633 KB
March 30 2020 11:26:14
root
0755
captoinfo
90.414 KB
May 16 2023 8:47:48
root
0755
catchsegv
3.253 KB
November 22 2023 2:32:50
root
0755
catman
38.688 KB
February 25 2020 6:13:45
root
0755
cautious-launcher
0.833 KB
October 19 2019 1:05:50
root
0755
cc
1.1 MB
October 24 2022 11:28:06
root
0755
cct
30.148 KB
February 13 2020 4:29:49
root
0755
certbot
0.376 KB
October 26 2020 3:42:45
root
0755
cgi-fcgi
18.148 KB
March 22 2020 4:45:46
root
0755
chage
82.531 KB
November 29 2022 12:53:10
root
2755
chardet3
0.38 KB
December 17 2019 1:31:30
root
0755
chardetect3
0.38 KB
December 17 2019 1:31:30
root
0755
chattr
14.313 KB
June 02 2022 2:59:32
root
0755
chcon
70.336 KB
September 05 2019 12:38:40
root
0755
check-language-support
2.706 KB
September 27 2020 10:07:12
root
0755
checkgid
14.148 KB
October 26 2023 3:54:09
root
0755
chfn
83.07 KB
November 29 2022 12:53:10
root
4755
choom
50.227 KB
May 30 2023 5:42:35
root
0755
chrt
38.227 KB
May 30 2023 5:42:35
root
0755
chsh
51.797 KB
November 29 2022 12:53:10
root
4755
ckbcomp
146.391 KB
March 27 2020 11:10:06
root
0755
cksum
38.336 KB
September 05 2019 12:38:40
root
0755
clear
14.313 KB
May 16 2023 8:47:48
root
0755
clear_console
14.227 KB
April 18 2022 11:14:46
root
0755
cmp
50.094 KB
April 08 2019 2:04:00
root
0755
codepage
13.992 KB
May 09 2019 5:22:51
root
0755
col
18.148 KB
March 30 2020 11:26:14
root
0755
colcrt
14.148 KB
March 30 2020 11:26:14
root
0755
colrm
14.148 KB
March 30 2020 11:26:14
root
0755
column
14.164 KB
March 30 2020 11:26:14
root
0755
comm
42.367 KB
September 05 2019 12:38:40
root
0755
compose
18.054 KB
October 19 2019 1:05:50
root
0755
corelist
14.734 KB
November 23 2023 4:02:19
root
0755
corepack
2.08 MB
March 28 2023 10:16:29
root
0755
cpan
7.964 KB
November 23 2023 4:02:19
root
0755
cpan5.30-x86_64-linux-gnu
7.984 KB
November 23 2023 4:02:19
root
0755
cpp
1.1 MB
October 24 2022 11:28:06
root
0755
cpp-9
1.1 MB
October 24 2022 11:28:06
root
0755
crontab
42.695 KB
February 13 2020 9:44:42
root
2755
cs2cs
26.25 KB
February 13 2020 4:29:49
root
0755
csplit
54.367 KB
September 05 2019 12:38:40
root
0755
ctstat
30.508 KB
February 13 2020 6:21:59
root
0755
curl
234.227 KB
November 29 2023 8:26:14
root
0755
cut
46.367 KB
September 05 2019 12:38:40
root
0755
cvtsudoers
266.695 KB
April 04 2023 1:56:28
root
0755
daemon
236.984 KB
September 05 2019 12:47:28
root
0755
db5.3_archive
14.023 KB
March 21 2020 1:26:50
root
0755
db5.3_checkpoint
14.023 KB
March 21 2020 1:26:50
root
0755
db5.3_deadlock
14.023 KB
March 21 2020 1:26:50
root
0755
db5.3_dump
18.023 KB
March 21 2020 1:26:50
root
0755
db5.3_hotbackup
18.023 KB
March 21 2020 1:26:50
root
0755
db5.3_load
34.023 KB
March 21 2020 1:26:50
root
0755
db5.3_log_verify
14.023 KB
March 21 2020 1:26:50
root
0755
db5.3_printlog
34.023 KB
March 21 2020 1:26:50
root
0755
db5.3_recover
14.023 KB
March 21 2020 1:26:50
root
0755
db5.3_replicate
18.023 KB
March 21 2020 1:26:50
root
0755
db5.3_stat
18.023 KB
March 21 2020 1:26:50
root
0755
db5.3_upgrade
14.023 KB
March 21 2020 1:26:50
root
0755
db5.3_verify
14.023 KB
March 21 2020 1:26:50
root
0755
db_archive
14.023 KB
March 21 2020 1:26:50
root
0755
db_checkpoint
14.023 KB
March 21 2020 1:26:50
root
0755
db_deadlock
14.023 KB
March 21 2020 1:26:50
root
0755
db_dump
18.023 KB
March 21 2020 1:26:50
root
0755
db_hotbackup
18.023 KB
March 21 2020 1:26:50
root
0755
db_load
34.023 KB
March 21 2020 1:26:50
root
0755
db_log_verify
14.023 KB
March 21 2020 1:26:50
root
0755
db_printlog
34.023 KB
March 21 2020 1:26:50
root
0755
db_recover
14.023 KB
March 21 2020 1:26:50
root
0755
db_replicate
18.023 KB
March 21 2020 1:26:50
root
0755
db_stat
18.023 KB
March 21 2020 1:26:50
root
0755
db_upgrade
14.023 KB
March 21 2020 1:26:50
root
0755
db_verify
14.023 KB
March 21 2020 1:26:50
root
0755
dbilogstrip
1.348 KB
July 30 2021 1:22:12
root
0755
dbiprof
6.061 KB
July 30 2021 1:22:12
root
0755
dbiproxy
5.268 KB
July 30 2021 1:22:12
root
0755
dbus-cleanup-sockets
14.141 KB
October 25 2022 3:09:26
root
0755
dbus-daemon
243.195 KB
October 25 2022 3:09:26
root
0755
dbus-monitor
30.141 KB
October 25 2022 3:09:26
root
0755
dbus-run-session
14.141 KB
October 25 2022 3:09:26
root
0755
dbus-send
30.141 KB
October 25 2022 3:09:26
root
0755
dbus-update-activation-environment
14.141 KB
October 25 2022 3:09:26
root
0755
dbus-uuidgen
14.141 KB
October 25 2022 3:09:26
root
0755
deallocvt
14.07 KB
May 09 2019 5:22:51
root
0755
deb-systemd-helper
20.828 KB
June 21 2019 8:56:55
root
0755
deb-systemd-invoke
4.326 KB
June 21 2019 8:56:55
root
0755
debconf
2.792 KB
August 03 2019 12:51:13
root
0755
debconf-apt-progress
11.271 KB
August 03 2019 12:51:13
root
0755
debconf-communicate
0.594 KB
August 03 2019 12:51:13
root
0755
debconf-copydb
1.679 KB
August 03 2019 12:51:13
root
0755
debconf-escape
0.632 KB
August 03 2019 12:51:13
root
0755
debconf-set-selections
2.866 KB
August 03 2019 12:51:13
root
0755
debconf-show
1.784 KB
August 03 2019 12:51:13
root
0755
debian-distro-info
22.891 KB
April 25 2023 3:57:38
root
0755
delaunay
22.383 KB
February 03 2017 11:04:42
root
0755
delpart
30.227 KB
May 30 2023 5:42:35
root
0755
delv
48.391 KB
September 19 2023 1:22:19
root
0755
dh_bash-completion
2.389 KB
January 26 2020 4:42:18
root
0755
dh_perl_dbi
1.04 KB
July 30 2021 1:22:12
root
0755
dh_perl_openssl
1.363 KB
February 03 2020 12:05:01
root
0755
dh_python3-ply
2.281 KB
June 01 2021 5:05:04
root
0755
diff
214.336 KB
April 08 2019 2:04:00
root
0755
diff3
66.211 KB
April 08 2019 2:04:00
root
0755
dig
134.797 KB
September 19 2023 1:22:19
root
0755
dircolors
46.344 KB
September 05 2019 12:38:40
root
0755
dirmngr
569.859 KB
July 04 2022 6:20:36
root
0755
dirmngr-client
119.063 KB
July 04 2022 6:20:36
root
0755
dirname
38.336 KB
September 05 2019 12:38:40
root
0755
distro-info
22.891 KB
April 25 2023 3:57:38
root
0755
dkimproxy-sign
3.896 KB
February 08 2020 7:07:01
root
0755
dkimproxy-verify
2.248 KB
February 08 2020 7:07:01
root
0755
do-release-upgrade
9.987 KB
March 14 2023 1:29:22
root
0755
dotlockfile
22.148 KB
October 11 2019 7:55:06
root
2755
doveadm
637.016 KB
July 07 2022 7:17:38
root
0755
doveconf
180.68 KB
July 07 2022 7:17:38
root
0755
dpkg
302.68 KB
May 25 2022 1:14:20
root
0755
dpkg-architecture
12.551 KB
May 25 2022 1:14:20
root
0755
dpkg-buildflags
7.388 KB
May 25 2022 1:14:20
root
0755
dpkg-buildpackage
29.893 KB
May 25 2022 1:14:20
root
0755
dpkg-checkbuilddeps
7.445 KB
May 25 2022 1:14:20
root
0755
dpkg-deb
174.539 KB
May 25 2022 1:14:20
root
0755
dpkg-distaddfile
2.717 KB
May 25 2022 1:14:20
root
0755
dpkg-divert
150.594 KB
May 25 2022 1:14:20
root
0755
dpkg-genbuildinfo
16.401 KB
May 25 2022 1:14:20
root
0755
dpkg-genchanges
17.082 KB
May 25 2022 1:14:20
root
0755
dpkg-gencontrol
13.866 KB
May 25 2022 1:14:20
root
0755
dpkg-gensymbols
10.646 KB
May 25 2022 1:14:20
root
0755
dpkg-maintscript-helper
20.033 KB
May 25 2022 1:14:20
root
0755
dpkg-mergechangelogs
8.347 KB
May 25 2022 1:14:20
root
0755
dpkg-name
6.63 KB
May 25 2022 1:14:20
root
0755
dpkg-parsechangelog
4.46 KB
May 25 2022 1:14:20
root
0755
dpkg-query
162.586 KB
May 25 2022 1:14:20
root
0755
dpkg-scanpackages
8.494 KB
May 25 2022 1:14:20
root
0755
dpkg-scansources
8.952 KB
May 25 2022 1:14:20
root
0755
dpkg-shlibdeps
30.68 KB
May 25 2022 1:14:20
root
0755
dpkg-source
22.482 KB
May 25 2022 1:14:20
root
0755
dpkg-split
122.484 KB
May 25 2022 1:14:20
root
0755
dpkg-statoverride
62.266 KB
May 25 2022 1:14:20
root
0755
dpkg-trigger
82.492 KB
May 25 2022 1:14:20
root
0755
dpkg-vendor
3.186 KB
May 25 2022 1:14:20
root
0755
dsync
637.016 KB
July 07 2022 7:17:38
root
0755
du
106.367 KB
September 05 2019 12:38:40
root
0755
dumpkeys
174.523 KB
May 09 2019 5:22:51
root
0755
dvipdf
0.983 KB
October 12 2023 3:06:46
root
0755
dwp
1.95 MB
January 02 2024 4:48:50
root
0755
edit
18.054 KB
October 19 2019 1:05:50
root
0755
editor
312.633 KB
April 10 2020 4:12:30
root
0755
editres
72.703 KB
February 29 2020 7:29:50
root
0755
eject
34.844 KB
July 08 2019 10:40:51
root
0755
elfedit
42.672 KB
January 02 2024 4:48:50
root
0755
enc2xs
41.124 KB
November 23 2023 4:02:19
root
0755
encguess
2.994 KB
November 23 2023 4:02:19
root
0755
enchant-2
22.375 KB
November 05 2020 3:13:12
root
0755
enchant-lsmod-2
14.305 KB
November 05 2020 3:13:12
root
0755
env
42.336 KB
September 05 2019 12:38:40
root
0755
envsubst
42.227 KB
March 22 2020 4:42:12
root
0755
eps2eps
0.624 KB
October 12 2023 3:06:46
root
0755
eqn
201.5 KB
March 21 2020 1:27:30
root
0755
erb
4.944 KB
July 06 2023 12:57:08
root
0755
erb2.7
4.944 KB
July 06 2023 12:57:08
root
0755
etckeeper
2.806 KB
March 30 2020 12:24:10
root
0755
ex
1.29 MB
December 07 2023 4:42:49
root
0755
expand
42.367 KB
September 05 2019 12:38:40
root
0755
expiry
30.578 KB
November 29 2022 12:53:10
root
2755
expr
54.336 KB
September 05 2019 12:38:40
root
0755
factor
78.367 KB
September 05 2019 12:38:40
root
0755
fail2ban-client
1.386 KB
March 02 2020 2:20:11
root
0755
fail2ban-python
5.21 MB
November 22 2023 11:22:35
root
0755
fail2ban-regex
1.25 KB
March 02 2020 2:20:11
root
0755
fail2ban-server
1.384 KB
March 02 2020 2:20:11
root
0755
fail2ban-testcases
2.231 KB
March 02 2020 2:20:11
root
0755
faillog
22.594 KB
November 29 2022 12:53:10
root
0755
faked-sysv
34.266 KB
September 07 2019 12:48:18
root
0755
faked-tcp
34.25 KB
September 07 2019 12:48:18
root
0755
fakeroot
3.761 KB
September 07 2019 12:48:18
root
0755
fakeroot-sysv
3.761 KB
September 07 2019 12:48:18
root
0755
fakeroot-tcp
3.756 KB
September 07 2019 12:48:18
root
0755
fallocate
34.227 KB
May 30 2023 5:42:35
root
0755
fc-cache
22.227 KB
April 06 2020 12:09:42
root
0755
fc-cat
18.227 KB
April 06 2020 12:09:42
root
0755
fc-conflist
14.227 KB
April 06 2020 12:09:42
root
0755
fc-list
14.227 KB
April 06 2020 12:09:42
root
0755
fc-match
14.227 KB
April 06 2020 12:09:42
root
0755
fc-pattern
14.227 KB
April 06 2020 12:09:42
root
0755
fc-query
14.227 KB
April 06 2020 12:09:42
root
0755
fc-scan
14.227 KB
April 06 2020 12:09:42
root
0755
fc-validate
14.227 KB
April 06 2020 12:09:42
root
0755
fcgistarter
14.148 KB
October 26 2023 3:54:09
root
0755
file
26.469 KB
January 16 2020 9:39:11
root
0755
fincore
34.273 KB
May 30 2023 5:42:35
root
0755
find
312.656 KB
February 18 2020 2:05:59
root
0755
firefox
2.604 KB
February 06 2024 2:59:08
root
0755
firewall-cmd
115.96 KB
April 04 2020 7:50:39
root
0755
firewall-offline-cmd
104.194 KB
April 04 2020 7:50:39
root
0755
flock
34.305 KB
May 30 2023 5:42:35
root
0755
fmt
46.336 KB
September 05 2019 12:38:40
root
0755
fold
42.336 KB
September 05 2019 12:38:40
root
0755
formail
42.148 KB
November 16 2017 11:42:36
root
0755
free
26.234 KB
October 31 2023 12:35:56
root
0755
from
14.148 KB
March 30 2020 11:26:14
root
0755
ftp
106.695 KB
February 24 2019 2:39:21
root
0755
ftpcount
23.445 KB
February 27 2020 8:34:56
root
0755
ftpdctl
98.273 KB
February 27 2020 8:34:56
root
0755
ftptop
27.164 KB
February 27 2020 8:34:56
root
0755
ftpwho
39.586 KB
February 27 2020 8:34:56
root
0755
funzip
26.148 KB
October 07 2022 7:09:47
root
0755
futurize
0.375 KB
January 25 2023 9:33:14
root
0755
g++
1.1 MB
October 24 2022 11:28:06
root
0755
g++-9
1.1 MB
October 24 2022 11:28:06
root
0755
gapplication
22.383 KB
June 08 2023 4:20:31
root
0755
gcc
1.1 MB
October 24 2022 11:28:06
root
0755
gcc-9
1.1 MB
October 24 2022 11:28:06
root
0755
gcc-ar
34.633 KB
October 24 2022 11:28:06
root
0755
gcc-ar-9
34.633 KB
October 24 2022 11:28:06
root
0755
gcc-nm
34.633 KB
October 24 2022 11:28:06
root
0755
gcc-nm-9
34.633 KB
October 24 2022 11:28:06
root
0755
gcc-ranlib
34.633 KB
October 24 2022 11:28:06
root
0755
gcc-ranlib-9
34.633 KB
October 24 2022 11:28:06
root
0755
gcov
656.234 KB
October 24 2022 11:28:06
root
0755
gcov-9
656.234 KB
October 24 2022 11:28:06
root
0755
gcov-dump
528.133 KB
October 24 2022 11:28:06
root
0755
gcov-dump-9
528.133 KB
October 24 2022 11:28:06
root
0755
gcov-tool
544.195 KB
October 24 2022 11:28:06
root
0755
gcov-tool-9
544.195 KB
October 24 2022 11:28:06
root
0755
gdbus
50.383 KB
June 08 2023 4:20:31
root
0755
gdk-pixbuf-csource
14.328 KB
September 07 2022 5:05:42
root
0755
gdk-pixbuf-pixdata
14.313 KB
September 07 2022 5:05:42
root
0755
gdk-pixbuf-thumbnailer
18.391 KB
September 07 2022 5:05:42
root
0755
gem
0.532 KB
July 06 2023 12:57:08
root
0755
gem2.7
0.532 KB
July 06 2023 12:57:08
root
0755
gen-auth
14.428 KB
February 15 2022 9:03:43
root
0755
gencat
26.367 KB
November 22 2023 2:32:50
root
0755
geod
22.164 KB
February 13 2020 4:29:49
root
0755
geqn
201.5 KB
March 21 2020 1:27:30
root
0755
getconf
34.289 KB
November 22 2023 2:32:50
root
0755
getent
38.648 KB
November 22 2023 2:32:50
root
0755
getkeycodes
14.07 KB
May 09 2019 5:22:51
root
0755
getopt
22.227 KB
May 30 2023 5:42:35
root
0755
gettext
42.227 KB
March 22 2020 4:42:12
root
0755
gettext.sh
4.521 KB
March 22 2020 4:42:12
root
0755
ghostscript
14.148 KB
October 12 2023 3:06:46
root
0755
gie
42.375 KB
February 13 2020 4:29:49
root
0755
ginstall-info
115.242 KB
October 11 2019 12:32:01
root
0755
gio
90.398 KB
June 08 2023 4:20:31
root
0755
gio-querymodules
14.305 KB
June 08 2023 4:20:31
root
0755
git
2.98 MB
April 26 2023 2:52:23
root
0755
git-receive-pack
2.98 MB
April 26 2023 2:52:23
root
0755
git-shell
1.71 MB
April 26 2023 2:52:23
root
0755
git-upload-archive
2.98 MB
April 26 2023 2:52:23
root
0755
git-upload-pack
2.98 MB
April 26 2023 2:52:23
root
0755
glib-compile-schemas
50.375 KB
June 08 2023 4:20:31
root
0755
gnome-www-browser
2.604 KB
February 06 2024 2:59:08
root
0755
gold
2.21 MB
January 02 2024 4:48:50
root
0755
gpasswd
86.391 KB
November 29 2022 12:53:10
root
4755
gpg
1.02 MB
July 04 2022 6:20:36
root
0755
gpg-agent
409.039 KB
July 04 2022 6:20:36
root
0755
gpg-connect-agent
163.156 KB
July 04 2022 6:20:36
root
0755
gpg-wks-server
203.195 KB
July 04 2022 6:20:36
root
0755
gpg-zip
3.434 KB
July 04 2022 6:20:36
root
0755
gpgcompose
874.289 KB
July 04 2022 6:20:36
root
0755
gpgconf
174.656 KB
July 04 2022 6:20:36
root
0755
gpgparsemail
34.375 KB
July 04 2022 6:20:36
root
0755
gpgsm
507.242 KB
July 04 2022 6:20:36
root
0755
gpgsplit
86.758 KB
July 04 2022 6:20:36
root
0755
gpgtar
151.625 KB
July 04 2022 6:20:36
root
0755
gpgv
447.148 KB
July 04 2022 6:20:36
root
0755
gpic
216.344 KB
March 21 2020 1:27:30
root
0755
gprof
99.883 KB
January 02 2024 4:48:50
root
0755
gresource
22.305 KB
June 08 2023 4:20:31
root
0755
groff
121.531 KB
March 21 2020 1:27:30
root
0755
grog
2.711 KB
March 21 2020 1:27:30
root
0755
grops
181.938 KB
March 21 2020 1:27:30
root
0755
grotty
129.563 KB
March 21 2020 1:27:30
root
0755
groups
38.336 KB
September 05 2019 12:38:40
root
0755
gs
14.148 KB
October 12 2023 3:06:46
root
0755
gsbj
0.342 KB
October 12 2023 3:06:46
root
0755
gsdj
0.344 KB
October 12 2023 3:06:46
root
0755
gsdj500
0.344 KB
October 12 2023 3:06:46
root
0755
gsettings
30.383 KB
June 08 2023 4:20:31
root
0755
gslj
0.345 KB
October 12 2023 3:06:46
root
0755
gslp
0.342 KB
October 12 2023 3:06:46
root
0755
gsnd
0.271 KB
October 12 2023 3:06:46
root
0755
gtbl
138.508 KB
March 21 2020 1:27:30
root
0755
gtk-builder-tool
34.734 KB
February 15 2022 6:50:52
root
0755
gtk-encode-symbolic-svg
18.414 KB
February 15 2022 6:50:52
root
0755
gtk-launch
18.461 KB
February 15 2022 6:50:52
root
0755
gtk-query-settings
14.305 KB
February 15 2022 6:50:52
root
0755
gtk-update-icon-cache
38.625 KB
February 15 2022 6:50:52
root
0755
gts-config
2.585 KB
February 03 2017 11:04:42
root
0755
gts2dxf
9.867 KB
February 03 2017 11:04:42
root
0755
gts2oogl
26.727 KB
February 03 2017 11:04:42
root
0755
gts2stl
10.008 KB
February 03 2017 11:04:42
root
0755
gts2xyz
9.867 KB
February 03 2017 11:04:42
root
0755
gtscheck
9.977 KB
February 03 2017 11:04:42
root
0755
gtscompare
22.164 KB
February 03 2017 11:04:42
root
0755
gtstemplate
5.967 KB
February 03 2017 11:04:42
root
0755
h2ph
28.539 KB
November 23 2023 4:02:19
root
0755
h2xs
59.439 KB
November 23 2023 4:02:19
root
0755
hd
34.25 KB
March 30 2020 11:26:14
root
0755
head
46.367 KB
September 05 2019 12:38:40
root
0755
helpztags
2.455 KB
January 30 2020 12:11:47
root
0755
hexdump
34.25 KB
March 30 2020 11:26:14
root
0755
host
102.766 KB
September 19 2023 1:22:19
root
0755
hostid
38.336 KB
September 05 2019 12:38:40
root
0755
hostnamectl
26.219 KB
November 21 2023 10:10:21
root
0755
htcacheclean
38.156 KB
October 26 2023 3:54:09
root
0755
htdbm
26.148 KB
October 26 2023 3:54:09
root
0755
htdigest
14.148 KB
October 26 2023 3:54:09
root
0755
htpasswd
26.148 KB
October 26 2023 3:54:09
root
0755
hwe-support-status
10.576 KB
November 15 2023 11:28:54
root
0755
i386
26.5 KB
May 30 2023 5:42:35
root
0755
ibd2sdi
6.48 MB
January 17 2024 9:13:42
root
0755
iceauth
38.117 KB
March 18 2018 11:19:30
root
0755
ico
50.438 KB
February 29 2020 12:10:29
root
0755
iconv
66.406 KB
November 22 2023 2:32:50
root
0755
id
46.367 KB
September 05 2019 12:38:40
root
0755
info
309.742 KB
October 11 2019 12:32:01
root
0755
infobrowser
309.742 KB
October 11 2019 12:32:01
root
0755
infocmp
62.383 KB
May 16 2023 8:47:48
root
0755
infotocap
90.414 KB
May 16 2023 8:47:48
root
0755
innochecksum
6.37 MB
January 17 2024 9:13:42
root
0755
inotifywait
30.305 KB
August 06 2019 6:42:10
root
0755
inotifywatch
30.305 KB
August 06 2019 6:42:10
root
0755
install
154.406 KB
September 05 2019 12:38:40
root
0755
install-info
115.242 KB
October 11 2019 12:32:01
root
0755
instmodsh
4.268 KB
November 23 2023 4:02:19
root
0755
invgeod
22.164 KB
February 13 2020 4:29:49
root
0755
invproj
26.164 KB
February 13 2020 4:29:49
root
0755
ionice
30.227 KB
May 30 2023 5:42:35
root
0755
ipcmk
34.297 KB
May 30 2023 5:42:35
root
0755
ipcrm
34.227 KB
May 30 2023 5:42:35
root
0755
ipcs
66.227 KB
May 30 2023 5:42:35
root
0755
iptables-xml
96.969 KB
May 09 2023 8:39:57
root
0755
irb
0.495 KB
July 06 2023 12:57:08
root
0755
irb2.7
0.495 KB
July 06 2023 12:57:08
root
0755
ischroot
14.195 KB
December 07 2019 3:13:44
root
0755
ispell-wrapper
7.053 KB
November 15 2018 4:24:46
root
0755
jk_uchroot
30.469 KB
November 11 2019 5:23:32
root
4755
join
54.367 KB
September 05 2019 12:38:40
root
0755
json_pp
4.558 KB
November 23 2023 4:02:19
root
0755
json_xs
6.849 KB
October 19 2019 10:04:01
root
0755
kbdinfo
14.07 KB
May 09 2019 5:22:51
root
0755
kbxutil
174.969 KB
July 04 2022 6:20:36
root
0755
kernel-install
5.069 KB
April 01 2020 7:23:42
root
0755
killall
31.273 KB
November 12 2019 12:16:21
root
0755
l4p-tmpl
1.803 KB
August 01 2017 10:39:59
root
0755
last
46.227 KB
May 30 2023 5:42:35
root
0755
lastb
46.227 KB
May 30 2023 5:42:35
root
0755
lastlog
31.656 KB
November 29 2022 12:53:10
root
0755
lcf
7.604 KB
December 14 2018 9:51:14
root
0755
ld
1.66 MB
January 02 2024 4:48:50
root
0755
ld.bfd
1.66 MB
January 02 2024 4:48:50
root
0755
ld.gold
2.21 MB
January 02 2024 4:48:50
root
0755
ldd
5.301 KB
November 22 2023 2:32:50
root
0755
less
175.844 KB
July 02 2020 1:25:13
root
0755
lessecho
14.313 KB
July 02 2020 1:25:13
root
0755
lessfile
8.363 KB
September 03 2019 6:41:52
root
0755
lesskey
23.719 KB
July 02 2020 1:25:13
root
0755
lesspipe
8.363 KB
September 03 2019 6:41:52
root
0755
letsencrypt
0.376 KB
October 26 2020 3:42:45
root
0755
lexgrog
98.945 KB
February 25 2020 6:13:45
root
0755
libnetcfg
15.405 KB
November 23 2023 4:02:19
root
0755
link
38.336 KB
September 05 2019 12:38:40
root
0755
linux32
26.5 KB
May 30 2023 5:42:35
root
0755
linux64
26.5 KB
May 30 2023 5:42:35
root
0755
listres
14.727 KB
February 29 2020 7:29:50
root
0755
lnstat
30.508 KB
February 13 2020 6:21:59
root
0755
loadkeys
210.57 KB
May 09 2019 5:22:51
root
0755
loadunimap
34.133 KB
May 09 2019 5:22:51
root
0755
locale
57.563 KB
November 22 2023 2:32:50
root
0755
locale-check
14.156 KB
January 02 2024 6:12:43
root
0755
localectl
26.219 KB
November 21 2023 10:10:21
root
0755
localedef
326.961 KB
November 22 2023 2:32:50
root
0755
lockfile
17.875 KB
November 16 2017 11:42:36
root
2755
logger
50.82 KB
May 30 2023 5:42:35
root
0755
logname
38.336 KB
September 05 2019 12:38:40
root
0755
logresolve
14.156 KB
October 26 2023 3:54:09
root
0755
look
14.383 KB
March 30 2020 11:26:14
root
0755
lorder
2.817 KB
March 30 2020 11:26:14
root
0755
lsattr
14.313 KB
June 02 2022 2:59:32
root
0755
lsb_release
3.553 KB
August 25 2019 11:11:20
root
0755
lscpu
98.227 KB
May 30 2023 5:42:35
root
0755
lshw
841.195 KB
December 17 2020 10:34:41
root
0755
lsipc
94.227 KB
May 30 2023 5:42:35
root
0755
lslocks
38.555 KB
May 30 2023 5:42:35
root
0755
lslogins
66.227 KB
May 30 2023 5:42:35
root
0755
lsmem
66.227 KB
May 30 2023 5:42:35
root
0755
lsns
50.234 KB
May 30 2023 5:42:35
root
0755
lsof
171.625 KB
December 25 2020 5:57:35
root
0755
lspci
91.953 KB
April 01 2021 12:55:11
root
0755
lspgpot
1.056 KB
August 28 2017 12:22:54
root
0755
lsusb
242.508 KB
October 01 2019 11:03:11
root
0755
ltrace
301.328 KB
February 01 2019 1:10:30
root
0755
luit
52.422 KB
February 29 2020 7:29:50
root
0755
lwp-download
10.051 KB
November 29 2019 4:16:23
root
0755
lwp-dump
2.647 KB
November 29 2019 4:16:23
root
0755
lwp-mirror
2.356 KB
November 29 2019 4:16:23
root
0755
lwp-request
15.82 KB
November 29 2019 4:16:23
root
0755
lynx
1.85 MB
February 28 2020 3:28:01
root
0755
lzcat
78.5 KB
April 08 2022 2:56:10
root
0755
lzcmp
6.477 KB
April 08 2022 2:56:10
root
0755
lzdiff
6.477 KB
April 08 2022 2:56:10
root
0755
lzegrep
5.764 KB
April 08 2022 2:56:10
root
0755
lzfgrep
5.764 KB
April 08 2022 2:56:10
root
0755
lzgrep
5.764 KB
April 08 2022 2:56:10
root
0755
lzless
1.76 KB
April 08 2022 2:56:10
root
0755
lzma
78.5 KB
April 08 2022 2:56:10
root
0755
lzmainfo
14.227 KB
April 08 2022 2:56:10
root
0755
lzmore
2.11 KB
April 08 2022 2:56:10
root
0755
mail
110.242 KB
August 08 2018 11:12:01
root
0755
maildirmake.dovecot
0.509 KB
April 11 2021 5:50:21
root
0755
mailq
34.305 KB
January 29 2024 9:49:03
root
0755
mailstat
5.722 KB
November 16 2017 11:42:36
root
0755
mailx
110.242 KB
August 08 2018 11:12:01
root
0755
make
225.555 KB
July 28 2018 12:07:31
root
0755
make-first-existing-target
4.79 KB
July 28 2018 12:07:31
root
0755
man
116.828 KB
February 25 2020 6:13:45
root
0755
man-recode
26.898 KB
February 25 2020 6:13:45
root
0755
mandb
139.094 KB
February 25 2020 6:13:45
root
0755
manpath
38.703 KB
February 25 2020 6:13:45
root
0755
mapscrn
26.133 KB
May 09 2019 5:22:51
root
0755
mawk
158.742 KB
February 16 2020 8:41:09
root
0755
mcookie
34.297 KB
May 30 2023 5:42:35
root
0755
md5sum
46.367 KB
September 05 2019 12:38:40
root
0755
md5sum.textutils
46.367 KB
September 05 2019 12:38:40
root
0755
mdig
50.398 KB
September 19 2023 1:22:19
root
0755
mesg
14.227 KB
May 30 2023 5:42:35
root
0755
migrate-pubring-from-classic-gpg
2.988 KB
January 06 2021 7:10:35
root
0755
mk_modmap
15.784 KB
May 09 2019 5:22:51
root
0755
mkfifo
66.336 KB
September 05 2019 12:38:40
root
0755
mkpasswd
26.227 KB
February 16 2020 10:25:51
root
0755
mlock
14.148 KB
August 26 2019 10:52:52
root
2755
mtr
80.25 KB
August 20 2019 11:26:21
root
0755
mtr-packet
38.375 KB
August 20 2019 11:26:21
root
0755
mtrace
6.346 KB
November 22 2023 2:32:50
root
0755
my_print_defaults
6.29 MB
January 17 2024 9:13:42
root
0755
myisam_ftdump
6.58 MB
January 17 2024 9:13:42
root
0755
myisamchk
6.69 MB
January 17 2024 9:13:42
root
0755
myisamlog
6.53 MB
January 17 2024 9:13:42
root
0755
myisampack
6.6 MB
January 17 2024 9:13:42
root
0755
mysql
7.33 MB
January 17 2024 9:13:42
root
0755
mysql_config_editor
6.31 MB
January 17 2024 9:13:42
root
0755
mysql_migrate_keyring
7.24 MB
January 17 2024 9:13:42
root
0755
mysql_secure_installation
7.16 MB
January 17 2024 9:13:42
root
0755
mysql_ssl_rsa_setup
6.33 MB
January 17 2024 9:13:42
root
0755
mysql_tzinfo_to_sql
6.23 MB
January 17 2024 9:13:42
root
0755
mysql_upgrade
7.26 MB
January 17 2024 9:13:42
root
0755
mysqladmin
7.17 MB
January 17 2024 9:13:42
root
0755
mysqlanalyze
7.18 MB
January 17 2024 9:13:42
root
0755
mysqlbinlog
7.62 MB
January 17 2024 9:13:42
root
0755
mysqlcheck
7.18 MB
January 17 2024 9:13:42
root
0755
mysqld_multi
26.677 KB
January 17 2024 9:13:42
root
0755
mysqld_safe
28.454 KB
January 17 2024 9:13:42
root
0755
mysqldump
7.25 MB
January 17 2024 9:13:42
root
0755
mysqldumpslow
7.489 KB
January 17 2024 9:13:42
root
0755
mysqlimport
7.17 MB
January 17 2024 9:13:42
root
0755
mysqloptimize
7.18 MB
January 17 2024 9:13:42
root
0755
mysqlpump
7.6 MB
January 17 2024 9:13:42
root
0755
mysqlrepair
7.18 MB
January 17 2024 9:13:42
root
0755
mysqlreport
38.102 KB
June 14 2023 9:23:16
root
0755
mysqlshow
7.17 MB
January 17 2024 9:13:42
root
0755
mysqlslap
7.18 MB
January 17 2024 9:13:42
root
0755
named-rrchecker
22.297 KB
September 19 2023 1:22:19
root
0755
namei
34.227 KB
May 30 2023 5:42:35
root
0755
nawk
158.742 KB
February 16 2020 8:41:09
root
0755
ncal
36.945 KB
March 30 2020 11:26:14
root
0755
neqn
0.892 KB
March 21 2020 1:27:30
root
0755
net-server
3.338 KB
April 03 2020 5:02:06
root
0755
netkit-ftp
106.695 KB
February 24 2019 2:39:21
root
0755
networkd-dispatcher
19.712 KB
May 04 2022 3:49:53
root
0755
newaliases
34.305 KB
January 29 2024 9:49:03
root
0755
newgrp
43.734 KB
November 29 2022 12:53:10
root
4755
ngettext
42.227 KB
March 22 2020 4:42:12
root
0755
nice
42.336 KB
September 05 2019 12:38:40
root
0755
nip2
1.02 MB
September 19 2018 11:30:07
root
0755
nl
42.43 KB
September 05 2019 12:38:40
root
0755
nm
51.43 KB
January 02 2024 4:48:50
root
0755
node
78.78 MB
August 09 2023 12:24:22
root
0755
nohup
42.336 KB
September 05 2019 12:38:40
root
0755
npm
0.053 KB
February 16 2023 4:41:30
root
0755
nproc
42.336 KB
September 05 2019 12:38:40
root
0755
npx
2.77 KB
February 16 2023 4:41:30
root
0755
nroff
3.216 KB
March 21 2020 1:27:30
root
0755
nsenter
34.43 KB
May 30 2023 5:42:35
root
0755
nslookup
106.797 KB
September 19 2023 1:22:19
root
0755
nstat
78.234 KB
February 13 2020 6:21:59
root
0755
nsupdate
70.523 KB
September 19 2023 1:22:19
root
0755
ntfsdecrypt
50.273 KB
November 01 2022 12:56:50
root
0755
numfmt
66.398 KB
September 05 2019 12:38:40
root
0755
objcopy
182.477 KB
January 02 2024 4:48:50
root
0755
objdump
392.828 KB
January 02 2024 4:48:50
root
0755
oclock
27.719 KB
February 29 2020 12:10:29
root
0755
od
70.367 KB
September 05 2019 12:38:40
root
0755
odbcinst
22 KB
January 14 2019 9:05:00
root
0755
on_ac_power
2.176 KB
July 20 2019 5:43:51
root
0755
openssl
735.68 KB
January 31 2024 9:45:27
root
0755
p7zip
4.643 KB
August 09 2019 9:00:38
root
0755
pager
175.844 KB
July 02 2020 1:25:13
root
0755
paperconf
13.992 KB
June 26 2019 12:04:32
root
0755
partx
118.234 KB
May 30 2023 5:42:35
root
0755
passwd
66.609 KB
November 29 2022 12:53:10
root
4755
paste
42.367 KB
September 05 2019 12:38:40
root
0755
pasteurize
0.379 KB
January 25 2023 9:33:14
root
0755
patch
190.523 KB
July 27 2019 12:10:00
root
0755
pathchk
38.336 KB
September 05 2019 12:38:40
root
0755
pbr
0.148 KB
April 09 2020 9:32:59
root
0755
pdb3
61.268 KB
November 22 2023 11:22:35
root
0755
pdb3.8
61.268 KB
November 22 2023 11:22:35
root
0755
pdf2dsc
0.682 KB
October 12 2023 3:06:46
root
0755
pdf2ps
0.888 KB
October 12 2023 3:06:46
root
0755
pear
0.774 KB
March 22 2022 11:59:18
root
0755
peardev
0.795 KB
March 22 2022 11:59:18
root
0755
pecl
0.71 KB
March 22 2022 11:59:18
root
0755
peekfd
14.148 KB
November 12 2019 12:16:21
root
0755
perl
3.32 MB
November 23 2023 4:02:19
root
0755
perl5.30-x86_64-linux-gnu
14.305 KB
November 23 2023 4:02:19
root
0755
perl5.30.0
3.32 MB
November 23 2023 4:02:19
root
0755
perlbug
45.279 KB
November 23 2023 4:02:19
root
0755
perldoc
0.122 KB
October 27 2019 5:52:24
root
0755
perlivp
10.609 KB
November 23 2023 4:02:19
root
0755
perlthanks
45.279 KB
November 23 2023 4:02:19
root
0755
perror
7.62 MB
January 17 2024 9:13:42
root
0755
pf2afm
0.486 KB
October 12 2023 3:06:46
root
0755
pfbtopfa
0.504 KB
October 12 2023 3:06:46
root
0755
pftp
106.695 KB
February 24 2019 2:39:21
root
0755
pgrep
30.242 KB
October 31 2023 12:35:56
root
0755
phar
14.882 KB
January 20 2024 3:16:18
root
0755
phar.default
14.882 KB
January 20 2024 3:16:18
root
0755
phar.phar
14.882 KB
January 20 2024 3:16:18
root
0755
phar.phar.default
14.882 KB
January 20 2024 3:16:18
root
0755
phar.phar5.6
14.479 KB
September 02 2023 9:57:07
root
0755
phar.phar7.4
14.536 KB
September 02 2023 10:03:15
root
0755
phar.phar8.0
15.017 KB
September 02 2023 10:04:32
root
0755
phar.phar8.1
14.887 KB
December 21 2023 9:19:26
root
0755
phar.phar8.2
14.885 KB
January 20 2024 3:16:39
root
0755
phar.phar8.3
14.882 KB
January 20 2024 3:16:18
root
0755
phar5.6
14.479 KB
September 02 2023 9:57:07
root
0755
phar7.4
14.536 KB
September 02 2023 10:03:15
root
0755
phar7.4.phar
14.536 KB
September 02 2023 10:03:15
root
0755
phar8.0
15.017 KB
September 02 2023 10:04:32
root
0755
phar8.0.phar
15.017 KB
September 02 2023 10:04:32
root
0755
phar8.1
14.887 KB
December 21 2023 9:19:26
root
0755
phar8.1.phar
14.887 KB
December 21 2023 9:19:26
root
0755
phar8.2
14.885 KB
January 20 2024 3:16:39
root
0755
phar8.2.phar
14.885 KB
January 20 2024 3:16:39
root
0755
phar8.3
14.882 KB
January 20 2024 3:16:18
root
0755
phar8.3.phar
14.882 KB
January 20 2024 3:16:18
root
0755
php
5.51 MB
January 20 2024 3:16:18
root
0755
php-cgi
5.39 MB
January 20 2024 3:16:18
root
0755
php-cgi.default
5.39 MB
January 20 2024 3:16:18
root
0755
php-cgi5.6
4.29 MB
September 02 2023 9:57:07
root
0755
php-cgi7.4
4.47 MB
September 02 2023 10:03:15
root
0755
php-cgi8.0
4.65 MB
September 02 2023 10:04:32
root
0755
php-cgi8.1
5.2 MB
December 21 2023 9:19:26
root
0755
php-cgi8.2
5.31 MB
January 20 2024 3:16:39
root
0755
php-cgi8.3
5.39 MB
January 20 2024 3:16:18
root
0755
php.default
5.51 MB
January 20 2024 3:16:18
root
0755
php5.6
4.32 MB
September 02 2023 9:57:07
root
0755
php7.4
4.58 MB
September 02 2023 10:03:15
root
0755
php8.0
4.77 MB
September 02 2023 10:04:32
root
0755
php8.1
5.31 MB
December 21 2023 9:19:26
root
0755
php8.2
5.43 MB
January 20 2024 3:16:39
root
0755
php8.3
5.51 MB
January 20 2024 3:16:18
root
0755
pic
216.344 KB
March 21 2020 1:27:30
root
0755
pico
312.633 KB
April 10 2020 4:12:30
root
0755
piconv
8.161 KB
November 23 2023 4:02:19
root
0755
pinentry
66.641 KB
March 22 2020 4:54:08
root
0755
pinentry-curses
66.641 KB
March 22 2020 4:54:08
root
0755
pinky
42.367 KB
September 05 2019 12:38:40
root
0755
pkaction
18.305 KB
February 21 2022 1:58:33
root
0755
pkcheck
22.375 KB
February 21 2022 1:58:33
root
0755
pkcon
74.305 KB
September 23 2020 12:55:22
root
0755
pkexec
30.305 KB
February 21 2022 1:58:33
root
4755
pkill
30.242 KB
October 31 2023 12:35:56
root
0755
pkmon
22.305 KB
September 23 2020 12:55:22
root
0755
pkttyagent
18.305 KB
February 21 2022 1:58:33
root
0755
pl2pm
4.427 KB
November 23 2023 4:02:19
root
0755
pldd
22.367 KB
November 22 2023 2:32:50
root
0755
pmap
34.242 KB
October 31 2023 12:35:56
root
0755
pod2html
4.037 KB
November 23 2023 4:02:19
root
0755
pod2man
14.682 KB
November 23 2023 4:02:19
root
0755
pod2text
10.55 KB
November 23 2023 4:02:19
root
0755
pod2usage
3.855 KB
November 23 2023 4:02:19
root
0755
podchecker
3.572 KB
November 23 2023 4:02:19
root
0755
podselect
2.468 KB
November 23 2023 4:02:19
root
0755
postgreyreport
23.784 KB
May 09 2019 1:35:38
root
0755
pphs
0.395 KB
October 12 2023 3:06:46
root
0755
pr
74.43 KB
September 05 2019 12:38:40
root
0755
precat
5.523 KB
July 22 2021 8:20:06
root
0755
preconv
66.508 KB
March 21 2020 1:27:30
root
0755
preunzip
5.523 KB
July 22 2021 8:20:06
root
0755
prezip
5.523 KB
July 22 2021 8:20:06
root
0755
prezip-bin
14.297 KB
July 22 2021 8:20:06
root
0755
print
18.054 KB
October 19 2019 1:05:50
root
0755
printafm
0.386 KB
October 12 2023 3:06:46
root
0755
printenv
38.336 KB
September 05 2019 12:38:40
root
0755
printerbanner
22.148 KB
March 30 2020 11:26:14
root
0755
printf
58.336 KB
September 05 2019 12:38:40
root
0755
prlimit
38.742 KB
May 30 2023 5:42:35
root
0755
pro
0.432 KB
November 07 2023 3:23:40
root
0755
procmail
94.383 KB
November 16 2017 11:42:36
root
6755
procmail-wrapper
1.35 MB
January 26 2022 8:09:58
root
4755
proj
26.164 KB
February 13 2020 4:29:49
root
0755
projinfo
86.32 KB
February 13 2020 4:29:49
root
0755
prove
13.335 KB
November 23 2023 4:02:19
root
0755
prtstat
22.227 KB
November 12 2019 12:16:21
root
0755
ps2ascii
0.616 KB
October 12 2023 3:06:46
root
0755
ps2epsi
2.688 KB
October 12 2023 3:06:46
root
0755
ps2pdf
0.266 KB
October 12 2023 3:06:46
root
0755
ps2pdf12
0.21 KB
October 12 2023 3:06:46
root
0755
ps2pdf13
0.21 KB
October 12 2023 3:06:46
root
0755
ps2pdf14
0.21 KB
October 12 2023 3:06:46
root
0755
ps2pdfwr
1.053 KB
October 12 2023 3:06:46
root
0755
ps2ps
0.632 KB
October 12 2023 3:06:46
root
0755
ps2ps2
0.653 KB
October 12 2023 3:06:46
root
0755
ps2txt
0.616 KB
October 12 2023 3:06:46
root
0755
psfaddtable
21.992 KB
May 09 2019 5:22:51
root
0755
psfgettable
21.992 KB
May 09 2019 5:22:51
root
0755
psfstriptable
21.992 KB
May 09 2019 5:22:51
root
0755
psfxtable
21.992 KB
May 09 2019 5:22:51
root
0755
pslog
14.148 KB
November 12 2019 12:16:21
root
0755
pstree
35.164 KB
November 12 2019 12:16:21
root
0755
pstree.x11
35.164 KB
November 12 2019 12:16:21
root
0755
ptar
3.466 KB
November 23 2023 4:02:19
root
0755
ptardiff
2.566 KB
November 23 2023 4:02:19
root
0755
ptargrep
4.289 KB
November 23 2023 4:02:19
root
0755
ptx
78.398 KB
September 05 2019 12:38:40
root
0755
pwdx
14.227 KB
October 31 2023 12:35:56
root
0755
py3clean
7.63 KB
March 13 2020 1:20:20
root
0755
py3compile
11.836 KB
March 13 2020 1:20:20
root
0755
py3versions
11.442 KB
March 13 2020 1:20:20
root
0755
pydoc3
0.077 KB
November 22 2023 11:22:35
root
0755
pydoc3.8
0.077 KB
November 22 2023 11:22:35
root
0755
pygettext3
21.03 KB
November 22 2023 11:22:35
root
0755
pygettext3.8
21.03 KB
November 22 2023 11:22:35
root
0755
python3
5.21 MB
November 22 2023 11:22:35
root
0755
python3-futurize
0.375 KB
January 25 2023 9:33:14
root
0755
python3-pasteurize
0.379 KB
January 25 2023 9:33:14
root
0755
python3-pbr
0.148 KB
April 09 2020 9:32:59
root
0755
python3.8
5.21 MB
November 22 2023 11:22:35
root
0755
quota
95.406 KB
April 09 2019 10:12:04
root
0755
quotasync
70.719 KB
April 09 2019 10:12:04
root
0755
racc2.7
0.572 KB
July 06 2023 12:57:08
root
0755
racc2y2.7
0.576 KB
July 06 2023 12:57:08
root
0755
rake
0.498 KB
April 01 2020 9:46:04
root
0755
ranlib
66.461 KB
January 02 2024 4:48:50
root
0755
rcp
114.297 KB
January 02 2024 6:13:02
root
0755
rdma
130.234 KB
February 13 2020 6:21:59
root
0755
rdoc
0.501 KB
July 06 2023 12:57:08
root
0755
rdoc2.7
0.501 KB
July 06 2023 12:57:08
root
0755
re2c
526.398 KB
April 27 2020 2:48:36
root
0755
readelf
642.93 KB
January 02 2024 4:48:50
root
0755
realpath
50.367 KB
September 05 2019 12:38:40
root
0755
rename.ul
22.227 KB
May 30 2023 5:42:35
root
0755
rendercheck
59.953 KB
February 29 2020 12:10:29
root
0755
renice
14.227 KB
May 30 2023 5:42:35
root
0755
reset
30.313 KB
May 16 2023 8:47:48
root
0755
resizecons
22.133 KB
May 09 2019 5:22:51
root
0755
resizepart
62.227 KB
May 30 2023 5:42:35
root
0755
resolvectl
126.375 KB
November 21 2023 10:10:21
root
0755
rev
14.227 KB
May 30 2023 5:42:35
root
0755
rgrep
0.029 KB
January 16 2020 4:27:20
root
0755
ri
0.497 KB
July 06 2023 12:57:08
root
0755
ri2.7
0.497 KB
July 06 2023 12:57:08
root
0755
rlogin
774.945 KB
January 02 2024 6:13:02
root
0755
rmail
18.148 KB
January 29 2024 9:49:03
root
0755
rotatelogs
26.227 KB
October 26 2023 3:54:09
root
0755
routef
0.203 KB
February 13 2020 6:21:59
root
0755
routel
1.617 KB
February 13 2020 6:21:59
root
0755
rpcgen
98.688 KB
November 22 2023 2:32:50
root
0755
rrsync
7.069 KB
September 14 2015 1:23:54
root
0755
rsh
774.945 KB
January 02 2024 6:13:02
root
0755
rstart
2.549 KB
February 29 2020 7:08:03
root
0755
rstartd
1.435 KB
February 29 2020 7:08:03
root
0755
rsync
500.805 KB
September 01 2023 8:38:04
root
0755
rtstat
30.508 KB
February 13 2020 6:21:59
root
0755
ruby
14.148 KB
July 06 2023 12:57:08
root
0755
ruby2.7
14.148 KB
July 06 2023 12:57:08
root
0755
run-mailcap
18.054 KB
October 19 2019 1:05:50
root
0755
run-with-aspell
0.056 KB
July 22 2021 8:20:06
root
0755
runcon
38.336 KB
September 05 2019 12:38:40
root
0755
rview
1.29 MB
December 07 2023 4:42:49
root
0755
sa-awl
4.872 KB
March 24 2023 5:36:49
root
0755
sa-check_spamd
14.617 KB
March 24 2023 5:36:49
root
0755
sa-compile
21.851 KB
March 24 2023 5:36:49
root
0755
sa-learn
44.788 KB
March 24 2023 5:36:49
root
0755
sa-update
72.544 KB
March 24 2023 5:36:49
root
0755
sasl-sample-client
26.469 KB
February 15 2022 9:03:43
root
0755
saslfinger
8.619 KB
February 15 2022 9:03:43
root
0755
savelog
10.235 KB
December 07 2019 3:13:44
root
0755
scp
114.297 KB
January 02 2024 6:13:02
root
0755
screen
463.164 KB
February 23 2021 6:46:21
root
0755
screendump
13.992 KB
May 09 2019 5:22:51
root
0755
script
54.227 KB
May 30 2023 5:42:35
root
0755
scriptreplay
30.227 KB
May 30 2023 5:42:35
root
0755
sdiff
50.094 KB
April 08 2019 2:04:00
root
0755
see
18.054 KB
October 19 2019 1:05:50
root
0755
select-default-iwrap
0.463 KB
November 15 2018 4:24:46
root
0755
select-editor
2.385 KB
November 17 2019 1:21:22
root
0755
sensible-browser
1.201 KB
November 17 2019 1:21:22
root
0755
sensible-editor
1.142 KB
November 17 2019 1:21:22
root
0755
sensible-pager
0.441 KB
November 17 2019 1:21:22
root
0755
sensors
30.5 KB
March 31 2022 10:52:36
root
0755
sensors-conf-convert
13.698 KB
March 31 2022 10:52:36
root
0755
seq
50.336 KB
September 05 2019 12:38:40
root
0755
sessreg
13.992 KB
March 18 2018 11:19:30
root
0755
setarch
26.5 KB
May 30 2023 5:42:35
root
0755
setkeycodes
14.07 KB
May 09 2019 5:22:51
root
0755
setleds
14.055 KB
May 09 2019 5:22:51
root
0755
setlogcons
14.07 KB
May 09 2019 5:22:51
root
0755
setmetamode
14.102 KB
May 09 2019 5:22:51
root
0755
setpci
30.234 KB
April 01 2021 12:55:11
root
0755
setpriv
46.234 KB
May 30 2023 5:42:35
root
0755
setsid
14.227 KB
May 30 2023 5:42:35
root
0755
setterm
46.227 KB
May 30 2023 5:42:35
root
0755
setxkbmap
30.703 KB
February 28 2020 9:13:02
root
0755
sftp
166.508 KB
January 02 2024 6:13:02
root
0755
sg
43.734 KB
November 29 2022 12:53:10
root
4755
sha1sum
50.367 KB
September 05 2019 12:38:40
root
0755
sha224sum
58.367 KB
September 05 2019 12:38:40
root
0755
sha256sum
58.367 KB
September 05 2019 12:38:40
root
0755
sha384sum
66.367 KB
September 05 2019 12:38:40
root
0755
sha512sum
66.367 KB
September 05 2019 12:38:40
root
0755
shasum
9.742 KB
November 23 2023 4:02:19
root
0755
showconsolefont
18.07 KB
May 09 2019 5:22:51
root
0755
showkey
18.07 KB
May 09 2019 5:22:51
root
0755
showrgb
9.992 KB
March 18 2018 11:19:30
root
0755
shred
62.367 KB
September 05 2019 12:38:40
root
0755
shuf
58.336 KB
September 05 2019 12:38:40
root
0755
size
34.453 KB
January 02 2024 4:48:50
root
0755
skill
30.227 KB
October 31 2023 12:35:56
root
0755
slabtop
22.234 KB
October 31 2023 12:35:56
root
0755
slogin
774.945 KB
January 02 2024 6:13:02
root
0755
smproxy
26.313 KB
February 29 2020 7:08:03
root
0755
snice
30.227 KB
October 31 2023 12:35:56
root
0755
soelim
46.508 KB
March 21 2020 1:27:30
root
0755
sort
114.625 KB
September 05 2019 12:38:40
root
0755
sotruss
4.209 KB
November 22 2023 2:32:50
root
0755
spamalyze
5.514 KB
July 15 2016 4:10:30
root
0755
spamassassin
29.197 KB
March 24 2023 5:36:49
root
0755
spamc
47.141 KB
March 24 2023 5:36:49
root
0755
spinner
2.381 KB
August 22 2017 11:23:46
root
0755
splain
18.701 KB
November 23 2023 4:02:19
root
0755
split
58.773 KB
September 05 2019 12:38:40
root
0755
splitfont
13.992 KB
May 09 2019 5:22:51
root
0755
sprof
34.367 KB
November 22 2023 2:32:50
root
0755
ssh
774.945 KB
January 02 2024 6:13:02
root
0755
ssh-add
362.281 KB
January 02 2024 6:13:02
root
0755
ssh-agent
342.289 KB
January 02 2024 6:13:02
root
2755
ssh-argv0
1.421 KB
April 04 2023 12:47:13
root
0755
ssh-copy-id
10.408 KB
February 14 2020 1:40:54
root
0755
ssh-keygen
466.297 KB
January 02 2024 6:13:02
root
0755
ssh-keyscan
454.305 KB
January 02 2024 6:13:02
root
0755
startx
5.39 KB
August 24 2019 11:28:16
root
0755
stat
86.367 KB
September 05 2019 12:38:40
root
0755
stdbuf
50.336 KB
September 05 2019 12:38:40
root
0755
stl2gts
14.039 KB
February 03 2017 11:04:42
root
0755
strace
1.51 MB
April 17 2020 12:23:25
root
0755
strace-log-merge
1.778 KB
March 18 2019 8:06:47
root
0755
strings
34.656 KB
January 02 2024 4:48:50
root
0755
strip
182.477 KB
January 02 2024 4:48:50
root
0755
sudo
162.164 KB
April 04 2023 1:56:28
root
4755
sudoedit
162.164 KB
April 04 2023 1:56:28
root
4755
sudoreplay
63 KB
April 04 2023 1:56:28
root
0755
sum
46.344 KB
September 05 2019 12:38:40
root
0755
symcryptrun
123.031 KB
July 04 2022 6:20:36
root
0755
systemd-analyze
1.51 MB
November 21 2023 10:10:21
root
0755
systemd-cat
18.227 KB
November 21 2023 10:10:21
root
0755
systemd-cgls
22.328 KB
November 21 2023 10:10:21
root
0755
systemd-cgtop
38.242 KB
November 21 2023 10:10:21
root
0755
systemd-delta
26.219 KB
November 21 2023 10:10:21
root
0755
systemd-detect-virt
18.219 KB
November 21 2023 10:10:21
root
0755
systemd-id128
22.219 KB
November 21 2023 10:10:21
root
0755
systemd-mount
50.453 KB
November 21 2023 10:10:21
root
0755
systemd-path
18.219 KB
November 21 2023 10:10:21
root
0755
systemd-resolve
126.375 KB
November 21 2023 10:10:21
root
0755
systemd-run
58.422 KB
November 21 2023 10:10:21
root
0755
systemd-socket-activate
26.219 KB
November 21 2023 10:10:21
root
0755
systemd-stdio-bridge
22.227 KB
November 21 2023 10:10:21
root
0755
systemd-umount
50.453 KB
November 21 2023 10:10:21
root
0755
tabs
18.305 KB
May 16 2023 8:47:48
root
0755
tac
42.336 KB
September 05 2019 12:38:40
root
0755
tail
70.398 KB
September 05 2019 12:38:40
root
0755
taskset
34.227 KB
May 30 2023 5:42:35
root
0755
tbl
138.508 KB
March 21 2020 1:27:30
root
0755
tee
42.367 KB
September 05 2019 12:38:40
root
0755
telnet
112.672 KB
March 23 2020 7:20:39
root
0755
telnet.netkit
112.672 KB
March 23 2020 7:20:39
root
0755
test
54.336 KB
September 05 2019 12:38:40
root
0755
tic
90.414 KB
May 16 2023 8:47:48
root
0755
time
14.375 KB
April 21 2017 10:57:03
root
0755
timedatectl
46.219 KB
November 21 2023 10:10:21
root
0755
timeout
42.773 KB
September 05 2019 12:38:40
root
0755
tload
22.242 KB
October 31 2023 12:35:56
root
0755
toe
22.305 KB
May 16 2023 8:47:48
root
0755
top
126.047 KB
October 31 2023 12:35:56
root
0755
touch
98.367 KB
September 05 2019 12:38:40
root
0755
tput
26.336 KB
May 16 2023 8:47:48
root
0755
tr
50.336 KB
September 05 2019 12:38:40
root
0755
tracepath
18.148 KB
September 13 2022 9:06:15
root
0755
traceroute6
26.148 KB
September 13 2022 9:06:15
root
0755
traceroute6.iputils
26.148 KB
September 13 2022 9:06:15
root
0755
transform
14.352 KB
February 03 2017 11:04:42
root
0755
transset
22.789 KB
February 29 2020 12:10:29
root
0755
troff
735.906 KB
March 21 2020 1:27:30
root
0755
truncate
42.336 KB
September 05 2019 12:38:40
root
0755
tset
30.313 KB
May 16 2023 8:47:48
root
0755
tsort
42.336 KB
September 05 2019 12:38:40
root
0755
tty
38.336 KB
September 05 2019 12:38:40
root
0755
tzselect
15.019 KB
November 22 2023 2:32:50
root
0755
ua
0.432 KB
November 07 2023 3:23:40
root
0755
ubuntu-advantage
0.432 KB
November 07 2023 3:23:40
root
0755
ubuntu-distro-info
22.891 KB
April 25 2023 3:57:38
root
0755
ubuntu-security-status
22.249 KB
November 15 2023 11:28:54
root
0755
ucf
39.731 KB
December 14 2018 9:51:14
root
0755
ucfq
18.913 KB
December 14 2018 9:51:14
root
0755
ucfr
10.471 KB
December 14 2018 9:51:14
root
0755
ul
18.164 KB
March 30 2020 11:26:14
root
0755
unattended-upgrade
96.985 KB
May 19 2022 7:38:48
root
0755
unattended-upgrades
96.985 KB
May 19 2022 7:38:48
root
0755
unexpand
42.367 KB
September 05 2019 12:38:40
root
0755
unicode_stop
0.518 KB
May 09 2019 5:22:51
root
0755
uniq
50.367 KB
September 05 2019 12:38:40
root
0755
unlink
38.336 KB
September 05 2019 12:38:40
root
0755
unlzma
78.5 KB
April 08 2022 2:56:10
root
0755
unrar
376.875 KB
March 22 2020 5:01:42
root
0755
unrar-nonfree
376.875 KB
March 22 2020 5:01:42
root
0755
unshare
42.43 KB
May 30 2023 5:42:35
root
0755
unxz
78.5 KB
April 08 2022 2:56:10
root
0755
unzip
182.289 KB
October 07 2022 7:09:47
root
0755
unzipsfx
82.273 KB
October 07 2022 7:09:47
root
0755
update-alternatives
54.406 KB
May 25 2022 1:14:20
root
0755
update-mime-database
58.367 KB
March 24 2020 4:58:21
root
0755
uptime
14.227 KB
October 31 2023 12:35:56
root
0755
usb-devices
4.004 KB
October 01 2019 11:03:11
root
0755
usbhid-dump
30.383 KB
October 01 2019 11:03:11
root
0755
usbreset
14.297 KB
October 01 2019 11:03:11
root
0755
users
38.336 KB
September 05 2019 12:38:40
root
0755
utmpdump
30.227 KB
May 30 2023 5:42:35
root
0755
uuidgen
14.227 KB
May 30 2023 5:42:35
root
0755
uuidparse
38.227 KB
May 30 2023 5:42:35
root
0755
vi
1.29 MB
December 07 2023 4:42:49
root
0755
view
1.29 MB
December 07 2023 4:42:49
root
0755
viewres
31.266 KB
February 29 2020 7:29:50
root
0755
vim.tiny
1.29 MB
December 07 2023 4:42:49
root
0755
virtualmin-config-system
3.221 KB
August 01 2020 12:21:33
root
0755
vmstat
38.25 KB
October 31 2023 12:35:56
root
0755
volname
14.148 KB
July 08 2019 10:40:51
root
0755
w
22.227 KB
October 31 2023 12:35:56
root
0755
w.procps
22.227 KB
October 31 2023 12:35:56
root
0755
wall
34.227 KB
May 30 2023 5:42:35
root
2755
watch
26.57 KB
October 31 2023 12:35:56
root
0755
watchgnupg
18.305 KB
July 04 2022 6:20:36
root
0755
wc
46.344 KB
September 05 2019 12:38:40
root
0755
wcmgr
30.039 KB
October 15 2018 5:03:02
root
0755
webalizer
220.195 KB
October 15 2018 5:03:02
root
0755
webazolver
220.195 KB
October 15 2018 5:03:02
root
0755
webmin
15.095 KB
November 08 2023 4:49:09
root
0755
wget
531.711 KB
November 12 2021 6:09:16
root
0755
whatis
55.211 KB
February 25 2020 6:13:45
root
0755
whereis
34.664 KB
May 30 2023 5:42:35
root
0755
which
0.924 KB
December 07 2019 3:13:44
root
0755
whiptail
34.164 KB
February 18 2020 10:21:04
root
0755
who
58.367 KB
September 05 2019 12:38:40
root
0755
whoami
38.336 KB
September 05 2019 12:38:40
root
0755
whois
156.719 KB
February 16 2020 10:25:51
root
0755
word-list-compress
14.297 KB
July 22 2021 8:20:06
root
0755
write
14.148 KB
March 30 2020 11:26:14
root
2755
www-browser
1.85 MB
February 28 2020 3:28:01
root
0755
x-www-browser
2.604 KB
February 06 2024 2:59:08
root
0755
x11perf
197.461 KB
February 29 2020 12:10:29
root
0755
x11perfcomp
2.741 KB
February 29 2020 12:10:29
root
0755
x86_64
26.5 KB
May 30 2023 5:42:35
root
0755
x86_64-linux-gnu-addr2line
34.703 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-ar
66.43 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-as
680.297 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-c++filt
30.266 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-cpp
1.1 MB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-cpp-9
1.1 MB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-dwp
1.95 MB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-elfedit
42.672 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-g++
1.1 MB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-g++-9
1.1 MB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcc
1.1 MB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcc-9
1.1 MB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcc-ar
34.633 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcc-ar-9
34.633 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcc-nm
34.633 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcc-nm-9
34.633 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcc-ranlib
34.633 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcc-ranlib-9
34.633 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcov
656.234 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcov-9
656.234 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcov-dump
528.133 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcov-dump-9
528.133 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcov-tool
544.195 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gcov-tool-9
544.195 KB
October 24 2022 11:28:06
root
0755
x86_64-linux-gnu-gold
2.21 MB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-gprof
99.883 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-ld
1.66 MB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-ld.bfd
1.66 MB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-ld.gold
2.21 MB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-nm
51.43 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-objcopy
182.477 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-objdump
392.828 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-ranlib
66.461 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-readelf
642.93 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-size
34.453 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-strings
34.656 KB
January 02 2024 4:48:50
root
0755
x86_64-linux-gnu-strip
182.477 KB
January 02 2024 4:48:50
root
0755
xargs
74.367 KB
February 18 2020 2:05:59
root
0755
xauth
54.969 KB
August 25 2019 11:09:53
root
0755
xbiff
24.188 KB
February 29 2020 12:10:29
root
0755
xcalc
47.484 KB
February 29 2020 12:10:29
root
0755
xclipboard
26.656 KB
February 29 2020 12:10:29
root
0755
xclock
65.141 KB
February 29 2020 12:10:29
root
0755
xcmsdb
30.742 KB
March 18 2018 11:19:30
root
0755
xconsole
27.281 KB
February 29 2020 12:10:29
root
0755
xcursorgen
22.297 KB
February 29 2020 12:10:29
root
0755
xcutsel
22.641 KB
February 29 2020 12:10:29
root
0755
xdg-user-dir
0.229 KB
January 24 2019 3:37:01
root
0755
xdg-user-dirs-update
26.07 KB
January 24 2019 3:37:01
root
0755
xditview
108.141 KB
February 29 2020 12:10:29
root
0755
xdpyinfo
43.07 KB
February 29 2020 7:29:50
root
0755
xdriinfo
14.305 KB
February 29 2020 7:29:50
root
0755
xedit
673.352 KB
February 29 2020 12:10:29
root
0755
xev
34.656 KB
February 29 2020 7:29:50
root
0755
xeyes
31.797 KB
February 29 2020 12:10:29
root
0755
xfd
40.063 KB
February 29 2020 7:29:50
root
0755
xfontsel
47.906 KB
February 29 2020 7:29:50
root
0755
xgamma
9.992 KB
March 18 2018 11:19:30
root
0755
xgc
78.422 KB
February 29 2020 12:10:29
root
0755
xhost
13.992 KB
March 18 2018 11:19:30
root
0755
xinit
22.328 KB
August 24 2019 11:28:16
root
0755
xkbbell
14.32 KB
February 28 2020 9:13:02
root
0755
xkbcomp
212.094 KB
February 28 2020 9:13:02
root
0755
xkbevd
42.391 KB
February 28 2020 9:13:02
root
0755
xkbprint
94.344 KB
February 28 2020 9:13:02
root
0755
xkbvleds
23.086 KB
February 28 2020 9:13:02
root
0755
xkbwatch
23.18 KB
February 28 2020 9:13:02
root
0755
xkeystone
16.584 KB
March 18 2018 11:19:30
root
0755
xkill
14.305 KB
February 29 2020 7:29:50
root
0755
xload
27 KB
February 29 2020 12:10:29
root
0755
xlogo
27.266 KB
February 29 2020 12:10:29
root
0755
xlsatoms
14.305 KB
February 29 2020 7:29:50
root
0755
xlsclients
18.313 KB
February 29 2020 7:29:50
root
0755
xlsfonts
26.398 KB
February 29 2020 7:29:50
root
0755
xmag
48.422 KB
February 29 2020 12:10:29
root
0755
xman
81.203 KB
February 29 2020 12:10:29
root
0755
xmessage
27.188 KB
February 29 2020 7:29:50
root
0755
xmodmap
34.336 KB
March 18 2018 11:19:30
root
0755
xmore
18.578 KB
February 29 2020 12:10:29
root
0755
xprop
48.602 KB
February 29 2020 7:29:50
root
0755
xrandr
62.086 KB
March 18 2018 11:19:30
root
0755
xrdb
30.086 KB
March 18 2018 11:19:30
root
0755
xrefresh
10.07 KB
March 18 2018 11:19:30
root
0755
xset
29.992 KB
March 18 2018 11:19:30
root
0755
xsetmode
9.992 KB
March 18 2018 11:19:30
root
0755
xsetpointer
9.992 KB
March 18 2018 11:19:30
root
0755
xsetroot
18 KB
March 18 2018 11:19:30
root
0755
xsm
102.766 KB
February 29 2020 7:08:03
root
0755
xstdcmap
14.57 KB
March 18 2018 11:19:30
root
0755
xsubpp
5.043 KB
November 23 2023 4:02:19
root
0755
xvidtune
39.414 KB
March 18 2018 11:19:30
root
0755
xvinfo
18.305 KB
February 29 2020 7:29:50
root
0755
xwd
38.313 KB
February 29 2020 12:10:29
root
0755
xwininfo
50.383 KB
February 29 2020 7:29:50
root
0755
xwud
34.297 KB
February 29 2020 12:10:29
root
0755
xxd
18.273 KB
December 07 2023 4:42:49
root
0755
xz
78.5 KB
April 08 2022 2:56:10
root
0755
xzcat
78.5 KB
April 08 2022 2:56:10
root
0755
xzcmp
6.477 KB
April 08 2022 2:56:10
root
0755
xzdiff
6.477 KB
April 08 2022 2:56:10
root
0755
xzegrep
5.764 KB
April 08 2022 2:56:10
root
0755
xzfgrep
5.764 KB
April 08 2022 2:56:10
root
0755
xzgrep
5.764 KB
April 08 2022 2:56:10
root
0755
xzless
1.76 KB
April 08 2022 2:56:10
root
0755
xzmore
2.11 KB
April 08 2022 2:56:10
root
0755
y2racc2.7
0.576 KB
July 06 2023 12:57:08
root
0755
yes
38.336 KB
September 05 2019 12:38:40
root
0755
zabbix_sender
269.063 KB
February 04 2020 5:03:41
root
0755
zdump
26.211 KB
November 22 2023 2:32:50
root
0755
zip
211.188 KB
April 21 2017 11:02:44
root
0755
zipcloak
91.617 KB
April 21 2017 11:02:44
root
0755
zipdetails
49.529 KB
November 23 2023 4:02:19
root
0755
zipgrep
2.884 KB
October 07 2022 7:09:47
root
0755
zipinfo
182.289 KB
October 07 2022 7:09:47
root
0755
zipnote
87.391 KB
April 21 2017 11:02:44
root
0755
zipsplit
91.391 KB
April 21 2017 11:02:44
root
0755

NineSec Team - 2022