CasperSecurity

Current Path : /usr/sbin/
Upload File :
Current File : //usr/sbin/ufw

#! /usr/bin/python3
#
# ufw: front-end for Linux firewalling (cli)
#
# Copyright 2008-2021 Canonical Ltd.
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License version 3,
#    as published by the Free Software Foundation.
#
#    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 __future__ import print_function
import os
import sys
import warnings

import ufw.frontend
from ufw.common import UFWError
from ufw.util import error, warn, msg, _findpath, create_lock, release_lock

import gettext
kwargs = {}
if sys.version_info[0] < 3:
    # In Python 2, ensure that the _() that gets installed into built-ins
    # always returns unicodes.  This matches the default behavior under Python
    # 3, although that keyword argument is not present in the Python 3 API.
    kwargs['unicode'] = True
gettext.install(ufw.common.programName, **kwargs)

version = "0.36.1"

# relocate root and data directories if specified
args = []
rootdir = None
datadir = None
for i in sys.argv:
    if i.startswith('--rootdir='):
        if len(i.split('=')) == 2:
            rootdir = i.split('=')[1]
        else:
            error('--rootdir is empty')
    elif i.startswith('--datadir='):
        if len(i.split('=')) == 2:
            datadir = i.split('=')[1]
        else:
            error('--datadir is empty')
    else:
        args.append(i)

# Internationalization
gettext.bindtextdomain(ufw.common.programName, \
                       os.path.join(_findpath(ufw.common.trans_dir, rootdir),
                                    'messages'))
gettext.textdomain(ufw.common.programName)
try:
    # BAW: I'm not sure why both this and the .install() above is here, but
    # let's roll with it for now.  This is the Python 2 version, which ensures
    # we get unicodes.
    _ = gettext.ugettext
except AttributeError:
    # Python 3 always returns unicodes.
    _ = gettext.gettext

if sys.version_info[0] < 2 or \
   (sys.version_info[0] == 2 and sys.version_info[1] < 6):
    msg(ufw.common.programName + _(": Need at least python 2.6)\n"), \
        sys.stderr)
    sys.exit(1)


def clean_warning(message, category, filename, lineno, file=None, line=""):
    warn(message)


if __name__ == "__main__":
    warnings.showwarning = clean_warning
    app_action = False
    pr = None

    # Remember, will have to take --force into account if we use it with 'app'
    idx = 1
    if len(args) > 1 and args[1].lower() == "--dry-run":
        idx += 1

    if len(args) > idx and args[idx].lower() == "app":
        app_action = True

    try:
        pr = ufw.frontend.parse_command(args)
    except ValueError:
        msg(ufw.frontend.get_command_help())
        sys.exit(1)
    except UFWError as e:
        error(e.value)
    except Exception:
        raise

    if pr.action == "help" or pr.action == "--help":
        msg(ufw.frontend.get_command_help())
        sys.exit(0)
    elif pr.action == "version" or pr.action == "--version":
        msg(ufw.common.programName + " " + version)
        msg("Copyright 2008-2021 Canonical Ltd.")
        sys.exit(0)

    try:
        ui = ufw.frontend.UFWFrontend(pr.dryrun, rootdir=rootdir,
                                      datadir=datadir)
    except UFWError as e:
        error(e.value)
    except Exception:
        raise

    if datadir is None:
        lockfile = '/run/ufw.lock'
        if os.getuid() != 0 or 'TESTSTATE' in os.environ:
            lockfile = os.path.join(ufw.common.state_dir, 'ufw.lock')
    else:
        lockfile = os.path.join(_findpath(ufw.common.state_dir, datadir),
                                'ufw.lock')

    lock = create_lock(lockfile=lockfile, dryrun=pr.dryrun)
    res = ""
    try:
        if app_action and 'type' in pr.data and pr.data['type'] == 'app':
            res = ui.do_application_action(pr.action, pr.data['name'])
        else:
            bailout = False
            if pr.action == "enable" and not pr.force and \
               not ui.continue_under_ssh():
                res = _("Aborted")
                bailout = True

            if not bailout:
                if 'rule' in pr.data:
                    res = ui.do_action(pr.action, pr.data['rule'], \
                                       pr.data['iptype'], pr.force)
                else:
                    res = ui.do_action(pr.action, "", "", pr.force)

        if res != "":
            msg(res)

    except UFWError as e:
        error(e.value)
    except Exception:
        raise
    finally:
        release_lock(lock)

    sys.exit(0)
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY