#!/bin/sh

set -e

# debconf
. /usr/share/debconf/confmodule
db_version 2.0

CONFFILE="/etc/ufw/ufw.conf"
USER_PATH="/lib/ufw"
TEMPLATE_PATH="/usr/share/ufw"

has_existing() {
    if [ ! -e "$USER_PATH/user.rules" ]; then
        return 1
    fi

    orig=`md5sum $TEMPLATE_PATH/user.rules | cut -d ' ' -f 1`
    orig_md5file="$TEMPLATE_PATH/user.rules.md5sum"
    user=`md5sum $USER_PATH/user.rules | cut -d ' ' -f 1`
    orig6=`md5sum $TEMPLATE_PATH/user6.rules | cut -d ' ' -f 1`
    orig6_md5file="$TEMPLATE_PATH/user6.rules.md5sum"
    user6=`md5sum $USER_PATH/user6.rules | cut -d ' ' -f 1`

    if [ "$orig" != "$user" ] && ! grep -q "$user" "$orig_md5file" 2>/dev/null ; then
        return 0
    elif [ "$orig6" != "$user6" ] && ! grep -q "$user6" "$orig6_md5file" 2>/dev/null ; then
        return 0
    else
        return 1
    fi
}

# https://bugs.launchpad.net/ufw/+bug/400208
OLD_USER_PATH="/var/lib/ufw"
if dpkg --compare-versions "$2" lt 0.28-1 ; then
    test -d $USER_PATH || mkdir $USER_PATH
    for f in user.rules user6.rules
    do
        test -f $OLD_USER_PATH/$f && mv -f $OLD_USER_PATH/$f $USER_PATH/$f
    done
fi

# If ufw is enabled (eg during an upgrade), then update debconf
if [ -f "$CONFFILE" ]; then
    if egrep -q '^ENABLED=yes$' "$CONFFILE" ; then
        db_set ufw/enable true || true
    else
        db_set ufw/enable false || true
    fi
fi

db_get ufw/enable
previous="$RET"

db_input medium ufw/enable || true
db_go

db_get ufw/enable
# only use existing_configuration/allow_known_ports if the user changed from
# false to true
if [ ! -z "$RET" ] && [ "$previous" = "false" ] && [ "$RET" = true ]; then
    if has_existing ; then
        # Can't reliably configure ports in an existing configuration
        db_text low ufw/existing_configuration || true
        db_go
    else
        db_input medium ufw/allow_known_ports || true
        db_go
        db_input low ufw/allow_custom_ports || true
        db_go
    fi
fi
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Package: ufw
Version: 0.36.2-1
Architecture: all
Maintainer: Jamie Strandboge <jdstrand@ubuntu.com>
Installed-Size: 857
Depends: iptables, ucf, python3:any, debconf (>= 0.5) | debconf-2.0
Suggests: rsyslog
Breaks: iptables-persistent, netfilter-persistent
Section: admin
Priority: optional
Homepage: https://launchpad.net/ufw
Description: program for managing a Netfilter firewall
 The Uncomplicated FireWall is a front-end for iptables, to make managing a
 Netfilter firewall easier. It provides a command line interface with syntax
 similar to OpenBSD's Packet Filter. It is particularly well-suited as a
 host-based firewall.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           #!/bin/sh -e

if [ "$1" = "upgrade" ] && [ -f /etc/ufw/ufw.conf ]; then
    if dpkg --compare-versions "$2" lt 0.29.1-1 ; then
        level=`grep '^LOGLEVEL=.*' /etc/ufw/ufw.conf | cut -f 2 -d '=' | tr A-Z a-z`
        if [ -z "$level" ]; then
            # Convert old-style logging mechanism to the new. This is
            # primarly useful for Ubuntu 8.04 LTS to Ubuntu 10.04 LTS
            # upgrades, but also will cover some other odd situations.
            if grep -q '^\-A ufw-after-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "\[UFW BLOCK INPUT\]: "$' /etc/ufw/after.rules ; then
                level="low"
            else
                level="off"
            fi
            echo "# AUTOMATICALLY ADDED ON UPGRADE:" >> /etc/ufw/ufw.conf
            echo "# set to one of 'off', 'low', 'medium', 'high'" >> /etc/ufw/ufw.conf
            echo "LOGLEVEL=$level" >> /etc/ufw/ufw.conf
        fi
    fi
fi

# Automatically added by dh_installdeb/13.11.4
dpkg-maintscript-helper rm_conffile /etc/init/ufw.conf 0.35-5\~ ufw -- "$@"
dpkg-maintscript-helper rm_conffile /etc/bash_completion.d/ufw 0.34-1\~ ufw -- "$@"
# End automatically added section
# Automatically added by dh_installinit/13.11.4
if [ "$1" = "install" ] && [ -n "$2" ] && [ -e "/etc/init.d/ufw" ] ; then
	chmod +x "/etc/init.d/ufw" >/dev/null || true
fi
# End automatically added section

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Package: ufw
Status: install reinstreq half-installed
Priority: optional
Section: admin
Architecture: all
Version: 0.36.2-1
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    # /etc/default/ufw
#

# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
# accepted). You will need to 'disable' and then 'enable' the firewall for
# the changes to take affect.
IPV6=yes

# Set the default input policy to ACCEPT, DROP, or REJECT. Please note that if
# you change this you will most likely want to adjust your rules.
DEFAULT_INPUT_POLICY="DROP"

# Set the default output policy to ACCEPT, DROP, or REJECT. Please note that if
# you change this you will most likely want to adjust your rules.
DEFAULT_OUTPUT_POLICY="ACCEPT"

# Set the default forward policy to ACCEPT, DROP or REJECT.  Please note that
# if you change this you will most likely want to adjust your rules
DEFAULT_FORWARD_POLICY="DROP"

# Set the default application policy to ACCEPT, DROP, REJECT or SKIP. Please
# note that setting this to ACCEPT may be a security risk. See 'man ufw' for
# details
DEFAULT_APPLICATION_POLICY="SKIP"

# By default, ufw only touches its own chains. Set this to 'yes' to have ufw
# manage the built-in chains too. Warning: setting this to 'yes' will break
# non-ufw managed firewall rules
MANAGE_BUILTINS=no

#
# IPT backend
#
# only enable if using iptables backend
IPT_SYSCTL=/etc/ufw/sysctl.conf

# Extra connection tracking modules to load. IPT_MODULES should typically be
# empty for new installations and modules added only as needed. See
# 'CONNECTION HELPERS' from 'man ufw-framework' for details. Complete list can
# be found in net/netfilter/Kconfig of your kernel source. Some common modules:
# nf_conntrack_irc, nf_nat_irc: DCC (Direct Client to Client) support
# nf_conntrack_netbios_ns: NetBIOS (samba) client support
# nf_conntrack_pptp, nf_nat_pptp: PPTP over stateful firewall/NAT
# nf_conntrack_ftp, nf_nat_ftp: active FTP support
# nf_conntrack_tftp, nf_nat_tftp: TFTP support (server side)
# nf_conntrack_sane: sane support
IPT_MODULES=""
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       #!/bin/sh

### BEGIN INIT INFO
# Provides:          ufw
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     S
# Default-Stop:      1
# Short-Description: start firewall
# Description: Start ufw firewall
### END INIT INFO

set -e

PATH="/sbin:/bin"

[ -d /lib/ufw ] || exit 0

. /lib/lsb/init-functions

for s in "/lib/ufw/ufw-init-functions" "/etc/ufw/ufw.conf" "/etc/default/ufw" ; do
    if [ -s "$s" ]; then
        . "$s"
    else
        log_failure_msg "Could not find $s (aborting)"
        exit 1
    fi
done

error=0
case "$1" in
start)
    if [ "$ENABLED" = "yes" ] || [ "$ENABLED" = "YES" ]; then
        log_action_begin_msg "Starting firewall:" "ufw"
        output=`ufw_start` || error="$?"
        if [ "$error" = "0" ]; then
            log_action_cont_msg "Setting kernel variables ($IPT_SYSCTL)"
        fi
        if [ ! -z "$output" ]; then
            echo "$output" | while read line ; do
                log_action_cont_msg "$line"
            done
        fi
    else
        log_action_begin_msg "Skip starting firewall:" "ufw (not enabled)"
    fi
    log_action_end_msg $error
    exit $error
    ;;
stop)
    if [ "$ENABLED" = "yes" ] || [ "$ENABLED" = "YES" ]; then
        log_action_begin_msg "Stopping firewall:" "ufw"
        output=`ufw_stop` || error="$?"
        if [ ! -z "$output" ]; then
            log_action_cont_msg "$output"
        fi
    else
        log_action_begin_msg "Skip stopping firewall:" "ufw (not enabled)"
    fi
    log_action_end_msg $error
    exit $error
    ;;
restart|force-reload)
    log_action_begin_msg "Reloading firewall:" "ufw"
    output=`ufw_reload` || error="$?"
    if [ ! -z "$output" ]; then
        log_action_cont_msg "$output"
    fi
    log_action_end_msg $error
    exit $error
    ;;
status)
    output=`ufw_status` || error="$?"
    if [ ! -z "$output" ]; then
        log_action_cont_msg "$output"
    fi
    log_action_end_msg $error
    exit $error
    ;;
*)
    echo "Usage: /etc/init.d/ufw {start|stop|restart|force-reload|status}"
    exit 1
    ;;
esac

exit 0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             /var/log/ufw.log
{
	rotate 4
	weekly
	missingok
	notifempty
	compress
	delaycompress
	sharedscripts
	postrotate
		[ -x /usr/lib/rsyslog/rsyslog-rotate ] && /usr/lib/rsyslog/rsyslog-rotate || true
	endscript
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               # Log kernel generated UFW log messages to file
:msg,contains,"[UFW " /var/log/ufw.log

# Uncomment the following to stop logging anything that matches the last rule.
# Doing this will stop logging kernel generated UFW log messages to the file
# normally containing kern.* messages (eg, /var/log/kern.log)
#& stop
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      [Transmission]
title=Transmission
description=Transmission BitTorrent client
ports=51413

[Deluge]
title=Deluge
description=Deluge BitTorrent client
ports=6881:6891/tcp

[KTorrent]
title=KTorrent
description=KTorrent BitTorrent client
ports=6881/tcp|4444/udp

[qBittorrent]
title=qBittorrent
description=qBittorrent BitTorrent client
ports=6881/tcp
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   [PeopleNearby]
title=People Nearby
description=People Nearby (Bonjour/Salut) functionality in Empathy
ports=5353/udp|5298

[Bonjour]
title=Bonjour
description=Bonjour protocol
ports=5353/udp|5298

[MSN]
title=MSN Chat
description=MSN chat protocol (with file transfer and voice)
ports=1863|6891:6900/tcp|6901

[MSN SSL]
title=MSN Chat (SSL)
description=MSN chat protocol (SSL)
ports=443/tcp

[AIM]
title=AIM Talk
description=AIM talk protocol
ports=5190/tcp

[Yahoo]
title=Yahoo Chat
description=Yahoo chat protocol
ports=5050

[XMPP]
title=XMPP Chat
description=XMPP protocol (Jabber and Google Talk)
ports=5222/tcp|5269/tcp

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [Kerberos KDC]
title=Kerberos v5 KDC server
description=Kerberos v5 KDC server
ports=88

[Kerberos Admin]
title=Kerberos v5 admin
description=Kerberos v5 server
ports=749/tcp

[Kerberos Password]
title=Kerberos v5 password
description=Kerberos v5 password
ports=464/udp

[Kerberos Full]
title=Kerberos v5 server
description=Kerberos v5 server
ports=88,749/tcp|464/udp

[LDAP]
title=LDAP server
description=LDAP server
ports=389/tcp

[LDAPS]
title=LDAP server (LDAPS)
description=LDAP server (LDAPS)
ports=636/tcp
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               [DNS]
title=Internet Domain Name Server
description=Internet Domain Name Server
ports=53
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       [CIFS]
title=SMB/CIFS server
description=SMB/CIFS server
ports=137,138/udp|139,445/tcp

[NFS]
title=NFS server
description=NFS and portmap server. Will also need access to mountd, statd and possibly others
ports=2049,111/tcp|2049,111/udp

[svnserve]
title=Subversion server
description=Subversion server for access to Subversion repositories.
ports=3690/tcp
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          [Telnet]
title=Telnet server (insecure)
description=Telnet server (insecure)
ports=23/tcp

[SSH]
title=SSH server
description=SSH server
ports=22/tcp

[VNC]
title=VNC server
description=VNC server
ports=5900/tcp
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [POP3]
title=Mail server (POP3)
description=Mail server (POP3)
ports=110/tcp

[POP3S]
title=Secure mail server (POP3S)
description=Secure mail server (POP3S)
ports=995/tcp

[IMAP]
title=Mail server (IMAP)
description=Mail server (IMAP)
ports=143/tcp

[IMAPS]
title=Secure mail server (IMAPS)
description=Secure mail server (IMAPS)
ports=993/tcp

[SMTP]
title=Mail server (SMTP)
description=Mail server (SMTP)
ports=25/tcp

[Mail submission]
title=Mail server (Submission)
description=Mail server (Submission)
ports=587/tcp

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [IPP]
title=Cups server (IPP)
description=Cups server (IPP)
ports=631

[LPD]
title=LPD server
description=LPD server
ports=515/tcp
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [Socks]
title=Socks proxy
description=Socks proxy
ports=1080/tcp

[Transparent Proxy]
title=Transparent proxy
description=Transparent proxy
ports=8081/tcp
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     [WWW]
title=Web Server
description=Web server
ports=80/tcp

[WWW Secure]
title=Web Server (HTTPS)
description=Web Server (HTTPS)
ports=443/tcp

[WWW Full]
title=Web Server (HTTP,HTTPS)
description=Web Server (HTTP,HTTPS)
ports=80,443/tcp

[WWW Cache]
title=Web Server (8080)
description=Web Server (8080)
ports=8080/tcp
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                #
# Configuration file for setting network variables. Please note these settings
# override /etc/sysctl.conf and /etc/sysctl.d. If you prefer to use
# /etc/sysctl.conf, please adjust IPT_SYSCTL in /etc/default/ufw. See
# Documentation/networking/ip-sysctl.txt in the kernel source code for more
# information.
#

# Uncomment this to allow this host to route packets between interfaces
#net/ipv4/ip_forward=1
#net/ipv6/conf/default/forwarding=1
#net/ipv6/conf/all/forwarding=1

# Disable ICMP redirects. ICMP redirects are rarely used but can be used in
# MITM (man-in-the-middle) attacks. Disabling ICMP may disrupt legitimate
# traffic to those sites.
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/default/accept_redirects=0
net/ipv6/conf/all/accept_redirects=0
net/ipv6/conf/default/accept_redirects=0

# Ignore bogus ICMP errors
net/ipv4/icmp_echo_ignore_broadcasts=1
net/ipv4/icmp_ignore_bogus_error_responses=1
net/ipv4/icmp_echo_ignore_all=0

# Don't log Martian Packets (impossible addresses)
# packets
net/ipv4/conf/all/log_martians=0
net/ipv4/conf/default/log_martians=0

#net/ipv4/tcp_fin_timeout=30
#net/ipv4/tcp_keepalive_intvl=1800

# Uncomment this to turn off ipv6 autoconfiguration
#net/ipv6/conf/default/autoconf=1
#net/ipv6/conf/all/autoconf=1

# Uncomment this to enable ipv6 privacy addressing
#net/ipv6/conf/default/use_tempaddr=2
#net/ipv6/conf/all/use_tempaddr=2
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 [Unit]
Description=Uncomplicated firewall
Documentation=man:ufw(8)
DefaultDependencies=no
Before=network-pre.target
Wants=network-pre.target local-fs.target
After=local-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/ufw/ufw-init start quiet
ExecStop=/lib/ufw/ufw-init stop

[Install]
WantedBy=multi-user.target
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   #!/bin/sh
#
# ufw-init: helper script to be used by ufw itself
#
# Copyright 2008-2015 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/>.
#
set -e

# FIXME: this shouldn't be ordered
rootdir=
if [ "$1" = "--rootdir" ] && [ -n "$2" ]; then
    rootdir="$2/" # ensure trailing slash
    shift 2
fi
datadir=
if [ "$1" = "--datadir" ] && [ -n "$2" ]; then
    datadir="$2/" # ensure trailing slash
    shift 2
fi
export DATA_DIR="$datadir"

# Debian/Ubuntu: small boot speed improvement
. "${rootdir}/etc/ufw/ufw.conf"
if [ "$1" = "start" ] && [ "$2" = "quiet" ] && [ "$ENABLED" = "no" ]; then
    exit 0
fi

if [ -s "${rootdir}/lib/ufw/ufw-init-functions" ]; then
    . "${rootdir}/lib/ufw/ufw-init-functions"
else
    echo "Could not find ${rootdir}/lib/ufw/ufw-init-functions (aborting)"
    exit 1
fi

case "$1" in
start)
    # process multiple error strings
    ret=0
    output=`ufw_start` || ret="$?"
    test -n "$output" && echo "$output" | while read line ; do
        if [ "$2" = "quiet" ] || [ "$QUIET" = "yes" ]; then
            echo "$line" | grep -q "Skip starting" && continue
        fi
        echo "$line"
    done
    exit "$ret"
    ;;
stop)
    ufw_stop || exit "$?"
    ;;
force-stop)
    ufw_stop --force || exit "$?"
    ;;
restart|force-reload)
    ufw_reload || exit "$?"
    ;;
status)
    ufw_status || exit "$?"
    # If before.init and after.init support 'status', just display them after
    # ufw_status() so it is prettier
    if [ -x "$RULES_PATH/before.init" ]; then
        "$RULES_PATH/before.init" status || exit "$?"
    fi
    if [ -x "$RULES_PATH/after.init" ]; then
        "$RULES_PATH/after.init" status || exit "$?"
    fi
    ;;
flush-all)
    # Use sparingly. It flushes the built-in chains, deletes all non-builtin
    # chains and resets the policy to ACCEPT
    if [ -x "$RULES_PATH/before.init" ]; then
        "$RULES_PATH/before.init" flush-all || exit "$?"
    fi
    flush_builtins || exit "$?"
    if [ -x "$RULES_PATH/after.init" ]; then
        "$RULES_PATH/after.init" flush-all || exit "$?"
    fi
    ;;
*)
    echo "Usage: /lib/ufw/ufw-init {start|stop|restart|force-reload|force-stop|flush-all|status}"
    exit 1
    ;;
esac

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                #!/bin/sh
#
# ufw-init-functions: functions used by ufw-init and distribution initscripts
#
# Copyright 2008-2015 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/>.
#
set -e

PATH="/sbin:/bin:/usr/sbin:/usr/bin"

for s in "${DATA_DIR}/etc/default/ufw" "${DATA_DIR}/etc/ufw/ufw.conf" ; do
    if [ -s "$s" ]; then
        . "$s"
    else
        echo "Could not find $s (aborting)"
        exit 1
    fi
done

RULES_PATH="${DATA_DIR}/etc/ufw"
USER_PATH="${DATA_DIR}/etc/ufw"

flush_builtins() {
    error=""
    execs="iptables"
    if ip6tables -L INPUT -n >/dev/null 2>&1; then
        execs="$execs ip6tables"
    fi

    for exe in $execs
    do
        $exe -F || error="yes"
        $exe -X || error="yes"
        $exe -P INPUT ACCEPT || error="yes"
        $exe -P OUTPUT ACCEPT || error="yes"
        $exe -P FORWARD ACCEPT || error="yes"

        # now handle the mangle table
        if $exe -t mangle -L -n >/dev/null 2>&1; then
            for i in INPUT OUTPUT FORWARD PREROUTING POSTROUTING ; do
                $exe -t mangle -F $i || error="yes"
                $exe -t mangle -P $i ACCEPT || error="yes"
            done
        fi
    done

    # now handle the nat table
    if iptables -t nat -L -n >/dev/null 2>&1; then
        for i in OUTPUT PREROUTING POSTROUTING ; do
            iptables -t nat -F $i || error="yes"
            iptables -t nat -P $i ACCEPT || error="yes"
        done
    fi

    if [ "$error" = "yes" ]; then
        return 1
    fi
}

chains_command() {
    flag="$1"
    type=""
    exe="iptables"
    if [ "$2" = "6" ]; then
        type="$2"
        exe="ip6tables"
    fi

    for c in ufw$type-logging-deny ufw$type-logging-allow ufw$type-not-local ufw$type-user-logging-input ufw$type-user-limit-accept ufw$type-user-limit ufw$type-skip-to-policy-input ufw$type-reject-input ufw$type-after-logging-input ufw$type-after-input ufw$type-user-input ufw$type-before-input ufw$type-before-logging-input ufw$type-skip-to-policy-forward ufw$type-reject-forward ufw$type-after-logging-forward ufw$type-after-forward ufw$type-user-logging-forward ufw$type-user-forward ufw$type-before-forward ufw$type-before-logging-forward ufw$type-track-forward ufw$type-track-output ufw$type-track-input ufw$type-skip-to-policy-output ufw$type-reject-output ufw$type-after-logging-output ufw$type-after-output ufw$type-user-logging-output ufw$type-user-output ufw$type-before-output ufw$type-before-logging-output; do
        if [ "$UFW_INIT_DEBUG" = "yes" ]; then
            echo "$exe $flag $c" >&2
            $exe $flag $c || true
        else
            $exe $flag $c 2>/dev/null || true
        fi
    done
}

delete_chains() {
    chains_command -F $1
    chains_command -Z $1

    # Delete the secondary chains to reduce clutter, but keep the primary ones
    # so that the primary chains don't leave the built-in chains just to come
    # back later in a different place. This means that some (empty) chains will
    # linger until the next boot after disabling ufw.
    for c in ufw$type-logging-deny ufw$type-logging-allow ufw$type-not-local ufw$type-user-logging-input ufw$type-user-logging-output ufw$type-user-logging-forward ufw$type-user-limit-accept ufw$type-user-limit ufw$type-user-input ufw$type-user-forward ufw$type-user-output ufw$type-skip-to-policy-input ufw$type-skip-to-policy-output ufw$type-skip-to-policy-forward ; do
        if [ "$UFW_INIT_DEBUG" = "yes" ]; then
            echo "$exe $flag $c" >&2
            $exe -X $c || true
        else
            $exe -X $c 2>/dev/null || true
        fi
    done
}

ufw_start() {
    out=""
    if [ "$ENABLED" = "yes" ] || [ "$ENABLED" = "YES" ]; then
        if iptables -L ufw-user-input -n >/dev/null 2>&1 ; then
            echo "Firewall already started, use 'force-reload'"
            return 0
        fi
        for m in $IPT_MODULES
        do
            modprobe $m || true
        done

        if [ "$MANAGE_BUILTINS" = "yes" ]; then
            flush_builtins
        fi

        if [ -x "$RULES_PATH/before.init" ]; then
            if ! "$RULES_PATH/before.init" start ; then
                error="yes"
                out="${out}\n'$RULES_PATH/before.init start' exited with error"
            fi
        fi

        execs="iptables"

        # IPv6 setup
        if [ "$IPV6" = "yes" ] || [ "$IPV6" = "YES" ]; then
            if ip6tables -L INPUT -n >/dev/null 2>&1; then
                execs="$execs ip6tables"
            else
                out="${out}\nProblem loading ipv6 (skipping)"
            fi
        else
            if ip6tables -L INPUT -n >/dev/null 2>&1; then
                # IPv6 support disabled but available in the kernel, so
                # default DROP and accept all on loopback
                delete_chains 6 || error="yes"

                printf "*filter\n"\
":INPUT DROP [0:0]\n"\
":FORWARD DROP [0:0]\n"\
":OUTPUT DROP [0:0]\n"\
"-A INPUT -i lo -j ACCEPT\n"\
"-A OUTPUT -o lo -j ACCEPT\n"\
"COMMIT\n" | ip6tables-restore || error="yes"

                if [ "$error" = "yes" ]; then
                    out="${out}\nProblem loading ipv6 (skipping)"
                fi
            fi
        fi

        for exe in $execs
        do
            type=""
            if [ "$exe" = "ip6tables" ]; then
                type="6"
            fi
            BEFORE_RULES="$RULES_PATH/before${type}.rules"
            AFTER_RULES="$RULES_PATH/after${type}.rules"
            USER_RULES="$USER_PATH/user${type}.rules"

            # flush the chains (if they exist)
            if $exe -L ufw${type}-before-logging-input -n >/dev/null 2>&1 ; then
                delete_chains $type || error="yes"
            else
                # setup all the primary chains
                printf "*filter\n"\
"# primary chains\n"\
":ufw${type}-before-logging-input - [0:0]\n"\
":ufw${type}-before-logging-output - [0:0]\n"\
":ufw${type}-before-logging-forward - [0:0]\n"\
":ufw${type}-before-input - [0:0]\n"\
":ufw${type}-before-output - [0:0]\n"\
":ufw${type}-before-forward - [0:0]\n"\
":ufw${type}-after-input - [0:0]\n"\
":ufw${type}-after-output - [0:0]\n"\
":ufw${type}-after-forward - [0:0]\n"\
":ufw${type}-after-logging-input - [0:0]\n"\
":ufw${type}-after-logging-output - [0:0]\n"\
":ufw${type}-after-logging-forward - [0:0]\n"\
":ufw${type}-reject-input - [0:0]\n"\
":ufw${type}-reject-output - [0:0]\n"\
":ufw${type}-reject-forward - [0:0]\n"\
":ufw${type}-track-input - [0:0]\n"\
":ufw${type}-track-output - [0:0]\n"\
":ufw${type}-track-forward - [0:0]\n"\
"\n"\
"-A INPUT -j ufw${type}-before-logging-input\n"\
"-A INPUT -j ufw${type}-before-input\n"\
"-A INPUT -j ufw${type}-after-input\n"\
"-A INPUT -j ufw${type}-after-logging-input\n"\
"-A INPUT -j ufw${type}-reject-input\n"\
"-A INPUT -j ufw${type}-track-input\n"\
"\n"\
"-A OUTPUT -j ufw${type}-before-logging-output\n"\
"-A OUTPUT -j ufw${type}-before-output\n"\
"-A OUTPUT -j ufw${type}-after-output\n"\
"-A OUTPUT -j ufw${type}-after-logging-output\n"\
"-A OUTPUT -j ufw${type}-reject-output\n"\
"-A OUTPUT -j ufw${type}-track-output\n"\
"\n"\
"-A FORWARD -j ufw${type}-before-logging-forward\n"\
"-A FORWARD -j ufw${type}-before-forward\n"\
"-A FORWARD -j ufw${type}-after-forward\n"\
"-A FORWARD -j ufw${type}-after-logging-forward\n"\
"-A FORWARD -j ufw${type}-reject-forward\n"\
"-A FORWARD -j ufw${type}-track-forward\n"\
"COMMIT\n" | $exe-restore -n || error="yes"
            fi

            # add reject policy
            if [ "$DEFAULT_INPUT_POLICY" = "REJECT" ]; then
                printf "*filter\n"\
"-A ufw${type}-reject-input -j REJECT\n"\
"COMMIT\n" | $exe-restore -n || error="yes"
            fi
            if [ "$DEFAULT_OUTPUT_POLICY" = "REJECT" ]; then
                printf "*filter\n"\
"-A ufw${type}-reject-output -j REJECT\n"\
"COMMIT\n" | $exe-restore -n || error="yes"
            fi
            if [ "$DEFAULT_FORWARD_POLICY" = "REJECT" ]; then
                printf "*filter\n"\
"-A ufw${type}-reject-forward -j REJECT\n"\
"COMMIT\n" | $exe-restore -n || error="yes"
            fi

            # add tracking policy
            if [ "$DEFAULT_INPUT_POLICY" = "ACCEPT" ]; then
                printf "*filter\n"\
"-A ufw${type}-track-input -p tcp -m conntrack --ctstate NEW -j ACCEPT\n"\
"-A ufw${type}-track-input -p udp -m conntrack --ctstate NEW -j ACCEPT\n"\
"COMMIT\n" | $exe-restore -n || error="yes"
            fi

            if [ "$DEFAULT_OUTPUT_POLICY" = "ACCEPT" ]; then
                printf "*filter\n"\
"-A ufw${type}-track-output -p tcp -m conntrack --ctstate NEW -j ACCEPT\n"\
"-A ufw${type}-track-output -p udp -m conntrack --ctstate NEW -j ACCEPT\n"\
"COMMIT\n" | $exe-restore -n || error="yes"
            fi

            if [ "$DEFAULT_FORWARD_POLICY" = "ACCEPT" ]; then
                printf "*filter\n"\
"-A ufw${type}-track-forward -p tcp -m conntrack --ctstate NEW -j ACCEPT\n"\
"-A ufw${type}-track-forward -p udp -m conntrack --ctstate NEW -j ACCEPT\n"\
"COMMIT\n" | $exe-restore -n || error="yes"
            fi

            # now setup the secondary 'logging-deny' chains
            if ! $exe -L ufw${type}-logging-deny -n >/dev/null 2>&1 ; then
                printf "*filter\n"\
":ufw${type}-logging-deny - [0:0]\n"\
":ufw${type}-logging-allow - [0:0]\n"\
"COMMIT\n" | $exe-restore -n || error="yes"
            fi

            # now setup the secondary 'skip to policy' chains
            if ! $exe -L ufw${type}-skip-to-policy-input -n >/dev/null 2>&1 ; then
                printf "*filter\n"\
":ufw${type}-skip-to-policy-input - [0:0]\n"\
":ufw${type}-skip-to-policy-output - [0:0]\n"\
":ufw${type}-skip-to-policy-forward - [0:0]\n"\
"-A ufw${type}-skip-to-policy-input -j %s\n"\
"-A ufw${type}-skip-to-policy-output -j %s\n"\
"-A ufw${type}-skip-to-policy-forward -j %s\n"\
"COMMIT\n" $DEFAULT_INPUT_POLICY $DEFAULT_OUTPUT_POLICY $DEFAULT_FORWARD_POLICY | $exe-restore -n || error="yes"
            fi

            # now ip[6]tables-restore before*.rules. This resets the following
            # chains:
            #   ufw-before-input
            #   ufw-before-output
            #   ufw-before-forward
            #
            # and sets the following:
            #   ufw-not-local
            if [ -s "$BEFORE_RULES" ]; then
                if ! $exe-restore -n < "$BEFORE_RULES" ; then
                    out="${out}\nProblem running '$BEFORE_RULES'"
                    error="yes"
                fi
            else
                out="${out}\nCouldn't find '$BEFORE_RULES'"
                error="yes"
            fi

            # now ip[6]tables-restore after*.rules. This resets the following
            # chains:
            #   ufw-after-input
            #   ufw-after-output
            #   ufw-after-forward
            if [ -s "$AFTER_RULES" ]; then
                if ! $exe-restore -n < "$AFTER_RULES" ; then
                    out="${out}\nProblem running '$AFTER_RULES'"
                    error="yes"
                fi
            else
                out="${out}\nCouldn't find '$AFTER_RULES'"
                error="yes"
            fi

            # user chains
            if [ -s "$USER_RULES" ]; then
                # setup the secondary 'user' chains
                if ! $exe -L ufw${type}-user-input -n >/dev/null 2>&1 ; then
                    printf "*filter\n"\
":ufw${type}-user-input - [0:0]\n"\
":ufw${type}-user-output - [0:0]\n"\
":ufw${type}-user-forward - [0:0]\n"\
":ufw${type}-user-logging-input - [0:0]\n"\
":ufw${type}-user-logging-output - [0:0]\n"\
":ufw${type}-user-logging-forward - [0:0]\n"\
":ufw${type}-user-limit - [0:0]\n"\
":ufw${type}-user-limit-accept - [0:0]\n"\
"COMMIT\n" | $exe-restore -n || error="yes"
                fi

                # now ip[6]tables-restore user*.rules. This resets the following
                # chains:
                #   ufw-before-logging-input
                #   ufw-before-logging-output
                #   ufw-before-logging-forward
                #   ufw-after-logging-input
                #   ufw-after-logging-output
                #   ufw-after-logging-forward
                #   ufw-logging-deny
                #   ufw-logging-allow
                #   ufw-after-input
                #   ufw-after-output
                #   ufw-after-forward
                #   ufw-user-limit
                #   ufw-user-limit-accept
                if ! $exe-restore -n < "$USER_RULES" ; then
                    out="${out}\nProblem running '$USER_RULES'"
                    error="yes"
                fi

                # now hooks these into the primary chains
                printf "*filter\n"\
"-A ufw${type}-before-input -j ufw${type}-user-input\n"\
"-A ufw${type}-before-output -j ufw${type}-user-output\n"\
"-A ufw${type}-before-forward -j ufw${type}-user-forward\n"\
"COMMIT\n" | $exe-restore -n || error="yes"
            else
                out="${out}\nCouldn't find '$USER_RULES'"
                error="yes"
            fi

            # set the default policy (do this after loading rules so not to
            # break network rootfs w/ INPUT DROP during ufw init. LP: 1946804)
            input_pol="$DEFAULT_INPUT_POLICY"
            if [ "$DEFAULT_INPUT_POLICY" = "REJECT" ]; then
                input_pol="DROP"
            fi

            output_pol="$DEFAULT_OUTPUT_POLICY"
            if [ "$DEFAULT_OUTPUT_POLICY" = "REJECT" ]; then
                output_pol="DROP"
            fi

            forward_pol="$DEFAULT_FORWARD_POLICY"
            if [ "$DEFAULT_FORWARD_POLICY" = "REJECT" ]; then
                forward_pol="DROP"
            fi

            # Since we're setting the default policy last, '-n/--noflush' is
            # important here so we don't undo what we've loaded so far.
            printf "*filter\n"\
"# builtin chains\n"\
":INPUT %s [0:0]\n"\
":FORWARD %s [0:0]\n"\
":OUTPUT %s [0:0]\n"\
"COMMIT\n" $input_pol $forward_pol $output_pol | $exe-restore -n || error="yes"
        done

        if [ ! -z "$IPT_SYSCTL" ] && [ -s "$IPT_SYSCTL" ]; then
            sysctl -e -q -p $IPT_SYSCTL || true
        fi

        if [ -x "$RULES_PATH/after.init" ]; then
            if ! "$RULES_PATH/after.init" start ; then
                error="yes"
                out="${out}\n'$RULES_PATH/after.init start' exited with error"
            fi
        fi

        if [ "$error" = "yes" ]; then
            /bin/echo -e "$out"
            return 1
        fi
    else
        out="Skip starting firewall: ufw (not enabled)"
    fi
    if [ ! -z "$out" ]; then
        /bin/echo -e "$out"
    fi
}

ufw_stop() {
    if [ "$1" != "--force" ] && [ "$ENABLED" != "yes" ] && [ "$ENABLED" != "YES" ]; then
        echo "Skip stopping firewall: ufw (not enabled)"
        return 0
    fi

    error=""

    if [ -x "$RULES_PATH/before.init" ]; then
        if ! "$RULES_PATH/before.init" stop ; then
            error="yes"
            out="${out}\n'$RULES_PATH/before.init stop' exited with error"
        fi
    fi

    # If we manage the builtins, just return
    if [ "$MANAGE_BUILTINS" = "yes" ]; then
        flush_builtins || error="yes"
        if [ -x "$RULES_PATH/after.init" ]; then
            "$RULES_PATH/after.init" stop || error="yes"
        fi
        if [ "$error" = "yes" ]; then
            return 1
        fi
        return 0
    fi

    execs="iptables"
    if ip6tables -L INPUT -n >/dev/null 2>&1; then
        execs="$execs ip6tables"
    fi

    for exe in $execs
    do
        type=""
        if [ "$exe" = "ip6tables" ]; then
            type="6"
        fi
        delete_chains $type || error="yes"
        $exe -P INPUT ACCEPT || error="yes"
        $exe -P OUTPUT ACCEPT || error="yes"
        $exe -P FORWARD ACCEPT || error="yes"
    done

    if [ -x "$RULES_PATH/after.init" ]; then
        if ! "$RULES_PATH/after.init" stop ; then
            error="yes"
        fi
    fi

    if [ "$error" = "yes" ]; then
        return 1
    fi
    return 0
}

ufw_reload() {
    if [ "$ENABLED" = "yes" ] || [ "$ENABLED" = "YES" ]; then
        if [ -x "$RULES_PATH/before.init" ]; then
            "$RULES_PATH/before.init" stop || return 1
        fi
        ufw_stop || return "$?"
        if [ -x "$RULES_PATH/after.init" ]; then
            "$RULES_PATH/after.init" stop || return 1
        fi

        if [ -x "$RULES_PATH/before.init" ]; then
            "$RULES_PATH/before.init" start || return 1
        fi
        ufw_start || return "$?"
        if [ -x "$RULES_PATH/after.init" ]; then
            "$RULES_PATH/after.init" start || return 1
        fi
    else
        echo "Skipping $1 (not enabled)"
    fi
    return 0
}

ufw_status() {
    err=""
    iptables -L ufw-user-input -n >/dev/null 2>&1 || {
        echo "Firewall is not running"
        return 3
    }

    if [ "$IPV6" = "yes" ] || [ "$IPV6" = "YES" ]; then
        ip6tables -L ufw6-user-input -n >/dev/null 2>&1 || {
            # unknown state: ipv4 ok, but ipv6 isn't
            echo "Firewall in inconsistent state (IPv6 enabled but not running)"
            return 4
        }
    fi

    echo "Firewall is running"
    return 0
}

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                '''applications.py: common classes for ufw'''
#
# Copyright 2008-2018 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/>.
#

import os
import re
import stat
import ufw.util
from ufw.util import debug, warn
from ufw.common import UFWError

import sys
if sys.version_info[0] < 3:  # pragma: no cover
    import ConfigParser
else:  # pragma: no cover
    import configparser


def get_profiles(profiles_dir):
    '''Get profiles found in profiles database.  Returns dictionary with
       profile name as key and tuples for fields
    '''
    if not os.path.isdir(profiles_dir):
        err_msg = _("Profiles directory does not exist")
        raise UFWError(err_msg)

    max_size = 10 * 1024 * 1024  # 10MB
    profiles = {}

    files = os.listdir(profiles_dir)
    files.sort()

    total_size = 0
    pat = re.compile(r'^\.')
    for f in files:
        abs_path = profiles_dir + "/" + f
        if not os.path.isfile(abs_path):
            continue

        if pat.search(f):
            debug("Skipping '%s': hidden file" % (f))
            continue

        if f.endswith('.dpkg-new') or f.endswith('.dpkg-old') or \
           f.endswith('.dpkg-dist') or f.endswith('.rpmnew') or \
           f.endswith('.rpmsave') or f.endswith('~'):
            debug("Skipping '%s'" % (f))
            continue

        # Try to gracefully handle huge files for the user (no security
        # benefit, just usability)
        size = 0
        try:
            size = os.stat(abs_path)[stat.ST_SIZE]
        except Exception:
            warn_msg = _("Skipping '%s': couldn't stat") % (f)
            warn(warn_msg)
            continue

        if size > max_size:
            warn_msg = _("Skipping '%s': too big") % (f)
            warn(warn_msg)
            continue

        if total_size + size > max_size:
            warn_msg = _("Skipping '%s': too many files read already") % (f)
            warn(warn_msg)
            continue

        total_size += size

        if sys.version_info[0] < 3:  # pragma: no cover
            cdict = ConfigParser.RawConfigParser()
        else:  # pragma: no cover
            cdict = configparser.RawConfigParser()

        try:
            cdict.read(abs_path)
        except Exception:
            warn_msg = _("Skipping '%s': couldn't process") % (f)
            warn(warn_msg)
            continue

        # If multiple occurences of profile name, use the last one
        for p in cdict.sections():
            if len(p) > 64:
                warn_msg = _("Skipping '%s': name too long") % (p)
                warn(warn_msg)
                continue

            if not valid_profile_name(p):
                warn_msg = _("Skipping '%s': invalid name") % (p)
                warn(warn_msg)
                continue

            try:
                ufw.util.get_services_proto(p)
                warn_msg = _("Skipping '%s': also in /etc/services") % (p)
                warn(warn_msg)
                continue
            except Exception:
                pass

            skip = False
            for key, value in cdict.items(p):
                if len(key) > 64:
                    warn_msg = _("Skipping '%s': field too long") % (p)
                    warn(warn_msg)
                    skip = True
                    break
                if len(value) > 1024:
                    warn_msg = _("Skipping '%(value)s': value too long for " \
                                 "'%(field)s'") % \
                                 ({'value': p, 'field': key})
                    warn(warn_msg)
                    skip = True
                    break
            if skip:
                continue

            if p in profiles:
                warn_msg = _("Duplicate profile '%s', using last found") % (p)
                warn(warn_msg)

            pdict = {}
            for key, value in cdict.items(p):
                #debug("add '%s' = '%s' to '%s'" % (key, value, p))
                pdict[key] = value

            try:
                verify_profile(p, pdict)
                profiles[p] = pdict
            except UFWError as e:
                warn(e)

    return profiles


def valid_profile_name(name):
    '''Only accept a limited set of characters for name'''
    # Reserved profile name
    if name == "all":
        return False

    # Don't allow integers (ports)
    try:
        int(name)
        return False
    except Exception:
        pass

    # Require first character be alpha, so we can avoid collisions with port
    # numbers.
    if re.match(r'^[a-zA-Z0-9][a-zA-Z0-9 _\-\.+]*$', name):
        return True
    return False


def verify_profile(name, profile):
    '''Make sure profile has everything needed'''
    app_fields = ['title', 'description', 'ports']

    for f in app_fields:
        if f not in profile:
            err_msg = _("Profile '%(fn)s' missing required field '%(f)s'") % \
                        ({'fn': name, 'f': f})

            raise UFWError(err_msg)
        elif not profile[f]:
            err_msg = _("Profile '%(fn)s' has empty required field '%(f)s'") \
                        % ({'fn': name, 'f': f})
            raise UFWError(err_msg)

    ports = profile['ports'].split('|')
    try:
        for p in ports:
            (port, proto) = ufw.util.parse_port_proto(p)
            # quick checks if error in profile
            if proto == "any" and (':' in port or ',' in port):
                raise UFWError(err_msg)
            rule = ufw.common.UFWRule("ACCEPT", proto, port)
            debug(rule)
    except Exception as e:
        debug(e)
        err_msg = _("Invalid ports in profile '%s'") % (name)
        raise UFWError(err_msg)

    return True


def get_title(profile):
    '''Retrieve the title from the profile'''
    s = ""
    field = 'title'
    if field in profile and profile[field]:
        s = profile[field]
    return s


def get_description(profile):
    '''Retrieve the description from the profile'''
    s = ""
    field = 'description'
    if field in profile and profile[field]:
        s = profile[field]
    return s


def get_ports(profile):
    '''Retrieve a list of ports from a profile'''
    ports = []
    field = 'ports'
    if field in profile and profile[field]:
        ports = profile[field].split('|')

    return ports
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  '''backend.py: interface for ufw backends'''
#
# Copyright 2008-2023 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/>.
#

import errno
import os
import pwd
import re
import stat
import sys
import ufw.util
from ufw.util import error, warn, debug, _findpath
from ufw.common import UFWError, UFWRule
import ufw.applications


class UFWBackend:
    '''Interface for backends'''
    def __init__(self, name, dryrun, extra_files=None,
                 rootdir=None, datadir=None):
        self.defaults = None
        self.name = name
        self.dryrun = dryrun
        self.rules = []
        self.rules6 = []

        p = _findpath(ufw.common.config_dir, datadir)
        self.files = {'defaults': os.path.join(p, 'default/ufw'),
                      'conf': os.path.join(p, 'ufw/ufw.conf'),
                      'apps': os.path.join(p, 'ufw/applications.d') }
        if extra_files is not None:
            self.files.update(extra_files)

        self.loglevels = {'off': 0,
                          'low': 100,
                          'medium': 200,
                          'high': 300,
                          'full': 400 }

        self.do_checks = ufw.common.do_checks
        self._do_checks()
        self._get_defaults()
        self._read_rules()

        self.profiles = ufw.applications.get_profiles(self.files['apps'])

        self.iptables = os.path.join(ufw.common.iptables_dir, "iptables")
        self.iptables_restore = os.path.join(ufw.common.iptables_dir, \
                                             "iptables-restore")
        self.ip6tables = os.path.join(ufw.common.iptables_dir, "ip6tables")
        self.ip6tables_restore = os.path.join(ufw.common.iptables_dir, \
                                              "ip6tables-restore")

        try:
            self.iptables_version = ufw.util.get_iptables_version(self.iptables)
        except OSError: # pragma: no coverage
            err_msg = _("Couldn't determine iptables version")
            raise UFWError(err_msg)

        # Initialize via initcaps only when we need it (LP: #1044361)
        self.caps = None

    def initcaps(self):
        '''Initialize the capabilities database. This needs to be called
           before accessing the database.'''

        # Only initialize if not initialized already
        if self.caps is not None:
            return

        self.caps = {}
        self.caps['limit'] = {}

        # Set defaults for dryrun, non-root, etc
        self.caps['limit']['4'] = True
        self.caps['limit']['6'] = False # historical default for the testsuite

        # Try to get capabilities from the running system if root
        if self.do_checks and os.getuid() == 0 and not self.dryrun: # pragma: no coverage
            # v4
            try:
                nf_caps = ufw.util.get_netfilter_capabilities(self.iptables)
            except OSError as e:
                msg = "initcaps\n%s" % e
                if self.is_enabled():
                    error(msg)
                warn(msg)
                return

            if 'recent-set' in nf_caps and 'recent-update' in nf_caps:
                self.caps['limit']['4'] = True
            else:
                self.caps['limit']['4'] = False

            # v6 (skip capabilities check for ipv6 if ipv6 is disabled in ufw
            # because the system may not have ipv6 support (LP: #1039729)
            if self.use_ipv6():
                try:
                    nf_caps = ufw.util.get_netfilter_capabilities(self.ip6tables)
                except OSError as e:
                    error("initcaps\n%s" % e)
                if 'recent-set' in nf_caps and 'recent-update' in nf_caps:
                    self.caps['limit']['6'] = True
                else:
                    self.caps['limit']['6'] = False

    def is_enabled(self):
        '''Is firewall configured as enabled'''
        if 'enabled' in self.defaults and \
           self.defaults['enabled'] == 'yes':
            return True
        return False

    def use_ipv6(self):
        '''Is firewall configured to use IPv6'''
        if 'ipv6' in self.defaults and \
           self.defaults['ipv6'] == 'yes' and \
           os.path.exists("/proc/sys/net/ipv6"):
            return True
        return False

    def _get_default_policy(self, primary="input", check_forward=False):
        '''Get default policy for specified primary chain'''
        policy = "default_" + primary + "_policy"

        rstr = ""
        if self.defaults[policy] == "accept":
            rstr = "allow"
        elif self.defaults[policy] == "reject":
            rstr = "reject"
        else:
            rstr = "deny"

        if check_forward and primary == "forward":
            enabled = False
            err_msg = _("problem running sysctl")

            (rc, out) = ufw.util.cmd(['sysctl', 'net.ipv4.ip_forward'])
            if rc != 0: # pragma: no cover
                raise UFWError(err_msg)
            if '1' in out:
                enabled = True

            # IPv6 may be disabled, so ignore sysctl output
            if self.use_ipv6():
                (rc, out) = ufw.util.cmd(['sysctl', 'net.ipv6.conf.default.forwarding'])
                if rc == 0 and '1' in out:
                    enabled = True

                (rc, out) = ufw.util.cmd(['sysctl', 'net.ipv6.conf.all.forwarding'])
                if rc == 0 and '1' in out:
                    enabled = True

            if not enabled:
                rstr = "disabled"

        return rstr

    # Don't do coverage on this cause we don't run the unit tests as root
    def _do_checks(self): # pragma: no coverage
        '''Perform basic security checks:
        is setuid or setgid (for non-Linux systems)
        checks that script is owned by root
        checks that every component in absolute path are owned by root
        warn if script is group writable
        warn if part of script path is group writable

        Doing this at the beginning causes a race condition with later
        operations that don't do these checks.  However, if the user running
        this script is root, then need to be root to exploit the race
        condition (and you are hosed anyway...)
        '''

        if not self.do_checks:
            err_msg = _("Checks disabled")
            warn(err_msg)
            return True

        # Not needed on Linux, but who knows the places we will go...
        if os.getuid() != os.geteuid():
            err_msg = _("ERROR: this script should not be SUID")
            raise UFWError(err_msg)
        if os.getgid() != os.getegid():
            err_msg = _("ERROR: this script should not be SGID")
            raise UFWError(err_msg)

        uid = os.getuid()
        if uid != 0:
            err_msg = _("You need to be root to run this script")
            raise UFWError(err_msg)

        # Use these so we only warn once
        warned_world_write = {}
        warned_group_write = {}
        warned_owner = {}

        profiles = []
        if not os.path.isdir(self.files['apps']):
            warn_msg = _("'%s' does not exist") % (self.files['apps'])
            warn(warn_msg)
        else:
            pat = re.compile(r'^\.')
            for profile in os.listdir(self.files['apps']):
                if not pat.search(profile):
                    profiles.append(os.path.join(self.files['apps'], profile))

        for path in list(self.files.values()) + \
                [ os.path.abspath(sys.argv[0]) ] + \
                profiles:
            if not path.startswith('/'):
                path = "%s/%s" % (os.getcwd(), path)
            while True:
                debug("Checking " + path)
                if path == self.files['apps'] and \
                           not os.path.isdir(self.files['apps']):
                    break

                try:
                    statinfo = os.stat(path)
                    mode = statinfo[stat.ST_MODE]
                except OSError:
                    err_msg = _("Couldn't stat '%s'") % (path)
                    raise UFWError(err_msg)
                except Exception:
                    raise

                # snaps and clicks unpack to this, so handle it
                click_user = 'clickpkg'
                snap_user = 'snappypkg'
                is_unpack_user = False
                try:
                    if pwd.getpwuid(statinfo.st_uid)[0] == click_user or \
                            pwd.getpwuid(statinfo.st_uid)[0] == snap_user:
                        is_unpack_user = True
                except KeyError:
                    pass

                if statinfo.st_uid != 0 and not is_unpack_user and \
                        path not in warned_owner:
                    warn_msg = _("uid is %(uid)s but '%(path)s' is owned by " \
                                 "%(st_uid)s") % ({'uid': str(uid), \
                                               'path': path, \
                                               'st_uid': str(statinfo.st_uid)})
                    warn(warn_msg)
                    warned_owner[path] = True
                if mode & stat.S_IWOTH and path not in warned_world_write:
                    warn_msg = _("%s is world writable!") % (path)
                    warn(warn_msg)
                    warned_world_write[path] = True
                if mode & stat.S_IWGRP and path not in warned_group_write and \
                        statinfo.st_gid != 0:
                    warn_msg = _("%s is group writable!") % (path)
                    warn(warn_msg)
                    warned_group_write[path] = True

                if path == "/":
                    break

                last_path = path
                path = os.path.dirname(path)
                if not path:
                    raise OSError(errno.ENOENT, \
                                  "Could not find parent for '%s'" % \
                                  (last_path))

        for f in self.files:
            if f != 'apps' and not os.path.isfile(self.files[f]):
                err_msg = _("'%(f)s' file '%(name)s' does not exist") % \
                           ({'f': f, 'name': self.files[f]})
                raise UFWError(err_msg)

    def _get_defaults(self):
        '''Get all settings from defaults file'''
        self.defaults = {}
        for f in [self.files['defaults'], self.files['conf']]:
            try:
                orig = ufw.util.open_file_read(f)
            except Exception: # pragma: no coverage
                err_msg = _("Couldn't open '%s' for reading") % (f)
                raise UFWError(err_msg)
            pat = re.compile(r'^\w+="?\w+"?')
            for line in orig:
                if pat.search(line):
                    tmp = re.split(r'=', line.strip())
                    self.defaults[tmp[0].lower()] = tmp[1].lower().strip('"\'')

            orig.close()

        # do some default policy sanity checking
        policies = ['accept', 'drop', 'reject']
        for c in [ 'input', 'output', 'forward' ]:
            if 'default_%s_policy' % (c) not in self.defaults:
                err_msg = _("Missing policy for '%s'" % (c))
                raise UFWError(err_msg)
            p = self.defaults['default_%s_policy' % (c)]
            if p not in policies:
                err_msg = _("Invalid policy '%(policy)s' for '%(chain)s'" % \
                            ({'policy': p, 'chain': c}))
                raise UFWError(err_msg)

    def set_default(self, fn, opt, value):
        '''Sets option in defaults file'''
        if not re.match(r'^[\w_]+$', opt):
            err_msg = _("Invalid option")
            raise UFWError(err_msg)

        # Perform this here so we can present a nice error to the user rather
        # than a traceback
        if not os.access(fn, os.W_OK):
            err_msg = _("'%s' is not writable" % (fn))
            raise UFWError(err_msg)

        fns = ufw.util.open_files(fn)
        fd = fns['tmp']

        found = False
        pat = re.compile(r'^' + opt + '=')
        for line in fns['orig']:
            if pat.search(line):
                ufw.util.write_to_file(fd, opt + "=" + value + "\n")
                found = True
            else:
                ufw.util.write_to_file(fd, line)

        # Add the entry if not found
        if not found:
            ufw.util.write_to_file(fd, opt + "=" + value + "\n")

        try:
            ufw.util.close_files(fns)
        except Exception: # pragma: no coverage
            raise

        # Now that the files are written out, update value in memory
        self.defaults[opt.lower()] = value.lower().strip('"\'')

    def set_default_application_policy(self, policy):
        '''Sets default application policy of firewall'''
        if not self.dryrun:
            if policy == "allow":
                self.set_default(self.files['defaults'], \
                                        "DEFAULT_APPLICATION_POLICY", \
                                        "\"ACCEPT\"")
            elif policy == "deny":
                self.set_default(self.files['defaults'], \
                                        "DEFAULT_APPLICATION_POLICY", \
                                        "\"DROP\"")
            elif policy == "reject":
                self.set_default(self.files['defaults'], \
                                        "DEFAULT_APPLICATION_POLICY", \
                                        "\"REJECT\"")
            elif policy == "skip":
                self.set_default(self.files['defaults'], \
                                        "DEFAULT_APPLICATION_POLICY", \
                                        "\"SKIP\"")
            else:
                err_msg = _("Unsupported policy '%s'") % (policy)
                raise UFWError(err_msg)

        rstr = _("Default application policy changed to '%s'") % (policy)

        return rstr

    def get_app_rules_from_template(self, template):
        '''Return a list of UFWRules based on the template rule'''
        rules = []
        profile_names = list(self.profiles.keys())

        if template.dport in profile_names and template.sport in profile_names:
            dports = ufw.applications.get_ports(self.profiles[template.dport])
            sports = ufw.applications.get_ports(self.profiles[template.sport])
            for i in dports:
                tmp = template.dup_rule()
                tmp.dapp = ""
                tmp.set_port("any", "src")
                (port, proto) = ufw.util.parse_port_proto(i)
                tmp.set_protocol(proto)
                tmp.set_port(port, "dst")

                tmp.dapp = template.dapp

                if template.dport == template.sport:
                    # Just use the same ports as dst for src when they are the
                    # same to avoid duplicate rules
                    tmp.sapp = ""
                    (port, proto) = ufw.util.parse_port_proto(i)
                    tmp.set_protocol(proto)
                    tmp.set_port(port, "src")

                    tmp.sapp = template.sapp
                    rules.append(tmp)
                else:
                    for j in sports:
                        rule = tmp.dup_rule()
                        rule.sapp = ""
                        (port, proto) = ufw.util.parse_port_proto(j)
                        rule.set_protocol(proto)
                        rule.set_port(port, "src")

                        if rule.protocol == "any":
                            rule.set_protocol(tmp.protocol)

                        rule.sapp = template.sapp
                        rules.append(rule)
        elif template.sport in profile_names:
            for p in ufw.applications.get_ports(self.profiles[template.sport]):
                rule = template.dup_rule()
                rule.sapp = ""
                (port, proto) = ufw.util.parse_port_proto(p)
                rule.set_protocol(proto)
                rule.set_port(port, "src")

                rule.sapp = template.sapp
                rules.append(rule)
        elif template.dport in profile_names:
            for p in ufw.applications.get_ports(self.profiles[template.dport]):
                rule = template.dup_rule()
                rule.dapp = ""
                (port, proto) = ufw.util.parse_port_proto(p)
                rule.set_protocol(proto)
                rule.set_port(port, "dst")

                rule.dapp = template.dapp
                rules.append(rule)

        if len(rules) < 1:
            err_msg = _("No rules found for application profile")
            raise UFWError(err_msg)

        return rules

    def update_app_rule(self, profile):
        '''Update rule for profile in place. Returns result string and bool
           on whether or not the profile is used in the current ruleset.
        '''
        updated_rules = []
        updated_rules6 = []
        last_tuple = ""
        rstr = ""
        updated_profile = False

        # Remember, self.rules is from user[6].rules, and not the running
        # firewall.
        for r in self.rules + self.rules6:
            if r.dapp == profile or r.sapp == profile:
                # We assume that the rules are in app rule order. Specifically,
                # if app rule has multiple rules, they are one after the other.
                # If the rule ordering changes, the below will have to change.
                tupl = r.get_app_tuple()
                if tupl == last_tuple:
                    # Skip the rule if seen this tuple already (ie, it is part
                    # of a known tuple).
                    continue
                else:
                    # Have a new tuple, so find and insert new app rules here
                    template = r.dup_rule()
                    template.set_protocol("any")
                    if template.dapp != "":
                        template.set_port(template.dapp, "dst")
                    if template.sapp != "":
                        template.set_port(template.sapp, "src")
                    new_app_rules = self.get_app_rules_from_template(\
                                          template)

                    for new_r in new_app_rules:
                        new_r.normalize()
                        if new_r.v6:
                            updated_rules6.append(new_r)
                        else:
                            updated_rules.append(new_r)

                    last_tuple = tupl
                    updated_profile = True
            else:
                if r.v6:
                    updated_rules6.append(r)
                else:
                    updated_rules.append(r)

        if updated_profile:
            self.rules = updated_rules
            self.rules6 = updated_rules6
            rstr += _("Rules updated for profile '%s'") % (profile)

            try:
                self._write_rules(False) # ipv4
                self._write_rules(True) # ipv6
            except Exception: # pragma: no coverage
                err_msg = _("Couldn't update application rules")
                raise UFWError(err_msg)

        return (rstr, updated_profile)

    def find_application_name(self, profile_name):
        '''Find the application profile name for profile_name'''
        if profile_name in self.profiles:
            return profile_name

        match = ""
        matches = 0
        for n in list(self.profiles.keys()):
            if n.lower() == profile_name.lower():
                match = n
                matches += 1

        debug_msg = "'%d' matches for '%s'" % (matches, profile_name)
        debug(debug_msg)
        if matches == 1:
            return match
        elif matches > 1:
            err_msg = _("Found multiple matches for '%s'. Please use exact profile name") % \
                        (profile_name)
        else:
            err_msg = _("Could not find a profile matching '%s'") % \
                        (profile_name)
        raise UFWError(err_msg)

    def find_other_position(self, position, v6):
        '''Return the absolute position in the other list of the rule with the
           user position of the given list. For example, find_other_position(4,
           True) will return the absolute position of the rule in the ipv4 list
           matching the user specified '4' rule in the ipv6 list.
        '''
        # Invalid search (v6 rule with too low position)
        if v6 and position > len(self.rules6):
            raise ValueError()

        # Invalid search (v4 rule with too high position)
        if not v6 and position > len(self.rules):
            raise ValueError()

        if position < 1:
            raise ValueError()

        rules = []
        if v6:
            rules = self.rules6
        else:
            rules = self.rules

        # self.rules[6] is a list of tuples. Some application rules have
        # multiple tuples but the user specifies by ufw rule, not application
        # tuple, so we need to find how many tuples there are leading up to
        # the specified position, which we can then use as an offset for
        # getting the proper match_rule.
        app_rules = {}
        tuple_offset = 0
        for i, r in enumerate(rules):
            if i >= position:
                break
            tupl = ""
            if r.dapp != "" or r.sapp != "":
                tupl = r.get_app_tuple()

                if tupl in app_rules:
                    tuple_offset += 1
                else:
                    app_rules[tupl] = True

        rules = []
        if v6:
            rules = self.rules
            match_rule = self.rules6[position - 1 + tuple_offset].dup_rule()
            match_rule.set_v6(False)
        else:
            rules = self.rules6
            match_rule = self.rules[position - 1 + tuple_offset].dup_rule()
            match_rule.set_v6(True)

        count = 1
        for r in rules:
            if UFWRule.match(r, match_rule) == 0:
                return count
            count += 1

        return 0

    def get_loglevel(self):
        '''Gets current log level of firewall'''
        level = 0
        rstr = _("Logging: ")
        if 'loglevel' not in self.defaults or \
           self.defaults['loglevel'] not in list(self.loglevels.keys()):
            level = -1
            rstr += _("unknown")
        else:
            level = self.loglevels[self.defaults['loglevel']]
            if level == 0:
                rstr += "off"
            else:
                rstr += "on (%s)" % (self.defaults['loglevel'])
        return (level, rstr)

    def set_loglevel(self, level):
        '''Sets log level of firewall'''
        if level not in list(self.loglevels.keys()) + ['on']:
            err_msg = _("Invalid log level '%s'") % (level)
            raise UFWError(err_msg)

        new_level = level
        if level == "on":
            if 'loglevel' not in self.defaults or \
               self.defaults['loglevel'] == "off":
                new_level = "low"
            else:
                new_level = self.defaults['loglevel']

        self.set_default(self.files['conf'], "LOGLEVEL", new_level)
        self.update_logging(new_level)

        if new_level == "off":
            return _("Logging disabled")
        else:
            return _("Logging enabled")

    def get_rules(self):
        '''Return list of all rules'''
        return self.get_rules_ipv4() + self.get_rules_ipv6()

    def get_rules_ipv4(self):
        '''Return list of IPv4 rules'''
        return self.rules

    def get_rules_ipv6(self):
        '''Return list of IPv6 rules'''
        return self.rules6

    def get_rules_count(self, v6):
        '''Return number of ufw rules (not iptables rules)'''
        rules = []
        if v6:
            rules = self.rules6
        else:
            rules = self.rules

        count = 0
        app_rules = {}
        for r in rules:
            tupl = ""
            if r.dapp != "" or r.sapp != "":
                tupl = r.get_app_tuple()

                if tupl in app_rules:
                    debug("Skipping found tuple '%s'" % (tupl))
                    continue
                else:
                    app_rules[tupl] = True
            count += 1

        return count

    def get_rule_by_number(self, num):
        '''Return rule specified by number seen via "status numbered"'''
        rules = self.get_rules()

        count = 1
        app_rules = {}
        for r in rules:
            tupl = ""
            if r.dapp != "" or r.sapp != "":
                tupl = r.get_app_tuple()

                if tupl in app_rules:
                    debug("Skipping found tuple '%s'" % (tupl))
                    continue
                else:
                    app_rules[tupl] = True
            if count == int(num):
                return r
            count += 1

        return None

    def get_matching(self, rule):
        '''See if there is a matching rule in the existing ruleset. Note this
           does not group rules by tuples.'''
        matched = []
        count = 0
        for r in self.get_rules():
            count += 1
            ret = rule.fuzzy_dst_match(r)
            if ret < 1:
                matched.append(count)

        return matched

    # API overrides
    def set_default_policy(self, policy, direction): # pragma: no coverage
        '''Set default policy for specified direction'''
        raise UFWError("UFWBackend.set_default_policy: need to override")

    def get_running_raw(self, rules_type): # pragma: no coverage
        '''Get status of running firewall'''
        raise UFWError("UFWBackend.get_running_raw: need to override")

    def get_status(self, verbose, show_count): # pragma: no coverage
        '''Get managed rules'''
        raise UFWError("UFWBackend.get_status: need to override")

    def set_rule(self, rule, allow_reload): # pragma: no coverage
        '''Update firewall with rule'''
        raise UFWError("UFWBackend.set_rule: need to override")

    def start_firewall(self): # pragma: no coverage
        '''Start the firewall'''
        raise UFWError("UFWBackend.start_firewall: need to override")

    def stop_firewall(self): # pragma: no coverage
        '''Stop the firewall'''
        raise UFWError("UFWBackend.stop_firewall: need to override")

    def get_app_rules_from_system(self, template, v6): # pragma: no coverage
        '''Get a list if rules based on template'''
        raise UFWError("UFWBackend.get_app_rules_from_system: need to " + \
                       "override")

    def update_logging(self, level): # pragma: no coverage
        '''Update loglevel of running firewall'''
        raise UFWError("UFWBackend.update_logging: need to override")

    def reset(self): # pragma: no coverage
        '''Reset the firewall'''
        raise UFWError("UFWBackend.reset: need to override")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 '''backend_iptables.py: iptables backend for ufw'''
#
# Copyright 2008-2018 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/>.
#

import os
import re
import shutil
import stat
import sys
import time

from ufw.common import UFWError, UFWRule
from ufw.util import warn, debug, msg, cmd, cmd_pipe, _findpath
import ufw.backend


class UFWBackendIptables(ufw.backend.UFWBackend):
    '''Instance class for UFWBackend'''
    def __init__(self, dryrun, rootdir=None, datadir=None):
        '''UFWBackendIptables initialization'''
        self.comment_str = "# " + ufw.common.programName + "_comment #"
        self.rootdir = rootdir
        self.datadir = datadir

        files = {}
        config_dir = _findpath(ufw.common.config_dir, datadir)

        files['rules'] = os.path.join(config_dir, 'ufw/user.rules')
        files['before_rules'] = os.path.join(config_dir, 'ufw/before.rules')
        files['after_rules'] = os.path.join(config_dir, 'ufw/after.rules')
        files['rules6'] = os.path.join(config_dir, 'ufw/user6.rules')
        files['before6_rules'] = os.path.join(config_dir, 'ufw/before6.rules')
        files['after6_rules'] = os.path.join(config_dir, 'ufw/after6.rules')
        # when rootdir/datadir are not set, ufw-init is in the same area as
        # the lock files (ufw.common.state_dir, aka /lib/ufw), but when set,
        # ufw-init is in rootdir/lib/ufw (ro) and the lockfiles in
        # datadir/lib/ufw (rw)
        files['init'] = os.path.join(_findpath(ufw.common.state_dir, rootdir),
                                     'ufw-init')

        ufw.backend.UFWBackend.__init__(self, "iptables", dryrun, files,
                                        rootdir=rootdir, datadir=datadir)

        self.chains = {'before': [], 'user': [], 'after': [], 'misc': []}
        for ver in ['4', '6']:
            chain_prefix = "ufw"
            if ver == "6":
                if self.use_ipv6():
                    chain_prefix += ver
                elif ver == "6":
                    continue

            for loc in ['before', 'user', 'after']:
                for target in ['input', 'output', 'forward']:
                    chain = "%s-%s-logging-%s" % (chain_prefix, loc, target)
                    self.chains[loc].append(chain)
            self.chains['misc'].append(chain_prefix + "-logging-deny")
            self.chains['misc'].append(chain_prefix + "-logging-allow")

        # The default log rate limiting rule ('ufw[6]-user-limit chain should
        # be prepended before use)
        self.ufw_user_limit_log = ['-m', 'limit', \
                                   '--limit', '3/minute', '-j', 'LOG', \
                                   '--log-prefix']
        self.ufw_user_limit_log_text = "[UFW LIMIT BLOCK]"

    def get_default_application_policy(self):
        '''Get current policy'''
        rstr = _("New profiles:")
        if self.defaults['default_application_policy'] == "accept":
            rstr += " allow"
        elif self.defaults['default_application_policy'] == "drop":
            rstr += " deny"
        elif self.defaults['default_application_policy'] == "reject":
            rstr += " reject"
        else:
            rstr += " skip"

        return rstr

    def set_default_policy(self, policy, direction):
        '''Sets default policy of firewall'''
        if not self.dryrun:
            if policy != "allow" and policy != "deny" and policy != "reject":
                err_msg = _("Unsupported policy '%s'") % (policy)
                raise UFWError(err_msg)

            if direction != "incoming" and direction != "outgoing" and \
               direction != "routed":
                err_msg = _("Unsupported policy for direction '%s'") % \
                            (direction)
                raise UFWError(err_msg)

            chain = "INPUT"
            if direction == "outgoing":
                chain = "OUTPUT"
            elif direction == "routed":
                chain = "FORWARD"

            old_log_str = ''
            new_log_str = ''
            if policy == "allow":
                try:
                    self.set_default(self.files['defaults'], \
                                            "DEFAULT_%s_POLICY" % (chain), \
                                            "\"ACCEPT\"")
                except Exception:
                    raise
                old_log_str = 'UFW BLOCK'
                new_log_str = 'UFW ALLOW'
            elif policy == "reject":
                try:
                    self.set_default(self.files['defaults'], \
                                            "DEFAULT_%s_POLICY" % (chain), \
                                            "\"REJECT\"")
                except Exception:
                    raise
                old_log_str = 'UFW ALLOW'
                new_log_str = 'UFW BLOCK'
            else:
                try:
                    self.set_default(self.files['defaults'], \
                                            "DEFAULT_%s_POLICY" % (chain), \
                                            "\"DROP\"")
                except Exception:
                    raise
                old_log_str = 'UFW ALLOW'
                new_log_str = 'UFW BLOCK'

            # Switch logging message in catch-all rules
            pat = re.compile(r'' + old_log_str)
            for f in [self.files['after_rules'], self.files['after6_rules']]:
                try:
                    fns = ufw.util.open_files(f)
                except Exception:
                    raise
                fd = fns['tmp']

                for line in fns['orig']:
                    if pat.search(line):
                        ufw.util.write_to_file(fd, pat.sub(new_log_str, line))
                    else:
                        ufw.util.write_to_file(fd, line)

                try:
                    ufw.util.close_files(fns)
                except Exception:
                    raise

        rstr = _("Default %(direction)s policy changed to '%(policy)s'\n") % \
                 ({'direction': direction, 'policy': policy})
        rstr += _("(be sure to update your rules accordingly)")

        return rstr

    def get_running_raw(self, rules_type):
        '''Show current running status of firewall'''
        if self.dryrun:
            out = "> " + _("Checking raw iptables\n")
            out += "> " + _("Checking raw ip6tables\n")
            return out

        # Initialize the capabilities database
        self.initcaps()

        args = ['-n', '-v', '-x', '-L']
        items = []
        items6 = []

        if rules_type == "raw":
            args.append('-t')
            items = ['filter', 'nat', 'mangle', 'raw']
            items6 = ['filter', 'mangle', 'raw']
        elif rules_type == "builtins":
            for c in ['INPUT', 'FORWARD', 'OUTPUT']:
                items.append('filter:%s' % c)
                items6.append('filter:%s' % c)
            for c in ['PREROUTING', 'INPUT', 'FORWARD', 'OUTPUT', \
                      'POSTROUTING']:
                items.append('mangle:%s' % c)
                items6.append('mangle:%s' % c)
            for c in ['PREROUTING', 'OUTPUT']:
                items.append('raw:%s' % c)
                items6.append('raw:%s' % c)
            for c in ['PREROUTING', 'POSTROUTING', 'OUTPUT']:
                items.append('nat:%s' % c)
        elif rules_type == "before":
            for b in ['input', 'forward', 'output']:
                items.append('ufw-before-%s' % b)
                items6.append('ufw6-before-%s' % b)
        elif rules_type == "user":
            for b in ['input', 'forward', 'output']:
                items.append('ufw-user-%s' % b)
                items6.append('ufw6-user-%s' % b)
            if self.caps['limit']['4']:
                items.append('ufw-user-limit-accept')
                items.append('ufw-user-limit')
            if self.caps['limit']['6']:
                items6.append('ufw6-user-limit-accept')
                items6.append('ufw6-user-limit')
        elif rules_type == "after":
            for b in ['input', 'forward', 'output']:
                items.append('ufw-after-%s' % b)
                items6.append('ufw6-after-%s' % b)
        elif rules_type == "logging":
            for b in ['input', 'forward', 'output']:
                items.append('ufw-before-logging-%s' % b)
                items6.append('ufw6-before-logging-%s' % b)
                items.append('ufw-user-logging-%s' % b)
                items6.append('ufw6-user-logging-%s' % b)
                items.append('ufw-after-logging-%s' % b)
                items6.append('ufw6-after-logging-%s' % b)
            items.append('ufw-logging-allow')
            items.append('ufw-logging-deny')
            items6.append('ufw6-logging-allow')
            items6.append('ufw6-logging-deny')

        out = "IPV4 (%s):\n" % (rules_type)
        for i in items:
            if ':' in i:
                (t, c) = i.split(':')
                out += "(%s) " % (t)
                (rc, tmp) = cmd([self.iptables] + args + [c, '-t', t])
            else:
                (rc, tmp) = cmd([self.iptables] + args + [i])
            out += tmp
            if rules_type != "raw":
                out += "\n"
            if rc != 0:
                raise UFWError(out)

        if rules_type == "raw" or self.use_ipv6():
            out += "\n\nIPV6:\n"
            for i in items6:
                if ':' in i:
                    (t, c) = i.split(':')
                    out += "(%s) " % (t)
                    (rc, tmp) = cmd([self.iptables] + args + [c, '-t', t])
                else:
                    (rc, tmp) = cmd([self.ip6tables] + args + [i])
                out += tmp
                if rules_type != "raw":
                    out += "\n"
                if rc != 0:
                    raise UFWError(out)

        return out

    def get_status(self, verbose=False, show_count=False):
        '''Show ufw managed rules'''
        out = ""
        if self.dryrun:
            out = "> " + _("Checking iptables\n")
            if self.use_ipv6():
                out += "> " + _("Checking ip6tables\n")
            return out

        err_msg = _("problem running")
        for direction in ["input", "output", "forward"]:
            # Is the firewall loaded at all?
            (rc, out) = cmd([self.iptables, '-L', \
                            'ufw-user-%s' % (direction), '-n'])
            if rc == 1:
                return _("Status: inactive")
            elif rc != 0:
                raise UFWError(err_msg + " iptables: %s\n" % (out))

            if self.use_ipv6():
                (rc, out6) = cmd([self.ip6tables, '-L', \
                                 'ufw6-user-%s' % (direction), '-n'])
                if rc != 0:
                    raise UFWError(err_msg + " ip6tables")

        s = ""
        str_out = ""
        str_rte = ""
        rules = self.rules + self.rules6
        count = 1
        app_rules = {}
        for r in rules:
            tmp_str = ""
            location = {}
            tupl = ""
            show_proto = True
            if not verbose and (r.dapp != "" or r.sapp != ""):
                show_proto = False
                tupl = r.get_app_tuple()

                if tupl in app_rules:
                    debug("Skipping found tuple '%s'" % (tupl))
                    continue
                else:
                    app_rules[tupl] = True

            for loc in [ 'dst', 'src' ]:
                location[loc] = ""

                port = ""
                tmp = ""
                if loc == "dst":
                    tmp = r.dst
                    if not verbose and r.dapp != "":
                        port = r.dapp
                        if r.v6 and tmp == "::/0":
                            port += " (v6)"
                    else:
                        port = r.dport
                else:
                    tmp = r.src
                    if not verbose and r.sapp != "":
                        port = r.sapp
                        if r.v6 and tmp == "::/0":
                            port += " (v6)"
                    else:
                        port = r.sport

                if tmp != "0.0.0.0/0" and tmp != "::/0":
                    location[loc] = tmp

                if port != "any":
                    if location[loc] == "":
                        location[loc] = port
                    else:
                        location[loc] += " " + port

                    if show_proto and r.protocol != "any":
                        location[loc] += "/" + r.protocol

                    if verbose:
                        if loc == "dst" and r.dapp != "":
                            location[loc] += " (%s" % (r.dapp)
                            if r.v6 and tmp == "::/0":
                                location[loc] += " (v6)"
                            location[loc] += ")"
                        if loc == "src" and r.sapp != "":
                            location[loc] += " (%s" % (r.sapp)
                            if r.v6 and tmp == "::/0":
                                location[loc] += " (v6)"
                            location[loc] += ")"

                if port == "any":
                    if tmp == "0.0.0.0/0" or tmp == "::/0":
                        location[loc] = "Anywhere"

                        # Show the protocol if Anywhere to Anwhere, have
                        # protocol and source and dest ports are any
                        if show_proto and r.protocol != "any" and \
                           r.dst == r.src and r.dport == r.sport:
                            location[loc] += "/" + r.protocol

                        if tmp == "::/0":
                            location[loc] += " (v6)"
                    else:
                        # Show the protocol if have protocol, and source
                        # and dest ports are any
                        if show_proto and r.protocol != "any" and \
                           r.dport == r.sport:
                            location[loc] += "/" + r.protocol
                elif r.v6 and r.src == "::/0" and r.dst == "::/0" \
                   and ' (v6)' not in location[loc]:
                    # Add v6 if have port but no addresses so it doesn't look
                    # a duplicate of the v4 rule
                    location[loc] += " (v6)"

                # Reporting the interfaces is different in route rules and
                # non-route rules. With route rules, the reporting should be
                # relative to how packets flow through the firewall, with
                # other rules the reporting should be relative to the firewall
                # system as endpoint. As such, for route rules, report the
                # incoming interface under 'From' and the outgoing interface
                # under 'To', and for non-route rules, report the incoming
                # interface under 'To', and the outgoing interface under
                # 'From'.
                if r.forward:
                    if loc == 'src' and r.interface_in != "":
                        location[loc] += " on %s" % (r.interface_in)
                    if loc == 'dst' and r.interface_out != "":
                        location[loc] += " on %s" % (r.interface_out)
                else:
                    if loc == 'dst' and r.interface_in != "":
                        location[loc] += " on %s" % (r.interface_in)
                    if loc == 'src' and r.interface_out != "":
                        location[loc] += " on %s" % (r.interface_out)

            attribs = []
            attrib_str = ""
            if r.logtype or r.direction.lower() == "out":
                if r.logtype:
                    attribs.append(r.logtype.lower())
                # why is the direction added to attribs if shown in action?
                if show_count and r.direction == "out":
                    attribs.append(r.direction)
                if len(attribs) > 0:
                    attrib_str = " (%s)" % (', '.join(attribs))

            # now construct the rule output string
            if show_count:
                tmp_str += "[%2d] " % (count)

            dir_str = r.direction.upper()
            if r.forward:
                dir_str = "FWD"

            if r.direction == "in" and not r.forward and \
               not verbose and not show_count:
                dir_str = ""

            comment_str = ""
            if r.comment != "":
                comment_str = " # %s" % r.get_comment()
            tmp_str += "%-26s %-12s%-26s%s%s\n" % (location['dst'], \
                                                " ".join([r.action.upper(), \
                                                          dir_str]), \
                                                location['src'], attrib_str,
                                                comment_str)

            # Show the list in the order given if a numbered list, otherwise
            # split incoming and outgoing rules
            if show_count:
                s += tmp_str
            else:
                if r.forward:
                    str_rte += tmp_str
                elif r.direction == "out":
                    str_out += tmp_str
                else:
                    s += tmp_str
            count += 1

        if s != "" or str_out != "" or str_rte != "":
            full_str = "\n\n"
            if show_count:
                full_str += "     "
            str_to = _("To")
            str_from = _("From")
            str_action = _("Action")
            rules_header_fmt = "%-26s %-12s%s\n"

            rules_header = rules_header_fmt % (str_to, str_action, str_from)
            if show_count:
                rules_header += "     "
            rules_header += rules_header_fmt % \
                            ("-" * len(str_to), \
                             "-" * len(str_action), \
                             "-" * len(str_from))

            full_str += rules_header

            if s != "":
                full_str += s
            if s != "" and str_out != "":
                full_str += _("\n")
            if str_out != "":
                full_str += str_out
            if s != "" and str_rte != "":
                full_str += _("\n")
            if str_rte != "":
                full_str += str_rte

            s = full_str

        if verbose:
            (level, logging_str) = self.get_loglevel()
            policy_str = _("Default: %(in)s (incoming), " +
                           "%(out)s (outgoing), " +
                           "%(routed)s (routed)") \
                           % ({'in': self._get_default_policy(), \
                               'out': self._get_default_policy("output"), \
                               'routed': self._get_default_policy("forward", \
                                                                  True)})
            app_policy_str = self.get_default_application_policy()
            return _("Status: active\n%(log)s\n%(pol)s\n%(app)s%(status)s") % \
                     ({'log': logging_str, 'pol': policy_str, \
                       'app': app_policy_str, 'status': s})
        else:
            return _("Status: active%s") % (s)

    def stop_firewall(self):
        '''Stop the firewall'''
        if self.dryrun:
            msg("> " + _("running ufw-init"))
        else:
            args = []
            args.append(self.files['init'])
            if self.rootdir is not None and self.datadir is not None:
                args.append('--rootdir')
                args.append(self.rootdir)
                args.append('--datadir')
                args.append(self.datadir)
            args.append('force-stop')
            (rc, out) = cmd(args)
            if rc != 0:
                err_msg = _("problem running ufw-init\n%s" % out)
                raise UFWError(err_msg)

    def start_firewall(self):
        '''Start the firewall'''
        if self.dryrun:
            msg("> " + _("running ufw-init"))
        else:
            args = []
            args.append(self.files['init'])
            if self.rootdir is not None and self.datadir is not None:
                args.append('--rootdir')
                args.append(self.rootdir)
                args.append('--datadir')
                args.append(self.datadir)
            args.append('start')
            (rc, out) = cmd(args)
            if rc != 0:
                err_msg = _("problem running ufw-init\n%s" % out)
                raise UFWError(err_msg)

            if 'loglevel' not in self.defaults or \
               self.defaults['loglevel'] not in list(self.loglevels.keys()):
                # Add the loglevel if not valid
                try:
                    self.set_loglevel("low")
                except Exception:
                    err_msg = _("Could not set LOGLEVEL")
                    raise UFWError(err_msg)
            else:
                try:
                    self.update_logging(self.defaults['loglevel'])
                except Exception:
                    err_msg = _("Could not load logging rules")
                    raise UFWError(err_msg)

    def _need_reload(self, v6):
        '''Check if all chains exist'''
        if self.dryrun:
            return False

        # Initialize the capabilities database
        self.initcaps()

        prefix = "ufw"
        exe = self.iptables
        if v6:
            prefix = "ufw6"
            exe = self.ip6tables

        for chain in [ 'input', 'output', 'forward', 'limit', 'limit-accept' ]:
            if chain == "limit" or chain == "limit-accept":
                if v6 and not self.caps['limit']['6']:
                    continue
                elif not v6 and not self.caps['limit']['4']:
                    continue

            (rc, out) = cmd([exe, '-n', '-L', prefix + "-user-" + chain])
            if rc != 0:
                debug("_need_reload: forcing reload")
                return True

        return False

    def _reload_user_rules(self):
        '''Reload firewall rules file'''
        err_msg = _("problem running")
        if self.dryrun:
            msg("> | iptables-restore")
            if self.use_ipv6():
                msg("> | ip6tables-restore")
        elif self.is_enabled():
            # first flush the user logging chains
            try:
                for c in self.chains['user']:
                    self._chain_cmd(c, ['-F', c])
                    self._chain_cmd(c, ['-Z', c])
            except Exception: # pragma: no coverage
                raise UFWError(err_msg)

            # then restore the system rules
            (rc, out) = cmd_pipe(['cat', self.files['rules']], \
                                 [self.iptables_restore, '-n'])
            if rc != 0:
                raise UFWError(err_msg + " iptables")

            if self.use_ipv6():
                (rc, out) = cmd_pipe(['cat', self.files['rules6']], \
                                     [self.ip6tables_restore, '-n'])
                if rc != 0:
                    raise UFWError(err_msg + " ip6tables")

    def _get_rules_from_formatted(self, frule, prefix, suffix):
        '''Return list of iptables rules appropriate for sending'''
        snippets = []

        # adjust reject and protocol 'all'
        pat_proto = re.compile(r'-p all ')
        pat_port = re.compile(r'port ')
        pat_reject = re.compile(r'-j (REJECT(_log(-all)?)?)')
        if pat_proto.search(frule):
            if pat_port.search(frule):
                if pat_reject.search(frule):
                    snippets.append(pat_proto.sub('-p tcp ', \
                        pat_reject.sub(r'-j \1 --reject-with tcp-reset', \
                        frule)))
                else:
                    snippets.append(pat_proto.sub('-p tcp ', frule))
                snippets.append(pat_proto.sub('-p udp ', frule))
            else:
                snippets.append(pat_proto.sub('', frule))
        else:
            snippets.append(frule)

        # adjust for logging rules
        pat_log = re.compile(r'(.*)-j ([A-Z]+)_log(-all)?(.*)')
        pat_logall = re.compile(r'-j [A-Z]+_log-all')
        pat_chain = re.compile(r'(-A|-D) ([a-zA-Z0-9\-]+)')
        limit_args = '-m limit --limit 3/min --limit-burst 10'
        for i, s in enumerate(snippets):
            if pat_log.search(s):
                policy = pat_log.sub(r'\2', s).strip()
                if policy.lower() == "accept":
                    policy = "ALLOW"
                elif policy.lower() == "limit":
                    policy = "LIMIT"
                else:
                    policy = "BLOCK"

                lstr = '%s -j LOG --log-prefix "[UFW %s] "' % (limit_args, \
                       policy)
                if not pat_logall.search(s):
                    lstr = '-m conntrack --ctstate NEW ' + lstr
                snippets[i] = pat_log.sub(r'\1-j \2\4', s)
                snippets.insert(i, pat_log.sub(r'\1-j ' + prefix + \
                                               '-user-logging-' + suffix, s))
                snippets.insert(i, pat_chain.sub(r'\1 ' + prefix + \
                                                 '-user-logging-' + suffix,
                                                 pat_log.sub(r'\1-j RETURN', \
                                                 s)))
                snippets.insert(i, pat_chain.sub(r'\1 ' + prefix + \
                                                 '-user-logging-' + suffix,
                                                 pat_log.sub(r'\1' + lstr, s)))

        # adjust for limit
        pat_limit = re.compile(r' -j LIMIT')
        for i, s in enumerate(snippets):
            if pat_limit.search(s):
                tmp1 = pat_limit.sub(' -m conntrack --ctstate NEW -m recent --set', \
                                     s)
                tmp2 = pat_limit.sub(' -m conntrack --ctstate NEW -m recent' + \
                                     ' --update --seconds 30 --hitcount 6' + \
                                     ' -j ' + prefix + '-user-limit', s)
                tmp3 = pat_limit.sub(' -j ' + prefix + '-user-limit-accept', s)
                snippets[i] = tmp3
                snippets.insert(i, tmp2)
                snippets.insert(i, tmp1)

        return snippets

    def _get_lists_from_formatted(self, frule, prefix, suffix):
        '''Return list of iptables rules appropriate for sending as arguments
           to cmd()
        '''
        snippets = []
        str_snippets = self._get_rules_from_formatted(frule, prefix, suffix)

        # split the string such that the log prefix can contain spaces
        pat = re.compile(r'(.*) --log-prefix (".* ")(.*)')
        for i, s in enumerate(str_snippets):
            snippets.append(pat.sub(r'\1', s).split())
            if pat.match(s):
                snippets[i].append("--log-prefix")
                snippets[i].append(pat.sub(r'\2', s).replace('"', ''))
                snippets[i] += pat.sub(r'\3', s).split()

        return snippets

    def _read_rules(self):
        '''Read in rules that were added by ufw'''
        rfns = [self.files['rules']]
        if self.use_ipv6():
            rfns.append(self.files['rules6'])

        for f in rfns:
            try:
                orig = ufw.util.open_file_read(f)
            except Exception:
                err_msg = _("Couldn't open '%s' for reading") % (f)
                raise UFWError(err_msg)

            pat_tuple = re.compile(r'^### tuple ###\s*')
            pat_iface_in = re.compile(r'in_\w+')
            pat_iface_out = re.compile(r'out_\w+')
            for orig_line in orig:
                line = orig_line

                comment = ""
                # comment= should always be last, so just strip it out
                if ' comment=' in orig_line:
                    line, hex = orig_line.split(r' comment=')
                    comment = hex.strip()

                if pat_tuple.match(line):
                    tupl = pat_tuple.sub('', line)
                    tmp = re.split(r'\s+', tupl.strip())
                    if len(tmp) < 6 or len(tmp) > 9:
                        wmsg = _("Skipping malformed tuple (bad length): %s") \
                                 % (tupl)
                        warn(wmsg)
                        continue
                    else:
                        # set direction to "in" to support upgrades
                        # from old format, which only had 6 or 8 fields.
                        dtype = "in"
                        interface_in = ""
                        interface_out = ""
                        if len(tmp) == 7 or len(tmp) == 9:
                            wmsg = _("Skipping malformed tuple (iface): %s") \
                                     % (tupl)
                            dtype = tmp[-1].split('_')[0]
                            if '_' in tmp[-1]:
                                if '!' in tmp[-1] and \
                                   pat_iface_in.search(tmp[-1]) and \
                                   pat_iface_out.search(tmp[-1]):
                                    # in_eth0!out_eth1
                                    interface_in = \
                                        tmp[-1].split('!')[0].partition('_')[2]
                                    interface_out = \
                                        tmp[-1].split('!')[1].partition('_')[2]
                                elif tmp[-1].startswith("in_"):
                                    # in_eth0
                                    interface_in = tmp[-1].partition('_')[2]
                                elif tmp[-1].startswith("out_"):
                                    # out_eth0
                                    interface_out = tmp[-1].partition('_')[2]
                                else:
                                    warn(wmsg)
                                    continue
                        try:
                            action = tmp[0]
                            forward = False
                            # route rules use 'route:<action> ...'
                            if ':' in action:
                                forward = True
                                action = action.split(':')[1]
                            if len(tmp) < 8:
                                rule = UFWRule(action, tmp[1], tmp[2], tmp[3],
                                               tmp[4], tmp[5], dtype, forward,
                                               comment)
                            else:
                                rule = UFWRule(action, tmp[1], tmp[2], tmp[3],
                                               tmp[4], tmp[5], dtype, forward,
                                               comment)
                                # Removed leading [sd]app_ and unescape spaces
                                pat_space = re.compile('%20')
                                if tmp[6] != "-":
                                    rule.dapp = pat_space.sub(' ', tmp[6])
                                if tmp[7] != "-":
                                    rule.sapp = pat_space.sub(' ', tmp[7])
                            if interface_in != "":
                                rule.set_interface("in", interface_in)
                            if interface_out != "":
                                rule.set_interface("out", interface_out)

                        except UFWError:
                            warn_msg = _("Skipping malformed tuple: %s") % \
                                        (tupl)
                            warn(warn_msg)
                            continue
                        if f == self.files['rules6']:
                            rule.set_v6(True)
                            self.rules6.append(rule)
                        else:
                            rule.set_v6(False)
                            self.rules.append(rule)

            orig.close()

    def _write_rules(self, v6=False):
        '''Write out new rules to file to user chain file'''
        rules_file = self.files['rules']
        if v6:
            rules_file = self.files['rules6']

        # Perform this here so we can present a nice error to the user rather
        # than a traceback
        if not os.access(rules_file, os.W_OK):
            err_msg = _("'%s' is not writable" % (rules_file))
            raise UFWError(err_msg)

        try:
            fns = ufw.util.open_files(rules_file)
        except Exception:
            raise

        # Initialize the capabilities database
        self.initcaps()

        chain_prefix = "ufw"
        rules = self.rules
        if v6:
            chain_prefix = "ufw6"
            rules = self.rules6

        if self.dryrun:
            fd = sys.stdout.fileno()
        else:
            fd = fns['tmp']

        # Write header
        ufw.util.write_to_file(fd, "*filter\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + "-user-input - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-user-output - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-user-forward - [0:0]\n")

        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-before-logging-input - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-before-logging-output - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-before-logging-forward - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-user-logging-input - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-user-logging-output - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-user-logging-forward - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-after-logging-input - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-after-logging-output - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-after-logging-forward - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-logging-deny - [0:0]\n")
        ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                         "-logging-allow - [0:0]\n")

        # Rate limiting is runtime supported
        if (chain_prefix == "ufw" and self.caps['limit']['4']) or \
           (chain_prefix == "ufw6" and self.caps['limit']['6']):
            ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                             "-user-limit - [0:0]\n")
            ufw.util.write_to_file(fd, ":" + chain_prefix + \
                                             "-user-limit-accept - [0:0]\n")

        ufw.util.write_to_file(fd, "### RULES ###\n")

        # Write rules
        for r in rules:
            action = r.action
            # route rules use 'route:<action> ...'
            if r.forward:
                action = "route:" + r.action
            if r.logtype != "":
                action += "_" + r.logtype

            ifaces = ""
            if r.interface_in == "" and r.interface_out == "":
                ifaces = r.direction
            elif r.interface_in != "" and r.interface_out != "":
                ifaces = "in_%s!out_%s" % (r.interface_in, r.interface_out)
            else:
                if r.interface_in != "":
                    ifaces += "%s_%s" % (r.direction, r.interface_in)
                else:
                    ifaces += "%s_%s" % (r.direction, r.interface_out)

            if r.dapp == "" and r.sapp == "":
                tstr = "\n### tuple ### %s %s %s %s %s %s %s" % \
                     (action, r.protocol, r.dport, r.dst, r.sport, r.src,
                      ifaces)
                if r.comment != '':
                    tstr += " comment=%s" % r.comment
                ufw.util.write_to_file(fd, tstr + "\n")
            else:
                pat_space = re.compile(' ')
                dapp = "-"
                if r.dapp:
                    dapp = pat_space.sub('%20', r.dapp)
                sapp = "-"
                if r.sapp:
                    sapp = pat_space.sub('%20', r.sapp)
                tstr = "\n### tuple ### %s %s %s %s %s %s %s %s %s" % \
                       (action, r.protocol, r.dport, r.dst, r.sport, r.src, \
                        dapp, sapp, ifaces)
                if r.comment != '':
                    tstr += " comment=%s" % r.comment
                ufw.util.write_to_file(fd, tstr + "\n")

            chain_suffix = "input"
            if r.forward:
                chain_suffix = "forward"
            elif r.direction == "out":
                chain_suffix = "output"
            chain = "%s-user-%s" % (chain_prefix, chain_suffix)
            rule_str = "-A %s %s\n" % (chain, r.format_rule())

            for s in self._get_rules_from_formatted(rule_str, chain_prefix, \
                                                    chain_suffix):
                ufw.util.write_to_file(fd, s)

        # Write footer
        ufw.util.write_to_file(fd, "\n### END RULES ###\n")

        # Add logging rules, skipping any delete ('-D') rules
        ufw.util.write_to_file(fd, "\n### LOGGING ###\n")
        try:
            lrules_t = self._get_logging_rules(self.defaults['loglevel'])
        except Exception:
            raise
        for c, r, q in lrules_t:
            if len(r) > 0 and r[0] == '-D':
                continue
            if c.startswith(chain_prefix + "-"):
                ufw.util.write_to_file(fd,
                    " ".join(r).replace('[', '"[').replace('] ', '] "') + \
                    "\n")
        ufw.util.write_to_file(fd, "### END LOGGING ###\n")

        # Rate limiting is runtime supported
        if (chain_prefix == "ufw" and self.caps['limit']['4']) or \
           (chain_prefix == "ufw6" and self.caps['limit']['6']):
            ufw.util.write_to_file(fd, "\n### RATE LIMITING ###\n")
            if self.defaults['loglevel'] != "off":
                ufw.util.write_to_file(fd, "-A " + \
                         chain_prefix + "-user-limit " + \
                         " ".join(self.ufw_user_limit_log) + \
                         " \"" + self.ufw_user_limit_log_text + " \"\n")
            ufw.util.write_to_file(fd, "-A " + chain_prefix + \
                         "-user-limit -j REJECT\n")
            ufw.util.write_to_file(fd, "-A " + chain_prefix + \
                         "-user-limit-accept -j ACCEPT\n")
            ufw.util.write_to_file(fd, "### END RATE LIMITING ###\n")

        ufw.util.write_to_file(fd, "COMMIT\n")

        try:
            if self.dryrun:
                ufw.util.close_files(fns, False)
            else:
                ufw.util.close_files(fns)
        except Exception:
            raise

    def set_rule(self, rule, allow_reload=True):
        '''Updates firewall with rule by:
        * appending the rule to the chain if new rule and firewall enabled
        * deleting the rule from the chain if found and firewall enabled
        * inserting the rule if possible and firewall enabled
        * updating user rules file
        * reloading the user rules file if rule is modified
        '''

        # Initialize the capabilities database
        self.initcaps()

        rstr = ""

        if rule.v6:
            if not self.use_ipv6():
                err_msg = _("Adding IPv6 rule failed: IPv6 not enabled")
                raise UFWError(err_msg)
            if rule.action == 'limit' and not self.caps['limit']['6']:
                # Rate limiting is runtime supported
                return _("Skipping unsupported IPv6 '%s' rule") % (rule.action)
        else:
            if rule.action == 'limit' and not self.caps['limit']['4']:
                # Rate limiting is runtime supported
                return _("Skipping unsupported IPv4 '%s' rule") % (rule.action)

        if rule.multi and rule.protocol != "udp" and rule.protocol != "tcp":
            err_msg = _("Must specify 'tcp' or 'udp' with multiple ports")
            raise UFWError(err_msg)

        newrules = []
        found = False
        modified = False

        rules = self.rules
        position = rule.position
        if rule.v6:
            if self.iptables_version < "1.4" and (rule.dapp != "" or \
                                                  rule.sapp != ""):
                return _("Skipping IPv6 application rule. Need at least iptables 1.4")
            rules = self.rules6

        # bail if we have a bad position
        if position < 0 or position > len(rules):
            err_msg = _("Invalid position '%d'") % (position)
            raise UFWError(err_msg)

        if position > 0 and rule.remove:
            err_msg = _("Cannot specify insert and delete")
            raise UFWError(err_msg)

        # First construct the new rules list
        try:
            rule.normalize()
        except Exception:
            raise

        count = 1
        inserted = False
        matches = 0
        last = ('', '', '', '')
        for r in rules:
            try:
                r.normalize()
            except Exception:
                raise

            current = (r.dst, r.src, r.dapp, r.sapp)
            if count == position:
                # insert the rule if:
                # 1. the last rule was not an application rule
                # 2. the current rule is not an application rule
                # 3. the last application rule is different than the current
                #    while the new rule is different than the current one
                if (last[2] == '' and last[3] == '' and count > 1) or \
                   (current[2] == '' and current[3] == '') or \
                   last != current:
                    inserted = True
                    newrules.append(rule.dup_rule())
                    last = ('', '', '', '')
                else:
                    position += 1
            last = current
            count += 1

            ret = UFWRule.match(r, rule)
            if ret < 1:
                matches += 1

            if ret == 0 and not found and not inserted:
                # If find the rule, add it if it's not to be removed, otherwise
                # skip it.
                found = True
                if not rule.remove:
                    newrules.append(rule.dup_rule())
            elif ret == -2 and rule.remove and rule.comment == '':
                # Allow removing a rule if the comment is empty
                found = True
            elif ret < 0 and not rule.remove and not inserted:
                # If only the action is different, replace the rule if it's not
                # to be removed.
                found = True
                modified = True
                newrules.append(rule.dup_rule())
            else:
                newrules.append(r)

        if inserted:
            if matches > 0:
                rstr = _("Skipping inserting existing rule")
                if rule.v6:
                    rstr += " (v6)"
                return rstr
        else:
            # Add rule to the end if it was not already added.
            if not found and not rule.remove:
                newrules.append(rule.dup_rule())

            # Don't process non-existing or unchanged pre-exisiting rules
            if not found and rule.remove and not self.dryrun:
                rstr = _("Could not delete non-existent rule")
                if rule.v6:
                    rstr += " (v6)"
                return rstr
            elif found and not rule.remove and not modified:
                rstr = _("Skipping adding existing rule")
                if rule.v6:
                    rstr += " (v6)"
                return rstr

        if rule.v6:
            self.rules6 = newrules
        else:
            self.rules = newrules

        # Update the user rules file
        try:
            self._write_rules(rule.v6)
        except UFWError:
            raise
        except Exception:
            err_msg = _("Couldn't update rules file")
            UFWError(err_msg)

        # We wrote out the rules, so set reasonable string. We will change
        # this below when operating on the live firewall.
        rstr = _("Rules updated")
        if rule.v6:
            rstr = _("Rules updated (v6)")

        # Operate on the chains
        if self.is_enabled() and not self.dryrun:
            flag = ""
            if modified or self._need_reload(rule.v6) or inserted:
                rstr = ""
                if inserted:
                    rstr += _("Rule inserted")
                else:
                    rstr += _("Rule updated")
                if rule.v6:
                    rstr += " (v6)"
                if allow_reload:
                    # Reload the chain
                    try:
                        self._reload_user_rules()
                    except Exception:
                        raise
                else:
                    rstr += _(" (skipped reloading firewall)")
            elif found and rule.remove:
                flag = '-D'
                rstr = _("Rule deleted")
                # TODO: we only need to reload on delete when there are
                # overlapping proto-specific and 'proto any' rules, but for
                # now, unconditionally reload with all deletes. LP: #1933117
                if rule.v6:
                    rstr += " (v6)"
                if allow_reload:
                    # Reload the chain
                    try:
                        self._reload_user_rules()
                    except Exception:
                        raise
                    flag = ""
                else:
                    rstr += _(" (skipped reloading firewall)")
            elif not found and not modified and not rule.remove:
                flag = '-A'
                rstr = _("Rule added")

            if flag != "":
                exe = self.iptables
                chain_prefix = "ufw"
                if rule.v6:
                    exe = self.ip6tables
                    chain_prefix = "ufw6"
                    rstr += " (v6)"
                chain_suffix = "input"
                if rule.forward:
                    chain_suffix = "forward"
                elif rule.direction == "out":
                    chain_suffix = "output"
                chain = "%s-user-%s" % (chain_prefix, chain_suffix)

                # Is the firewall running?
                err_msg = _("Could not update running firewall")
                (rc, out) = cmd([exe, '-L', chain, '-n'])
                if rc != 0:
                    raise UFWError(err_msg)

                rule_str = "%s %s %s" % (flag, chain, rule.format_rule())
                pat_log = re.compile(r'(-A +)(ufw6?-user-[a-z\-]+)(.*)')
                for s in self._get_lists_from_formatted(rule_str, \
                                                        chain_prefix, \
                                                        chain_suffix):
                    (rc, out) = cmd([exe] + s)
                    if rc != 0:
                        msg(out, sys.stderr)
                        UFWError(err_msg)

                    # delete any lingering RETURN rules (needed for upgrades)
                    if flag == "-A" and pat_log.search(" ".join(s)):
                        c = pat_log.sub(r'\2', " ".join(s))
                        (rc, out) = cmd([exe, '-D', c, '-j', 'RETURN'])
                        if rc != 0:
                            debug("FAILOK: -D %s -j RETURN" % (c))

        return rstr

    def get_app_rules_from_system(self, template, v6):
        '''Return a list of UFWRules from the system based on template rule'''
        rules = []
        app_rules = []

        if v6:
            rules = self.rules6
        else:
            rules = self.rules

        norm = template.dup_rule()
        norm.set_v6(v6)
        norm.normalize()
        tupl = norm.get_app_tuple()

        for r in rules:
            tmp = r.dup_rule()
            tmp.normalize()
            tmp_tuple = tmp.get_app_tuple()
            if tmp_tuple == tupl:
                app_rules.append(tmp)

        return app_rules

    def _chain_cmd(self, chain, args, fail_ok=False):
        '''Perform command on chain'''
        exe = self.iptables
        if chain.startswith("ufw6"):
            exe = self.ip6tables
        (rc, out) = cmd([exe] + args)
        if rc != 0:
            err_msg = _("Could not perform '%s'" % (args))
            if fail_ok:
                debug("FAILOK: " + err_msg)
            else:
                raise UFWError(err_msg)

    def update_logging(self, level):
        '''Update loglevel of running firewall'''
        if self.dryrun:
            return

        # Initialize the capabilities database
        self.initcaps()

        rules_t = []
        try:
            rules_t = self._get_logging_rules(level)
        except Exception:
            raise

        # Update the user rules file
        try:
            self._write_rules(v6=False)
            self._write_rules(v6=True)
        except UFWError:
            raise
        except Exception:
            err_msg = _("Couldn't update rules file for logging")
            UFWError(err_msg)

        # Don't update the running firewall if not enabled
        if not self.is_enabled():
            return

        # make sure all the chains are here, it's redundant but helps make
        # sure the chains are in a consistent state
        err_msg = _("Could not update running firewall")
        for c in self.chains['before'] + self.chains['user'] + \
           self.chains['after'] + self.chains['misc']:
            try:
                self._chain_cmd(c, ['-L', c, '-n'])
            except Exception:
                raise UFWError(err_msg)

        # Flush all the logging chains except 'user'
        try:
            for c in self.chains['before'] + self.chains['after'] + \
               self.chains['misc']:
                self._chain_cmd(c, ['-F', c])
                self._chain_cmd(c, ['-Z', c])
        except Exception:
            raise UFWError(err_msg)

        # Add logging rules to running firewall
        for c, r, q in rules_t:
            fail_ok = False
            if len(r) > 0 and r[0] == '-D':
                fail_ok = True
            try:
                if q == 'delete_first' and len(r) > 1:
                    self._chain_cmd(c, ['-D'] + r[1:], fail_ok=True)
                self._chain_cmd(c, r, fail_ok)
            except Exception:
                raise UFWError(err_msg)

        # Rate limiting is runtime supported
        # Always delete these and re-add them so that we don't have extras
        for chain in ['ufw-user-limit', 'ufw6-user-limit']:
            if (self.caps['limit']['4'] and chain == 'ufw-user-limit') or \
               (self.caps['limit']['6'] and chain == 'ufw6-user-limit'):
                self._chain_cmd(chain, ['-D', chain] + \
                                self.ufw_user_limit_log + \
                                [self.ufw_user_limit_log_text + " "], \
                                fail_ok=True)
                if self.defaults["loglevel"] != "off":
                    self._chain_cmd(chain, ['-I', chain] + \
                                    self.ufw_user_limit_log + \
                                    [self.ufw_user_limit_log_text + " "], \
                                    fail_ok=True)

    def _get_logging_rules(self, level):
        '''Get rules for specified logging level'''
        rules_t = []

        if level not in list(self.loglevels.keys()):
            err_msg = _("Invalid log level '%s'") % (level)
            raise UFWError(err_msg)

        if level == "off":
            # when off, insert a RETURN rule at the top of user rules, thus
            # preserving the rules
            for c in self.chains['user']:
                rules_t.append([c, ['-I', c, '-j', 'RETURN'], 'delete_first'])
            return rules_t
        else:
            # when on, remove the RETURN rule at the top of user rules, thus
            # honoring the log rules
            for c in self.chains['user']:
                rules_t.append([c, ['-D', c, '-j', 'RETURN'], ''])

        limit_args = ['-m', 'limit', '--limit', '3/min', '--limit-burst', '10']

        # log levels of low and higher log blocked packets
        if self.loglevels[level] >= self.loglevels["low"]:
            # Setup the policy violation logging chains
            largs = []
            # log levels under high use limit
            if self.loglevels[level] < self.loglevels["high"]:
                largs = limit_args
            for c in self.chains['after']:
                for t in ['input', 'output', 'forward']:
                    if c.endswith(t):
                        if self._get_default_policy(t) == "reject" or \
                           self._get_default_policy(t) == "deny":
                            prefix = "[UFW BLOCK] "
                            rules_t.append([c, ['-A', c, '-j', 'LOG', \
                                                '--log-prefix', prefix] +
                                                largs, ''])
                        elif self.loglevels[level] >= self.loglevels["medium"]:
                            prefix = "[UFW ALLOW] "
                            rules_t.append([c, ['-A', c, '-j', 'LOG', \
                                                '--log-prefix', prefix] + \
                                                largs, ''])

            # Setup the miscellaneous logging chains
            largs = []
            # log levels under high use limit
            if self.loglevels[level] < self.loglevels["high"]:
                largs = limit_args

            for c in self.chains['misc']:
                if c.endswith("allow"):
                    prefix = "[UFW ALLOW] "
                elif c.endswith("deny"):
                    prefix = "[UFW BLOCK] "
                    if self.loglevels[level] < self.loglevels["medium"]:
                        # only log INVALID in medium and higher
                        rules_t.append([c, ['-I', c, '-m', 'conntrack', \
                                            '--ctstate', 'INVALID', \
                                            '-j', 'RETURN'] + largs, ''])
                    else:
                        rules_t.append([c, ['-A', c, '-m', 'conntrack', \
                                            '--ctstate', 'INVALID', \
                                            '-j', 'LOG', \
                                            '--log-prefix', \
                                            "[UFW AUDIT INVALID] "] + \
                                        largs, ''])
                rules_t.append([c, ['-A', c, '-j', 'LOG', \
                                    '--log-prefix', prefix] + largs, ''])

        # Setup the audit logging chains
        if self.loglevels[level] >= self.loglevels["medium"]:
            # loglevel full logs all packets without limit
            largs = []

            # loglevel high logs all packets with limit
            if self.loglevels[level] < self.loglevels["full"]:
                largs = limit_args

            # loglevel medium logs all new packets with limit
            if self.loglevels[level] < self.loglevels["high"]:
                largs = ['-m', 'conntrack', '--ctstate', 'NEW'] + limit_args

            prefix = "[UFW AUDIT] "
            for c in self.chains['before']:
                rules_t.append([c, ['-I', c, '-j', 'LOG', \
                                    '--log-prefix', prefix] + largs, ''])

        return rules_t

    def reset(self):
        '''Reset the firewall'''
        res = ""
        share_dir = _findpath(ufw.common.share_dir, self.rootdir)
        # First make sure we have all the original files
        allfiles = []
        for i in self.files:
            if not self.files[i].endswith('.rules'):
                continue
            allfiles.append(self.files[i])
            fn = os.path.join(share_dir, "iptables", \
                              os.path.basename(self.files[i]))
            if not os.path.isfile(fn):
                err_msg = _("Could not find '%s'. Aborting") % (fn)
                raise UFWError(err_msg)

        ext = time.strftime("%Y%m%d_%H%M%S")

        # This implementation will intentionally traceback if someone tries to
        # do something to take advantage of the race conditions here.

        # Don't do anything if the files already exist
        for i in allfiles:
            fn = "%s.%s" % (i, ext)
            if os.path.exists(fn):
                err_msg = _("'%s' already exists. Aborting") % (fn)
                raise UFWError(err_msg)

        # Move the old to the new
        for i in allfiles:
            fn = "%s.%s" % (i, ext)
            res += _("Backing up '%(old)s' to '%(new)s'\n") % (\
                     {'old': os.path.basename(i), 'new': fn})
            os.rename(i, fn)

        # Copy files into place
        for i in allfiles:
            old = "%s.%s" % (i, ext)
            shutil.copy(os.path.join(share_dir, "iptables", \
                                     os.path.basename(i)), \
                        os.path.dirname(i))
            shutil.copymode(old, i)

            try:
                statinfo = os.stat(i)
                mode = statinfo[stat.ST_MODE]
            except Exception:
                warn_msg = _("Couldn't stat '%s'") % (i)
                warn(warn_msg)
                continue

            if mode & stat.S_IWOTH:
                res += _("WARN: '%s' is world writable") % (i)
            elif mode & stat.S_IROTH:
                res += _("WARN: '%s' is world readable") % (i)

        return res
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      '''common.py: common classes for ufw'''
#
# Copyright 2008-2018 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/>.
#

import re
import socket
import ufw.util
from ufw.util import debug

programName = "ufw"
state_dir = "/lib/ufw"
share_dir = "/usr/share/ufw"
trans_dir = share_dir
config_dir = "/etc"
prefix_dir = "/usr"
iptables_dir = "/usr/sbin"
do_checks = True


class UFWError(Exception):
    '''This class represents ufw exceptions'''
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return repr(self.value)


class UFWRule:
    '''This class represents firewall rules'''
    def __init__(self, action, protocol, dport="any", dst="0.0.0.0/0",
                 sport="any", src="0.0.0.0/0", direction="in", forward=False,
                 comment=""):
        # Be sure to update dup_rule accordingly...
        self.remove = False
        self.updated = False
        self.v6 = False
        self.dst = ""
        self.src = ""
        self.dport = ""
        self.sport = ""
        self.protocol = ""
        self.multi = False
        self.dapp = ""
        self.sapp = ""
        self.action = ""
        self.position = 0
        self.logtype = ""
        self.interface_in = ""
        self.interface_out = ""
        self.direction = ""
        self.forward = forward
        self.comment = ""
        try:
            self.set_action(action)
            self.set_protocol(protocol)
            self.set_port(dport)
            self.set_port(sport, "src")
            self.set_src(src)
            self.set_dst(dst)
            self.set_direction(direction)
            self.set_comment(comment)
        except UFWError:
            raise

    def __str__(self):
        return self.format_rule()

    def _get_attrib(self):
        '''Print rule to stdout'''
        res = "'%s'" % (self)
        keys = list(self.__dict__)
        keys.sort()
        for k in keys:
            res += ", %s=%s" % (k, self.__dict__[k])
        return res

    def dup_rule(self):
        '''Return a duplicate of a rule'''
        rule = UFWRule(self.action, self.protocol)
        rule.remove = self.remove
        rule.updated = self.updated
        rule.v6 = self.v6
        rule.dst = self.dst
        rule.src = self.src
        rule.dport = self.dport
        rule.sport = self.sport
        rule.multi = self.multi
        rule.dapp = self.dapp
        rule.sapp = self.sapp
        rule.position = self.position
        rule.logtype = self.logtype
        rule.interface_in = self.interface_in
        rule.interface_out = self.interface_out
        rule.direction = self.direction
        rule.forward = self.forward
        rule.comment = self.comment

        return rule

    def format_rule(self):
        '''Format rule for later parsing'''
        rule_str = ""

        if self.interface_in != "":
            rule_str += " -i %s" % (self.interface_in)
        if self.interface_out != "":
            rule_str += " -o %s" % (self.interface_out)

        # Protocol is handled below
        if self.protocol == "any":
            rule_str += " -p all"
        else:
            rule_str += " -p " + self.protocol

            if self.multi:
                rule_str += " -m multiport"
                if self.dport != "any" and self.sport != "any":
                    rule_str += " --dports " + self.dport
                    rule_str += " -m multiport"
                    rule_str += " --sports " + self.sport
                elif self.dport != "any":
                    rule_str += " --dports " + self.dport
                elif self.sport != "any":
                    rule_str += " --sports " + self.sport

        if self.dst != "0.0.0.0/0" and self.dst != "::/0":
            rule_str += " -d " + self.dst
        if not self.multi and self.dport != "any":
            rule_str += " --dport " + self.dport
        if self.src != "0.0.0.0/0" and self.src != "::/0":
            rule_str += " -s " + self.src
        if not self.multi and self.sport != "any":
            rule_str += " --sport " + self.sport

        lstr = ""
        if self.logtype != "":
            lstr = "_" + self.logtype
        if self.action == "allow":
            rule_str += " -j ACCEPT%s" % (lstr)
        elif self.action == "reject":
            rule_str += " -j REJECT%s" % (lstr)
            if self.protocol == "tcp":
                # follow TCP's default and send RST
                rule_str += " --reject-with tcp-reset"
        elif self.action == "limit":
            # Caller needs to change this
            rule_str += " -j LIMIT%s" % (lstr)
        else:
            rule_str += " -j DROP%s" % (lstr)

        if self.dapp != "" or self.sapp != "":
            # Format the comment string, and quote it just in case
            comment = "-m comment --comment '"
            pat_space = re.compile(' ')
            if self.dapp != "":
                comment += "dapp_" + pat_space.sub('%20', self.dapp)
            if self.dapp != "" and self.sapp != "":
                comment += ","
            if self.sapp != "":
                comment += "sapp_" + pat_space.sub('%20', self.sapp)
            comment += "'"

            rule_str += " " + comment

        return rule_str.strip()

    def set_action(self, action):
        '''Sets action of the rule'''
        tmp = action.lower().split('_')
        if tmp[0] == "allow" or tmp[0] == "reject" or tmp[0] == "limit":
            self.action = tmp[0]
        else:
            self.action = "deny"

        logtype = ""
        if len(tmp) > 1:
            logtype = tmp[1]
        self.set_logtype(logtype)

    def set_port(self, port, loc="dst"):
        '''Sets port and location (destination or source) of the rule'''
        err_msg = _("Bad port '%s'") % (port)
        if port == "any":
            pass
        elif loc == "dst" and self.dapp:
            pass
        elif loc == "src" and self.sapp:
            pass
        elif re.match(r'^[,:]', port) or re.match(r'[,:]$', port):
            raise UFWError(err_msg)
        elif (port.count(',') + port.count(':')) > 14:
            # Limitation of iptables
            raise UFWError(err_msg)
        else:
            ports = port.split(',')
            if len(ports) > 1:
                self.multi = True

            tmp = ""
            for p in ports:
                if re.match(r'^\d+:\d+$', p):
                    # Port range
                    self.multi = True
                    ran = p.split(':')
                    for q in ran:
                        if int(q) < 1 or int(q) > 65535:
                            raise UFWError(err_msg)
                    if int(ran[0]) >= int(ran[1]):
                        raise UFWError(err_msg)
                elif re.match('^\d+$', p):
                    if int(p) < 1 or int(p) > 65535:
                        raise UFWError(err_msg)
                elif re.match(r'^\w[\w\-]+', p):
                    try:
                        p = socket.getservbyname(p)
                    except Exception:
                        raise UFWError(err_msg)
                else:
                    raise UFWError(err_msg)

                if tmp:
                    tmp += "," + str(p)
                else:
                    tmp = str(p)

            port = tmp

        if loc == "src":
            self.sport = str(port)
        else:
            self.dport = str(port)

    def set_protocol(self, protocol):
        '''Sets protocol of the rule'''
        if protocol in ufw.util.supported_protocols + ['any']:
            self.protocol = protocol
        else:
            err_msg = _("Unsupported protocol '%s'") % (protocol)
            raise UFWError(err_msg)

    def _fix_anywhere(self):
        '''Adjusts src and dst based on v6'''
        if self.v6:
            if self.dst and (self.dst == "any" or self.dst == "0.0.0.0/0"):
                self.dst = "::/0"
            if self.src and (self.src == "any" or self.src == "0.0.0.0/0"):
                self.src = "::/0"
        else:
            if self.dst and (self.dst == "any" or self.dst == "::/0"):
                self.dst = "0.0.0.0/0"
            if self.src and (self.src == "any" or self.src == "::/0"):
                self.src = "0.0.0.0/0"

    def set_v6(self, v6):
        '''Sets whether this is ipv6 rule, and adjusts src and dst
           accordingly.
        '''
        self.v6 = v6
        self._fix_anywhere()

    def set_src(self, addr):
        '''Sets source address of rule'''
        tmp = addr.lower()

        if tmp != "any" and not ufw.util.valid_address(tmp, "any"):
            err_msg = _("Bad source address")
            raise UFWError(err_msg)
        self.src = tmp
        self._fix_anywhere()

    def set_dst(self, addr):
        '''Sets destination address of rule'''
        tmp = addr.lower()

        if tmp != "any" and not ufw.util.valid_address(tmp, "any"):
            err_msg = _("Bad destination address")
            raise UFWError(err_msg)
        self.dst = tmp
        self._fix_anywhere()

    def set_interface(self, if_type, name):
        '''Sets an interface for rule'''
        # libxtables/xtables.c xtables_parse_interface() specifies
        # - < 16
        # - not empty
        # - doesn't contain ' '
        # - doesn't contain '/'
        #
        # net/core/dev.c from the kernel specifies:
        # - < 16
        # - not empty
        # - != '.' or '..'
        # - doesn't contain '/', ':' or whitespace
        if if_type != "in" and if_type != "out":
            err_msg = _("Bad interface type")
            raise UFWError(err_msg)

        # Separate a few of the invalid checks out so we can give a nice error
        if '!' in str(name):
            err_msg = _("Bad interface name: reserved character: '!'")
            raise UFWError(err_msg)

        if ':' in str(name):
            err_msg = _("Bad interface name: can't use interface aliases")
            raise UFWError(err_msg)

        if str(name) == "." or str(name) == "..":
            err_msg = _("Bad interface name: can't use '.' or '..'")
            raise UFWError(err_msg)

        if (len(str(name)) == 0):
            err_msg = _("Bad interface name: interface name is empty")
            raise UFWError(err_msg)

        if (len(str(name)) > 15):
            err_msg = _("Bad interface name: interface name too long")
            raise UFWError(err_msg)

        # We are going to limit this even further to avoid shell meta
        if not re.match(r'^[a-zA-Z0-9_\-\.\+,=%@]+$', str(name)):
            err_msg = _("Bad interface name")
            raise UFWError(err_msg)

        if if_type == "in":
            self.interface_in = name
        else:
            self.interface_out = name

    def set_position(self, num):
        '''Sets the position of the rule'''
        # -1 prepend
        #  0 append
        # >0 insert
        if str(num) != "-1" and not re.match(r'^[0-9]+', str(num)):
            err_msg = _("Insert position '%s' is not a valid position") % (num)
            raise UFWError(err_msg)
        self.position = int(num)

    def set_logtype(self, logtype):
        '''Sets logtype of the rule'''
        if logtype.lower() == "log" or logtype.lower() == "log-all" or \
           logtype == "":
            self.logtype = logtype.lower()
        else:
            err_msg = _("Invalid log type '%s'") % (logtype)
            raise UFWError(err_msg)

    def set_direction(self, direction):
        '''Sets direction of the rule'''
        if direction == "in" or direction == "out":
            self.direction = direction
        else:
            err_msg = _("Unsupported direction '%s'") % (direction)
            raise UFWError(err_msg)

    def get_comment(self):
        '''Get decoded comment of the rule'''
        return ufw.util.hex_decode(self.comment)

    def set_comment(self, comment):
        '''Sets comment of the rule'''
        self.comment = comment

    def normalize(self):
        '''Normalize src and dst to standard form'''
        changed = False
        if self.src:
            try:
                (self.src, changed) = ufw.util.normalize_address(self.src, \
                                                                 self.v6)
            except Exception:
                err_msg = _("Could not normalize source address")
                raise UFWError(err_msg)

            if changed:
                self.updated = changed

        if self.dst:
            try:
                (self.dst, changed) = ufw.util.normalize_address(self.dst, \
                                                                   self.v6)
            except Exception:
                err_msg = _("Could not normalize destination address")
                raise UFWError(err_msg)

            if changed:
                self.updated = changed

        if self.dport:
            ports = self.dport.split(',')
            ufw.util.human_sort(ports)
            self.dport = ','.join(ports)

        if self.sport:
            ports = self.sport.split(',')
            ufw.util.human_sort(ports)
            self.sport = ','.join(ports)

    def match(x, y):
        '''Check if rules match
        Return codes:
          0  match
          1  no match
         -1  match all but action, log-type and/or comment
         -2  match all but comment
        '''
        if not x or not y:
            raise ValueError()

        dbg_msg = "No match '%s' '%s'" % (x, y)
        if x.dport != y.dport:
            debug(dbg_msg)
            return 1
        if x.sport != y.sport:
            debug(dbg_msg)
            return 1
        if x.protocol != y.protocol:
            debug(dbg_msg)
            return 1
        if x.src != y.src:
            debug(dbg_msg)
            return 1
        if x.dst != y.dst:
            debug(dbg_msg)
            return 1
        if x.v6 != y.v6:
            debug(dbg_msg)
            return 1
        if x.dapp != y.dapp:
            debug(dbg_msg)
            return 1
        if x.sapp != y.sapp:
            debug(dbg_msg)
            return 1
        if x.interface_in != y.interface_in:
            debug(dbg_msg)
            return 1
        if x.interface_out != y.interface_out:
            debug(dbg_msg)
            return 1
        if x.direction != y.direction:
            debug(dbg_msg)
            return 1
        if x.forward != y.forward:
            debug(dbg_msg)
            return 1
        if x.action == y.action and x.logtype == y.logtype and \
                x.comment == y.comment:
            dbg_msg = _("Found exact match")
            debug(dbg_msg)
            return 0
        if x.action == y.action and x.logtype == y.logtype and \
                x.comment != y.comment:
            dbg_msg = _("Found exact match, excepting comment")
            debug(dbg_msg)
            return -2

        dbg_msg = _("Found non-action/non-logtype/comment match " \
                    "(%(xa)s/%(ya)s/'%(xc)s' %(xl)s/%(yl)s/'%(yc)s')") % \
                    ({'xa': x.action, 'ya': y.action,
                      'xl': x.logtype, 'yl': y.logtype,
                      'xc': x.comment, 'yc': y.comment})
        debug(dbg_msg)
        return -1

    def fuzzy_dst_match(x, y):
        '''This will match if x is more specific than y. Eg, for protocol if x
           is tcp and y is all or for address if y is a network and x is a
           subset of y (where x is either an address or network). Returns:

            0  match
            1  no match
           -1  fuzzy match

           This is a fuzzy destination match, so source ports or addresses
           are not considered, and (currently) only incoming.
        '''
        def _match_ports(test_p, to_match):
            '''Returns True if p is an exact match or within a multi rule'''
            if ',' in test_p or ':' in test_p:
                if test_p == to_match:
                    return True
                return False

            for port in to_match.split(','):
                if test_p == port:
                    return True
                if ':' in port:
                    (low, high) = port.split(':')
                    if int(test_p) >= int(low) and int(test_p) <= int(high):
                        return True

            return False

        if not x or not y:
            raise ValueError()

        # Ok if exact match
        if x.match(y) == 0:
            return 0

        dbg_msg = "No fuzzy match '%s (v6=%s)' '%s (v6=%s)'" % \
                   (x, x.v6, y, y.v6)

        # Direction must match
        if y.direction != "in":
            debug("(direction) " + dbg_msg + " (not incoming)")
            return 1

        # forward must match
        if y.forward != x.forward:
            debug(dbg_msg + " (forward does not match)")
            return 1

        # Protocols must match or y 'any'
        if x.protocol != y.protocol and y.protocol != "any":
            debug("(protocol) " + dbg_msg)
            return 1

        # Destination ports must match or y 'any'
        if y.dport != "any" and not _match_ports(x.dport, y.dport):
            debug("(dport) " + dbg_msg)
            return 1

        if y.interface_in == "":
            # If destination interface is not specified, destination addresses
            # must match or x must be contained in y

            if x.interface_in == "" and x._is_anywhere(x.dst):
                # if x and y interfaces are not specified, and x.dst is
                # anywhere then ok
                pass
            elif x.dst != y.dst and '/' not in y.dst:
                debug("(dst) " + dbg_msg)
                return 1
            elif x.dst != y.dst and '/' in y.dst and x.v6 == y.v6 and \
               not ufw.util.in_network(x.dst, y.dst, x.v6):
                debug("(dst) " + dbg_msg + " ('%s' not in network '%s')" % \
                      (x.dst, y.dst))
                return 1
        else:
            # If destination interface is specified, then:
            #  if specified, both interfaces must match or
            #  the IP of the interface must match the IP of y or
            #  the IP of the interface must be contained in y
            if x.interface_in != "" and x.interface_in != y.interface_in:
                debug("(interface) " + dbg_msg + " (%s != %s)" % \
                      (x.interface_in, y.interface_in))
                return 1

            try:
                if_ip = ufw.util.get_ip_from_if(y.interface_in, x.v6)
            except IOError:
                debug("(interface) " + dbg_msg + " %s does not exist" % \
                      (y.interface_in))
                return 1

            if y.dst != if_ip and '/' not in y.dst:
                debug("(interface) " + dbg_msg + " (%s != %s)" % \
                      (y.dst, if_ip))
                return 1
            elif y.dst != if_ip and '/' in y.dst and x.v6 == y.v6 and \
               not ufw.util.in_network(if_ip, y.dst, x.v6):
                debug("(interface) " + dbg_msg + \
                      " ('%s' not in network '%s')" % (if_ip, y.dst))
                return 1

        if x.v6 != y.v6:
            debug("(v6) " + dbg_msg + " (%s != %s)" % (x.dst, y.dst))
            return 1

        # if we made it here, it is a fuzzy match
        debug("(fuzzy match) '%s (v6=%s)' '%s (v6=%s)'" % (x, x.v6, y, y.v6))
        return -1

    def _is_anywhere(self, addr):
        '''Check if address is anywhere'''
        if addr == "::/0" or addr == "0.0.0.0/0":
            return True
        return False

    def get_app_tuple(self):
        '''Returns a tuple to identify an app rule. Tuple is:
             dapp dst sapp src direction_iface|direction
           or
             dport dst sapp src direction_iface|direction
           or
             dapp dst sport src direction_iface|direction

           where direction_iface is of form 'in_eth0', 'out_eth0' or
           'in_eth0 out_eth0' (ie, both interfaces used). If no interfaces are
           specified, then tuple ends with the direction instead.
        '''
        tupl = ""
        if self.dapp != "" or self.sapp != "":
            tupl = "%s %s %s %s" % (self.dapp, self.dst, self.sapp, self.src)
            if self.dapp == "":
                tupl = "%s %s %s %s" % (self.dport, self.dst, self.sapp, \
                                         self.src)
            if self.sapp == "":
                tupl = "%s %s %s %s" % (self.dapp, self.dst, self.sport, \
                                         self.src)

            # if neither interface exists, add the direction
            if self.interface_in == "" and self.interface_out == "":
                tupl += " %s" % (self.direction)
            # otherwise, add the interfaces
            else:
                if self.interface_in != "":
                    tupl += " in_%s" % (self.interface_in)
                if self.interface_out != "":
                    tupl += " out_%s" % (self.interface_out)

        return tupl

    def verify(self, rule_iptype):
        '''Verify rule'''
        # Verify protocol not specified with application rule
        if self.protocol != "any" and \
           (self.sapp != "" or self.dapp != ""):
            err_msg = _("Improper rule syntax ('%s' specified with app rule)") \
                        % (self.protocol)
            raise UFWError(err_msg)

        if self.protocol in ufw.util.ipv4_only_protocols and \
           rule_iptype == "v6":
            # Can't use protocol these protocols with v6 addresses
            err_msg = _("Invalid IPv6 address with protocol '%s'") % \
                        (self.protocol)
            raise UFWError(err_msg)

        if self.protocol in ufw.util.portless_protocols:
            if self.dport != "any" or self.sport != "any":
                err_msg = _("Invalid port with protocol '%s'") % \
                            (self.protocol)
                raise UFWError(err_msg)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              '''frontend.py: frontend interface for ufw'''
#
# Copyright 2008-2023 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/>.
#

import os
import sys
import warnings

from ufw.common import UFWError
import ufw.util
from ufw.util import error, warn, msg
from ufw.backend_iptables import UFWBackendIptables
import ufw.parser


def parse_command(argv):
    '''Parse command. Returns tuple for action, rule, ip_version and dryrun.'''
    p = ufw.parser.UFWParser()

    # Basic commands
    for i in [
        "enable",
        "disable",
        "help",
        "--help",
        "-h",
        "version",
        "--version",
        "reload",
        "reset",
    ]:
        p.register_command(ufw.parser.UFWCommandBasic(i))

    # Application commands
    for i in ['list', 'info', 'default', 'update']:
        p.register_command(ufw.parser.UFWCommandApp(i))

    # Logging commands
    for i in ['on', 'off', 'low', 'medium', 'high', 'full']:
        p.register_command(ufw.parser.UFWCommandLogging(i))

    # Default commands
    for i in ['allow', 'deny', 'reject']:
        p.register_command(ufw.parser.UFWCommandDefault(i))

    # Status commands ('status', 'status verbose', 'status numbered')
    for i in [None, 'verbose', 'numbered']:
        p.register_command(ufw.parser.UFWCommandStatus(i))

    # Show commands
    for i in ['raw', 'before-rules', 'user-rules', 'after-rules', \
              'logging-rules', 'builtins', 'listening', 'added']:
        p.register_command(ufw.parser.UFWCommandShow(i))

    # Rule commands
    rule_commands = ['allow', 'limit', 'deny', 'reject', 'insert', 'delete',
                     'prepend']
    for i in rule_commands:
        p.register_command(ufw.parser.UFWCommandRule(i))
        p.register_command(ufw.parser.UFWCommandRouteRule(i))

    # Don't require the user to have to specify 'rule' as the command. Instead
    # insert 'rule' into the arguments if this is a rule command.
    if len(argv) > 2:
        idx = 1
        if argv[idx].lower() == "--dry-run":
            idx = 2
        if argv[idx].lower() != "default" and \
           argv[idx].lower() != "route" and \
           argv[idx].lower() in rule_commands:
            argv.insert(idx, 'rule')

    if len(argv) < 2 or ("--dry-run" in argv and len(argv) < 3):
        error("not enough args", do_exit=False)  # pragma: no cover
        raise ValueError()

    try:
        pr = p.parse_command(argv[1:])
    except UFWError as e:
        error("%s" % (e.value)) # pragma: no cover
    except Exception:
        error("Invalid syntax", do_exit=False)
        raise

    return pr


def get_command_help():
    '''Print help message'''
    help_msg = _('''
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(prepend)-31s prepend %(urule)s
 %(route)-31s add route %(urule)s
 %(route-delete)-31s delete route %(urule)s
 %(route-insert)-31s insert route %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
''' % ({'progname': ufw.common.programName, \
         'command': "COMMAND", \
         'commands': "Commands", \
         'enable': "enable", \
         'disable': "disable", \
         'default': "default ARG", \
         'logging': "logging LEVEL", \
         'level': "LEVEL", \
         'allow': "allow ARGS", \
         'rule': "rule", \
         'deny': "deny ARGS", \
         'reject': "reject ARGS", \
         'limit': "limit ARGS", \
         'delete': "delete RULE|NUM", \
         'urule': "RULE", \
         'insert': "insert NUM RULE", \
         'prepend': "prepend RULE", \
         'route': "route RULE", \
         'route-delete': "route delete RULE|NUM", \
         'route-insert': "route insert NUM RULE", \
         'number': "NUM", \
         'reload': "reload", \
         'reset': "reset", \
         'status': "status", \
         'statusnum': "status numbered", \
         'rules': "RULES", \
         'statusverbose': "status verbose", \
         'show': "show ARG", \
         'version': "version", \
         'appcommands': "Application profile commands", \
         'applist': "app list", \
         'appinfo': "app info PROFILE", \
         'profile': "PROFILE", \
         'appupdate': "app update PROFILE", \
         'appdefault': "app default ARG"}))

    return (help_msg)


class UFWFrontend:
    '''UI'''
    def __init__(self, dryrun, backend_type="iptables",
                 rootdir=None, datadir=None):
        if backend_type == "iptables":
            try:
                self.backend = UFWBackendIptables(dryrun, rootdir=rootdir,
                                                  datadir=datadir)
            except Exception: # pragma: no cover
                raise
        else:
            raise UFWError("Unsupported backend type '%s'" % (backend_type))

        # Initialize input strings for translations
        self.no = _("n")
        self.yes = _("y")
        self.yes_full = _("yes")

    def set_enabled(self, enabled):
        '''Toggles ENABLED state in <config_dir>/ufw/ufw.conf and starts or
           stops running firewall.
        '''
        res = ""

        config_str = "no"
        if enabled:
            config_str = "yes"

        changed = False
        if (enabled and not self.backend.is_enabled()) or \
           (not enabled and self.backend.is_enabled()):
            changed = True

        # Update the config files when toggling enable/disable
        if changed:
            try:
                self.backend.set_default(self.backend.files['conf'], \
                                         "ENABLED", config_str)
            except UFWError as e: # pragma: no cover
                error(e.value)

        error_str = ""
        if enabled:
            try:
                self.backend.start_firewall()
            except UFWError as e: # pragma: no cover
                if changed:
                    error_str = e.value

            if error_str != "": # pragma: no cover
                # Revert config files when toggling enable/disable and
                # firewall failed to start
                try:
                    self.backend.set_default(self.backend.files['conf'], \
                                             "ENABLED", "no")
                except UFWError as e:
                    error(e.value)

                # Report the error
                error(error_str)

            res = _("Firewall is active and enabled on system startup")
        else:
            try:
                self.backend.stop_firewall()
            except UFWError as e: # pragma: no cover
                error(e.value)

            res = _("Firewall stopped and disabled on system startup")

        return res

    def set_default_policy(self, policy, direction):
        '''Sets default policy of firewall'''
        res = ""
        try:
            res = self.backend.set_default_policy(policy, direction)
            if self.backend.is_enabled():
                self.backend.stop_firewall()
                self.backend.start_firewall()
        except UFWError as e: # pragma: no cover
            error(e.value)

        return res

    def set_loglevel(self, level):
        '''Sets log level of firewall'''
        res = ""
        try:
            res = self.backend.set_loglevel(level)
        except UFWError as e: # pragma: no cover
            error(e.value)

        return res

    def get_status(self, verbose=False, show_count=False):
        '''Shows status of firewall'''
        try:
            out = self.backend.get_status(verbose, show_count)
        except UFWError as e: # pragma: no cover
            error(e.value)

        return out

    def get_show_raw(self, rules_type="raw"):
        '''Shows raw output of firewall'''
        try:
            out = self.backend.get_running_raw(rules_type)
        except UFWError as e: # pragma: no cover
            error(e.value)

        return out

    def get_show_listening(self):
        '''Shows listening services and incoming rules that might affect
           them'''
        res = ""
        try:
            d = ufw.util.parse_netstat_output(self.backend.use_ipv6())
        except Exception: # pragma: no cover
            err_msg = _("Could not get listening status")
            raise UFWError(err_msg)

        rules = self.backend.get_rules()

        protocols = list(d.keys())
        protocols.sort()
        for proto in protocols:
            if not self.backend.use_ipv6() and proto in ['tcp6', 'udp6']:
                continue # pragma: no cover
            res += "%s:\n" % (proto)
            ports = list(d[proto].keys())
            ports.sort()
            for port in ports:
                for item in d[proto][port]:
                    addr = item['laddr']
                    if not addr.startswith("127.") and \
                       not addr.startswith("::1"):
                        ifname = ""

                        res += "  %s " % port
                        if addr == "0.0.0.0" or addr == "::":
                            res += "* "
                            addr = "%s/0" % (item['laddr'])
                        else:
                            res += "%s " % addr
                            ifname = ufw.util.get_if_from_ip(addr)
                        res += "(%s)" % os.path.basename(item['exe'])

                        # Create an incoming rule since matching outgoing and
                        # forward rules doesn't make sense for this report.
                        rule = ufw.common.UFWRule(action="allow", \
                                                  protocol=proto[:3], \
                                                  dport=port, \
                                                  dst=addr,
                                                  direction="in", \
                                                  forward=False
                                                 )
                        rule.set_v6(proto.endswith("6"))

                        if ifname != "":
                            rule.set_interface("in", ifname)

                        rule.normalize()

                        # Get the non-tuple rule from get_matching(), and then
                        # add its corresponding CLI command.
                        matching = self.backend.get_matching(rule)
                        if len(matching) > 0:
                            res += "\n"
                            for i in matching:
                                if i > 0 and i - 1 < len(rules):
                                    res += "   [%2d] %s\n" % (i, \
                                        # Don't need UFWCommandRule here either
                                        ufw.parser.UFWCommandRule.get_command(\
                                          rules[i-1])
                                    )

                        res += "\n"

        if not self.backend.use_ipv6():
            ufw.util.debug("Skipping tcp6 and udp6 (IPv6 is disabled)")

        return res

    def get_show_added(self):
        '''Shows added rules to the firewall'''
        rules = self.backend.get_rules()

        out = _("Added user rules (see 'ufw status' for running firewall):")

        if len(rules) == 0:
            return out + _("\n(None)")

        added = []
        for r in self.backend.get_rules():
            if r.forward:
                rstr = "route %s" % \
                        ufw.parser.UFWCommandRouteRule.get_command(r)
            else:
                rstr = ufw.parser.UFWCommandRule.get_command(r)

            # Approximate the order the rules were added. Since rules is
            # internally rules4 + rules6, IPv6 only rules will show up after
            # other rules. In terms of rule ordering in the kernel, this is
            # an equivalent ordering.
            if rstr in added:
                continue

            added.append(rstr)
            out += "\nufw %s" % rstr

        return out

    def set_rule(self, rule, ip_version):
        '''Updates firewall with rule'''
        res = ""
        err_msg = ""
        tmp = ""
        rules = []

        if rule.dapp == "" and rule.sapp == "":
            rules.append(rule)
        else:
            tmprules = []
            try:
                if rule.remove:
                    if ip_version == "v4":
                        tmprules = self.backend.get_app_rules_from_system(
                                                                   rule, False)
                    elif ip_version == "v6":
                        tmprules = self.backend.get_app_rules_from_system(
                                                                   rule, True)
                    elif ip_version == "both":
                        tmprules = self.backend.get_app_rules_from_system(
                                                                   rule, False)
                        tmprules6 = self.backend.get_app_rules_from_system(
                                                                   rule, True)
                        # Only add rules that are different by more than v6 (we
                        # will handle 'ip_version == both' specially, below).
                        for x in tmprules:
                            for y in tmprules6:
                                prev6 = y.v6
                                y.v6 = False
                                if not x.match(y):
                                    y.v6 = prev6
                                    tmprules.append(y)
                    else:
                        err_msg = _("Invalid IP version '%s'") % (ip_version)
                        raise UFWError(err_msg)

                    # Don't process removal of non-existing application rules
                    if len(tmprules) == 0 and not self.backend.dryrun:
                        tmp = _("Could not delete non-existent rule")
                        if ip_version == "v4":
                            res = tmp
                        elif ip_version == "v6":
                            res = tmp + " (v6)"
                        elif ip_version == "both":
                            res = tmp + "\n" + tmp + " (v6)"
                        return res

                    for tmp in tmprules:
                        r = tmp.dup_rule()
                        r.remove = rule.remove
                        r.set_action(rule.action)
                        r.set_logtype(rule.logtype)
                        rules.append(r)
                else:
                    rules = self.backend.get_app_rules_from_template(rule)
                    # Reverse the order of rules for inserted or prepended
                    # rules, so they are inserted in the right order
                    if rule.position != 0:
                        rules.reverse()
            except Exception:
                raise

        count = 0
        set_error = False
        pos_err_msg = _("Invalid position '")
        num_v4 = self.backend.get_rules_count(False)
        num_v6 = self.backend.get_rules_count(True)
        for i, r in enumerate(rules):
            count = i
            if r.position > num_v4 + num_v6:
                pos_err_msg += str(r.position) + "'"
                raise UFWError(pos_err_msg)
            try:
                if self.backend.use_ipv6():
                    if ip_version == "v4":
                        if r.position == -1:  # prepend
                            begin = 0 if count == 0 and num_v4 == 0 else 1
                            r.set_position(begin)
                        elif r.position > num_v4:
                            pos_err_msg += str(r.position) + "'"
                            raise UFWError(pos_err_msg)
                        r.set_v6(False)
                        tmp = self.backend.set_rule(r)
                    elif ip_version == "v6":
                        if r.position == -1:  # prepend
                            begin = 0 if count == 0 and num_v6 == 0 else 1
                            r.set_position(begin)
                        elif r.position > num_v4:
                            r.set_position(r.position - num_v4)
                        elif r.position != 0 and r.position <= num_v4:
                            pos_err_msg += str(r.position) + "'"
                            raise UFWError(pos_err_msg)
                        r.set_v6(True)
                        tmp = self.backend.set_rule(r)
                    elif ip_version == "both":
                        user_pos = r.position # user specified position
                        r.set_v6(False)
                        if user_pos == -1:  # prepend
                            begin = 0 if count == 0 and num_v4 == 0 else 1
                            r.set_position(begin)
                        elif not r.remove and user_pos > num_v4:
                            # The user specified a v6 rule, so try to find a
                            # match in the v4 rules and use its position.
                            p = self.backend.find_other_position( \
                                user_pos - num_v4 + count, True)
                            if p > 0:
                                r.set_position(p)
                            else:
                                # If not found, then add the rule
                                r.set_position(0)
                        tmp = self.backend.set_rule(r)

                        # We need to readjust the position since the number
                        # of ipv4 rules increased
                        if not r.remove and user_pos > 0:
                            num_v4 = self.backend.get_rules_count(False)
                            r.set_position(user_pos + 1)

                        r.set_v6(True)
                        if user_pos == -1:  # prepend
                            begin = 0 if count == 0 and num_v6 == 0 else 1
                            r.set_position(begin)
                        elif not r.remove and r.position > 0 and \
                           r.position <= num_v4:
                            # The user specified a v4 rule, so try to find a
                            # match in the v6 rules and use its position.
                            p = self.backend.find_other_position(r.position, \
                                                                 False)
                            if p > 0:
                                # Subtract count since the list is reversed
                                r.set_position(p - count)
                            else:
                                # If not found, then add the rule
                                r.set_position(0)
                        if tmp != "":
                            tmp += "\n"

                        # Readjust position to send to set_rule
                        if not r.remove and r.position > num_v4 and \
                           user_pos != -1:
                            r.set_position(r.position - num_v4)

                        tmp += self.backend.set_rule(r)
                    else:
                        err_msg = _("Invalid IP version '%s'") % (ip_version)
                        raise UFWError(err_msg)
                else:
                    if r.position == -1:  # prepend
                        begin = 0 if count == 0 and num_v4 == 0 else 1
                        r.set_position(begin)
                    if ip_version == "v4" or ip_version == "both":
                        r.set_v6(False)
                        tmp = self.backend.set_rule(r)
                    elif ip_version == "v6":
                        err_msg = _("IPv6 support not enabled")
                        raise UFWError(err_msg)
                    else:
                        err_msg = _("Invalid IP version '%s'") % (ip_version)
                        raise UFWError(err_msg)
            except UFWError as e:
                err_msg = e.value
                set_error = True
                break

            if r.updated:
                warn_msg = _("Rule changed after normalization")
                warnings.warn(warn_msg)

        if not set_error:
            # Just return the last result if no error
            res += tmp
        elif len(rules) == 1:
            # If no error, and just one rule, error out
            error(err_msg) # pragma: no cover
        else:
            # If error and more than one rule, delete the successfully added
            # rules in reverse order
            undo_error = False
            indexes = list(range(count+1))
            indexes.reverse()
            for j in indexes:
                if count > 0 and rules[j]:
                    backout_rule = rules[j].dup_rule()
                    backout_rule.remove = True
                    try:
                        self.set_rule(backout_rule, ip_version)
                    except Exception:
                        # Don't fail, so we can try to backout more
                        undo_error = True
                        warn_msg = _("Could not back out rule '%s'") % \
                                     r.format_rule()
                        warn(warn_msg)

            err_msg += _("\nError applying application rules.")
            if undo_error:
                err_msg += _(" Some rules could not be unapplied.")
            else:
                err_msg += _(" Attempted rules successfully unapplied.")

            raise UFWError(err_msg)

        return res

    def delete_rule(self, number, force=False):
        '''Delete rule'''
        try:
            n = int(number)
        except Exception:
            err_msg = _("Could not find rule '%s'") % number
            raise UFWError(err_msg)

        rules = self.backend.get_rules()
        if n <= 0 or n > len(rules):
            err_msg = _("Could not find rule '%d'") % n
            raise UFWError(err_msg)

        rule = self.backend.get_rule_by_number(n)
        if not rule:
            err_msg = _("Could not find rule '%d'") % n
            raise UFWError(err_msg)

        rule.remove = True

        ip_version = "v4"
        if rule.v6:
            ip_version = "v6"

        proceed = True
        if not force:
            if rule.forward:
                rstr = "route %s" % \
                        ufw.parser.UFWCommandRouteRule.get_command(rule)
            else:
                rstr = ufw.parser.UFWCommandRule.get_command(rule)
            prompt = _("Deleting:\n %(rule)s\nProceed with operation " \
                       "(%(yes)s|%(no)s)? ") % ({'rule': rstr, \
                                                 'yes': self.yes, \
                                                 'no': self.no})
            msg(prompt, output=sys.stdout, newline=False)
            ans = sys.stdin.readline().lower().strip()
            if ans != "y" and ans != self.yes.lower() and \
               ans != self.yes_full.lower():
                proceed = False

        res = ""
        if proceed:
            res = self.set_rule(rule, ip_version)
        else:
            res = _("Aborted")

        return res

    def do_action(self, action, rule, ip_version, force=False):
        '''Perform action on rule. action, rule and ip_version are usually
           based on return values from parse_command().
        '''
        res = ""
        if action.startswith("logging-on"):
            tmp = action.split('_')
            if len(tmp) > 1:
                res = self.set_loglevel(tmp[1])
            else:
                res = self.set_loglevel("on")
        elif action == "logging-off":
            res = self.set_loglevel("off")
        elif action.startswith("default-"):
            err_msg = _("Unsupported default policy")
            tmp = action.split('-')
            if len(tmp) != 3:
                raise UFWError(err_msg)
            res = self.set_default_policy(tmp[1], tmp[2])
        elif action == "reset":
            res = self.reset(force)
        elif action == "status":
            res = self.get_status()
        elif action == "status-verbose":
            res = self.get_status(True)
        elif action.startswith("show"):
            tmp = action.split('-')[1]
            if tmp == "listening":
                res = self.get_show_listening()
            elif tmp == "added":
                res = self.get_show_added()
            else:
                res = self.get_show_raw(tmp)
        elif action == "status-numbered":
            res = self.get_status(False, True)
        elif action == "enable":
            res = self.set_enabled(True)
        elif action == "disable":
            res = self.set_enabled(False)
        elif action == "reload":
            if self.backend.is_enabled():
                self.set_enabled(False)
                self.set_enabled(True)
                res = _("Firewall reloaded")
            else:
                res = _("Firewall not enabled (skipping reload)")
        elif action.startswith("delete-"):
            res = self.delete_rule(action.split('-')[1], force)
        elif action == "allow" or action == "deny" or action == "reject" or \
             action == "limit":
            # allow case insensitive matches for application rules
            if rule.dapp != "":
                try:
                    tmp = self.backend.find_application_name(rule.dapp)
                    if tmp != rule.dapp:
                        rule.dapp = tmp
                        rule.set_port(tmp, "dst")
                except UFWError as e:
                    # allow for the profile being deleted (LP: #407810)
                    if not rule.remove: # pragma: no cover
                        error(e.value)
                    if not ufw.applications.valid_profile_name(rule.dapp):
                        err_msg = _("Invalid profile name")
                        raise UFWError(err_msg)

            if rule.sapp != "":
                try:
                    tmp = self.backend.find_application_name(rule.sapp)
                    if tmp != rule.sapp:
                        rule.sapp = tmp
                        rule.set_port(tmp, "dst")
                except UFWError as e:
                    # allow for the profile being deleted (LP: #407810)
                    if not rule.remove: # pragma: no cover
                        error(e.value)
                    if not ufw.applications.valid_profile_name(rule.sapp):
                        err_msg = _("Invalid profile name")
                        raise UFWError(err_msg)

            res = self.set_rule(rule, ip_version)
        else:
            err_msg = _("Unsupported action '%s'") % (action)
            raise UFWError(err_msg)

        return res

    def set_default_application_policy(self, policy):
        '''Sets default application policy of firewall'''
        res = ""
        try:
            res = self.backend.set_default_application_policy(policy)
        except UFWError as e: # pragma: no cover
            error(e.value)

        return res

    def get_application_list(self):
        '''Display list of known application profiles'''
        names = list(self.backend.profiles.keys())
        names.sort()
        rstr = _("Available applications:")
        for n in names:
            rstr += "\n  %s" % (n)
        return rstr

    def get_application_info(self, pname):
        '''Display information on profile'''
        names = []
        if pname == "all":
            names = list(self.backend.profiles.keys())
            names.sort()
        else:
            if not ufw.applications.valid_profile_name(pname):
                err_msg = _("Invalid profile name")
                raise UFWError(err_msg)
            names.append(pname)

        rstr = ""
        for name in names:
            if name not in self.backend.profiles or \
               not self.backend.profiles[name]:
                err_msg = _("Could not find profile '%s'") % (name)
                raise UFWError(err_msg)

            if not ufw.applications.verify_profile(name, \
               self.backend.profiles[name]):
                err_msg = _("Invalid profile")
                raise UFWError(err_msg)

            rstr += _("Profile: %s\n") % (name)
            rstr += _("Title: %s\n") % (ufw.applications.get_title(\
                                        self.backend.profiles[name]))

            rstr += _("Description: %s\n\n") % \
                                            (ufw.applications.get_description(\
                                             self.backend.profiles[name]))

            ports = ufw.applications.get_ports(self.backend.profiles[name])
            if len(ports) > 1 or ',' in ports[0]:
                rstr += _("Ports:")
            else:
                rstr += _("Port:")

            for p in ports:
                rstr += "\n  %s" % (p)

            if name != names[len(names)-1]:
                rstr += "\n\n--\n\n"

        return ufw.util.wrap_text(rstr)

    def application_update(self, profile):
        '''Refresh application profile'''
        rstr = ""
        allow_reload = True
        trigger_reload = False

        try: # pragma: no cover
            if self.backend.do_checks and ufw.util.under_ssh():
                # Don't reload the firewall if running under ssh
                allow_reload = False
        except Exception: # pragma: no cover
            # If for some reason we get an exception trying to find the parent
            # pid, err on the side of caution and don't automatically reload
            # the firewall. LP: #424528
            allow_reload = False

        if profile == "all":
            profiles = list(self.backend.profiles.keys())
            profiles.sort()
            for p in profiles:
                (tmp, found) = self.backend.update_app_rule(p)
                if found:
                    if tmp != "":
                        tmp += "\n"
                    rstr += tmp
                    trigger_reload = found
        else:
            (rstr, trigger_reload) = self.backend.update_app_rule(profile)
            if rstr != "":
                rstr += "\n"

        if trigger_reload and self.backend.is_enabled():
            if allow_reload:
                try:
                    self.backend._reload_user_rules()
                except Exception:
                    raise
                rstr += _("Firewall reloaded")
            else:
                rstr += _("Skipped reloading firewall")

        return rstr

    def application_add(self, profile):
        '''Refresh application profile'''
        rstr = ""
        policy = ""

        if profile == "all":
            err_msg = _("Cannot specify 'all' with '--add-new'")
            raise UFWError(err_msg)

        default = self.backend.defaults['default_application_policy']
        if default == "skip":
            ufw.util.debug("Policy is '%s', not adding profile '%s'" % \
                           (policy, profile))
            return rstr
        elif default == "accept":
            policy = "allow"
        elif default == "drop":
            policy = "deny"
        elif default == "reject":
            policy = "reject"
        else:
            err_msg = _("Unknown policy '%s'") % (default)
            raise UFWError(err_msg)

        args = [ 'ufw' ]
        if self.backend.dryrun:
            args.append("--dry-run")

        args += [ policy, profile ]
        try:
            pr = parse_command(args)
        except Exception: # pragma: no cover
            raise

        if 'rule' in pr.data:
            rstr = self.do_action(pr.action, pr.data['rule'], \
                                  pr.data['iptype'])
        else:
            rstr = self.do_action(pr.action, "", "")

        return rstr

    def do_application_action(self, action, profile):
        '''Perform action on profile. action and profile are usually based on
           return values from parse_command().
        '''
        res = ""
        if action == "default-allow":
            res = self.set_default_application_policy("allow")
        elif action == "default-deny":
            res = self.set_default_application_policy("deny")
        elif action == "default-reject":
            res = self.set_default_application_policy("reject")
        elif action == "default-skip":
            res = self.set_default_application_policy("skip")
        elif action == "list":
            res = self.get_application_list()
        elif action == "info":
            res = self.get_application_info(profile)
        elif action == "update" or action == "update-with-new":
            str1 = self.application_update(profile)
            str2 = ""
            if action == "update-with-new":
                str2 = self.application_add(profile)

            if str1 != "" and str2 != "":
                str1 += "\n"
            res = str1 + str2
        else:
            err_msg = _("Unsupported action '%s'") % (action)
            raise UFWError(err_msg)

        return res

    def continue_under_ssh(self):
        '''If running under ssh, prompt the user for confirmation'''
        proceed = True
        if self.backend.do_checks and ufw.util.under_ssh(): # pragma: no cover
            prompt = _("Command may disrupt existing ssh connections. " \
                       "Proceed with operation (%(yes)s|%(no)s)? ") % \
                       ({'yes': self.yes, 'no': self.no})
            msg(prompt, output=sys.stdout, newline=False)
            ans = sys.stdin.readline().lower().strip()
            if ans != "y" and ans != self.yes and ans != self.yes_full:
                proceed = False

        return proceed

    def reset(self, force=False):
        '''Reset the firewall'''
        res = ""
        prompt = _("Resetting all rules to installed defaults. Proceed with " \
                   "operation (%(yes)s|%(no)s)? ") % \
                   ({'yes': self.yes, 'no': self.no})
        if self.backend.do_checks and ufw.util.under_ssh():
            prompt = _("Resetting all rules to installed defaults. This may " \
                       "disrupt existing ssh connections. Proceed with " \
                       "operation (%(yes)s|%(no)s)? ") % \
                       ({'yes': self.yes, 'no': self.no})

        if self.backend.do_checks and not force: # pragma: no cover
            msg(ufw.util.wrap_text(prompt), output=sys.stdout, newline=False)
            ans = sys.stdin.readline().lower().strip()
            if ans != "y" and ans != self.yes and ans != self.yes_full:
                res = _("Aborted")
                return res

        if self.backend.is_enabled():
            res += self.set_enabled(False)
        res = self.backend.reset()

        return res
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   #
# parser.py: parser class for ufw
#
# Copyright 2009-2018 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/>.
#
#
# Adding New Commands
#
# 1. Create a new UFWCommandFoo object that implements UFWCommand
# 2. Create UFWCommandFoo.parse() to return a UFWParserResponse object
# 3. Create UFWCommandFoo.help() to display help for this command
# 4. Register this command with the parser using:
#    parser.register_command(UFWCommandFoo('foo'))
#
#
# Extending Existing Commands
#
# 1. Register the new command with an existing UFWCommand via
#    register_command(). Eg
#    parser.register_command(UFWCommandNewcommand('new_command'))
# 2. Update UFWCommandExisting.parse() for new_command
# 3. Update UFWCommandExisting.help() for new_command
#

import re
import ufw.util
import ufw.applications
from ufw.common import UFWError
from ufw.util import debug


class UFWCommand:
    '''Generic class for parser commands.'''
    def __init__(self, type, command):
        self.command = command
        self.types = []
        if type not in self.types:
            self.types.append(type)
        self.type = type

    def parse(self, argv):
        if len(argv) < 1:
            raise ValueError()

        r = UFWParserResponse(argv[0].lower())

        return r

    def help(self, args):
        raise UFWError("UFWCommand.help: need to override")


class UFWCommandRule(UFWCommand):
    '''Class for parsing ufw rule commands'''
    def __init__(self, command):
        type = 'rule'
        UFWCommand.__init__(self, type, command)

    def parse(self, argv):
        action = ""
        rule = ""
        type = ""
        from_type = "any"
        to_type = "any"
        from_service = ""
        to_service = ""
        insert_pos = ""
        logtype = ""
        remove = False

        if len(argv) > 0 and argv[0].lower() == "rule":
            argv.remove(argv[0])

        # TODO: break this out
        if len(argv) > 0:
            if argv[0].lower() == "delete" and len(argv) > 1:
                remove = True
                argv.remove(argv[0])
                rule_num = None
                try:
                    rule_num = int(argv[0])
                except Exception:
                    action = argv[0]

                # return quickly if deleting by rule number
                if rule_num is not None:
                    r = UFWParserResponse('delete-%d' % rule_num)
                    return r

            elif argv[0].lower() == "insert":
                if len(argv) < 4:
                    raise ValueError()
                insert_pos = argv[1]

                # Using position '0' appends the rule while '-1' prepends,
                # which is potentially confusing for the end user
                if insert_pos == "0" or insert_pos == "-1":
                    err_msg = _("Cannot insert rule at position '%s'") % \
                                (insert_pos)
                    raise UFWError(err_msg)

                # strip out 'insert NUM' and parse as normal
                del argv[1]
                del argv[0]

            elif argv[0].lower() == "prepend":
                insert_pos = -1
                del argv[0]

            action = argv[0]

        if action != "allow" and action != "deny" and action != "reject" and \
           action != "limit":
            raise ValueError()

        nargs = len(argv)
        if nargs < 2:
            raise ValueError()

        # set/strip
        rule_direction = "in"
        if nargs > 1 and (argv[1].lower() == "in" or \
                          argv[1].lower() == "out"):
            rule_direction = argv[1].lower()

        # strip out direction if not an interface rule
        if nargs > 2 and argv[2] != "on" and (argv[1].lower() == "in" or \
                                              argv[1].lower() == "out"):
            rule_direction = argv[1].lower()
            del argv[1]
            nargs = len(argv)

        # strip out 'on' as in 'allow in on eth0 ...'
        has_interface = False
        if nargs > 1 and (argv.count('in') > 0 or argv.count('out') > 0):
            err_msg = _("Invalid interface clause")

            if argv[1].lower() != "in" and argv[1].lower() != "out":
                raise UFWError(err_msg)
            if nargs < 3 or argv[2].lower() != "on":
                raise UFWError(err_msg)

            del argv[2]
            nargs = len(argv)
            has_interface = True

        log_idx = 0
        if has_interface and nargs > 3 and (argv[3].lower() == "log" or \
                                            argv[3].lower() == 'log-all'):
            log_idx = 3
        elif nargs > 2 and (argv[1].lower() == "log" or \
                           argv[1].lower() == 'log-all'):
            log_idx = 1

        if log_idx > 0:
            logtype = argv[log_idx].lower()
            # strip out 'log' or 'log-all' and parse as normal
            del argv[log_idx]
            nargs = len(argv)

        if "log" in argv:
            err_msg = _("Option 'log' not allowed here")
            raise UFWError(err_msg)

        if "log-all" in argv:
            err_msg = _("Option 'log-all' not allowed here")
            raise UFWError(err_msg)

        comment = ""
        if 'comment' in argv:
            comment_idx = argv.index("comment")
            if comment_idx == len(argv) - 1:
                err_msg = _("Option 'comment' missing required argument")
                raise UFWError(err_msg)
            comment = argv[comment_idx+1]
            # TODO: properly support "'" in the comment string. See r949 for
            # details
            if "'" in comment:
                err_msg = _("Comment may not contain \"'\"")
                raise ValueError(err_msg)

            del argv[comment_idx+1]
            del argv[comment_idx]
            nargs = len(argv)

        if nargs < 2 or nargs > 13:
            raise ValueError()

        rule_action = action
        if logtype != "":
            rule_action += "_" + logtype
        rule = ufw.common.UFWRule(rule_action, "any", "any", \
                                  direction=rule_direction,
                                  comment=ufw.util.hex_encode(comment))
        if remove:
            rule.remove = remove
        elif insert_pos != "":
            try:
                rule.set_position(insert_pos)
            except Exception:
                raise
        if nargs == 2:
            # Short form where only app or port/proto is given
            if ufw.applications.valid_profile_name(argv[1]):
                # Check if name collision with /etc/services. If so, use
                # /etc/services instead of application profile
                try:
                    ufw.util.get_services_proto(argv[1])
                except Exception:
                    type = "both"
                    rule.dapp = argv[1]
                    rule.set_port(argv[1], "dst")
            if rule.dapp == "":
                try:
                    (port, proto) = ufw.util.parse_port_proto(argv[1])
                except ValueError as e:
                    raise UFWError(e)

                if not re.match('^\d([0-9,:]*\d+)*$', port):
                    if ',' in port or ':' in port:
                        err_msg = _("Port ranges must be numeric")
                        raise UFWError(err_msg)
                    to_service = port

                try:
                    rule.set_protocol(proto)
                    rule.set_port(port, "dst")
                    type = "both"
                except UFWError:
                    err_msg = _("Bad port")
                    raise UFWError(err_msg)
        elif (nargs + 1) % 2 != 0:
            err_msg = _("Wrong number of arguments")
            raise UFWError(err_msg)
        elif 'from' not in argv and 'to' not in argv and 'in' not in argv and \
             'out' not in argv:
            err_msg = _("Need 'to' or 'from' clause")
            raise UFWError(err_msg)
        else:
            # Full form with PF-style syntax
            keys = [ 'proto', 'from', 'to', 'port', 'app', 'in', 'out' ]

            # quick check
            if argv.count("to") > 1 or \
               argv.count("from") > 1 or \
               argv.count("proto") > 1 or \
               argv.count("port") > 2 or \
               argv.count("in") > 1 or \
               argv.count("out") > 1 or \
               argv.count("app") > 2 or \
               argv.count("app") > 0 and argv.count("proto") > 0:
                err_msg = _("Improper rule syntax")
                raise UFWError(err_msg)

            i = 0
            loc = ""
            for arg in argv:
                if i % 2 != 0 and argv[i] not in keys:
                    err_msg = _("Invalid token '%s'") % (argv[i])
                    raise UFWError(err_msg)
                if arg == "proto":
                    if i+1 < nargs:
                        try:
                            rule.set_protocol(argv[i+1])
                        except Exception:
                            raise
                    else: # pragma: no cover
                        # This can't normally be reached because of nargs
                        # checks above, but leave it here in case our parsing
                        # changes
                        err_msg = _("Invalid 'proto' clause")
                        raise UFWError(err_msg)
                elif arg == "in" or arg == "out":
                    if i+1 < nargs:
                        try:
                            if arg == "in":
                                rule.set_interface("in", argv[i+1])
                            elif arg == "out":
                                rule.set_interface("out", argv[i+1])
                        except Exception:
                            raise
                    else: # pragma: no cover
                        # This can't normally be reached because of nargs
                        # checks above, but leave it here in case our parsing
                        # changes
                        err_msg = _("Invalid '%s' clause") % (arg)
                        raise UFWError(err_msg)
                elif arg == "from":
                    if i+1 < nargs:
                        try:
                            faddr = argv[i+1].lower()
                            if faddr == "any":
                                faddr = "0.0.0.0/0"
                                from_type = "any"
                            else:
                                if ufw.util.valid_address(faddr, "6"):
                                    from_type = "v6"
                                else:
                                    from_type = "v4"
                            rule.set_src(faddr)
                        except Exception:
                            raise
                        loc = "src"
                    else: # pragma: no cover
                        # This can't normally be reached because of nargs
                        # checks above, but leave it here in case our parsing
                        # changes
                        err_msg = _("Invalid 'from' clause")
                        raise UFWError(err_msg)
                elif arg == "to":
                    if i+1 < nargs:
                        try:
                            saddr = argv[i+1].lower()
                            if saddr == "any":
                                saddr = "0.0.0.0/0"
                                to_type = "any"
                            else:
                                if ufw.util.valid_address(saddr, "6"):
                                    to_type = "v6"
                                else:
                                    to_type = "v4"
                            rule.set_dst(saddr)
                        except Exception:
                            raise
                        loc = "dst"
                    else: # pragma: no cover
                        # This can't normally be reached because of nargs
                        # checks above, but leave it here in case our parsing
                        # changes
                        err_msg = _("Invalid 'to' clause")
                        raise UFWError(err_msg)
                elif arg == "port" or arg == "app":
                    if i+1 < nargs:
                        if loc == "":
                            err_msg = _("Need 'from' or 'to' with '%s'") % \
                                        (arg)
                            raise UFWError(err_msg)

                        tmp = argv[i+1]
                        if arg == "app":
                            if loc == "src":
                                rule.sapp = tmp
                            else:
                                rule.dapp = tmp
                        elif not re.match('^\d([0-9,:]*\d+)*$', tmp):
                            if ',' in tmp or ':' in tmp:
                                err_msg = _("Port ranges must be numeric")
                                raise UFWError(err_msg)

                            if loc == "src":
                                from_service = tmp
                            else:
                                to_service = tmp
                        try:
                            rule.set_port(tmp, loc)
                        except Exception:
                            raise
                    else: # pragma: no cover
                        # This can't normally be reached because of nargs
                        # checks above, but leave it here in case our parsing
                        # changes
                        err_msg = _("Invalid 'port' clause")
                        raise UFWError(err_msg)
                i += 1

            # Figure out the type of rule (IPv4, IPv6, or both) this is
            if from_type == "any" and to_type == "any":
                type = "both"
            elif from_type != "any" and to_type != "any" and \
                 from_type != to_type:
                err_msg = _("Mixed IP versions for 'from' and 'to'")
                raise UFWError(err_msg)
            elif from_type != "any":
                type = from_type
            elif to_type != "any":
                type = to_type

        # Adjust protocol
        if to_service != "" or from_service != "":
            proto = ""
            if to_service != "":
                try:
                    proto = ufw.util.get_services_proto(to_service)
                except Exception: # pragma: no cover
                    # This can't normally be reached because of set_port()
                    # checks above, but leave it here in case our parsing
                    # changes
                    err_msg = _("Could not find protocol")
                    raise UFWError(err_msg)
            if from_service != "":
                if proto == "any" or proto == "":
                    try:
                        proto = ufw.util.get_services_proto(from_service)
                    except Exception: # pragma: no cover
                        # This can't normally be reached because of set_port()
                        # checks above, but leave it here in case our parsing
                        # changes
                        err_msg = _("Could not find protocol")
                        raise UFWError(err_msg)
                else:
                    try:
                        tmp = ufw.util.get_services_proto(from_service)
                    except Exception: # pragma: no cover
                        # This can't normally be reached because of set_port()
                        # checks above, but leave it here in case our parsing
                        # changes
                        err_msg = _("Could not find protocol")
                        raise UFWError(err_msg)
                    if proto == "any" or proto == tmp:
                        proto = tmp
                    elif tmp == "any":
                        pass
                    else:
                        err_msg = _("Protocol mismatch (from/to)")
                        raise UFWError(err_msg)

            # Verify found proto with specified proto
            if rule.protocol == "any":
                rule.set_protocol(proto)
            elif proto != "any" and rule.protocol != proto:
                err_msg = _("Protocol mismatch with specified protocol %s") % \
                            (rule.protocol)
                raise UFWError(err_msg)

        # adjust type as needed
        if rule:
            if rule.protocol in ufw.util.ipv4_only_protocols and \
               type == "both":
                debug("Adjusting iptype to 'v4' for protocol '%s'" % \
                      (rule.protocol))
                type = "v4"

            # Now verify the rule
            rule.verify(type)

        r = UFWParserResponse(action)
        r.data['type'] = self.type
        r.data['rule'] = rule
        r.data['iptype'] = type

        return r

    def get_command(r):
        '''Get command string for rule'''
        res = r.action

        if (r.dst == "0.0.0.0/0" or r.dst == "::/0") and \
           (r.src == "0.0.0.0/0" or r.src == "::/0") and \
           r.sport == "any" and \
           r.sapp == "" and \
           r.interface_in == "" and \
           r.interface_out == "" and \
           r.dport != "any":
            # Short syntax
            if r.direction == "out":
                res += " %s" % r.direction
            if r.logtype != "":
                res += " %s" % r.logtype
            if r.dapp != "":
                if " " in r.dapp:
                    res += " '%s'" % r.dapp
                else:
                    res += " %s" % r.dapp
            else:
                res += " %s" % r.dport
                if r.protocol != "any":
                    res += "/%s" % r.protocol
            if r.comment != "":
                res += " comment '%s'" % r.get_comment()
        else:
            # Full syntax
            if r.interface_in != "":
                res += " in on %s" % r.interface_in
            if r.interface_out != "":
                res += " out on %s" % r.interface_out
            elif r.direction == "out":
                res += " %s" % r.direction
            if r.logtype != "":
                res += " %s" % r.logtype

            for i in ['src', 'dst']:
                if i == 'src':
                    loc = r.src
                    port = r.sport
                    app = r.sapp
                    dir = "from"
                else:
                    loc = r.dst
                    port = r.dport
                    app = r.dapp
                    dir = "to"

                if loc == "0.0.0.0/0" or loc == "::/0":
                    loc = "any"

                if loc != "any" or port != "any" or app != "":
                    res += " %s %s" % (dir, loc)
                    if app != "":
                        if " " in app:
                            res += " app '%s'" % app
                        else:
                            res += " app %s" % app
                    elif port != "any":
                        res += " port %s" % port

            # If still haven't added more than action, direction and/or
            # logtype, then we have a very generic rule, so add 'to any' to
            # mark it as extended form.
            if ' to ' not in res and ' from ' not in res and \
                    r.interface_in == "" and r.interface_out == "":
                res += " to any"

            if r.protocol != "any" and r.dapp == "" and r.sapp == "":
                res += " proto %s" % r.protocol

            if r.comment != "":
                res += " comment '%s'" % r.get_comment()

        return res
    get_command = staticmethod(get_command)


class UFWCommandRouteRule(UFWCommandRule):
    '''Class for parsing ufw route rule commands'''
    def __init__(self, command):
        UFWCommandRule.__init__(self, command)
        self.type = 'route'

    def parse(self, argv):
        assert(argv[0] == "route")

        # 'ufw delete NUM' is the correct usage, not 'ufw route delete NUM'
        if 'delete' in argv:
            idx = argv.index('delete')
            err_msg = ""
            if len(argv) > idx:
                try:
                    # 'route delete NUM' is unsupported
                    int(argv[idx + 1])
                    err_msg = _("'route delete NUM' unsupported. Use 'delete NUM' instead.")
                    raise UFWError(err_msg)
                except ValueError:
                    # 'route delete RULE' is supported
                    pass

        # Let's use as much as UFWCommandRule.parse() as possible. The only
        # difference with our rules is that argv[0] is 'route' and we support
        # both 'in on <interface>' and 'out on <interface>' in our rules.
        # Because UFWCommandRule.parse() expects that the interface clause is
        # specified first, strip out the second clause and add it later
        rule_argv = None
        interface = None
        strip = None

        # eg: ['route', 'allow', 'in', 'on', 'eth0', 'out', 'on', 'eth1']
        s = " ".join(argv)
        if " in on " in s and " out on " in s:
            strip = "out"
            if argv.index("in") > argv.index("out"):
                strip = "in"
            # Remove 2nd interface clause from argv and add it to the rule
            # later. Because we searched for " <strip> on " in our joined
            # string we are guaranteed to have argv[argv.index(<strip>) + 2]
            # exist.
            interface = argv[argv.index(strip) + 2]
            rule_argv = argv[0:argv.index(strip)] + argv[argv.index(strip)+3:]
        elif not re.search(r' (in|out) on ', s) and \
             not re.search(r' app (in|out) ', s) and \
             (" in " in s or " out " in s):
            # Specifying a direction without an interface doesn't make any
            # sense with route rules. application names could be 'in' or 'out'
            # so don't artificially limit those names.
            err_msg = _("Invalid interface clause for route rule")
            raise UFWError(err_msg)
        else:
            rule_argv = argv

        rule_argv[0] = "rule"
        r = UFWCommandRule.parse(self, rule_argv)
        if 'rule' in r.data:
            r.data['rule'].forward = True
            if strip and interface:
                r.data['rule'].set_interface(strip, interface)

        return r


class UFWCommandApp(UFWCommand):
    '''Class for parsing ufw application commands'''
    def __init__(self, command):
        type = 'app'
        UFWCommand.__init__(self, type, command)

    def parse(self, argv):
        '''Parse applications command.'''
        name = ""
        action = ""
        addnew = False

        if argv[0] != "app":
            raise ValueError()
        del argv[0]

        nargs = len(argv)
        action = argv[0].lower()

        if action == "info" or action == "update":
            if nargs >= 3 and argv[1] == "--add-new":
                addnew = True
                argv.remove("--add-new")
                nargs = len(argv)

            if nargs < 2:
                raise ValueError()

            # Handle quoted name with spaces in it by stripping Python's ['...']
            # list as string text.
            name = str(argv[1]).strip("[']")

            if addnew:
                action += "-with-new"

        if action == "list" and nargs != 1:
            raise ValueError()

        if action == "default":
            if nargs < 2:
                raise ValueError()
            if argv[1].lower() == "allow":
                action = "default-allow"
            elif argv[1].lower() == "deny":
                action = "default-deny"
            elif argv[1].lower() == "reject":
                action = "default-reject"
            elif argv[1].lower() == "skip":
                action = "default-skip"
            else:
                raise ValueError()

        r = UFWParserResponse(action)
        r.data['type'] = self.type
        r.data['name'] = name

        return r


class UFWCommandBasic(UFWCommand):
    '''Class for parsing ufw basic commands'''
    def __init__(self, command):
        type = 'basic'
        UFWCommand.__init__(self, type, command)

    def parse(self, argv):
        if len(argv) != 1:
            raise ValueError()
        return UFWCommand.parse(self, argv)


class UFWCommandDefault(UFWCommand):
    '''Class for parsing ufw default commands'''
    def __init__(self, command):
        type = 'default'
        UFWCommand.__init__(self, type, command)

    def parse(self, argv):
        # Basic sanity check
        if len(argv) < 2:
            raise ValueError()

        # Set the direction
        action = ""
        direction = "incoming"
        if len(argv) > 2:
            if argv[2].lower() != "incoming" and \
               argv[2].lower() != "input" and \
               argv[2].lower() != "routed" and \
               argv[2].lower() != "forward" and \
               argv[2].lower() != "output" and \
               argv[2].lower() != "outgoing":
                raise ValueError()
            if argv[2].lower().startswith("in"):
                direction = "incoming"
            elif argv[2].lower().startswith("out"):
                direction = "outgoing"
            elif argv[2].lower() == "routed" or argv[2].lower() == "forward":
                direction = "routed"
            else:  # pragma: no cover
                direction = argv[2].lower()

        # Set the policy
        if argv[1].lower() == "deny":
            action = "default-deny"
        elif argv[1].lower() == "allow":
            action = "default-allow"
        elif argv[1].lower() == "reject":
            action = "default-reject"
        else:
            raise ValueError()

        action += "-%s" % (direction)

        return UFWParserResponse(action)


class UFWCommandLogging(UFWCommand):
    '''Class for parsing ufw logging commands'''
    def __init__(self, command):
        type = 'logging'
        UFWCommand.__init__(self, type, command)

    def parse(self, argv):
        action = ""
        if len(argv) < 2:
            raise ValueError()
        elif argv[1].lower() == "off":
            action = "logging-off"
        elif argv[1].lower() == "on" or argv[1].lower() == "low" or \
             argv[1].lower() == "medium" or argv[1].lower() == "high" or \
             argv[1].lower() == "full":
            action = "logging-on"
            if argv[1].lower() != "on":
                action += "_" + argv[1].lower()
        else:
            raise ValueError()

        return UFWParserResponse(action)


class UFWCommandStatus(UFWCommand):
    '''Class for parsing ufw status commands'''
    def __init__(self, command):
        type = 'status'
        UFWCommand.__init__(self, type, command)

    def parse(self, argv):
        r = UFWCommand.parse(self, argv)
        if len(argv) == 1:
            r.action = "status"
        elif len(argv) > 1:
            if argv[1].lower() == "verbose":
                r.action = "status-verbose"
            elif argv[1].lower() == "numbered":
                r.action = "status-numbered"
            else:
                raise ValueError()
        return r


class UFWCommandShow(UFWCommand):
    '''Class for parsing ufw show commands'''
    def __init__(self, command):
        type = 'show'
        UFWCommand.__init__(self, type, command)

    def parse(self, argv):
        action = ""
        if len(argv) == 1:
            raise ValueError()
        elif argv[1].lower() == "raw":
            action = "show-raw"
        elif argv[1].lower() == "before-rules":
            action = "show-before"
        elif argv[1].lower() == "user-rules":
            action = "show-user"
        elif argv[1].lower() == "after-rules":
            action = "show-after"
        elif argv[1].lower() == "logging-rules":
            action = "show-logging"
        elif argv[1].lower() == "builtins":
            action = "show-builtins"
        elif argv[1].lower() == "listening":
            action = "show-listening"
        elif argv[1].lower() == "added":
            action = "show-added"
        else:
            raise ValueError()

        return UFWParserResponse(action)


class UFWParserResponse:
    '''Class for ufw parser response'''
    def __init__(self, action):
        self.action = action.lower()
        self.dryrun = False
        self.force = False
        self.data = {}

    def __str__(self):
        s = "action='%s'" % (self.action)
        keys = list(self.data.keys())
        keys.sort()
        for i in keys:
            s += ",%s='%s'" % (i, self.data[i])
        s += "\n"

        return repr(s)


class UFWParser:
    '''Class for ufw parser'''
    def __init__(self):
        self.commands = {}

    def allowed_command(self, type, cmd):
        '''Return command if it is allowed, otherwise raise an exception'''
        if type.lower() not in list(self.commands.keys()):
            raise ValueError()

        if cmd.lower() not in list(self.commands[type].keys()):
            raise ValueError()

        return cmd.lower()

    def parse_command(self, args):
        '''Parse command. Returns a UFWParserAction'''
        dryrun = False
        if len(args) > 0 and args[0].lower() == "--dry-run":
            dryrun = True
            args.remove(args[0])

        force = False
        if len(args) > 0 and (args[0].lower() == "--force" or \
                              args[0].lower() == "-f"):
            force = True
            args.remove(args[0])

        cmd = ""
        type = ""

        tmp = args[0].lower()
        if len(args) > 1 and tmp in list(self.commands.keys()) and \
                args[1].lower() in list(self.commands[tmp].keys()):
            type = tmp
            cmd = args[1].lower()
        else:
            # Discover the type
            cmd = tmp
            for i in list(self.commands.keys()):
                if cmd in self.commands[i]:
                    # Skip any inherited commands that inherit from
                    # UFWCommandRule since they must have more than one
                    # argument to be valid and used
                    if isinstance(self.commands[i][cmd], UFWCommandRule) and \
                       getattr(self.commands[i][cmd], 'type') != 'rule':
                        continue  # pragma: nocover
                    type = i
                    break
            if type == "":
                type = 'rule'

        action = self.allowed_command(type, cmd)

        cmd = self.commands[type][action]
        response = cmd.parse(args)
        response.dryrun = dryrun
        response.force = force

        return response

    def register_command(self, c):
        '''Register a command with the parser'''
        if c.command is None or c.command == '':
            # If the command is empty, then use 'type' as command
            key = "%s" % (c.type)
        else:
            key = "%s" % (c.command)

        if c.type not in self.commands:
            self.commands[c.type] = {}
        if key in self.commands[c.type]:
            err_msg = _("Command '%s' already exists") % (key)
            raise UFWError(err_msg)
        self.commands[c.type][key] = c
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      '''util.py: utility functions for ufw'''
#
# Copyright 2008-2023 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 binascii
import codecs
import errno
import fcntl
import io
import inspect
import os
import re
import shutil
import socket
import struct
import subprocess
import sys

from functools import reduce
from tempfile import mkstemp, mktemp

DEBUGGING = False
msg_output = None # for redirecting stdout in msg() and write_to_file()

# We support different protocols these days and only come combinations are
# valid
supported_protocols = ["tcp", "udp", "ipv6", "esp", "ah", "igmp", "gre", "vrrp"]
portless_protocols = ["ipv6", "esp", "ah", "igmp", "gre", "vrrp"]
ipv4_only_protocols = ["ipv6", "igmp"]


def get_services_proto(port):
    '''Get the protocol for a specified port from /etc/services'''
    proto = ""
    try:
        socket.getservbyname(port)
    except Exception:
        raise

    try:
        socket.getservbyname(port, "tcp")
        proto = "tcp"
    except Exception:
        pass

    try:
        socket.getservbyname(port, "udp")
        if proto == "tcp":
            proto = "any"
        else:
            proto = "udp"
    except Exception:
        pass

    return proto


def parse_port_proto(p_str):
    '''Parse port or port and protocol'''
    port = ""
    proto = ""
    tmp = p_str.split('/')
    if len(tmp) == 1:
        port = tmp[0]
        proto = "any"
    elif len(tmp) == 2:
        port = tmp[0]
        proto = tmp[1]
        if proto in portless_protocols:
            err_msg = _("Invalid port with protocol '%s'" % proto)
            raise ValueError(err_msg)
    else:
        err_msg = _("Bad port")
        raise ValueError(err_msg)
    return (port, proto)


def valid_address6(addr):
    '''Verifies if valid IPv6 address'''
    if not socket.has_ipv6:
        warn("python does not have IPv6 support.")
        return False

    # quick and dirty test
    if len(addr) > 43 or not re.match(r'^[a-fA-F0-9:\./]+$', addr):
        return False

    net = addr.split('/')
    try:
        socket.inet_pton(socket.AF_INET6, net[0])
    except Exception:
        return False

    if len(net) > 2:
        return False
    elif len(net) == 2:
        # Check netmask specified via '/'
        if not _valid_cidr_netmask(net[1], True):
            return False

    return True


def valid_address4(addr):
    '''Verifies if valid IPv4 address'''
    # quick and dirty test
    if len(addr) > 31 or not re.match(r'^[0-9\./]+$', addr):
        return False

    net = addr.split('/')
    try:
        socket.inet_pton(socket.AF_INET, net[0])
        # socket.inet_pton() should raise an exception, but let's be sure
        if not _valid_dotted_quads(net[0], False): # pragma: no cover
            return False
    except Exception:
        return False

    if len(net) > 2:
        return False
    elif len(net) == 2:
        # Check netmask specified via '/'
        if not valid_netmask(net[1], False):
            return False

    return True


def valid_netmask(nm, v6):
    '''Verifies if valid cidr or dotted netmask'''
    return _valid_cidr_netmask(nm, v6) or _valid_dotted_quads(nm, v6)


#
# valid_address()
#    version="6" tests if a valid IPv6 address
#    version="4" tests if a valid IPv4 address
#    version="any" tests if a valid IP address (IPv4 or IPv6)
#
def valid_address(addr, version="any"):
    '''Validate IP addresses'''
    if version == "6":
        return valid_address6(addr)
    elif version == "4":
        return valid_address4(addr)
    elif version == "any":
        return valid_address4(addr) or valid_address6(addr)

    raise ValueError


def normalize_address(orig, v6):
    '''Convert address to standard form. Use no netmask for IP addresses. If
       netmask is specified and not all 1's, for IPv4 use cidr if possible,
       otherwise dotted netmask and for IPv6, use cidr.
    '''
    net = []
    changed = False
    version = "4"
    s_type = socket.AF_INET
    if v6:
        version = "6"
        s_type = socket.AF_INET6

    if '/' in orig:
        net = orig.split('/')
        # Remove host netmasks
        if v6 and net[1] == "128":
            del net[1]
        elif not v6 and (net[1] == "32" or net[1] == "255.255.255.255"):
            del net[1]
    else:
        net.append(orig)

    if not v6 and len(net) == 2 and _valid_dotted_quads(net[1], v6):
        try:
            net[1] = _dotted_netmask_to_cidr(net[1], v6)
        except Exception:
            # Not valid cidr, so just use the dotted quads
            pass

    addr = net[0]

    # Convert to packed binary, then convert back
    addr = socket.inet_ntop(s_type, socket.inet_pton(s_type, addr))
    if addr != net[0]:
        changed = True

    if len(net) == 2:
        addr += "/" + net[1]
        if not v6:
            network = _address4_to_network(addr)
            if network != addr:
                dbg_msg = "Using '%s' for address '%s'" % (network, addr)
                debug(dbg_msg)
                addr = network
                changed = True

    if not valid_address(addr, version):
        dbg_msg = "Invalid address '%s'" % (addr)
        debug(dbg_msg)
        raise ValueError

    return (addr, changed)


def open_file_read(fn):
    '''Opens the specified file read-only'''
    return open(fn, 'r')


def open_files(fn):
    '''Opens the specified file read-only and a tempfile read-write.'''
    orig = open_file_read(fn)

    try:
        (tmp, tmpname) = mkstemp()
    except Exception: # pragma: no cover
        orig.close()
        raise

    return { "orig": orig, "origname": fn, "tmp": tmp, "tmpname": tmpname }


def write_to_file(fd, out):
    '''Write to the file descriptor and error out of 0 bytes written. Intended
       to be used with open_files() and close_files().'''
    if out == "":
        return

    if not fd:
        raise OSError(errno.ENOENT, "Not a valid file descriptor")

    # Redirect our writes to stdout to msg_output, if it is set
    if msg_output and fd == sys.stdout.fileno():
        msg_output.write(out)
        return

    rc = -1
    # cover not in python3, so can't test for this
    if sys.version_info[0] >= 3: # pragma: no cover
        rc = os.write(fd, bytes(out, 'ascii'))
    else:
        rc = os.write(fd, out)

    if rc <= 0: # pragma: no cover
        raise OSError(errno.EIO, "Could not write to file descriptor")


def close_files(fns, update=True):
    '''Closes the specified files (as returned by open_files), and update
       original file with the temporary file.
    '''
    fns['orig'].close()
    os.close(fns['tmp'])

    if update:
        shutil.copystat(fns['origname'], fns['tmpname'])
        shutil.copy(fns['tmpname'], fns['origname'])

    os.unlink(fns['tmpname'])


def cmd(command):
    '''Try to execute the given command.'''
    debug(command)
    try:
        sp = subprocess.Popen(command, stdout=subprocess.PIPE,
                              stderr=subprocess.STDOUT,
                              universal_newlines=True)
    except OSError as ex:
        return [127, str(ex)]

    out = sp.communicate()[0]
    return [sp.returncode, str(out)]


def cmd_pipe(command1, command2):
    '''Try to pipe command1 into command2.'''
    try:
        sp1 = subprocess.Popen(command1, stdout=subprocess.PIPE)
        sp2 = subprocess.Popen(command2, stdin=sp1.stdout)
    except OSError as ex:
        return [127, str(ex)]

    out = sp2.communicate()[0]
    return [sp2.returncode, str(out)]


# TODO: this is pretty horrible. We should be using only unicode strings
#       internally and decode() when printing rather than doing this.
def _print(output, s):
    '''Implement our own print statement that will output utf-8 when
       appropriate.'''
    try: # python3
        writer = output.buffer
    except Exception:
        writer = output

    try:
        out = s.encode('utf-8', 'ignore')
    # Depends on python version
    except Exception: # pragma: no cover
        out = s

    if msg_output and inspect.isclass(io.StringIO):
        writer.write(s)
    else:
        writer.write(bytes(out))
    output.flush()


def error(out, do_exit=True):
    '''Print error message and exit'''
    try:
        _print(sys.stderr, 'ERROR: %s\n' % out)
    except IOError: # pragma: no cover
        pass

    if do_exit: # pragma: no cover
        sys.exit(1)


def warn(out):
    '''Print warning message'''
    try:
        _print(sys.stderr, 'WARN: %s\n' % out)
    except IOError: # pragma: no cover
        pass


def msg(out, output=sys.stdout, newline=True):
    '''Print message'''
    if msg_output and output == sys.stdout:
        output = msg_output

    try:
        if newline:
            _print(output, '%s\n' % out)
        else:
            _print(output, '%s' % out)
    except IOError: # pragma: no cover
        pass


def debug(out):
    '''Print debug message'''
    if DEBUGGING:
        try:
            _print(sys.stderr, 'DEBUG: %s\n' % out)
        except IOError: # pragma: no cover
            pass


def word_wrap(text, width):
    '''
    A word-wrap function that preserves existing line breaks
    and most spaces in the text. Expects that existing line
    breaks are posix newlines (\n).
    '''
    return reduce(lambda line, word, width=width: '%s%s%s' %
                  (line,
                   ' \n'[(len(line)-line.rfind('\n') - 1 +
                          len(word.split('\n', 1)[0]) >= width)],
                   word),
                  text.split(' ')
                 )


def wrap_text(text):
    '''Word wrap to a specific width'''
    return word_wrap(text, 75)


def human_sort(lst):
    '''Sorts list of strings into numeric order, with text case-insensitive.
       Modifies list in place.

       Eg:
       [ '80', 'a222', 'a32', 'a2', 'b1', '443', 'telnet', '3', 'http', 'ZZZ']

       sorts to:
       ['3', '80', '443', 'a2', 'a32', 'a222', 'b1', 'http', 'telnet', 'ZZZ']
    '''
    norm = lambda t: int(t) if t.isdigit() else t.lower()
    lst.sort(key=lambda k: [ norm(c) for c in re.split('([0-9]+)', k)])


def get_ppid(mypid=os.getpid()):
    '''Finds parent process id for pid based on /proc/<pid>/stat. See
       'man 5 proc' for details.
    '''
    try:
        pid = int(mypid)
    except Exception:
        raise ValueError("pid must be an integer")

    name = os.path.join("/proc", str(pid), "stat")
    if not os.path.isfile(name):
        raise IOError("Couldn't find '%s'" % (name))

    # LP: #1101304
    # 9983 (cmd) S 923 ...
    # 9983 (cmd with spaces) S 923 ...
    # LP: #2015645
    # 229 (cmd(withparen)) S 228 ...
    ppid = open(name).readlines()[0].rsplit(")", 1)[1].split()[1]

    return int(ppid)


def under_ssh(pid=os.getpid()):
    '''Determine if current process is running under ssh'''
    try:
        ppid = get_ppid(pid)
    except IOError:
        warn_msg = _("Couldn't find pid (is /proc mounted?)")
        warn(warn_msg)
        return False
    except Exception:
        err_msg = _("Couldn't find parent pid for '%s'") % (str(pid))
        raise ValueError(err_msg)

    # pid '1' is 'init' and '0' is the kernel. This should still work when
    # pid randomization is in use, but needs to be checked.
    if pid == 1 or ppid <= 1:
        return False

    path = os.path.join("/proc", str(ppid), "stat")
    if not os.path.isfile(path): # pragma: no cover
        err_msg = _("Couldn't find '%s'") % (path)
        raise ValueError(err_msg)

    try:
        exe = open(path).readlines()[0].split()[1]
    except Exception: # pragma: no cover
        err_msg = _("Could not find executable for '%s'") % (path)
        raise ValueError(err_msg)
    debug("under_ssh: exe is '%s'" % (exe))

    # unit tests might be run remotely, so can't test for either
    if exe == "(sshd)": # pragma: no cover
        return True
    else: # pragma: no cover
        return under_ssh(ppid)


#
# Internal helper functions
#
def _valid_cidr_netmask(nm, v6):
    '''Verifies cidr netmasks'''
    num = 32
    if v6:
        num = 128

    if not re.match(r'^[0-9]+$', nm) or int(nm) < 0 or int(nm) > num:
        return False

    return True


def _valid_dotted_quads(nm, v6):
    '''Verifies dotted quad ip addresses and netmasks'''
    if v6:
        return False
    else:
        if re.match(r'^[0-9]+\.[0-9\.]+$', nm):
            quads = re.split('\.', nm)
            if len(quads) != 4:
                return False
            for q in quads:
                if not q or int(q) < 0 or int(q) > 255:
                    return False
        else:
            return False

    return True


#
# _dotted_netmask_to_cidr()
# Returns:
#   cidr integer (0-32 for ipv4 and 0-128 for ipv6)
#
# Raises exception if cidr cannot be found
#
def _dotted_netmask_to_cidr(nm, v6):
    '''Convert netmask to cidr. IPv6 dotted netmasks are not supported.'''
    cidr = ""
    if v6:
        raise ValueError
    else:
        if not _valid_dotted_quads(nm, v6):
            raise ValueError

        mbits = 0

        # python3 doesn't have long(). We could technically use int() here
        # since python2 guarantees at least 32 bits for int(), but this helps
        # future-proof.
        try: # pragma: no cover
            bits = long(struct.unpack('>L', socket.inet_aton(nm))[0])
        except NameError: # pragma: no cover
            bits = int(struct.unpack('>L', socket.inet_aton(nm))[0])

        found_one = False
        for n in range(32):
            if (bits >> n) & 1 == 1:
                found_one = True
            else:
                if found_one:
                    mbits = -1
                    break
                else:
                    mbits += 1

        if mbits >= 0 and mbits <= 32:
            cidr = str(32 - mbits)

    if not _valid_cidr_netmask(cidr, v6):
        raise ValueError

    return cidr


#
# _cidr_to_dotted_netmask()
# Returns:
#   dotted netmask string
#
# Raises exception if dotted netmask cannot be found
#
def _cidr_to_dotted_netmask(cidr, v6):
    '''Convert cidr to netmask. IPv6 dotted netmasks not supported.'''
    nm = ""
    if v6:
        raise ValueError
    else:
        if not _valid_cidr_netmask(cidr, v6):
            raise ValueError

        # python3 doesn't have long(). We could technically use int() here
        # since python2 guarantees at least 32 bits for int(), but this helps
        # future-proof.
        try: # pragma: no cover
            bits = long(0)
        except NameError: # pragma: no cover
            bits = 0

        for n in range(32):
            if n < int(cidr):
                bits |= 1 << 31 - n
        nm = socket.inet_ntoa(struct.pack('>L', bits))

    # The above socket.inet_ntoa() should raise an error, but let's be sure
    if not _valid_dotted_quads(nm, v6): # pragma: no cover
        raise ValueError

    return nm


def _address4_to_network(addr):
    '''Convert an IPv4 address and netmask to a network address'''
    if '/' not in addr:
        debug("_address4_to_network: skipping address without a netmask")
        return addr

    tmp = addr.split('/')
    if len(tmp) != 2 or not _valid_dotted_quads(tmp[0], False):
        raise ValueError

    host = tmp[0]
    orig_nm = tmp[1]

    nm = orig_nm
    if _valid_cidr_netmask(nm, False):
        nm = _cidr_to_dotted_netmask(nm, False)

    # Now have dotted quad host and nm, find the network

    # python3 doesn't have long(). We could technically use int() here
    # since python2 guarantees at least 32 bits for int(), but this helps
    # future-proof.
    try: # pragma: no cover
        host_bits = long(struct.unpack('>L', socket.inet_aton(host))[0])
        nm_bits = long(struct.unpack('>L', socket.inet_aton(nm))[0])
    except NameError: # pragma: no cover
        host_bits = int(struct.unpack('>L', socket.inet_aton(host))[0])
        nm_bits = int(struct.unpack('>L', socket.inet_aton(nm))[0])

    network_bits = host_bits & nm_bits
    network = socket.inet_ntoa(struct.pack('>L', network_bits))

    return "%s/%s" % (network, orig_nm)


def _address6_to_network(addr):
    '''Convert an IPv6 address and netmask to a network address'''
    def dec2bin(num, count):
        '''Decimal to binary'''
        return "".join([str((num >> y) & 1) for y in range(count-1, -1, -1)])

    if '/' not in addr:
        debug("_address6_to_network: skipping address without a netmask")
        return addr

    tmp = addr.split('/')
    if len(tmp) != 2 or not valid_netmask(tmp[1], True):
        raise ValueError

    orig_host = tmp[0]
    netmask = tmp[1]

    unpacked = struct.unpack('>8H', socket.inet_pton(socket.AF_INET6, \
                                                     orig_host))

    # Get the host bits
    try: # python3 doesn't have long()
        host_bits = long(0)
    except NameError: # pragma: no cover
        host_bits = 0

    for i in range(8):
        n = dec2bin(unpacked[i], 16)
        for j in range(16):
            host_bits |= (1 & int(n[j])) << (127-j-i*16)

    # Create netmask bits
    try: # python3 doesn't have long()
        nm_bits = long(0)
    except NameError: # pragma: no cover
        nm_bits = 0

    for i in range(128):
        if i < int(netmask):
            nm_bits |= 1 << (128 - 1) - i

    # Apply the netmask to the host to determine the network
    net = host_bits & nm_bits

    # Break the network into chunks suitable for repacking
    lst = []
    for i in range(8):
        lst.append(int(dec2bin(net, 128)[i*16:i*16+16], 2))

    # Create the network string
    network = socket.inet_ntop(socket.AF_INET6, \
                               struct.pack('>8H', lst[0], lst[1], \
                                           lst[2], lst[3], lst[4], \
                                           lst[5], lst[6], lst[7]))

    return "%s/%s" % (network, netmask)


def in_network(tested_add, tested_net, v6):
    '''Determine if address x is in network y'''
    tmp = tested_net.split('/')
    if len(tmp) != 2 or not valid_netmask(tmp[1], v6):
        raise ValueError

    orig_host = tmp[0]
    netmask = tmp[1]

    if orig_host == "0.0.0.0" or orig_host == "::":
        return True

    address = tested_add
    if '/' in address:
        tmp = address.split('/')
        if len(tmp) != 2 or not valid_netmask(tmp[1], v6):
            raise ValueError
        address = tmp[0]

    if address == "0.0.0.0" or address == "::":
        return True

    if v6:
        if not valid_address6(address) or not valid_address6(orig_host):
            raise ValueError
    else:
        if not valid_address4(address) or not valid_address4(orig_host):
            raise ValueError

    if _valid_cidr_netmask(netmask, v6) and not v6:
        netmask = _cidr_to_dotted_netmask(netmask, v6)

    # Now apply the network's netmask to the address
    if v6:
        orig_network = _address6_to_network("%s/%s" % \
                                            (orig_host, netmask)).split('/')[0]
        network = _address6_to_network("%s/%s" % \
                                       (address, netmask)).split('/')[0]
    else:
        orig_network = _address4_to_network("%s/%s" % \
                                            (orig_host, netmask)).split('/')[0]
        network = _address4_to_network("%s/%s" % \
                                       (address, netmask)).split('/')[0]

    return network == orig_network


# We prefer to hardcode the iptables dir in common.py, but we do not import
# common.py here. While internally ufw always uses common.py to determine the
# path, _find_system_iptables() is implemented for get_iptables_version() and
# get_netfilter_capabilities() so as to not break API for external consumers
# since these have historically used a default for 'exe'.
def _find_system_iptables():
    exe = ""
    for d in ["/sbin", "/bin",
              "/usr/sbin", "/usr/bin",
              "/usr/local/sbin", "/usr/local/bin"]:
        exe = os.path.join(d, "iptables")
        if os.path.exists(exe):
            break
        else:
            exe = ""
    if exe == "":
        raise OSError(errno.ENOENT, "Could not find iptables")
    return exe


def get_iptables_version(exe=None):
    '''Return iptables version'''
    if exe is None:
        exe = _find_system_iptables()

    (rc, out) = cmd([exe, '-V'])
    if rc != 0:
        raise OSError(errno.ENOENT, "Error running '%s'" % (exe))
    tmp = re.split('\s', out)
    return re.sub('^v', '', tmp[1])


# must be root, so don't report coverage in unit tests
def get_netfilter_capabilities(exe=None, do_checks=True):
    '''Return capabilities set for netfilter to support new features. Callers
       must be root.'''
    def test_cap(exe, chain, rule):
        args = [exe, '-A', chain]
        (rc, out) = cmd(args + rule)
        if rc == 0:
            return True
        return False # pragma: no cover

    if do_checks and os.getuid() != 0:
        raise OSError(errno.EPERM, "Must be root")

    if exe is None:
        exe = _find_system_iptables()

    caps = []

    chain = "ufw-caps-test"
    if exe.endswith("ip6tables"):
        chain = "ufw6-caps-test"

    # Use a unique chain name (with our locking code, this shouldn't be
    # needed, but this is a cheap safeguard in case the chain happens to
    # still be lying around. We do this to avoid a separate call to
    # iptables to check for existence)
    chain += mktemp(prefix='', dir='')

    # First install a test chain
    (rc, out) = cmd([exe, '-N', chain])
    if rc != 0:
        raise OSError(errno.ENOENT, out) # pragma: no cover

    # Now test for various capabilities. We won't test for everything, just
    # the stuff we know isn't supported everywhere but we want to support.

    # recent-set
    if test_cap(exe, chain, ['-m', 'conntrack', '--ctstate', 'NEW', \
                             '-m', 'recent', '--set']):
        caps.append('recent-set')

    # recent-update
    if test_cap(exe, chain, ['-m', 'conntrack', '--ctstate', 'NEW', \
                             '-m', 'recent', '--update', \
                             '--seconds', '30', \
                             '--hitcount', '6']):
        caps.append('recent-update')

    # Cleanup
    cmd([exe, '-F', chain])
    (rc, out) = cmd([exe, '-X', chain])
    if rc != 0:
        raise OSError(errno.ENOENT, out) # pragma: no cover

    return caps


def parse_netstat_output(v6):
    '''Get and parse netstat the output from get_netstat_output()'''

    # d[proto][port] -> list of dicts:
    #   d[proto][port][0][laddr|raddr|uid|pid|exe]

    netstat_output = get_netstat_output(v6)

    d = dict()
    for line in netstat_output.splitlines():
        if not line.startswith('tcp') and not line.startswith('udp'): # pragma: no cover
            continue

        tmp = line.split()

        proto = tmp[0]
        port = tmp[1].split(':')[-1]

        item = dict()
        item['laddr'] = ':'.join(tmp[1].split(':')[:-1])
        item['uid'] = tmp[3]
        item['pid'] = tmp[5].split('/')[0]
        if item['pid'] == '-':
            item['exe'] = item['pid']
        else: # pragma: no cover
            item['exe'] = tmp[5].split('/')[1]

        if proto not in d:
            d[proto] = dict()
            d[proto][port] = []
        else:
            if port not in d[proto]:
                d[proto][port] = []
        d[proto][port].append(item)

    return d


def get_ip_from_if(ifname, v6=False):
    '''Get IP address for interface'''
    addr = ""

    # we may not have an IPv6 address, so no coverage
    if v6: # pragma: no cover
        proc = '/proc/net/if_inet6'
        if not os.path.exists(proc):
            raise OSError(errno.ENOENT, "'%s' does not exist" % proc)

        for line in open(proc).readlines():
            tmp = line.split()
            if ifname == tmp[5]:
                addr = ":".join( \
                           [tmp[0][i:i+4] for i in range(0, len(tmp[0]), 4)])

                if tmp[2].lower() != "80":
                    addr = "%s/%s" % (addr, int(tmp[2].lower(), 16))

        if addr == "":
            raise IOError(errno.ENODEV, "No such device")
    else:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        try:
            addr = socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0x8915, \
                                    struct.pack('256s', ifname[:15]))[20:24])
        except Exception:
            raise IOError(errno.ENODEV, "No such device")

    return normalize_address(addr, v6)[0]


def get_if_from_ip(addr):
    '''Get interface for IP address'''
    v6 = False
    proc = '/proc/net/dev'
    if valid_address6(addr):
        v6 = True
        proc = '/proc/net/if_inet6'
    elif not valid_address4(addr):
        raise IOError(errno.ENODEV, "No such device")

    if not os.path.exists(proc): # pragma: no cover
        raise OSError(errno.ENOENT, "'%s' does not exist" % proc)

    matched = ""
    # we may not have an IPv6 address, so no coverage
    if v6: # pragma: no cover
        for line in open(proc).readlines():
            tmp = line.split()
            ifname = tmp[5].strip()

            tmp_addr = ":".join( \
                           [tmp[0][i:i+4] for i in range(0, len(tmp[0]), 4)])
            if tmp[2].lower() != "80":
                tmp_addr = "%s/%s" % (tmp_addr, int(tmp[2].lower(), 16))

            if addr == tmp_addr or \
               ('/' in tmp_addr and in_network(addr, tmp_addr, True)):
                matched = ifname
                break
    else:
        for line in open(proc).readlines():
            if ':' not in line:
                continue
            ifname = line.split(':')[0].strip()
            # this can fail for certain devices, so just skip them
            try:
                ip = get_ip_from_if(ifname, False)
            except IOError: # pragma: no cover
                continue

            if ip == addr:
                matched = ifname
                break

    return matched


def _get_proc_inodes():
    '''Get inodes of files in /proc'''
    proc_files = os.listdir("/proc")
    proc_files.sort()
    pat = re.compile(r'^[0-9]+$')
    inodes = dict()
    for i in proc_files:
        if not pat.match(i):
            continue

        fd_path = os.path.join("/proc", i, "fd")

        # skip stuff we can't read or that goes away
        if not os.access(fd_path, os.F_OK | os.R_OK):
            continue

        exe_path = "-"
        try:
            exe_path = os.readlink(os.path.join("/proc", i, "exe"))
        except Exception: # pragma: no cover
            pass

        try:
            dirs = os.listdir(fd_path)
        except Exception: # pragma: no cover
            continue

        for j in dirs:
            try:
                inode = os.stat(os.path.join(fd_path, j))[1]
            except Exception: # pragma: no cover
                continue
            inodes[inode] = "%s/%s" % (i, os.path.basename(exe_path))

    return inodes


def _read_proc_net_protocol(protocol):
    '''Read /proc/net/(tcp|udp)[6] file and return a list of tuples '''
    tcp_states = { 1: "ESTABLISHED",
                   2: "SYN_SENT",
                   3: "SYN_RECV",
                   4: "FIN_WAIT1",
                   5: "FIN_WAIT2",
                   6: "TIME_WAIT",
                   7: "CLOSE",
                   8: "CLOSE_WAIT",
                   9: "LAST_ACK",
                   10: "LISTEN",
                   11: "CLOSING"
                 }

    proc_net_fields = { 'local_addr': 1,
                        'state': 3,
                        'uid': 7,
                        'inode': 9
                      }

    fn = os.path.join("/proc/net", protocol)
    # can't test for this
    if not os.access(fn, os.F_OK | os.R_OK): # pragma: no cover
        raise ValueError

    lst = []
    skipped_first = False
    lines = open(fn).readlines()
    for line in lines:
        fields = line.split()
        if not skipped_first:
            skipped_first = True
            continue
        state = tcp_states[int(fields[proc_net_fields['state']], 16)]
        if protocol.startswith("udp"):
            state = "NA"
        elif protocol.startswith("tcp") and state != "LISTEN":
            continue
        laddr, port = fields[proc_net_fields['local_addr']].split(':')
        uid = fields[proc_net_fields['uid']]
        inode = fields[proc_net_fields['inode']]
        lst.append((laddr, int(port, 16), uid, inode, state))

    return lst


def convert_proc_address(paddr):
    '''Convert an address from /proc/net/(tcp|udp)* to a normalized address'''
    converted = ""
    if len(paddr) > 8:
        tmp = ""
        for i in range(0, 32, 8):
            tmp += "".join([ paddr[j-2:j] for j in range(i+8, i, -2) ])
        converted = normalize_address(":".join( \
               [tmp[j:j+4].lower() for j in range(0, len(tmp), 4)]), \
               True)[0]
    else:
        tmp = []
        for i in [ paddr[j-2:j] for j in range(8, 0, -2) ]:
            tmp.append(str(int(i, 16)))
        converted = normalize_address(".".join(tmp), False)[0]

    return converted


def get_netstat_output(v6):
    '''netstat-style output, without IPv6 address truncation'''
    proc_net_data = dict()
    proto = ['tcp', 'udp']
    if v6:
        proto += ['tcp6', 'udp6']
    for p in proto:
        try:
            proc_net_data[p] = _read_proc_net_protocol(p)
        except Exception: # pragma: no cover
            warn_msg = _("Could not get statistics for '%s'" % (p))
            warn(warn_msg)
            continue

    inodes = _get_proc_inodes()

    protocols = list(proc_net_data.keys())
    protocols.sort()

    s = ""
    for p in protocols:
        for (laddr, port, uid, inode, state) in proc_net_data[p]:
            addr = convert_proc_address(laddr)

            exe = "-"
            if int(inode) in inodes:
                # need root for this, so turn off in unit tests
                exe = inodes[int(inode)] # pragma: no cover
            s += "%-5s %-46s %-11s %-5s %-11s %s\n" % (p,
                                                       "%s:%s" % (addr, port),
                                                       state, uid, inode, exe)

    return s


def _findpath(dir, prefix):
    '''Add prefix to dir'''
    if prefix is None:
        return dir
    if dir.startswith('/'):
        if len(dir) < 2:  # /
            newdir = prefix
        else:
            newdir = os.path.join(prefix, dir[1:])
    else:
        newdir = os.path.join(prefix, dir)
    return newdir


def hex_encode(s):
    '''Take a string and convert it to a hex string'''
    if sys.version_info[0] < 3:
        return codecs.encode(s, 'hex')
    # hexlify returns a bytes string (eg, b'ab12cd') so decode that to ascii
    # to have identical output as python2
    return binascii.hexlify(s.encode('utf-8', errors='ignore')).decode('ascii')


def hex_decode(h):
    '''Take a hex string and convert it to a string'''
    if sys.version_info[0] < 3:
        return h.decode(encoding="hex").decode("utf-8")
    # unhexlify requires an even length string, which should normally happen
    # since hex_encode() will create a string and decode to ascii, which has 2
    # bytes per character. If we happen to get an odd length string, instead of
    # tracing back, truncate it by one character and move on. This works
    # reasonably well in some cases, but might result in a UnicodeDecodeError,
    # so use backslashreplace in that case.
    return binascii.unhexlify("%s" % (h[:-1] if len(h) % 2 else h)).decode(
        "utf-8", "backslashreplace"
    )


def create_lock(lockfile='/run/ufw.lock', dryrun=False):
    '''Create a blocking lockfile'''
    lock = None
    if not dryrun:
        lock = open(lockfile, 'w')
        fcntl.lockf(lock, fcntl.LOCK_EX)
    return lock


def release_lock(lock):
    '''Free lockfile created with create_lock()'''
    if lock is None:
        return
    try:  # pragma: no cover
        fcntl.lockf(lock, fcntl.LOCK_UN)
        lock.close()
    except ValueError:  # pragma: nocover
        # If the lock is already closed, ignore the exception. This should
        # never happen but let's guard against it in case something changes
        pass
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Metadata-Version: 1.0
Name: ufw
Version: 0.36.2
Summary: front-end for Linux firewalling
Home-page: https://launchpad.net/ufw
Author: Jamie Strandboge
Author-email: jamie@canonical.com
License: GPL-3
Description: front-end for Linux firewalling
Platform: UNKNOWN
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         #! /usr/bin/python3
#
# ufw: front-end for Linux firewalling (cli)
#
# Copyright 2008-2023 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.2"

# 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" or pr.action == "-h":
        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-2023 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)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 #
# Copyright 2009 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/>.
#
# Based on work by Didier Roche <didrocks@ubuntu.com>
#

_ufw_commands()
{
    commands=$(ufw --help | sed -e '1,/^Commands:/d' -e '/^Application profile commands:/Q' -e 's/^[ \t]\+\([a-z|]\+\)[ \t]\+.*/\1/g' -e 's/|/ /g' | uniq)
    echo "$commands app"
}

_ufw_app_commands()
{
    ufw --help | sed -e '1,/^Application profile commands:/d' -e '/^ [^ ]/!d' -e 's/[ \t]\+app[ \t]\+\([a-z|]\+\)[ \t]\+.*/\1/g'
}

_ufw_logging_commands()
{
    echo "off on low medium high full"
}

_ufw_default_commands()
{
    echo "allow deny reject"
}

_ufw_rule_commands()
{
    echo "`_ufw_default_commands` limit"
}

_ufw_route_commands()
{
    echo "`_ufw_default_commands` limit delete insert"
}

_ufw_show_commands()
{
    echo "raw"
}

_ufw_status_commands()
{
    echo "numbered verbose"
}

_have ufw &&
_ufw()
{
    cur=${COMP_WORDS[COMP_CWORD]}
    prev=${COMP_WORDS[COMP_CWORD-1]}
    if [ $COMP_CWORD -eq 1 ]; then
        COMPREPLY=( $( compgen -W "--dry-run --force --help $(_ufw_commands)" -- $cur ) )
    elif [ $COMP_CWORD -eq 2 ]; then
        case "$prev" in
        app)
            COMPREPLY=( $( compgen -W "$(_ufw_app_commands)" -- $cur ) )
            ;;
        status)
            COMPREPLY=( $( compgen -W "$(_ufw_status_commands)" -- $cur ) )
            ;;
        delete)
            COMPREPLY=( $( compgen -W "$(_ufw_rule_commands)" -- $cur ) )
            ;;
        route)
            COMPREPLY=( $( compgen -W "$(_ufw_route_commands)" -- $cur ) )
            ;;
        logging)
            COMPREPLY=( $( compgen -W "$(_ufw_logging_commands)" -- $cur ) )
            ;;
        show)
            COMPREPLY=( $( compgen -W "$(_ufw_show_commands)" -- $cur ) )
            ;;
        default)
            COMPREPLY=( $( compgen -W "$(_ufw_default_commands)" -- $cur ) )
            ;;
        esac
    fi
}

_have ufw && complete -F _ufw ufw
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ufw
---
On installation, ufw is not automatically enabled. To load the firewall and
enable it on boot, run:

# ufw enable

See 'man ufw' and README for more information.


Upgrading
---------
It is important to note that to properly support remote users, the firewall
will not be automatically restarted during upgrades. After an upgrade, either
reboot or perform:

# /etc/init.d/ufw restart

Please note that the above command will briefly open the firewall before
reloading the rules.


Preseeding
----------
ufw has support for preseeding. To enable a default deny firewall, add to your
preseed file:
ufw ufw/enable boolean true

And to allow a service, use:
ufw ufw/allow_known_ports multiselect SSH, WWW

Currently, ufw knows about the following services:
 Cups		# tcp and udp port 631
 DNS		# tcp and udp port 53
 Imap (Secure)	# tcp port 993
 Pop3 (Secure)	# tcp port 995
 SSH		# tcp port 22
 Samba		# udp ports 137, 138 and tcp ports 139, 445
 Smtp		# tcp port 25
 WWW		# tcp port 80
 WWW (Secure)	# tcp port 443

You may also add additional ports by supplying a space separated list of
services from /etc/services, a port number or a port/protocol combination. Eg:
ufw ufw/allow_custom_ports string auth 8080 1194/udp 

Please keep in mind that these ports and services are not associated with ufw
application profiles.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [{oF)fbe"8iMlu_?[A#5Erɡ;!9ip,yf|'ZZ[GczͬmjrߦyL)2Zt?hIaꕉh=z0meƑ5zX.cU!PWc]BIm40;1m%KiۘҪ2Tu,*Ld6]nᴼzcUj5bzEFϛoؕwm=`*vY0|_E<JcN>ս~L_K^޾JKja5Uyum
*ˢ<͛T |.
3HYV<
 2jj)$4	i>g*UZW&87UeN(Oܷ[q^gDc5SW-/f$G0e,%	Q)
>C
u3M
a?FUNx\\75FjM0,I1AԮԷTc,y9{tOW'%fQE	јǵ. |bN  %aT[H)rf@cęma{Y џ:?eEkeu#kꩽ
t	!':tlagmW,s-ZҲgf 7䭼ݲȗ2Ü>RNjc2,~:pD/NW`aãtk&M7	އdk!{ [W(k=DiF&v~Q=-sOV)NaL4^K!HY_Bɢ	󪢰g~bW<d|RyUˁ϶Gzsr,Bmk&ݠ嬚6x \,ԧ4ydTZpA3BxǟB	ef3ThvBWq1+sz,	?pIΈC9dPJ}j|珚V9X#
&<	Pb/5%'[ 8<	v9q	tQD4uT<s/<͞n0e{_)Duv'M]MY3Ύ۩()]J
hlzP爫$1yO^ee1	nf װb׽#C5#<p?[[{wv$ ?${[l.fНQ
(H䶎FD? wαvvlSyB\y5lTpCpBPR<|Ӕ	Qse`˳bN nm;/|C(6-h]w(ʔ%:y}Rpʤnvv@pxy=5DW?_mQd G=#
\|
_#PU|G/ğ.*e<&OBjBgC:K9U.ABՇJpA´a  <&"޵^\;$UbK(ԱDݜ8q8%i41%`n(2!BlۛOxpBC
7gpF!qLTdk~0#gc	B
v~muʭiGf7ޣ'	Hyݦ:s#Jݤv=ⵌElU(]({"d/'(bG4@ed	'<>a.' Bo2_tgB\FLqZ+)nE ]WrBjʦ+a>d?!cB Mh-λ"a
ԼdGq UM.`
Qğ:H '|+QI A.zm#fIl!vm\*_XҜd$L@Q@*Y։6R})3(F=KbRr灹\ͪCyjeAӓǮa(jil7R<i`\kP#Yml)D^ZSMc0XYi"ͧ眯RV*B	קg>KDDn^/<h'Xbw2/yvvz~3`TQ/$tFS|ӲIs yR7`c/|`6)2520I E!{8 n[R#ʝKfX;e/YM%(,tZUȉ(fZ"8]d-$!/\
[<kjɣ)gIm	)IԜ4T39[^qhe^=H,ÒԖk
q.'OuI1g]-|.x_E*9葳i f1Om8l,IaG܍c㷀g?qľ- Ek2dd)duY|-O0
V]WAlF:ͭ1	@0J*+)cas}]TIs6 Yv48N Kk5CdPOy1=jZʊ`&8P	`~XTѪōzVs%!Z3KVyoJ;E]8꺙I@H
+QicSKEթ,n=Ԉeuk)7] nFveFIRش)ῦ %6e9)yjcsƹRyBu5&e+MWm2Ҿd:R*o6c$}}<Axj?_~GJڋ3Cz}u0zxc݃<_:;^QbHܗ'aɒYWMN-onH7}"	mԱF5-eEm O~N݃Hpq|_cQ%Z/E7n&<Bk!kt?7O׌\u3rZ?0|UxL_ts{vu|z6T01G͝$},\"76Lˇι ؃Mj&yV+>gN-H]]nsOMqa>J
»+:6UErHxt|xƨn3CNu` vZK0&>`.1ք_.AQKބP^t|
NcjZ;ǸO
9N/9ZmeqkjMĎm^(,+PQ3%eZnY3\K(C.zw&J[ΏoN7w≧FߥMKLɦĈ$`iC$,X|	yr?OO[v~PErɍrGuǦCūQ[ǔGP	Gɡ
][ KXU2jM2H*֯bxY.x0T,f=i<lkft5֥$fLnrVTAM	gj]jG	#퇋;l&"
D2EyA#<Y,30rrq9û;2ԻϿد6RR2K3PpqbB_MSjۀS`(8/-:/l@lFm|yB=6_䮷
qWBـwJ$>W5aȯVp}fxJW:{]H
+IF$T]]!g㡘u~
Aq-!)vZ_#E3Mc)߫r߱/*ɣ!%par+7"$6nHVdן]{bKݍ>òx)>8l(P%&̵8d%Kg
G-]Cr~4S5
]۶,HfZAchhPQb6z~rKV,Y!;(Am壻ҖeMIl2R;K>^hMݫ}"F۽;AYؿ㨕LFo8u-9;m{wD&@HuHǂfe/:N/H	r}r=9w\R'{O]nB?,|>lMсxEwky1{ґ-
@
Ne<7RoGӌa$2G)1^tXU/p^npTmSz<ip2wlݽx~
#:7^;QV8rB\~
RE-75qkڗ9hh5v,6K)*^+kzLa5H(	Q42$X\Iw
ZdT+k#zhf]g@b9BӺ}N$T؈ߏvz~	£~2{qqb(\ޮ.E
q78]v#B&SyR^(o.&Qp~^KePv4uG5Eo~zyw.قKJA2~I-:"VDOvEBa+wMͷkq,V'ˣL_RR#G/c-MV*]Fm/@r'V#(JռӀ/Vx㙧˟o޽<yQ{,{ 4a*HX3Nj2)NDQN䎟H-W{#BC?x;Q-X:H5m߳*CJ*-7s|	?RcSMj6%HH=f1kY/qa${ t-G\~_i.((fS4"sՠgQ-oۇlS-WfWnVdls}~mV0 fDA+"29~_4r
7~|G9{5 eJe&ːh @oN|?.[pQ'.;H?aa7e~s q[u	ʔ5!&r0ca;cm=EN5?wq
on1G3=坷Lwҡ(^{'Qਊr]џÃWo4WSm t@q4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Zْ6}W:vjQ[K;;N2cd$)-+_?bؒKHw=wņ{Io3֔B5f)ll-sլ=b	UnXSHfFRXNyoh2Yx\^/o<A7~2d2Oh2hI?
mMYƓ'}${itd]z%;UeV4[R~?g\սJjyȫm_Kc.\ymXB]kJb)[r	wTZ_ϵ;D\F*c@(YVhiG1Q
2]FlTbrַ"am-˚ί vz,YRbLϙ񚕺f$9oY9Z1 F:.-
+PFn@;F`iS֪mUɜ`瑛HYfU+W`0	BsFW.fZl.a@$ӼOKGh,Ee4_[xawg`&<oRL/ؿ^.#ZesYKV9#k@pl0F;l\Ľn_tIasVQ|=3f7hz^	9KزA0d(%iQ.8=RrOlL&Cdv#*ikD˒a/@RQBy}XYBёٛ&Q,Q: Q%Hx.Ze2ux2
lU>+YX(k{@:_^-pbM8(,;
$qvF"
6^!@}jf[Հ֦:c|N	ӂ0ƑsNN[ *}FP֬*D&1 g	c/`ǼmpŌz9LǓ]]/$t ɜH݈6W25[ͫ8f(jDnʓ]Pk\ߵɉg:fyh		E`B-#s@6ZeUc*IKYNK:y w҃􄛒}JXe$<g'qi,4e䞼s e~tJώ0AfR8tV:<TMZyG2l-c~j
C{WYFADrpB:[ˠ8=\I9iHcdnV[2|$ꢈ@H)&1  & 76`(-+B1K&Dx	 {p{x)	H)~F27|Rd̨6dPk3.-<(ќI+n~<Pg͠
\-L;H͒ok_+I0Ll`_Ld;0Irq1Zd1C,e%+n !=lU*qأPHq^K[[Cms,Uḱ\6Zyńϛl?]>~A(0Wϸ\W(M`Aqu'_뼁mIN]c,Mm*`KCA-
v-hdQ@v_'r֜ +@|4o[[@ftlB"pD"C/V(ze\ņ/W`	LL+ 9CHFЯ}o{ʬɨJc.`[)LZoxad#~Qju$P$t" d*sY}|P3&\lV׾Dbs	%ZdL|'aEl{_G
3	Kc??yi_&q?T2۩Z4դz4<xnkM |>`|0ߔ@Qy$M4']{z8M7fTfv9%OyYz]pRYeAd]-/pljp!$u>ӷz7qB2F݃P'}fOs}ijSWuRp%ɗRF)L~FX8joo~dnJ_uC?uJ]&\Gw& mkX,v,AF=(>Hђ.qC٦ۄOa[cxO98PHrvxyS-C;@BoTSCM2O)snjO߼ˏP
)L
 @K)MKb6
+i@#s ]:%.8רuco;!M^FkٚKI^'
jMRy		swbWRw\
p-\@i<Rg膇(x3h>B[=j45ܢv;@mN(tu[gMGnϚ.Z>6cEChn(x&ZN;^x@i?sgq*tXzX8C} RĜޏw߃Av'1D~Lpi;4!jEr}Ш,ȼf9j-o?.<u8K(F9yIMK}qssuOeuYyi7A
s( "bU+J1¬'w	prxF(d2ފ6a7>% hHC}t<.'*$M0z'6u=n͹oGqjr5k\aE1r%*5WFx:G.OvoYb#?}Ϯv<<Kǳtxxr<GN,@=rIcn}0h/jO0esW*Vvl"T^e&l}u؉LeROrH3չۊ0.uMR֟DU};<=kR~)&	5T|pGIM0dw0]qft.09toA4&4cQY[ݓlW8"&hQű~7c<pN$w/wn5oy
nz>4J/v梱_imgԓ#AZcҾc,*|Bߠ=?		zvbpd 9~ @4%hawaMC5]}0ӵnx,ś ߰76\(nxK~We>+ܗh5|?z	#                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         [koȒ>]v6RH(`ȹ׃dflISl^>h}OUw!+N@f`KSz/.fu^~{ESnd~x&rMQեv*/T,>2uU2OXri-ǅ?
+1_]*gF>O}qvLg"^g.p^ FN8?f=f#WpeLJ(LVH-TmVB*V@>s<n(EF@[	N#R.U~Qӽrwqw*ayR҈>J3:=d6s݀Np?rD(Q]AFU-pOŶZ)1˴SJ{UUV
 hdţ!42[,
|}"JlZ$DeEwRTM)EVG8guei~WFXۈ&c1㭨ӊxL618cp׉w1BYq	WMb)R]Q*.Nxƪ{iˊě/|f%$`3AMܥyzݺlqcRPx|Gty.K3eHSe.l¹:MNai=ojEIGWrQҚ7uf~`8"V DuS	E
泠l6"0dh;Bo6A4Oka>r50IIK>8X<7vAjyP.0PY\+l)̔κmZաlL[/[%\9_`ʬJ5{#U>J:j"olFF"!RF\P
m|ㅬcRal}!풠jv;E}uEt:6ne mo*KQJɈtHDLe2l6:yneMoxa3/|J#Wƭ`r"r<٣-*#Ya.,q4U	ԆW _:ά\ׯudQ3؝&gV5YB_gMܤY=!^`o~,cw/߿n~yXmMɘnד$MJ57mt?:gsW8T2BؐyRnD	X;Nh4f~|kჰ9,<)šK߻f󚟙]Qnƨ8;V
1_ԽYH=l2
SkRM˱#,X"R~EŽE+
*kiwL41vR k$8WÑ;yl$rt/J_w1F2ZYy$^O~Ө@
RjE9"QS#ȯi%/ɭhMnHkzy@>sJM&N:6\R-o "D$S(7i8a#;S;0Npd@\cfP=!KKۨajy)vQT|pp
s'BjJY=޹M; *Z#f378;uY-&c"O\p"j	2C\g:̈ﵤժЁ.WS,ثx_.6+Y0cL}#89
''r&]\ut)8M/eL7
"ߠ?~ꌵZ"uY%g%6s(x`H4Ey8L}X!c:g`Eܐn'.~ gi_.ׯ8h/o?|r# ʝ
%PtQS}qp:sRW4HjPkƆm?pe;
zR#Nfj,^avb0|4I᝟H֋;c$M&ڊ=ۂe%E-2Qi^RZqso^Qò|zZF5 [VD4q	Um=wzJZ;I[gT&wC
\N9"^ _	Щ&sG:sgڳh{Hs"ºz	$ýxm֗J3\*Ut`&fk4ej$9/(79;@͝,+H-䄷)*V66QD|ƪqN'\guEZόzxmY(a{Kff
ny<0*Aܓb%WALE#m.
Ea w{OE[`=K9a&YO)\xGDU!`ԗ'%(MJy3rG̀HMiN~02z{|i
0QQb`&vL+˙DNa9FXqZN^zOy45q`/_^|:#PEU|Y?m]=?LfݤptIkOEH;ר[癄sB`Ş^r HN
UV,8pHY}Tc+YCd&:ÝߧqbS4 k #.]vgaѕ 툲t֎t2<ܢꋶr;Ҕ_sGTW8͡V
q;SO"/3wd/fZ:s
;<ȃU}tk\
Vc*:YmD8_͌h)Fx1v[\YTU'$ӯp1)Nc?/[7Nߣ/HwQi#ߩ$]4LZ[h)B?^/Tܞe^n(
iF\EC_@gD/i\R8GLNHwIZ!?A0~SDss@7mN>w6:2>uIc;IGM!HfX)|$F-<\fjY$\A6/ttkRd}pݹֺM<
t
t*ΚH8cEZ
ɢ`2[bBƍ"aɍe>v{e3WS:Dl_A8sN	>\5aMKn,t϶ +_1>-QE*ZL*1\	E$
JYtReA9fjG+MrO~8Yt0XiKY /v<Q.ˍF[bSϠ+da'+{g_7QhbWPV+c|iN;&[sIIC`?r}&`
G_G]J{ِ|y
B]8Q.{zTl4ٔ)^Nx˴@_a>G,;-r[
{W'Z.6>(ѹ*YQh-936=Yx67fb_pAJrV4=5k>sza"}3|mnN
},ЛZ*12L/yd(=Z\M/pK3ZEzTCh^iﱫ&iK+,@q"}_[D(7v;[EyrDnr)9ٷ(,CHc~NՒ~$qkXo,f2%q<Lеiֲz|b4rrr5~ gm9mCNi(\3`q ʏZmÁM6$dlM>)<jP~o&=[U.޻`r8Vڔ\ϊ~'5%~j0"gDGrTpo_Q4w3*sT+:OH?|3PױzC
:ʺ^ؾF/B	;?\d0Զ0r!A=,R^-u;Vf=';X >'߾OL6+&&ko+ޠ+XLucH8Ke_q}Vs}o"SQB\_~}I
ard*,QC/N7 ;B'ĥPEI7t`PgNmD9	1 ?}DG)Y#sQv>7SIL<o!
`VfE0vƓd9ND_8Dthlwn'~s~$['*M]"?kRy	;jr*wmU>޳Iz)G7gz1y'x/iz]5ܽWG_st1-㳇O;;]7>
^Ys2LK7-
Ć?ٺ;lLcnKaz>}5҅EE{>ޛGm>J$6́^jt.!ug8'#LQ\^"]Y>*\::94}n<ȹt3&f`Hҕ12%Z:dxFΣA9l^K_~oؿmjz򃃍ۙ=RzA&pa ȫZoƶ`GBs!SXZ 
U:y2?L?Z.X|Akz2e/hXn^u[&gE3z<hl?bTk\=_^/j
u;xtAG|ۧLؿxB)n9w# M8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [oH}3ćHQ9MFl8ْzL>h_U-I&YH(GuW_=ԭ(8gn\\uZo[n`M~(W],9kD2]޲ez`|Պ%dfuf6xlX[h]-SYW`s#vn&qMiGɜn+
dш0^dlPբE6`)/-[
5"IYWe,-ZC0;U0s%OaZW9ŶE-x0,cҏѵ2􂫺DXF1|NǕM[*k+(Dխl_fEn7ik^uWl\*/{$3BUUYlW-2qsL9y\U=b5ÿe-Eή6"gY?`Ql=+ڢd^7v8ѓqhAp9
yt3fD
֊mFZI8?<Qyuh7eUe;[\^]=y~Ѧhuӷ
hBACӊmF3[)}[r-Od
}nm7.YX!$zCg
ר"jCcs8bZ3Vs3P42YNC̹>K&qhY11DΰgL7xHՃ%Iڒe$jR{?*էeu`Qƹ\"n`pci.xU#<S2N6zϯ*!ly[}r:/[^^5Hl@3QSPS߂N?G~X3ZT^jSѰ\IWբ\Lcm; ktVγ_%śg(y' L(Ö^\Xi-H?cRD&rv@ 1nmXٵ ƇܓJk9H7wǞ	l^Դf+nry-QE&qfx 
>UV^SUs,s](s[B{Q!̟'<̷0FpUؗc+bG#ڍ~It埙kԨ|zIr1B&A{zf1"
&QIcRB÷dkCPǓ9
g7v$\?du$<t6#Z,h,eIqA"ź
"
 ۠Jx)`"Vy"d_<T*9ĸAnJ
֎돿v ".%xf1.])gY4}7v$0kf r6+0ksi[ MxsL4]4u;h-b'jq$
=ٴm'IFݝLBy&=	":e]qؒ,ïqf!ZF z
>p
ly0z)۶kDl 
͏wdfON!M)ëP6Cu.	&C%A[2aZ|Ʒ 0آ 	5
3-[rz'NKI@Sn}fX#p9+kn5oXl\WE^VG:;8$8L7`׼+F$PSgiy:&tv(0T)NcSf+N`8@h]~{wV\L'\!Qray3?ֻqC  OǸbR^5 QA
u>s#<3:Xzڔ X렢(0
;.U-EOصHEσuѷ\	x71P!gDH
^ю_1-W]^aЄj؊t6ܝ]#i((A(Pʑwp:v{^k_rteE)H$D'D#
P-hL09 eX=!ؖ	G񛌄֙$Ee'|p)
pDr.
ýƤJ44H|
(2~3|~w`ޔK(y9A(	_84lt]7}T\=BdB	D1JG**2zMl(Co; 
P	kᮡExc\kgp
ͭߦ
̌J
#J-kp9mWz$UQ *fh԰j-w'MѴ;8pG{'HG#zn{DsZbtLY0vܱ,̦$_>ʏY3Q8O|rww==?4yHHEѨ(MD|L=qhih6x^nA[f6RJT\O(P(7Ic½>-[\o>NeA	byUU1
c	6\=WJH7ܲ`̳>y#}C@ܚ9:2MN`cj- P@g49EFG\iF=B%ԄB2v';K4Yb%T!3EFT.QСWG32Y dҔ
ezѽdkŨ(*W?|p^ؽ8Z)a jU""sp=^J3.LOt4ÝUdN oY2Wn7J7#p|)=
98_@L'"E+D
G6}=$XkPD 
7Ve
5T`oB.Q;zJB³®J+L{F:ɶO֡Ȼf@,
k6DE%n2n!bA09B][^?̳uHGn5
ٸM+ٿqL}c(g<Ssܮ_䒅;y͌#ddMUΔ1GUyAWMk.k{՘+a[>gDnG_'Wv;3W2WX5=*ߙbi:]p<\eV^Afw<Vki39>}!p"'kk|<v~aj/W@@_XIē@k![I2`9D%<1xd
vy{;$
"KB/ڰ2lcIEAK$T#"&CJ8uX&2
g@g|f78"'$W(;I`lje'~4KPuЏL
h4a;7F!a}rJaV5r(E|Dqb
=d:;~n46l-;	a6<Mdfr9(YL?lڎjEBb.TJQWФV	\!FgIϺ>WO)Җj& 0
́.5$i'jM0gL
mB\n
<2+ϛAy¶ |1\<Z2
Fת"Z]GG{^PǨ&X 2.7c.`;Q
rTZ=6ȟ8{ozZǥ>_O~xc?O<z8vX`rz玎nυxo7*䆼 9=d:5HŻW?.KT	(#o"զpVN
QI$|2fne!V<JWeSRR`У/DPRv[ MlP
HtJe7r6s` F{=Mv:}]~i6d{U^HDDJ:o/\T->}?}B nR?M@'~ ˬK@PQ2nD]X2݋^Sp&Rf: U!r{[*E$x }Un*c.oeʛTle%Vx9ǓY~l["-n?\QnUg(.1i8:T@u}ue
-t
e@rϷKnaaQE';b9P"ʵT^5-O.}JMw..#@!qtR׬+A5*;
*xI
dB^CktS
l=$HMb2`:r	l? 25ʲ6|KѡJz2=r2~Yl4]ǇWdpL56(͑SN=`\U`ZH%JsUyD|Q GOfSO[T
;1ڄ?Trd6
GFlD r{b	HFe=>9+6;# Z Q WdTAЀ0'LF`K!it8Vc;Qlg/| :	3"NjB	)@si享O>[ěǾg{AfÒEj|WR=LQ1Ŝo?)'e5Wx~n91BE>J}Lh8pS
B^c0b`ϝrp6V+6ױހR^cߠ`F\{\,1c滛NYύ<Ӣ7={);&c|NȩȂRct}v yRfK𜋝slQyFG|}ݕMjqZڽ8THRFgZ/	鱍ڏ!wnJJdQ/yJU4d%CZPA`$SiW,qiE1kUO
\S'm[BFԐEт@3FUO53So#+}Dăv}Gr%}|]~}0
;ԓ*JR&*y?O? 6jO`2{a<< ]%(BjUsRt	$Ś~G%@#l+;Xj=FЉ؀ȧNx?ɉu2Rפ5I 1P6#d:$iާ"+ϩPݦ-EH*
+#upH,69Itd SBG4+(MC3Eڑ}Զ0^FqS5Gv֪V!RNlvM(-p\
UPck`O^g3(m1~jF+;2$4VbⒹlݽxu?Puaz̤ǅ(FWN oMfz%3/3?dT>C^T̓SUWyw͵Nf9/ 5smmAW@%v[cҠO.M&
QcΜY.IY["rw.gN(`N.jU|C0Bu3-TRdO'1DJmK_j'i<>7g |GЎViPu(鄃bIi/l8cE=&Odr][3iIgKH˅*m$uW|+P7t}(35D`w~*a`>U[B۱59R+elþQ"vms/уb8N*uYrVddQPNf [JtE.~TUB$szZ+PoGIO\y7蛿x:'Hg!}!r38ӯ*mZBډS,Y0B#T:dKCO8u
ߎuASSKXj +ϯ?V> L9DdYg0RfJžHt8YǖAZ6T*U=a=y|2sfF٦x5Vk?b.;5ݨ
l8 `y挿Tۘoq;3oˆ+H6˨Bw8ra[Q-pex2vF5aD7sHbhY<w)+$7_S)lK<\F<(N4|A?6%
|}El8/EJ!p%Qw0NGC0g^5zܞUҵ=׳%%ӠL'?\;ߜ*_.	5cŀj*?e-6~?}ES;~:#fW+/[jjzyExQ,7J!bsqiRwvrd<EϝɖD_k^f0ׂv^b(a[%V	|\/ɏ+`Dŋjf	15>)=(NeadCq̠-D4X0;f0HNO]^kFGM.ϛԞXV_NJ85~Ԟ~QXaZA:N{Xɜ,peA|>xC=mP򤧞r\:=e-I"G^%]A$B1\>ٷr?PSze C^Q+#0
ד*Fm4]]$ӥB"xLOi1M,GE^fNnbAI~1	}=,]ݷ'+?JGIR>,	P#3RUP5NgFk@&36pP!Mk~.W{gL}Тo((haZBa8pN+
ִp;W:Zc} :j\ M\䁞F/+Ɗd0H6phID<rʜMtn]NVLiےbzSR]MkR
%4;&[o
´p/ʿq(r:0>Ĭj.VYT=fӳz[$v9yVAHhQN1S%wKR+Nq[nϡ.?q |
	΂(z-Nx8Pyg}%ש!nQ/&,tji;2t\^]_}`6D(kLOOK9gQgkj.NԒ(w%aYPN/eftZA豭Ra=kɅZK	[@:87z1jL\3ik"Jr䵜)+2@>LeǸ8xz,>^QkȎF*zX
1(N_TV˚^@g]_No>\'WKYEC2.j'aNp39%ؠ4}ضG[ΰ{v7W6a&P8>OQ2K7ypN\CQHۄ4B]b$~+YKZux}b/&ᒧQ/yΞ(VaQ	Oo%/cqPaD/#3DV[`pG3D]Ћ@-+^.#豙(W?K;<daCte.w͗jWMdX'6!S{yV                                                                                                                                                                                                        Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: ufw
Upstream-Contact: Jamie Strandboge <jdstrand@ubuntu.com>
Upstream-Source: https://code.launchpad.net/ufw

Files: *
Copyright: Copyright 2007-2015, Canonical Ltd.
License: GPL-3
 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 3 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/>.
 .
 On Debian systems the full text of the GNU General Public License can be found
 in the `/usr/share/common-licenses/GPL-3' file.

Files: locales/po/*.po
Copyright: 2010-2015, Rosetta Contributors and Canonical Ltd.
License: BSD-3-clause
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
 .
   * Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.
 .
   * Redistributions in binary form must reproduce the above
     copyright notice, this list of conditions and the following
     disclaimer in the documentation and/or other materials provided
     with the distribution.
 .
   * Neither the name of Canonical Ltd. nor the names of its
     contributors may be used to endorse or promote products derived
     from this software without specific prior written permission.
 .
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       #! /usr/bin/python3
#
# skel-ui: skeleton frontend for ufw
#
# Copyright 2008 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/>.
#

import ufw.frontend
from ufw.common import UFWError
from ufw.util import error, warn

ufw.common.programName = "skel-ui"

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)

if __name__ == "__main__":
    print(ufw.frontend.get_command_help())

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           # These are intentionally not executable
ufw: script-not-executable [usr/share/ufw/after.init]
ufw: script-not-executable [usr/share/ufw/before.init]
# Don't complain about 'ufw allow' rules
ufw: spelling-error-in-changelog "allow to" "allow one to"
ufw: mismatched-override typo-in-manual-page usr/share/man/man8/ufw.8.gz "allow to" "allow one to" [usr/share/lintian/overrides/ufw:5]
# Don't complain about the ufw-framework man page, it gives additional details
ufw: spare-manual-page usr/share/man/man8/ufw-framework.8.gz
# Don't complain about breaks-without-version since we want to break on all
ufw: breaks-without-version iptables-persistent
ufw: breaks-without-version netfilter-persistent
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           [s۸Ӭz:rcP'
EiE Id{L;$;fۏv:x?8|߫|u{X+v_j,}Y9d&f:F{1_S$Ʌ-Rn6*Kdj2-MVbb-jʥ-$S+SLKb4ު4ǵI5׻Ljv͆
j=
G5IX T1qeJ˵MnW󓖉^*-BՓU$bȢJJfK<EѾւ'jk
3Q)RKygꋬ5vdn_YԔ=0~
?g֖44)JO46yY`#eL'kAhD+RhIcэMx]lYUFI>"өKpl4ydwX>ߣf6M6쵈fq9(e]X1-^hCGǖ?e[_KZ-A_F>*aoW&jT!؄'V~].akdS
;uk RY1ɋYet.n2p`D&g+L-Uj
RV/~grt?wJ_P`6+Rh#Pd}CWOJYD>K90f
EC@䚥		
ܚwr ;;lʶ';RW@彘/
NQq(NKbP$cDd[[+J,N{Y%*`
x 6)ϸBp6:+=L"_ZT3?/3+@p R9?pPĒ-)PzX%:4-Jv)<-ʭ}Xp?s
R@It
@xl_B. iֺmjb77Ɍm1RƩٸ֫ֵxGwAAx^ V(ӝ4<	L( )y
*$BA-x1TK~p?	&;iw7`QQ̔mZ%RGGi@@]h7I3Pubqry(t[:kGu~Om (Me.Q!DB:,!]!PppXZn-`)$@ޒ.-
]\@m I:s|UщPr5
+blrvj7PaL
X(+kP
)6eND	Rsn oGt)rcYt<MU9N=qj/!}}Wq!ީy$Q#4R6pC1[Q.eI˃g$n)`=f]L9dT1XꮻDfe-uptUv
:q$')t{yʣm:RNH}Ť$ F0'AX?` }nѤ) "a11;^qZk4L9^jKX.*^[
 fhFeGE,o vAf|FkቇVGGm^.Z#)4`XCKYUroO]+c.P4HB'Fi|;K51P
E &0.RR Vicr]1D+C; "-*5]AH_]h2>#`!rW:$b]!e*!]|Z9?j~iޛ"n׿4S!]yd?2M&}̰x=Fʖ?gNyڡCpk0BBǔX:SX[皷b;*
3N[eH`/DXΔ:M8;Lnx7NB6pz?gb?'RMZqәrCoM"/=\4j9;&˸Ahw$:p{Vht@,EGjzӣĀ+(hreD K؈ ,$PeŸcC.d Ba&k>
(C]?Zn
gD&28$(CCκI$ekL_y '[a]]
wmXX&;XmLjW䀭*(լC0HQQBjJ,Bz5Cw>Yoǻ٧`d|73}x(N1t2$ּ	-"s2\_bvkG `w^vÏ! q =H?2k/Ac*~iauǚHa6?BC?+@-oI Gh8/Q,$bҗW}͓-lF	f4GȨtjF6MqDΤ"_߱A$-j;D=c]
5ۯ/Id:d SnYWzdoxx`NGNBxoeKJo.jBӔ|K0I<`y?	ނJ4zWZ`%eO7dQ*Ya:dȽ WI.Rwz{s7 8˓,[(sSZ*4zu
__W|
+m$\?0Blx^!Q=ʅc]PGU<Ee#,Wo
òֱ]bQϞ%.q׋8
*6+5s4>Ao1cL#A#oRA}'SM
Tl !~A`ߔb:ٮ8lSk >@9sg	8
pS<}l|ۗ+L ozl~F`FY M<aX5
~n0T1pk&UCMv~x\^\1X,5hɅ 4ͼQuL_٦ܬf8_2T@Zp*WzV/jӇ(G!:I|q8<U[<r4j&R-kG@@4
2`6|+tRh$8^ ic'̎.%5Cd	J}yTV&^>o[^ ?tI̹»u6EJ*U	Fpiaߠ-b1Qϰm&N4bj8A!~3SMjcW_Ϧ:
5;s0	|up	CE⽁bؑ_-:.҄D6}R	ԅlo0
Fk"艕b! B+ig?t <&J oXᱏ~nX'zU틃h~jcrҤٻ$

aƆV
5DK'R&ڸ~C0:cEfK<9~^)u'GVnfTŊG 
: 򱍆21
nt8X>oK@鞷H2zLgIa8G\A
>#cx!{
8
r \FmJ~uWR<c҇v iu/u߼n

Mц^!}	$(֗s<? l:
!bWy
cgtx2寖[* ްzvB[D~H%wOh?ftcR+ N8ʧ8ΘǏѼ0oX	?B~.]BLbոm_g}]}4*0M UlC>Ei\BXb_-lF u[u|M¶Z8t~}?y{RNā%}œh(L ]FҜ_ m0H#O\+=87%m-x_++q*+}}0B$Xy)OH/؝Ό)'> 46uhWɟ0'X_~̳פ~2H635fzϻ*G]rx2t*.s-<Yq|^-"X?@72_\d	혿=GA0ø{nx欷w`<:pld|s9xO}?
ZCzx%'oTf3'$S1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \ms8_@{K=Til%;vf%Bm_)^v3Hh4n44]|Tp!\RD0y=RϳB/4|GT8Lqa^$Q}>;Rt$ce_e;=Ǒgڄ
4:Nay83DZ
On~F7oÇaTE>ohxfp(.$Yov<
j6{yL7JYifu>7&#fk6^N<f*~64+kZ/E]o'7׷o7LRJLe8!]}& k|MeL] Ja߇!tss{}}v}E
..K&W_=N~N-QleDiʰu3[|</%>Ni,t@$TS#+X(Vv9HELLcD(o.0҉5N٫:Bj`PʘdRXcZh65d׸j:/@IrG)tlAEYTzE|W@.+MKahJK} f_4YVlqHN{u
@u!63<1yĳ;"&X,5*kGXFp髬
pzaڋ٠;A1B&R^>3x9Qwy  TT"1I("͊rybK T%"bgr{U	m58+doUVfYY)VHòqÄA12ÑP;aw`[_ /"E.31E
Gg6Ha/[F
5)h.ʓzj܃cXqˑ>F|InctSwbIӡK\-@4IXqǚ/l]m9q-A2#4
т}D |ݡE*KB-Wi4@u &'ogWo]<nKx(unV *i	FmR !htH|
yb:$Z
hH:aT)M"tPLOq).Uܳs>Vdnƀ>٩f;B(@b`ܒE9gzӟT&p4U	7I'67ok<Qz^fOk#Z|\^|65/me;1Eq
&Mg;>4h8'p;$SÒ"4TBj_Pƀ=T^ok	"l` )6C0㞹5lX'縨
,%wNiiHuĦ @xX߿" G%㲬 gi#?/[ G CoZۊ"|DHԦr1	z)?xfR@q7bMf]@¯B=IqiJFvySQY0RTѧ2m~`?(@҃!Zͮzf=VpaכnA ̞6Ry(pxZȰm=ckQxţ+R),(8:wU*YЕD
^cWi!BvRmkGgtAfwL5Q?3Sw*t Fkͥt.HM;L*.G+!(E*'^DM;qtXV&b I((؀	\G8]V퀫9H	0Ѣ9Zb>zZ$5
;pQU.Xa9n"jД@ZJz 3
K6*נǿݝCΙwKΊTTUTdWgjHDCvy6 1l0Qy
"}wމ>KB1&_'"̂6i4=`%Cu2!*"_b)g?"TW2aJ[Ci{N^  I{2qN_tFmfLÂmY78,G{~ϸj`p{{zn_H\DϦZ.(QÐJ= (*7:ONzva	K?Öor <X{H	CQ6B3vjJ^g+Vn0wEBd<qj%}3D٩;
5"R9 1:k.$zWiM&NČ) 6bҍG-0#7%vG4#PmH	,NGbGSu!1҆6 Qbʷ<E6qǵ{t۾kCW-JWuKϨwJςkW z
40Uf¨3@Ǫ7	gRwKXDc{R-;0E=`7gx-P%ƩrE,UD16Xo9oA
<mcО7Vl,'4ؖVJG
MdQeGãt8Dd;/.S>SEQyxL )ilueQ2!hsr-in4_ۡaeacP, 픫rV%#LҢ*^<M<?;44a-[8Q-جAdjz2Ej@j9,7ܓؽ-%'9pEG \8#{[c?> x4p'K@DxPI:zYĳ '{
!nY=-pOT(f)>7B.tAb
VR<8C EA!x]5
6˼:F=1$*Nwv^^^Fa0#_ H
Ngugц_`'.B\:a1Ci\lixAq@eAp1;St\ζp1*!$B@ď ZV=j 0@
HG.Q0Io+a]-x2`-ϑ6h3*g,&q!\sl
N\QsEX+jRR*0v{aJKʣ´K0X꾭Ga;vA㯤@$__+IO (¹hg8aَnOvY}?gK.Ǖהz=Q
BҀ(nNl-'eGGcOA{Q:LhbMX-yz4)#L,ܒb=ԖyԁK`{МZ|#0GK5B,^l)#rv*-<hdQ*M&TYKFRguaYPtv-Us`Q^[sJJh23{GE=%t	Ee{|萪Un?wڇ s4 6:egjw*
||R@@zH],qnjic1j:dńM"Q=FCX0XnۭF+1M.k[.*\C\ 	QU(ؚW:h<*
Ԛ~lшW&aqZב?>>O
G$JM2ps9840%|Vv xʁ.j:xH]Dz{ޱ	RI2=P$f{8>y>bҜr'
eeoZ6&v?tǧ}	ΰ^s
Kyo''j~%}{.-
1 ^Ί8I
(t:F+KhH)J*'Cao\"Yޜ-(6mJEwpŰl#"v2J8VAWg )̌0Ä)cAV[;
)lމMb /#T䓥3CX%)Xy.2C"YlS:>jǥȦC7֫MbD&;Q~F5`(.<T0cp. B'v9\	0s77gc
T0yK70B3<rJ"5f3QdI6Z8U./GXcS*iƛq\uHs=8Pke
Qg"h*Nrj̬J].{jVLzO{;[zH?heiBr
ly'ʛW*
,O0d{si&Rd{}D)B~Zk͔C퀿^M5ĄwV_cQF:kQ!,aˊ"
U-
,)e}MXB3ơi}3J/??ȰZ}w[H2$96k0,
{ڰRWQrbCugl5HYkpIo9Q_@KY{,Hs2	ALY~x=
S\w\ǎXIvoǓӟ^
t)M1&rqsT7ZC|~a=b|tL~<'cr30ҕ88bҷ\wZ[PJ&d[Hku!HQH>m!@Hǲ)Т: Nɑ#a?tg^Ġ:W 0DL0@_1pݘȞ.+'YXik%,f\m&LKL-&8CYPTvl*䌧ޔCoKojH#O+O;Uvaa֬.⊰kO!+4OHɊ|dFtnG1ÃF8&1&̠M=үg`;jZ*bx_fQ]?\U!7
,KRƈrΉLDRs<QVUE񎽖s&.Ӓl`w'Jdpv巸?|(,6hlHWfƏpF6
p6 T3_:;Pˋsۉ![OvĘ86DnjN/UiS`y`#f&v낳qq8K
oRaRlѓ0$Uhh  '<:m[k[+'oAPޝ4BRoxہ3իNsNu4iIHOB>(u剨M	^+3ۺQ1	'2@XRBlWr;c0Pi
Eh櫽<`[nO×+說s:~h5Ӂ9%_{Ex
'V9E܋hzd#(Gs?H951)`L_۾aih1ZflO= 5#tnr)oT4JsW5ǧ<fXjn3 ٨CrESv;'D	7	&4ȮhV^Keä&9⚈(O)v$t-ńعf*>T&Z]`n3޿1n|=E#}L<coB+P,=Ϸ7ۄ}7y¥{,]23e3,&g)
˨A*OL: 3NC4
3/iɩdӜX3Ft 0iP䝭A3u]m;wH 2\`wZ[w2#xBWiE\M>>s!+<`Qhߐ}7k
MEZzym:G^&73-sGm=KOzaBH<[B
NIg341S!K^3[dC8 UWP9<6l8QGm	̟~|QԘ.fM#`AoQ"OCL&z6,n{e?3 [
iYSo$ԖWwz럦yL^;s]ўWՊ<?=OжY0r]6Vc~IoO@HrAcb{6+œ^Z1+cKƤhgkFRQ'ޜ!-='1~CWMJ!A Xȕ^-q/2_%a*۩51,
_mbg$FAErDYSf);v"K57ui ¦ۑ7oHh08ģXoRI?a%}_owRhOK%
G]J/^w,ż<:O}W;ɨc8
0B Q]a
n𠉥:Tz;t~YaB+נt?;B	Bx^lXel1pr4,x5S)쥪>OJ
aT\ƖyN)%*zfqL4_~VT ֮9PTaeFNs֦ծ^Lz`at(ǎHV,;@s S":Wa;n[btmp/N(p_S ۵BoKnlbK홡ׇ'|gfvg߬Lz+8
7=pAan>esS'	iՅ[?JzC򣷤7zP\{{:J/eAaPFVx|+bmSci)mR.H/SYeVUtцFπg޶i0@~nMennw_]hEhd{qeͣgh750׾祻#~@wKѶg|ؕ,_Arr<TYE#<˓R                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #!/bin/sh
#
# after.init: if executable, called by ufw-init. See 'man ufw-framework' for
#             details. Note that output from these scripts is not seen via the
#             the ufw command, but instead via ufw-init.
#
# Copyright 2013 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/>.
#
set -e

case "$1" in
start)
    # typically required
    ;;
stop)
    # typically required
    ;;
status)
    # optional
    ;;
flush-all)
    # optional
    ;;
*)
    echo "'$1' not supported"
    echo "Usage: after.init {start|stop|flush-all|status}"
    ;;
esac
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          a7775bfb75ae1db0ffb864ffdb8d1a8c  /usr/share/ufw/after.rules
64b0c46e974d8fdb84ae3694da153097  /usr/share/ufw/after.rules
3a51c36bfd12a053c50860a6b332e2d2  /usr/share/ufw/after.rules
4ccebb1697335dec480cb1326d0cb018  /usr/share/ufw/after.rules
def3ea0d3a1e470665c33ab5432d1ce8  /usr/share/ufw/after.rules
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               0dca0120ffb1ffc538b1bf83f69dbbeb  /usr/share/ufw/after6.rules
b38e5acdf170f90c04bd3c644aaa248f  /usr/share/ufw/after6.rules
5ed581e9a4035a58c768d92d81a0e7ce  /usr/share/ufw/after6.rules
5d543566c1e643829452cf7c06869ea2  /usr/share/ufw/after6.rules
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #!/bin/sh
#
# before.init: if executable, called by ufw-init. See 'man ufw-framework' for
#              details. Note that output from these scripts is not seen via the
#              the ufw command, but instead via ufw-init.
#
# Copyright 2013 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/>.
#
set -e

case "$1" in
start)
    # typically required
    ;;
stop)
    # typically required
    ;;
status)
    # optional
    ;;
flush-all)
    # optional
    ;;
*)
    echo "'$1' not supported"
    echo "Usage: before.init {start|stop|flush-all|status}"
    ;;
esac
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      dd5050aa836d8a344c756367865a7c17  /usr/share/ufw/before.rules
8cfcfe296c7da50940e06fc0314f7523  /usr/share/ufw/before.rules
92023757ab10549ac2bba7c75b6000f3  /usr/share/ufw/before.rules
e5f58e321f38dd7534380937b470c928  /usr/share/ufw/before.rules
e30217e2a69b3da17edaf2b54374fe4f  /usr/share/ufw/before.rules
8e482ff92456fcb9ea15ecbd96ea8cf5  /usr/share/ufw/before.rules
56d63ca8194e54030efb54141f42b32c  /usr/share/ufw/before.rules
5fee8ec1341cebdd2d20c4946ef3cb5b  /usr/share/ufw/before.rules
ba34f926d08b14b2ba22aadc5d077a5b  /usr/share/ufw/before.rules
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  a7b14bf9705a040952d019f424cf1dfa  /usr/share/ufw/before6.rules
1fb72d56ecc76dcb7069ba2b842b50f9  /usr/share/ufw/before6.rules
ad9220f08e0fc4abcc04b06d01baa1ec  /usr/share/ufw/before6.rules
9cdc37360d39d2623111bd3190d53839  /usr/share/ufw/before6.rules
328286ed8c23b67cee3e5c1bccae8540  /usr/share/ufw/before6.rules
0ad4a3e3e5fe552ee7f72e6b8e074365  /usr/share/ufw/before6.rules
223263b7a9e98a233cb10ad8d62baa67  /usr/share/ufw/before6.rules
60adbb20185004d2e33cd4ffb4ef607c  /usr/share/ufw/before6.rules
ba5cd727d5e92adeb6d459710ffb48b8  /usr/share/ufw/before6.rules
3719c04fb954c26afe4e09700b2ffdc1  /usr/share/ufw/before6.rules
f322ef5c045e429da82a73cf150aef83  /usr/share/ufw/before6.rules
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           #!/bin/sh
#
# check-requirements: verify all the required iptables functionality is
# available
#
# Copyright 2008-2020 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/>.
#
set -e

chain="ufw-check-requirements"
error=""
error_runtime=""

runcmd() {
    runtime="no"
    if [ "$1" = "runtime" ]; then
        runtime="yes"
        shift 1
    fi
    local output ret=0
    # make sure to always return success below because of set -e
    output=$( "$@" 2>&1 ) || ret=$?
    if [ $ret -eq 0 ]; then
        echo pass
    else
        if [ "$runtime" = "yes" ]; then
            echo "FAIL (no runtime support)"
            echo "error was: $output"
            error_runtime="yes"
        else
            echo FAIL
            echo "error was: $output"
            error="yes"
        fi
    fi
}

# check python
found_python="no"
echo -n "Has python: "
for exe in python3 python2 python ; do
    if ! which $exe >/dev/null 2>&1; then
        continue
    fi
    v=`$exe --version 2>&1 | cut -f 2 -d ' '`
    if echo "$v" | grep -q "^2.[5-7]"; then
        echo "pass (binary: $exe, version: $v, py2)"
        found_python="yes"
        break
    elif echo "$v" | grep -q "^3.[1-9][0-9]*"; then
        echo "pass (binary: $exe, version: $v, py3)"
        found_python="yes"
        break
    fi
done
if [ "$found_python" != "yes" ]; then
    echo "ERROR: could not find valid python" >&2
    error="yes"
fi


# check binaries
for i in "" 6; do
    exe="iptables"
    if [ "$i" = "6" ]; then
        exe="ip6tables"
    fi

    echo -n "Has $exe: "
    if ! PATH=/sbin:/usr/sbin:/bin:/usr/bin which $exe >/dev/null 2>&1; then
        echo "ERROR: could not find '$exe'" >&2
        error="yes"
    else
        echo "pass"
    fi
done

if [ -n "$error" ]; then
    exit 1
fi
echo ""

# check /proc
for i in /proc/net/dev /proc/net/if_inet6; do
    echo -n "Has $i: "
    if [ ! -e "$i" ]; then
        echo "no"
        error="yes"
    else
        echo "pass"
    fi
done
if [ -n "$error" ]; then
    exit 1
fi
echo ""

echo "This script will now attempt to create various rules using the iptables"
echo "and ip6tables commands. This may result in module autoloading (eg, for"
echo "IPv6)."
if [ "$1" != "-f" ]; then
    echo -n "Proceed with checks (Y/n)? "
    read ans
    if [ "$ans" = "n" ] || [ "$ans" = "N" ] || [ "$ans" = "no" ]; then
        echo "Aborting"
        exit 1
    fi
fi

# check modules
for i in "" 6; do
    exe="iptables"
    c="${chain}"
    ipv="4"
    if [ "$i" = "6" ]; then
        exe="ip6tables"
        c="${chain}6"
        ipv="6"
    fi

    if [ "$i" = "6" ]; then
        echo "== IPv6 =="
    else
        echo "== IPv4 =="
    fi

    echo -n "Creating '$c'... "
    $exe -N "$c" || {
        echo "ERROR: could not create '$c'. Aborting" >&2
        error="yes"
        break
    }
    echo "done"

    # set up a RETURN rule right at the top, so we don't open anything up when
    # running the script. Isn't attached to INPUT, but better safe than sorry.
    echo -n "Inserting RETURN at top of '$c'... "
    $exe -I "$c" -j RETURN || {
        echo "ERROR: could insert RETURN rule into '$c'. Aborting" >&2
        error="yes"
        break
    }
    echo "done"

    echo -n "TCP: "
    runcmd $exe -A $c -p tcp -j ACCEPT

    echo -n "UDP: "
    runcmd $exe -A $c -p udp -j ACCEPT

    echo -n "destination port: "
    runcmd $exe -A $c -p tcp --dport 22 -j ACCEPT

    echo -n "source port: "
    runcmd $exe -A $c -p tcp --sport 22 -j ACCEPT

    for j in ACCEPT DROP REJECT LOG; do
        echo -n "$j: "
        runcmd $exe -A $c -p tcp --sport 23 -j $j
    done

    echo -n "hashlimit: "
    runcmd $exe -A $c -m hashlimit -m tcp -p tcp --dport 22 --hashlimit 1/min --hashlimit-mode srcip --hashlimit-name ssh -m conntrack --ctstate NEW -j ACCEPT

    echo -n "limit: "
    runcmd $exe -A $c -m limit --limit 3/min --limit-burst 10 -j ACCEPT

    for j in NEW RELATED ESTABLISHED INVALID; do
        echo -n "ctstate ($j): "
        runcmd $exe -A $c -m conntrack --ctstate $j
    done

    echo -n "ctstate (new, recent set): "
    runcmd runtime $exe -A $c -m conntrack --ctstate NEW -m recent --set

    echo -n "ctstate (new, recent update): "
    runcmd runtime $exe -A $c -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 6 -j ACCEPT

    echo -n "ctstate (new, limit): "
    runcmd $exe -A $c -m conntrack --ctstate NEW -m limit --limit 3/min --limit-burst 10 -j ACCEPT

    echo -n "interface (input): "
    runcmd $exe -A $c -i eth0 -j ACCEPT

    echo -n "interface (output): "
    runcmd $exe -A $c -o eth0 -j ACCEPT

    echo -n "multiport: "
    runcmd $exe -A $c -p tcp -m multiport --dports 80,443,8080:8090 -j ACCEPT

    echo -n "comment: "
    runcmd $exe -A $c -m comment --comment 'dapp_Samba'

    if [ -z "$i" ]; then
        for j in LOCAL MULTICAST BROADCAST; do
            echo -n "addrtype ($j): "
            runcmd $exe -A $c -m addrtype --dst-type $j -j RETURN
        done

        for j in destination-unreachable source-quench time-exceeded parameter-problem echo-request; do
            echo -n "icmp ($j): "
            runcmd $exe -A $c -p icmp --icmp-type $j -j ACCEPT
        done
    else
        for j in destination-unreachable packet-too-big time-exceeded parameter-problem echo-request; do
            echo -n "icmpv6 ($j): "
            runcmd $exe -A $c -p icmpv6 --icmpv6-type $j -j ACCEPT
        done

        for j in neighbor-solicitation neighbor-advertisement router-solicitation router-advertisement; do
            echo -n "icmpv6 with hl ($j): "
            runcmd $exe -A $c -p icmpv6 --icmpv6-type $j -m hl --hl-eq 255 -j ACCEPT
        done

        echo -n "ipv6 rt: "
        runcmd $exe -A $c -m rt --rt-type 0 -j ACCEPT
    fi

    echo ""
done

# cleanup
for i in "" 6; do
    exe="iptables"
    c="${chain}"
    if [ "$i" = "6" ]; then
        exe="ip6tables"
        c="${chain}6"
    fi
    $exe -F $c >/dev/null 2>&1 || {
        if [ -z "$error" ]; then
            echo "ERROR: could not flush '$c'" >&2
            error="yes"
        fi
    }
    $exe -X $c >/dev/null 2>&1 || {
        if [ -z "$error" ]; then
            error="yes"
            echo "ERROR: could not remove '$c'" >&2
        fi
    }
done

# check and warn if various firewall applications are installed
echo "== System =="
echo -n "Other firewall applications:"
found=
for exe in apf arno-iptables-firewall ferm firehol firewalld ipkungfu iptables-persistent netfilter-persistent pyroman uruk ; do
    if PATH=/sbin:/usr/sbin:/bin:/usr/bin which "$exe" >/dev/null 2>&1; then
        found="$found $exe"
    fi
done
if [ -z "$found" ]; then
    echo " pass"
else
    echo -n "$found"
    echo -n " (if enabled, may interfere with ufw)"
fi
echo ""

if [ -n "$error" ] || [ -n "$error_runtime" ]; then
    if [ -n "$error" ]; then
        echo "FAIL: check your kernel and that you have iptables >= 1.4.0"
    fi
    if [ -n "$error_runtime" ]; then
        echo "FAIL: check your kernel and iptables for additional runtime support"
    fi
    exit 1
fi
echo "All tests passed"
exit 0

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  #
# rules.input-after
#
# Rules that should be run after the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-after-input
#   ufw-after-output
#   ufw-after-forward
#

# Don't delete these required lines, otherwise there will be errors
*filter
:ufw-after-input - [0:0]
:ufw-after-output - [0:0]
:ufw-after-forward - [0:0]
# End required lines

# don't log noisy services by default
-A ufw-after-input -p udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp --dport 68 -j ufw-skip-to-policy-input

# don't log noisy broadcast
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    #
# rules.input-after
#
# Rules that should be run after the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw6-after-input
#   ufw6-after-output
#   ufw6-after-forward
#

# Don't delete these required lines, otherwise there will be errors
*filter
:ufw6-after-input - [0:0]
:ufw6-after-output - [0:0]
:ufw6-after-forward - [0:0]
# End required lines

# don't log noisy services by default
-A ufw6-after-input -p udp --dport 137 -j ufw6-skip-to-policy-input
-A ufw6-after-input -p udp --dport 138 -j ufw6-skip-to-policy-input
-A ufw6-after-input -p tcp --dport 139 -j ufw6-skip-to-policy-input
-A ufw6-after-input -p tcp --dport 445 -j ufw6-skip-to-policy-input
-A ufw6-after-input -p udp --dport 546 -j ufw6-skip-to-policy-input
-A ufw6-after-input -p udp --dport 547 -j ufw6-skip-to-policy-input

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             #
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

# Don't delete these required lines, otherwise there will be errors
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
# End required lines


# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

# quickly process packets for which we already have a connection
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# drop INVALID packets (logs these in loglevel medium and higher)
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP

# ok icmp codes for INPUT
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

# ok icmp code for FORWARD
-A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT

# allow dhcp client to work
-A ufw-before-input -p udp --sport 67 --dport 68 -j ACCEPT

#
# ufw-not-local
#
-A ufw-before-input -j ufw-not-local

# if LOCAL, RETURN
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN

# if MULTICAST, RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN

# if BROADCAST, RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN

# all other non-local packets are dropped
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP

# allow MULTICAST mDNS for service discovery (be sure the MULTICAST line above
# is uncommented)
-A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT

# allow MULTICAST UPnP for service discovery (be sure the MULTICAST line above
# is uncommented)
-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       #
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw6-before-input
#   ufw6-before-output
#   ufw6-before-forward
#

# Don't delete these required lines, otherwise there will be errors
*filter
:ufw6-before-input - [0:0]
:ufw6-before-output - [0:0]
:ufw6-before-forward - [0:0]
# End required lines


# allow all on loopback
-A ufw6-before-input -i lo -j ACCEPT
-A ufw6-before-output -o lo -j ACCEPT

# drop packets with RH0 headers
-A ufw6-before-input -m rt --rt-type 0 -j DROP
-A ufw6-before-forward -m rt --rt-type 0 -j DROP
-A ufw6-before-output -m rt --rt-type 0 -j DROP

# quickly process packets for which we already have a connection
-A ufw6-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw6-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw6-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# multicast ping replies are part of the ok icmp codes for INPUT (rfc4890,
# 4.4.1 and 4.4.2), but don't have an associated connection and are otherwise
# be marked INVALID, so allow here instead.
-A ufw6-before-input -p icmpv6 --icmpv6-type echo-reply -j ACCEPT

# drop INVALID packets (logs these in loglevel medium and higher)
-A ufw6-before-input -m conntrack --ctstate INVALID -j ufw6-logging-deny
-A ufw6-before-input -m conntrack --ctstate INVALID -j DROP

# ok icmp codes for INPUT (rfc4890, 4.4.1 and 4.4.2)
-A ufw6-before-input -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
# codes 0 and 1
-A ufw6-before-input -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
# codes 0-2 (echo-reply needs to be before INVALID, see above)
-A ufw6-before-input -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT
# IND solicitation
-A ufw6-before-input -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT
# IND advertisement
-A ufw6-before-input -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT
# MLD query
-A ufw6-before-input -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT
# MLD report
-A ufw6-before-input -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT
# MLD done
-A ufw6-before-input -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT
# MLD report v2
-A ufw6-before-input -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT
# SEND certificate path solicitation
-A ufw6-before-input -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT
# SEND certificate path advertisement
-A ufw6-before-input -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT
# MR advertisement
-A ufw6-before-input -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
# MR solicitation
-A ufw6-before-input -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
# MR termination
-A ufw6-before-input -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT

# ok icmp codes for OUTPUT (rfc4890, 4.4.1 and 4.4.2)
-A ufw6-before-output -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
-A ufw6-before-output -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
# codes 0 and 1
-A ufw6-before-output -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
# codes 0-2
-A ufw6-before-output -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
-A ufw6-before-output -p icmpv6 --icmpv6-type echo-request -j ACCEPT
-A ufw6-before-output -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
-A ufw6-before-output -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT
# IND solicitation
-A ufw6-before-output -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT
# IND advertisement
-A ufw6-before-output -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT
# MLD query
-A ufw6-before-output -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT
# MLD report
-A ufw6-before-output -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT
# MLD done
-A ufw6-before-output -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT
# MLD report v2
-A ufw6-before-output -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT
# SEND certificate path solicitation
-A ufw6-before-output -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT
# SEND certificate path advertisement
-A ufw6-before-output -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT
# MR advertisement
-A ufw6-before-output -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
# MR solicitation
-A ufw6-before-output -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
# MR termination
-A ufw6-before-output -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT

# ok icmp codes for FORWARD (rfc4890, 4.3.1)
-A ufw6-before-forward -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
-A ufw6-before-forward -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
# codes 0 and 1
-A ufw6-before-forward -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
# codes 0-2
-A ufw6-before-forward -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
-A ufw6-before-forward -p icmpv6 --icmpv6-type echo-request -j ACCEPT
-A ufw6-before-forward -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
# ok icmp codes for FORWARD (rfc4890, 4.3.2)
# Home Agent Address Discovery Reques
-A ufw6-before-input -p icmpv6 --icmpv6-type 144 -j ACCEPT
# Home Agent Address Discovery Reply
-A ufw6-before-input -p icmpv6 --icmpv6-type 145 -j ACCEPT
# Mobile Prefix Solicitation
-A ufw6-before-input -p icmpv6 --icmpv6-type 146 -j ACCEPT
# Mobile Prefix Advertisement
-A ufw6-before-input -p icmpv6 --icmpv6-type 147 -j ACCEPT

# allow dhcp client to work
-A ufw6-before-input -p udp -s fe80::/10 --sport 547 -d fe80::/10 --dport 546 -j ACCEPT

# allow MULTICAST mDNS for service discovery
-A ufw6-before-input -p udp -d ff02::fb --dport 5353 -j ACCEPT

# allow MULTICAST UPnP for service discovery
-A ufw6-before-input -p udp -d ff02::f --dport 1900 -j ACCEPT

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    *filter
:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### RULES ###
-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
COMMIT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             *filter
:ufw6-user-input - [0:0]
:ufw6-user-output - [0:0]
:ufw6-user-forward - [0:0]
### RULES ###
COMMIT
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \                                                       
  t  
                                                                           
 Action Found exact match From Logging disabled Logging enabled To Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2009-08-26 19:15+0000
Last-Translator: Nizar Kerkeni <nizarus@nizarus.tn>
Language-Team: Arabic <ar@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 الإجراء وجدتُ مطابقة تامة من التسجيل معطّل التسجيل مفعّل إلى                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            	             "        
  (   ,
  #   U
     y
     
  &   
     
  *   
            )        D     \     t  /               
          #     #     %   <      b                                "     &   )  "   P     s            '     "             &  !   =     _  !   r  %               !          5   )  *   _       (     %     %     0     &   B     i  /   {       >     @        =     B     [  3   p  ,                            (     <     T     m            +                            ,     A     T     e  	   u       %     /               
   &     4  &   S     z  !                    1     /        E  !   R     t  ,     
                
          
             2     Q  4   l  $                       !     =     Z  *   q  :                )        @  #   ]  0               
                            )     D  %   \            &                    4         5     =     ?  g  C       6     %        
  6   *  )   a  7     (          1     	   0      :   0   B      s               @         	!     &!     6!     O!  /   m!  /   !  0   !  ,   !  #   +"  "   O"     r"     "     "  "   "  +   "  4   #  %   O#  #   u#     #  +   #  -   #  *   $     >$     V$     p$     $  (   $  *   $  #   $     %  1   :%  $   l%  A   %  9   %     
&  6    &  +   W&  +   &  ;   &  3   &     '  >   8'  "   w'  J   '  L   '     2(      8(     Y(  S   u(  :   (     )  #   )  #   C)  $   g)  !   )  &   )      )  #   )  #   *     >*  4   P*  )   *     *     *     *      *     +     3+     H+     Z+     c+  2   {+  8   +  ,   +  )   ,     >,  +   O,  4   {,  #   ,  %   ,  +   ,     &-     .-  =   7-  7   u-     -  #   -  )   -  2   .     :.  *   I.     t.     .  
   .     .     .  '   .  !   .  9   /  ,   K/  $   x/      /  %   /      /  $   0     *0  0   J0  L   {0  +   0  *   0  J   1  6   j1  '   1  0   1     1     2     2     )2  "   +2     N2  %   j2     2     2  )   2     2      3  9   43     n3     p3     3  8   3     3     3     3     9             >       
              P      z   6       }          q       Y         X   )       Q   ?      J          ~   3                 4       '                    w   :   &      H                      _           W      h       m             	   p               B   +   D              .   e   O   1   A                         -   i                             Z   V   L                R   y       r   \              2      g              C       ^   c       a   G   *   x   u   I      @   ,   t   5      E       "             n       k       #           7       %          `      =   <   U                  0   {   s       T      ]   [   j   $   (      f   l   !   8   
   N   b      v         ;      |   /          K   d             F   o      S                   M              
 
Error applying application rules.  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' does not exist (be sure to update your rules accordingly) Aborted Action Adding IPv6 rule failed: IPv6 not enabled Available applications: Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Could not back out rule '%s' Could not delete non-existent rule Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid interface clause Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' Wrong number of arguments You need to be root to run this script n problem running running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2010-04-08 14:07+0000
Last-Translator: costales <Unknown>
Language-Team: Asturian <ast@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
Hebo un fallu al aplicar les regles de l'aplicación.  (saltando la recarga del tornafueos)  Les regles pudieron revertise.  Ye posible que dalgunes regles nun s'heban revertío. ¡El grupu tien drechu d'escritura en %s! ¡%s tien concedíos permisos d'escritura pa tol mundu! '%(f)s' el ficheru '%(name)s' nun esiste «%s» nun esiste (asegúrate d'anovar les regles consecuentemente) Albortáu Aición Fallu al amestar la regla IPv6: IPv6 nun activao Aplicaciones disponibles: Direición de destín errónea Nome d'interface incorreutu Nome d'interface erróneu: nun puede usase un nomatu d'interface Triba d'interface incorreuta Puertu erróneu Puertu incorreutu «%s» Direición de oríxe errónea Nun pudo inxertase la regla na posición «%d» Nun pudo inxertase la regla na posición «%s» Nun puede especificase «all» con «--add-new» Nun puede especificase inxertar y desaniciar Verificando les regles d'ip6tables
 Verificando les regles d'iptables
 Comprobando ip6tables en bruto
 Comprobando iptables en bruto
 Verificación desactivada Nun pudo revertise la regla «%s» Nun puede desaniciase una regla inesistente Nun pudo alcontrase un perfil que concase con «%s» Nun alcontráu l'executable pa «%s» Nun pudo alcontrase'l perfil «%s» Nun pudo alcontrase'l protocolu Nun pudieron cargase les regles de rexistru Nun pudo normalizase la direición de destín Nun pudo normalizase la direición d'orixe Nun puedes facer «%s» Nun pudo afitase LOGLEVEL El tortafueos NON foi anováu Nun alcontráu «%s» Nun alcontráu'l PID del padre de «%s» Nun alcontráu'l PID (¿ta montáu /proc?) Nun puede abrise «%s» pa llectura Nun se pudo facer stat «%s» Nun pudieron anovase les regles de la aplicación Nun pudo anovase'l ficheru de regles La política %(direction)s predeterminada camudó a '%(policy)s'
 Directives d'aplicación predeterminaes camudaes a «%s» Descripción: %s

 Perfil «%s» duplicáu; usaráse l'últimu alcontráu ERROR: esti guión nun tendría de ser SGID ERROR: esti guión nun tendría de ser SUID El tornafueos ta activo y activáu nel arranque del sistema El tornafueos nun ta activáu (nun puede recargase) El tornafueos reaniciose El tornafueos ta paráu y desactiváu nel arranque del sistema Alcontrada una coincidencia esauta Alcontraronse varies coincidencise pa «%s». Usa un nome de perfil esautu Coincidencia alcontrada non-action/non-logtype (%(xa)s/%(ya)s %(xl)s/%(yl)s) Dende El sofitu pa IPv6 nun ta activao Fallu de sintáxis na regla Sintaxis inapropiada pa la regla (especificóse «%s» con una regla d'aplicación) La posición «%s» inxertada nun ye una posición válida Cláusula '%s' non válida La cláusula «from» ye incorreuta La cláusula «port» ye incorreuta La cláusula «proto» ye incorreuta La cláusula «to» ye incorreuta La versión d'IP «%s» nun ye válida Cláusula d'interface incorreuta Nivel de rexistru «%s» incorreutu Triba de rexistru «%s» incorreuta Opción inválida Política «%(policy)s» incorreuta pa «%(chain)s» Hai puertos incorreutos nel perfil «%s» Posición ' incorreuta Posición «%d» incorreuta Perfil incorreutu El nome del perfil ye incorreutu El token «%s» ye incorreutu Rexistru desactiváu Registru activáu Accesu:  Falta política pa '%s' Les versiones IP de «from» y «to» tan amestaes Tien d'especificase «tcp» o «udp» con varios puertos Necesitase usar «from» o «to» con «%s» Necesitase la cláusula «to» o «from» Perfiles nuevos: Nun s'alcontraron puertos nel perfil «%s» Nun s'alcontraron regles pal perfil de l'aplicación Opción «log» non permitida equí Opción 'log-all' non permitida equí Los rangos de puertos deben ser numbéricos Puertu: Puertos: El perfil «%(fn)s» tienn ermu'l campu obligatoriu «%(f)s» Nel perfil «%(fn)s» falta'l campu obligatoriu '%(f)s' Perfil: %s
 Nun esiste'l direutoriu de perfiles Nun concasa l'usu del protocolu (from/to) El protocolu nun concasa col especificáu («%s») Regla amestada Camudóse una regla tres la normalización Regla desaniciada Regla inxertada Regla anovada Regles anovaes Regles anovaes (v6) Anovaronse les regles pal perfil «%s» Saltase la recarga del tornafueos Saltando '%(value)s': valor enforma llargu pa '%(field)s' Saltando «%s»: ta tamién en /etc/services Saltando «%s»: nun puede procesase Saltando «%s»: nun puede llese Saltando «%s»: campu enforma llargu Saltando «%s»: nome incorreutu Saltando «%s»: nome enforma llargu Saltando «%s»: enforma grande Saltando «%s»: yá se lleeron abondos ficheros Saltando les regles d'aplicación IPv6. Necesitase iptables 1.4 como mínimo Saltando l'añader d'una regla ya existente Saltando l'inxertáu de regla ya existente Saltando regla errónea (llonxitú errónea): %s. Verifica'l to tornafueos Saltando llínia erróna: %s. Verifica'l to tornafueos Saltando regla IPv6 «%s» non sofitada Estáu: activu
%(log)s
%(pol)s
%(app)s%(status)s Estáu: activu%s Estáu: inactivu Títulu: %s
 A La política «%s» ye desconocida Aición «%s» non sofitada Política predeterminada non sofitada Direición '%s' non sofitada Política «%s» non sofitada Politica pa direición '%s'  non sofitada Protocolu «%s» nun sofitáu Númberu incorreutu d'argumentos Necesita permisos d'alministrador pa executar esti guión n problema executando executando ufw-init l'uid ye %(uid)s pero «%(path)s» pertenez a %(st_uid)s desconocíu y sí                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |                   !     #     *     <     A     V  
   e     p     }            x             "  7   3     k  ?   p       &     $     &        A  (   F           	                             
                   
 Action Found exact match From Improper rule syntax Invalid option Rule added Rule deleted Rule updated To Wrong number of arguments Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2009-08-26 19:14+0000
Last-Translator: Siyan Panayotov <xsisqox@gmail.com>
Language-Team: Bulgarian <bg@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 Действие Намерено е точно съответствие От Неправилен синтаксис на правилото Невалидна опция Правилото е добавено Правилото е изтрито Правилото е обновено До Грешен брои аргументи                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      h      \                                    	     	  *   1	     \	     y	     	  9   	  )   	     	     
     
  #    
      D
     e
     y
     
     
     
  "   
  &   
       '   8  "   `            !     #             
     )  !   <     ^  *   y       (     %     %   
     +
     =
  >   O
     
     
     
     
     
     
               $  	   4  /   >     n  
          &                         !     
   5     @  
   M     [  
   h     v       $                  
     (     D     a  *   x  :                )        G  #   d  #     0               
        
     
     %     =     W  &   q                                     w       ]  	   _  -   i                 2         
  	   +     5  M   <  ,                    -     +   )     U     i     |       #     .     4      $   5  /   Z  )               ,     !        =  &   X       ,     .     1     
   $  1   /  &   a  '               P        =     @     ]     y                                4     !   H  
   j  %   x  .     "                            (     7     I     Z     m       !     *     '     *   
     8     X      x       1     D     -   ,  (   Z  5     !     (     *     1   /     a     s                                *        "      $       3      T   	   d      n      p      3   O           <                      9   ?               c   [   Y                  E   1   -   *   7   H             ,          '       M   8       B   )   W   P      ]   &          /   :   K   I   g      @      G       ^          X   
      \   6      a      %         !          "   d   >          ;      _                             U   Q           (      4   L         D   A   $   +   `       h   T   	   b   0   2           V   C           S   F   J   .   5   =          f   
   e   Z   N   #                    R    
 
(None)  (skipped reloading firewall) %s is group writable! %s is world writable! '%s' does not exist (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Bad destination address Bad port Bad source address Cannot insert rule at position '%d' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checks disabled Could not back out rule '%s' Could not delete non-existent rule Could not find a profile matching '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Default application policy changed to '%s' Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall reloaded Found exact match Found multiple matches for '%s'. Please use exact profile name From Invalid log level '%s' Invalid log type '%s' Invalid option Invalid ports in profile '%s' Invalid position '%d' Invalid profile Logging disabled Logging enabled Logging:  Must specify 'tcp' or 'udp' with multiple ports Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Port ranges must be numeric Port: Ports: Profile: %s
 Profiles directory does not exist Rule added Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unsupported action '%s' Unsupported policy '%s' Unsupported protocol '%s' Wrong number of arguments You need to be root to run this script n problem running problem running ufw-init
%s running ufw-init unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2012-04-21 19:16+0000
Last-Translator: Ema Begulic <ema.begulic@edu.fit.ba>
Language-Team: Bosnian <bs@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Ništa)  (preskočeno ponovno učitavanje firewall-a) %s je upisiv za grupu! %s je svjetski zapisivo! '%s' ne postoji (budite sigurni da ažurirate pravila u skladu sa) : Potreban najmanje python 2.6)
 Prekinuto Radnja Dodana korisnička pravila (vidi 'ufw status' za pokretanje zaštitnog zida): Dodavanje IPv6 pravila: IPv6 nije dozvoljeno Pogrešna odredišna adresa Pogrešan port Pogrešna izvorna adresa Nije moguće ubaciti pravilo na poziciju '%d' Nije moguće specificirati ubaci i izbriši Provjera ip6tables
 Provjera iptables
 Provjera sirovih ip6tables
 Provjere isključene Nije moguće povratiti pravilo '%s' Nije moguće izbrisati pravilo koje ne postoji Nije moguće pronaći profil koji se poklapa sa '%s' Nije moguće unijeti logging pravila Nije moguće normalizirati destinacijsku adresu Nije moguće normalizirati izvornu adresu Nije moguće izvršiti '% s' Nemoguće postaviti LOGLEVEL Nije moguće ažuriranje aktivnog firewall-a Ne mogu odrediti iptables verziju Nije moguće pronaći '%s' Nije moguće otvoriti '%s' za čitanje Nije moguće stat '%s' Nije moguće ažurirati aplikacijska pravila Nije moguće ažuriranje dokumenta s pravilima zadana politika za aplikacije promijenjena u '%s' Opis: %s

 Umnoži profil '%s', koristeći zadnji pronađeni GREŠKA:ova skripta netreba imati SGID GREŠKA:ova skripta ne treba imati SUID Ponovno učitavanje Firewall-a Pronađeno tačno poklapanje Pronađena višestruka poklapanja za '%s'. Molimo vas koristite isto ime profila Od Nevažeća prijava nivo '%s' Nevažeći tip prijave '%s' Nevažeća opcija Nevažeći ulaz u profilu '%s' Pogrešna pozicija '%d' Nevažeći profil Prijava je onemogućena Prijava je omogućena Prijavljivanje:  Morate specificirat 'tcp' ili 'udp' sa više portova Potrebna 'to' ili 'from' klauzula Novi profili: Nema pronađenih ulaza u profilu '%s' Nisu pronađena pravila za aplikacijski profil Domet portova mora biti numerički Port: Portovi: Profil: %s
 Profil direktorij ne postoji Pravilo dodano Pravilo uklonjeno Pravilo ubačeno Pravilo ažurirano Pravila ažurirana Pravila ažurirana (v6) Pravila ažurirana za profil '%s' Preskakanje '%s': također u /etc/services Preskakanje '%s': nije moguće obraditi Preskakanje '%s': nije moglo biti održano Preskakanje '%s': polje predugo Preskakanje '%s': pogrešno ime Preskakanje '%s': ime je predugo Preskakanje '%s': preveliko Preskakanje '%s': previše datoteka već učitano Preskačem IPv6 aplikacijsko pravilo. Potrebno najmanje iptables 1.4 Preskačem dodavanje već postojećeg pravila Preskakanje umetanja postojećeg pravila Preskakanje pogrešne n-torke (pogrešna dužina): %s Preskakanje pogrešne n-torke: %s Preskačem nepodržano IPv4 '%s' pravilo Preskakanje nepodržanog IPv6 '%s' pravila Status: Aktivno
%(log)s
%(pol)s
%(app)s%(status)s Status: aktivan%s Status:neaktivno Naslov: %s
 Za Nepodržana akcija '%s' Nepodržana politika '%s' Nepodržan protokol '%s' Netačan broj argumenata Trebaš biti root da pokreneš ovu skriptu n Problem u toku problem izvršavanja ufw-init
%s U toku ufw-init Nepoznato d da                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  6        I   |                       *               
   	          +     >     V     m  !   }                 5     (   "  %   K  %   q                                     
   "     0  1   O  /     !     
               
          4     $   N     s                         	  *   	     I	     Z	     ]	  %   u	     	  &   	     	  q  	     ^     `       B                       
     (  +   E  *   q       /     !        
  '   
  K   F
  2   
  *   
  *   
  $        @  '   G  "   o  '          !     
     &     8   "  5   [  #     
                         ;     )   Q  &   {  *                  
     )  '   G     o     ~  !     *          <        $         %              3                )      6             &                     5            "   
       1   '   !   
   ,               .         	          $   4            -                        *                    /           #   (         +      2   0    
 %s is group writable! %s is world writable! (be sure to update your rules accordingly) Aborted Action Bad port '%s' Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Could not update running firewall Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update rules file Default %(direction)s policy changed to '%(policy)s'
 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Found exact match From IPv6 support not enabled Invalid 'from' clause Invalid IP version '%s' Invalid option Invalid ports in profile '%s' New profiles: No ports found in profile '%s' Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profiles directory does not exist Rule added Rule deleted Rule updated Rules updated Rules updated (v6) Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Status: inactive To Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' You need to be root to run this script problem running Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2009-08-26 19:14+0000
Last-Translator: Xan <dxpublica@telefonica.net>
Language-Team: Catalan <ca@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 %s es pot escriure pel seu grup %s es pot escriure per tothom (aneu amb compte d'actualitzar les vostres regles consegüentment) S'ha avortat Acció Port '%s' incorrecte S'està verificant ip6tables
 S'està verificant iptables
 S'està comprovant ip6tables en brut (raw)
 S'està comprovant iptables en brut (raw)
 Comprovació desactivada No es pot actualitzar el tallafocs en execució No es pot obrir '%s' per a llegir No es pot fer estat %s No es pot actualitzar l'arxiu de regles La política %(direction)s per omissió ha estat canviada a «%(policy)s»
 Perfil duplicat «%s», s'utilitza l'últim trobat ERROR: aquest script no hauria de ser SGID ERROR: aquest script no hauria de ser SUID S'ha trobat una coincidència exacta Des de El suport per a IPv6 no està habilitat La clàusula 'from' és incorrecta La versió de la IP '%s' no és vàlida Opció invàlida Ports no vàlids al perfil «%s» Perfils nous: No s'han trobat ports al perfil «%s» El perfil «%(fn)s» té buit el camp requerit «%(f)s» Al perfil «%(fn)s» falta el camp requerit «%(f)s» El directori de perfils no existeix Regla afegida Regla esborrada Regla actualitzada Regles actualitzades Regles actualitzades (v6) S'omet «%(value)s»: valor massa llarg per a «%(field)s» S'omet «%s»: també és a /etc/services S'omet «%s»: no s'ha pogut processar S'omet «%s»: no s'ha pogut veure l'estat S'omet «%s»: camp massa llarg S'omet «%s»: nom no vàlid S'omet «%s»: nom massa llarg S'omet «%s»: és massa gran S'omet «%s»: massa fitxers per llegir Estat: inactiu A La política «%s» no és admesa Política no admesa per a l'adreça «%s» Protocol '%s' no suportat Necessiteu ser superusuari (root) per executar aquest script problema executant-se                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 $      ,       8   l  9               Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2014-08-13 07:15+0000
Last-Translator: FULL NAME <EMAIL@ADDRESS>
Language-Team: Chechen <ce@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |      h     i     k  "   s           (   6  #   _            &                    *        H     e     m  9   t  )          "             +  /   >  +   n            
          #     #     %         E     f     z                      W        @  "   ]       &     "                       5     N  !   m       '     "               !   %  #   G     k  !   ~  %               !          &   5  5   \  *     C     =        ?  (   Q  %   z  %     0     &          /   0     `  >   r  @                    3   %  ,   Y                                '   	     1  '   J     r            +                       +     A     Q     f     y       	          %     /              0   
   K      Y   &   x         !                     !  1   !  /   :!     j!  !   w!     !  ,   !  T   !     7"  
   "      "     "  
   "     "  
   #     #     ,#     K#  4   f#  $   #     #     #     #     $     7$     T$  *   k$  :   $     $      $  )   %  $   :%     _%  #   |%  #   %  0   %     %     &  
   &     "&     %&     9&     Q&     l&     &  %   &     &     &     &     '  &   3'     Z'     \'     l'     '     '  4   '     '     '     '  z  '     n)     p)  )   |)    )  (   p-  ,   -  *   -  !   -  "   .  $   6.  '   [.     .     .  7   .      .     /     
/  M   /  5   `/     /  %   /     /     /  ;   0  .   =0     l0     0     0     0  %   0  %   0  #   1  '   /1     W1     r1  "   1  !   1     1     1  _   1     ^2  '   |2  )   2     2  )   2     3     ,3     C3     a3      3  !   3  &   3  *   3      4     54     I4  /   a4     4     4  &   4  '   4  -   5     =5  $   Y5  "   ~5  7   5  ;   5  -   6  M   C6  2   6     6  6   6  #   7  #   +7  A   O7  6   7     7  @   7     8  J   78  S   8     8     8     8  @   9  /   R9     9     9     9     9     9     :  %   ':     M:  8   j:     :     :     :  /   :     ;      7;     X;     i;     ~;     ;     ;     ;     ;     ;     ;  )   <  /   ;<  '   k<  ,   <     <  .   <  5   <     4=  "   S=  #   v=     =     =  7   =  1   =     >     >     <>  +   W>  N   >     >     d?  !   w?     ?     ?     ?     ?     ?  '   
@  (   2@  E   [@  *   @  !   @  "   @  (   A  %   :A  *   `A  %   A  5   A  L   A  6   4B  7   kB  7   B  '   B  #   C  1   'C  4   YC  0   C     C     C  
   C     C     C     D  !    D     BD      \D  &   }D      D  5   D  ,   D     (E  4   BE     wE     yE     E  "   E     E  3   E  	   F     &F     (F           
   O          x             +       y      )                  R      S                  '           .      e                 J   ;      p   	          !   q             "   D                   I               5   X          4               K       W         7      -      H             }          c                        \   ~   G                    @         <      a                 _   Z         V   >   `      k      g      l   f       |   3      j       o           {   ]           #      M   t              
   N      B           [   ,      ^                   v   %   F          r       (      1   /   d                  w          0       ?   b                             L   8   2                     9      =      A   6   h          $         *                      n   u      E   T   s                Y   i                &      z               Q   :       P      U       C                 m       
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2013-12-18 12:21+0000
Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>
Language-Team: Czech <cs@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Žádný) 
Chyba v uplatňování pravidel aplikace 
Použití: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s povolí firewall
 %(disable)-31s zakáže firewall
 %(default)-31s nastaví výchozí zásady
 %(logging)-31s nastaví logování na %(level)s
 %(allow)-31s přidá allow %(rule)s
 %(deny)-31s přidá deny %(rule)s
 %(reject)-31s přidá reject %(rule)s
 %(limit)-31s přidá limit %(rule)s
 %(delete)-31s smaže %(urule)s
 %(insert)-31s vloží %(urule)s do %(number)s
 %(reload)-31s opětovné načtení firewall
 %(reset)-31s resetuje firewall
 %(status)-31s zobrazí stav firewallu
 %(statusnum)-31s zobrazí stav firewallu jako číselný seznam %(rules)s
 %(statusverbose)-31s zobrazí podrobný stav firewallu
 %(show)-31s zobrazí report firewallu
 %(version)-31s zobrazí informace o verzi

%(appcommands)s:
 %(applist)-31s seznam aplikačních profilů
 %(appinfo)-31s zobrazí informaci o %(profile)s
 %(appupdate)-31s aktualizuje %(profile)s
 %(appdefault)-31s nastaví výchozí chování
  (přeskočeno znovunačtení firewallu)  Požadovaná pravidla úspěšně zrušena.  Některá pravidla nebylo možno zrušit. %s je zapisovatelný pro skupinu! %s je zapisovatelný pro všechny! '%(f)s' soubor '%(name)s' neexistuje '%s' již existuje. Probíhá zrušení '%s' neexistuje Do '%s' nelze zapisovat (ujistěte se, že patřičně upravíte svá pravidla) :Vyžaduje alespoň python 2.6)
 Zrušeno Akce Uživatelské pravidlo přidáno (viz 'ufw status' pro spuštěný firewall): Přidání pravidla IPv6 selhalo: IPv6 není povoleno Dostupné aplikace: Zálohování '%(old)s' do '%(new)s'
 Chybná cílová adresa Špatné jméno rohraní Špatné jméno rozhraní: nelze použít alias prostředí Špatný název rohraní: vyhrazený znak: '!' Špatný typ rozhraní Chybný port Chybný port „%s” Chybná zdrojová adresa Nelze vložit pravidlo na pozici '%d' Nelze vložit pravidlo na pozici '%s' Nelze upřesnit 'all' s '--add-new' Nelze specifikovat vložení a mazání Kontroluje se tabulka IP6
 Kontroluje se tabulka IP
 Kontroluje se řádek tabulky IP6
 Kontroluje se řádek tabulky IP
 Kontroly vypnuty Příkaz '%s' již existuje Příkaz může přerušit stávající ssh připojení. Přesto pokračovat (%(yes)s|%(no)s)?  Nelze stáhnout pravidlo '%s' Nelze odstranit neexistující pravidlo '%s' nebylo nalezeno. Probíhá zrušení Nelze nálezt profil '%s' Nelze najít spustitelný soubor pro '%s' Nelze nálezt profil '%s' Nelze nalézt protokol Pravidlo '%d' nebylo nalezeno Pravidlo '%s' nebylo nalezeno Nelze spustit stav naslouchání Nelze získat statistiku pro '%s' Nelze načíst pravidla pro logování Není možné normalizovat cílovou adresu Nelze normalizovat adresu zdroje Nelze provést '%s' Nelze nastavit LOGLEVEL Nepodařilo se aktualizovat běžící firewall Nelze určit verzi iptables Nelze nalézt '%s' Nelze najít rodičovský PID pro '%s' Nelze nalézt PID (je /proc připojen?) Nepodařilo se otevřít „%s” pro čtení Nelze vykonat stat „%s” Nelze aktualizovat pravidla aplikace Nelze aktualizovat soubor pravidel Nelze aktualizovat soubor pravidel pro přihlašování Výchozí politika %(direction)s změněna na '%(policy)s'
 Výchozí politika aplikace změněna na '%s' Výchozí: %(in)s (příchozí), %(out)s (odchozí), %(routed)s (směrované) Mazání:
 %(rule)s
Pokračovat (%(yes)s|%(no)s)?  Popis: %s

 Kopíruji profil '%s', používám poslední nalezený CHYBA: tento skript nemá být SGID CHYBA: tento skript nemá být SUID Firewall je aktivní a spouštění při startu systému povoleno Firewall není povolen (přeskakuje se znovunačtení) Firewall znovunačten Firewall je zastaven a nebude se spouštět při startu systému Nalezena přesná shoda Nalezeno několik shod pro '%s'. Prosím použijte přesné jméno profilu Nalezena shoda, která není akcí ani typem záznamu (%(xa)s/%(ya)s %(xl)s/%(yl)s) Od Podpora IPv6 není zapnuta Nesprávná syntaxe pravidla Nesprávný syntax pravidla ('%s' uvedené s pravidlem aplikace) Pozice pro vložení '%s' není platnou pozicí Chybná klauzule '%s' Neplatná klauzule „od” Neplatná klauzule „port” Neplatná klauzule „proto” Neplatná klauzule 'Komu' Neplatná verze IP „%s” Chybná IPv6 adresa s protokolem '%s' Neplatná klauzule rozhraní Neplatné ustanovení pro pravidla trasování rozhraní Neplatná úroveň logu '%s' Neplatný typ logu '%s' Neplatná volba Neplatné pravidlo '%(policy)s' pro '%(chain)s' Chybný port s protokolem '%s' Nesprávné porty v profilu '%s' Chybná pozice ' Špatná pozice '%d' Chybný profil Chybný název profilu Neplatný token „%s” Záznam vypnutý Záznam zapnutý Přihlašování:  Chybějící pravidlo pro '%s' Smíšené verze IP v „od” a „do” Je třeba zvolit 'tcp' nebo 'udp' s více porty Je zapotřebí  'Od' či  'Komu' s '%s' Vyžadována klauzule „od” nebo „do” Nové profily: V profilu  '%s' nebyly nalezeny žádné porty Nebyla nalezena žádná pravidla pro profil aplikace Volba 'log' zde není povolena Volba 'log-all' zde není povolena Rozsah portů musí být číselný Port: Porty: Profil '%(fn)s' má prázdné požadované pole '%(f)s' Profilu '%(fn)s' chybí vyžadované pole '%(f)s' Profil : %s
 Adresář profilů neexistuje Neshoda protokolů (od/do) Neshoda protokolu s určeným protokolem %s Obnovení všech pravidel na původní hodnoty. Pokračovat (%(yes)s|%(no)s)?  Všechna pravidla budou navrácena do výchozích hodnot. Toto může přerušit stávající ssh spojení. Chcete pokračovat (%(yes)s|%(no)s)?  Pravidlo přidáno Pravidlo změněno po normalizaci Pravidlo smazáno Pravidlo vloženo Pravidlo aktualizováno Pravidla aktualizována Pravidla aktualizována (v6) Pravidla aktualizována pro profil '%s' Přeskakování znovunačtení firewallu Přeskakuji '%(value)s': hodnota je pro '%(field)s' příliš dlouhá Přeskakuji '%s': je také v /etc/services Přeskakuji '%s': nelze zpracovat Přeskakuji '%s': nelze kopírovat Přeskakuji '%s': příliš dlouhé pole Přeskakuje se '%s': neplatné jméno Přeskakuji '%s': příliš dlouhý název '%s' se přeskakuje: příliš velké Přeskakuji '%s': přečteno příliš mnoho souborů Přeskočení aplikačního pravdila IPv6. Je potřeba alespoň iptables 1.4 Přeskakuje se přidání již existujícího pravidla Přeskakuje se vkládání již existujícího pravidla Přeskakuji nesprávnou dvojici (špatná velikost): %s Přeskoční chybné n-tice (iface): %s Přeskakuji nesprávnou dvojici: %s Přeskočení nepodporovaného pravidla IPv4 '%s' Přeskakuje se nepodporované pravidlo IPv6 „%s” Stav: aktivní
%(log)s
%(pol)s
%(app)s%(status)s Stav: aktivní%s Stav: neaktivní Titul: %s
 Do Neznámé pravidlo '%s' Nepodporovaná akce '%s' Nepodporovaná výchozí politika Nepodporovaný směr '%s' Nepodporovaná politika „%s” Nepodporovaná politika pro směr '%s' Nepodporovaný protokol „%s” VAROVÁNÍ: '%s' je veřejně přístupný ke čtení VAROVÁNÍ: '%s' je veřejně zapisovatelný Chybný počet argumentů Abyste mohli spustit tento skript, musíte být root n problém při spouštění problém při běhu sysctl problém spuštěného ufw-init
%s spouští se ufw-init uid je %(uid)s, ale  '%(path)s' vlastní %(st_uid)s Neznámý a ano                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         #      4  /   L           	          !  *   7     b  )   i            
          !               %   1  %   W  /   }                                     %   %  
   K     V     c  
   p     ~                      &     u       }            5          >        *     F     S     g  %   |  %          '     '   
	  0   5	     f	     z	  '   ~	     	     	     	     	  /   	     
  
   .
     <
     L
     ]
     s
  !   w
  "   
     
  <   
                  	      
             
                                                                            !   "                                     #    
 %s is group writable! %s is world writable! (be sure to update your rules accordingly) Action Adding IPv6 rule failed: IPv6 not enabled Bad destination address Bad port Bad port '%s' Bad source address Could not update running firewall Couldn't open '%s' for reading Couldn't update rules file ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall stopped and disabled on system startup Found exact match From IPv6 support not enabled Invalid IP version '%s' Invalid option Logging disabled Logging enabled Mixed IP versions for 'from' and 'to' Rule added Rule deleted Rule updated Rules updated Rules updated (v6) To Unsupported policy '%s' Unsupported protocol '%s' Wrong number of arguments You need to be root to run this script Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2009-08-26 19:12+0000
Last-Translator: Jamie Strandboge <jamie@ubuntu.com>
Language-Team: Danish <da@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 %s er gruppeskrivbar! %s er verdensskrivbar! (vær sikker på at opdatere dine regler tilsvarende) Handling Tilføjelse af IPv6-regel mislykkedes: IPv6 er ikke slået til Dårlig destinationsadresse Dårlig port Dårlig port »%s« Dårlig kildeadresse Kunne ikke opdatere kørende brandmur Kunne ikke åbne »%s« for skrivning Kunne ikke opdatere regelfil FEJL: Dette skript bør ikke være SGID FEJL: Dette skript bør ikke være SUID Brandmur stoppet og slået fra ved systemopstart Fandt præcis match Fra IPv6-understøttelse er ikke slået til Ugyldig ip-version »%s« Ugyldig tilvalg Log slået fra Log slået til Forskellige IP-versioner for »fra« og »til« Regel tilføjet Regel slettet Regel opdateret Regler opdateret Regler opdateret (v6) Til Ikke understøttet politik »%s« Ikke understøttet protokol »%s« Forkert antal argumenter Du skal være administrator (root) for at køre dette skript                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   E      D  a   l                         }	     	  *   	     	     	     	  9    
  )   :
     d
  +   |
     
  
   
     
     
     
     
  !   	  #   +     O     n       5     C     %     %   <  /   b                                   
     
     .
     F
     U
     h
     y
  %   
     
  1   
  /   
  !   ,     N  ,   j  
               
          4     )        <  #   Y  #   }            %               &        =     M     d  w                     !  (   =  5   f  +               H     <   $     a  8   y                              )  ,   @  .   m  #     $     %     @     M   L  *     *     5         &     G  (   K     t                              	          2     K  2   b  !     =     5     (   +     T  4   s                           A     ;   M  '     :     0          ,      .   M  #   |       >          &     +   ;     ?   D          %       8                   5   
              .      	       C   9                     (                 4          #   :               
      0   ,               /   <      $   1              7   3             *       '   2      +      "   E       6       A      &   -                       )          B   @   ;      >       =       !       
 
(None) 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
 %s is group writable! %s is world writable! (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Bad destination address Bad interface name: reserved character: '!' Bad port Bad port '%s' Bad source address Checking ip6tables
 Checking iptables
 Checks disabled Could not update running firewall Couldn't determine iptables version Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update rules file Default %(direction)s policy changed to '%(policy)s'
 Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall stopped and disabled on system startup Found exact match From IPv6 support not enabled Improper rule syntax Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid option Invalid token '%s' Logging disabled Logging enabled Mixed IP versions for 'from' and 'to' Need 'to' or 'from' clause Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Rule added Rule deleted Rule updated Rules updated Rules updated (v6) Skipping '%(value)s': value too long for '%(field)s' Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule To Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' Wrong number of arguments You need to be root to run this script problem running problem running sysctl problem running ufw-init
%s Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2012-11-09 18:41+0000
Last-Translator: Keruskerfuerst <armin_mohring@web.de>
Language-Team: German <de@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Keine) 
Aufruf: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s aktiviert Firewall
 %(disable)-31s deaktiviert Firewall
 %(default)-31s legt Standardrichtlinien fest
 %(logging)-31s legt Protokollierung fest für %(level)s
 %(allow)-31s fügt Zulassen %(rule)s hinzu
 %(deny)-31s fügt Verweigern %(rule)s hinzu
 %(reject)-31s fügt Zurückweisen %(rule)s hinzu
 %(limit)-31s fügt Grenzwert %(rule)s hinzu
 %(delete)-31s löscht %(urule)s
 %(insert)-31s setzt %(urule)s bei %(number)s ein
 %(reload)-31s lädt Firewall neu
 %(reset)-31s richtet Fireall neu ein
 %(status)-31s zeigt den Firewall-Status
 %(statusnum)-31s zeigt den Firewall-Status als nummerierte Liste %(rules)s
 %(statusverbose)-31s zeigt den ausführlichen Firewall-Status
 %(show)-31s zeigt den Firewall-Bericht
 %(version)-31s zeigt Versions-Informationen

%(appcommands)s:
 %(applist)-31s Anwendungs-listet Anwendungsprofile auf
 %(appinfo)-31s zeigt Informationen %(profile)s
 %(appupdate)-31s aktualisiert %(profile)s
 %(appdefault)-31s richtet Standardanwendungsrichtlinien ein
 %s hat Gruppenschreibrechte %s hat Schreibrechte für jeden Benutzer (die Regeln müssen entsprechend aktualisiert werden) : Es wird mindestens Python 2.6 benötigt)
 Abgebrochen Aktion Benutzerregeln hinzugefügt (siehe »ufw status« für aktive Firewall): Hinzufügen von IPv6-Regel schlug fehl: IPv6 nicht aktiviert Fehlerhafte Zieladresse Fehlerhafter Schnittstellenname: belegtes Zeichen: »!« Ungültiger Port Fehlerhafte Portangabe '%s' Fehlerhafte Quellenadresse Kontrolliere ip6tables
 Kontrolliere iptables
 Kontrollen deaktiviert Konnte laufende Firewall nicht aktualisieren Iptables-Version konnte nicht ermittelt werden Konnte '%s' nicht zum Lesen öffnen Konnte stat für '%s' nicht aufrufen Konnte Regeldatei nicht aktualisieren Voreingestellte %(direction)s-Regel in »%(policy)s« geändert
 Voreinstellung: %(in)s (eingehend), %(out)s (abgehend), %(routed)s (gesendet) FEHLER: SGID-Bit sollte nicht gesetzt sein FEHLER: SUID-Bit sollte nicht gesetzt sein Firewall deaktiviert und beim Systemstart deaktiviert Exakte Übereinstimmung gefunden Von Unterstützung für IPv6 nicht aktiviert Ungültige Regelsyntax Ungültige 'from' Angabe Ungültige 'port' Angabe Ungültige 'proto' Angabe Ungültige 'to' Angabe Ungültige IP Version '%s' Ungültige Option Ungültiges Token '%s' Loggen wurde deaktiviert Loggen wurde aktiviert Unterschiedliche IP-Versionen für 'from' und 'to' Benötige 'to' oder 'from' Angabe Das benötigte Feld »%(f)s« für Profil »%(fn)s« ist leer Profil »%(fn)s« fehlt das benötigte Feld »%(f)s« Verzeichnis für Profile existiert nicht Ungleiche Protokolle (from/to) Ungleiche Protokolle bei spezifiziertem Protokoll %s Regel hinzugefügt Regel gelöscht Regel aktualisiert Regeln aktualisiert Regeln aktualisiert (v6) »%(value)s« wird übersprungen: Wert zu lang für »%(field)s« Überspringe falsch geformtes Tupel (ungültige Länge): %s Überspringe falsch geformtes Tupel: %s Nicht unterstützte IPv4-»%s«-Regel werden übersprungen Überspringe nicht unterstützte IPv6 Regel '%s' Zu Nicht unterstützte Standardeinstellung '%s' Nicht unterstützte Regel für Richtung »%s« Nicht unterstütztes Protokoll '%s' Falsche Anzahl an Argumenten Es werden Root-Rechte benötigt, um dieses Skript auszuführen Problem beim Aufruf von Problem bei der Ausführung von sysctl Problem bei der Ausführung von ufw-init
%s                                                                                                                                                                                           "          (   $  #   M     q       &                    *        6     S     [  9   b  )          "               /   ,     \     o  
   x       #     #     %              (     <     O     g     ~       W          "        B  &   `  "                              !   /     Q  '   n  "               !     #   	     -  !   @  %   b            !          &     5     *   T  =          (     %     %     0   D  &   u       /          >     @   /     p     u       3     ,                  .     D     [     o  '                         +        0     P     n                                	          %     /   8     h       
          &          !        5     Q     W  1   ^  /          !          ,     T   8       
   
           9  
   F     T  
   a     o            4     $             6     S     q            *     :        '       E   )   f         #      #      0         &!     7!  
   H!     S!     V!     j!     !     !     !  %   !     !     "     -"     J"  &   d"     "     "     "     "  4   "     "     #     	#    
#     $     $  W   $  \   $  Q   Z%  C   %  F   %  8   7&  N   p&  >   &     &  .   '  ^   M'  :   '     '     '     
(  n   (  (   #)  5   L)  <   )  0   )     )  2   *     *  "   *  2   *  F   +  E   d+  B   +  e   +     S,     o,  K   ,  J   ,  =   -  *   ]-     -  B   ?.  I   .  W   .  Z   $/  G   /  8   /  6    0  E   70  E   }0  U   0  P   1  M   j1  Y   1  O   2  '   b2  (   2  b   2  S   3  +   j3  @   3  \   3  F   44     {4  d   4  I   4  d   E5  \   5  j   6  \   r6     6  b   6  V   K7  V   7     7  u   8  C   9     S9  4   :     9:  R   :     @;  R   G;  -   ;  O   ;  K   <  %   d<  )   <  +   <  ,   <  +   
=  &   9=  P   `=  5   =  B   =  8   *>     c>  B   }>  A   >  ;   ?     >?     [?     {?  )   ?  1   ?  3   ?  /   *@     Z@  1   o@  D   @  ^   @  ?   EA  2   A     A  ;   A  Y   	B  <   cB  @   B  J   B  	   ,C     6C  Y   BC  k   C     D  ?   D  A   ZD  c   D      E  !  E  &   F  Q   G  &   WG  $   ~G  (   G  ,   G  1   G  J   +H  _   vH  v   H  C   MI  I   I     I  @   I  <   5J  @   rJ  5   J  f   J  v   PK  N   K  H   L  P   _L  :   L  \   L  M   HM  B   M  "   M  $   M     !N     3N  $   <N  7   aN  M   N  ;   N  7   #O  R   [O  ;   O  W   O  U   BP  .   P     P     HQ  #   KQ  6   oQ  "   Q  d   Q     .R     =R     @R        U         f   b         K          o          '      p           y      T   X      V                   .   t   =   D   R   &   F   #       C   A   J   Z                      *      M   9      d      5   @          1   )   L                  a   _   e                     i   }                                  g                           3                        l   ,   z   ^   s   !   [       G         %   0   ?       +   r   (          m             j      Q   $   P           E                               x   u                4   "      /   v            >                    B   O   k          c   :   8                 ]   ;                                    n   W                Y   6   	   2   
   N       <   q          H   \                 {      h   7                  -      S      `                  w   ~            
   I           |                     
 
(None) 
Error applying application rules.  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2010-09-24 09:35+0000
Last-Translator: sterios prosiniklis <steriosprosiniklis@gmail.com>
Language-Team: Greek <el@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Κανένας) 
Σφάλμα κατά την εφαρμογή κανόνων προγράμματος.  (αγνοήθηκε η επαναφόρτωση του τείχους προστασίας)  Επιτυχημένη αναίρεση δοκιμαστικών κανόνων.  Αδυναμία αναίρεσης κάποιων κανόνων. Το %s είναι εγγράψιμο από όλη την ομάδα! Το %s είναι εγγράψιμο από όλους! Το όνομα '%(name)s' του αρχείου '%(f)s' δεν υπάρχει Το '%s' υπάρχει ήδη. Γίνεται ακύρωση Το '%s' δεν υπάρχει Το '%s' δεν είναι εγγράψιμο (φροντίστε να ενημερώσετε τους κανόνες σας ανάλογα) : Απαιτείται τουλάχιστον python 2.6)
 Ματαιώθηκε Ενέργεια Πρόσθετοι κανόνες χρήστη (δείτε την 'κατάσταση του ufw' για την εκτέλεση τείχους προστασίας): Απέτυχε η προσθήκη κανόνα IPv6: το IPv6 δεν είναι ενεργοποιημένο Διαθέσιμες εφαρμογές: Αντιγραφή του '%(old)s' στο '%(new)s'
 Λανθασμένη διεύθυνση προορισμού Λανθασμένο όνομα διεπαφής Λανθασμένο όνομα διεπαφής: δεν μπορούν να χρησιμοποιηθούν ψευδώνυμα διεπαφών Λανθασμένος τύπος διεπαφής Λάθος θύρα Λανθασμένη θύρα '%s' Λανθασμένη διεύθυνση πηγής Αδύνατη η εισαγωγή κανόνα στην θέση '%d' Αδυναμία εισαγωγής κανόνα στη θέση '%s' Αδυναμία προσδιορισμού 'all' με '--add-new' Δεν μπορεί να γίνει καθορισμός εισαγωγής και διαγραφής Έλεγχος ip6iptables
 Έλεγχος iptables
 Έλεγχος ανεπεξέργαστων αρχείων (raw) ip6tables
 Έλεγχος ανεπεξέργαστων αρχείων (raw) iptables
 Οι έλεγχοι έχουν απενεργοποιηθεί Η εντολή '%s' υπάρχει ήδη Είναι πιθανό, η εντολή, να επηρεάσει τις υπάρχουσες συνδέσεις ssh. Να συνεχιστεί η ενέργεια (%(yes)s|%(no)s);  Αδυναμία υπαναχώρησης από κανόνα '%s' Αδύνατη η διαγραφή μη υπάρχοντος κανόνα Δεν ήταν δυνατή η εύρεση του '%s'. Γίνεται ακύρωση Αδυναμία εύρεσης προφίλ που να ταιριάζει με το '%s' Αδυναμία εύρεσης εκτελέσιμου για το '%s' Αδυναμία εύρεσης του προφίλ '%s' Αδυναμία εύρεσης πρωτοκόλλου Δεν ήταν δυνατή η εύρεση του κανόνα '%d' Δεν ήταν δυνατή η εύρεση του κανόνα '%s' Δεν ήταν δυνατή η λήψη της κατάστασης ακρόασης Δεν ήταν δυνατή η λήψη στατιστικών για το '%s' Αδύνατη η φόρτωση των κανόνων καταχώρησης Αδυναμία κανονικοποίησης διεύθυνσης προορισμού Αδυναμία κανονικοποίησης διεύθυνσης πηγής Αδύνατη η εκτέλεση '%s' Αδυναμία ορισμού LOGLEVEL Αδυναμία ενημέρωσης εκτελούμενου τείχους προστασίας Δεν ήταν δυνατή η εξακρίβωση της έκδοσης iptables Αδυναμία εύρεσης του '%s' Αδυναμία εύρεσης γονεϊκού pid για '%s' Αδυναμία εύρεσης του pid (είναι προσαρτημένο το /proc;) Αδύνατο το άνοιγμα του '%s' για ανάγνωση Αδυναμία stat '%s' Δεν είναι δυνατή η ενημέρωση των κανόνων της εφαρμογής Αδύνατη η ενημέρωση του αρχείου κανόνων Αδυναμία ενημέρωσης του αρχείου κανόνων για καταγραφή Η προεπιλεγμένη %(direction)s πολιτική άλλαξε σε '%(policy)s'
 Η προεπιλεγμένη πολιτική της εφαρμογής έχει αλλάξει σε '%s' Διαγραφή:
 %(rule)s
Να συνεχιστεί η ενέργεια (%(yes)s|%(no)s);  Περιγραφή: %s

 Διπλότυπο αρχείο '%s', χρήση του τελευταίου που βρέθηκε ΣΦΑΛΜΑ: αυτό το σενάριο δε θα έπρεπε να είναι SGID ΣΦΑΛΜΑ: αυτό το σενάριο δε θα έπρεπε να είναι SUID Το τείχος προστασίας είναι ενεργό και ενεργοποιείται κατά την εκκίνηση του συστήματος Το τείχος προστασίας δεν είναι ενεργό (παράκαμψη επαναφόρτωσης) Το τείχος προστασίας επαναφορτώθηκε Το τείχος προστασίας είναι σταματημένο και δεν ενεργοποιείται κατά την εκκίνηση του συστήματος Βρέθηκε ακριβής αντιστοιχία Βρέθηκαν πολλαπλά αποτελέσματα για το '%s'. Παρακαλούμε χρησιμοποιήστε το ακριβές όνομα του προφίλ Βρέθηκε ταύτιση non-action/non-logtype (%(xa)s/%(ya)s %(xl)s/%(yl)s) Από Η υποστήριξη για IPv6 δεν είναι ενεργοποιημένη Μη έγκυρη σύνταξη κανόνα Ακατάλληλη σύνταξη κανόνα ('%s' specified with app rule) Η θέση εισαγωγής '%s' δεν είναι έγκυρη θέση Μη έγκυρη πρόταση '%s' Μη έγκυρη πρόταση 'από' Μη έγκυρη συνιστώσα 'port' Μη έγκυρη συνιστώσα 'proto' Μη έγκυρη πρόταση 'προς' Μη έγκυρη έκδοση IP '%s' Λανθασμένη διεύθυνση IPv6 με το πρωτόκολλο '%s' Μη έγκυρη συνιστώσα διεπαφής Άκυρο επίπεδο αρχείου καταγραφής '%s' Μη έγκυρος τύπος καταγραφής '%s' Άκυρη επιλογή Μη έγκυρη πολιτική '%(policy)s' για '%(chain)s' Λανθασμένη θύρα με το πρωτόκολλο '%s' Άκυρες τιμές θυρών στο προφίλ '%s' Μη έγκυρη θέση ' Μη έγκυρη θέση '%d' Μη έγκυρο προφίλ Μη έγκυρο όνομα προφίλ Μη έγκυρο αναγνωριστικό '%s' Καταγραφή απενεργοποιημένη Καταγραφή ενεργοποιημένη Καταγραφή:  Λείπει η πολιτική για το '%s' Μεικτές εκδόσεις IP για 'από' και 'προς' Πρέπει να προσδιορίσετε 'tcp' ή 'udp' με πολλαπλές θύρες Χρειάζεται το 'από' ή το 'προς' με '%s' Χρειάζεται όρο 'προς' ή 'από' Νέα προφίλ: Δεν βρέθηκαν θύρες στο προφίλ '%s' Δεν βρέθηκαν κανόνες για το προφίλ της εφαρμογής Η επιλογή 'log' δεν επιτρέπεται εδώ Η επιλογή 'log-all' δεν επιτρέπεται εδώ Τα εύρη θυρών πρέπει να είναι αριθμητικά Θύρα: Θύρες: Το προφίλ '%(fn)s' έχει κενό το απαραίτητο πεδίο '%(f)s' Το προφίλ του '%(fn)s' υπολείπεται του απαραίτητου πεδίου '%(f)s' Προφίλ: %s
 Ο κατάλογος των προφίλ δεν υπάρχει Ασυμβατότητα πρωτοκόλλου (από/προς) Ασυμβατότητα πρωτοκόλλου με καθορισμένο πρωτόκολλο %s Επαναφορά των κανόνων στους προκαθορισμένους από την εγκατάσταση. Να συνεχιστεί η ενέργεια (%(yes)s|%(no)s);  Επαναφορά των κανόνων στους προκαθορισμένους από την εγκατάσταση. Είναι πιθανό να επηρεαστούν οι υπάρχουσες συνδέσεις ssh. Να συνεχιστεί η ενέργεια (%(yes)s|%(no)s);  Ο κανόνας προστέθηκε Ο κανόνας αλλάχτηκε μετά την κανονικοποίηση Ο κανόνας διαγράφηκε Ο κανόνας εισήχθηκε Ο κανόνας ενημερώθηκε Οι κανόνες ενημερώθηκαν Οι κανόνες ενημερώθηκαν (v6) Οι κανόνες ενημερώθηκαν για το προφίλ '%s' Η επαναφόρτωση του τείχους προστασίας παρακάμφθηκε Παράκαμψη της '%(value)s': η τιμή είναι πολύ μεγάλη για το πεδίο '%(field)s' Παράκαμψη του '%s': υπάρχει στο /etc/services Παράκαμψη του '%s': αδυναμία επεξεργασίας Παράκαμψη '%s': Παράκαμψη του '%s': πολύ μεγάλο πεδίο Παράκαμψη του '%s': μη έγκυρο όνομα Παράκαμψη του '%s': πολύ μεγάλο όνομα Παράκαμψη του '%s': πολύ μεγάλο Παράκαμψη του '%s': υπάρχουν ήδη πολλά αρχεία αναγνωσμένα Παράκαμψη κανόνα εφαρμογής IPv6. Χρειάζεται τουλάχιστον το iptables 1.4 Παράλειπεται η προσθήκη υπάρχοντος κανόνα Παράλειψη εισαγωγής  υπάρχοντος κανόνα Παράλειψη δύσμορφης πλειάδας (κακό μήκος): %s Παράλειψη δύσμορφης πλειάδας: %s Παρακάμπτοντας τον μη υποστηριζόμενο κανόνα IPv4 '%s' Παράκαμψη μη-υποστηριζόμενου κανόνα IPv6 '%s' Κατάσταση: ενεργό
%(log)s
%(pol)s
%(app)s%(status)s Κατάσταση: ενεργό%s Κατάσταση: ανενεργό Τίτλος: %s
 Προς Άγνωστη πολιτική '%s' Μη υποστηριζόμενη ενέργεια '%s' Μη υποστηριζόμενη προεπιλεγμένη πολιτική Μη υποστηριζόμενη κατεύθυνση '%s' Μη υποστηριζόμενη πολιτική '%s' Μη υποστηριζόμενη πολιτική για την οδηγία '%s' Μη υποστηριζόμενο πρωτόκολλο '%s' ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Το '%s' είναι αναγνώσιμο από όλους ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Το '%s' είναι εγγράψιμο από όλους Λάθος αριθμός παραμέτρων Απαιτούνται δικαιώματα διαχειριστή για να εκτελεστεί αυτό το σενάριο ο πρόβλημα εκτέλεσης πρόβλημα εκτέλεσης του ufw-init
%s εκτελείται το ufw-init Το uid είναι %(uid)s αλλά η διαδρομή '%(path)s' ανήκει στον %(st_uid)s άγνωστο ν ναι                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |      h     i     k  "   s           (   6  #   _            &                    *        H     e     m  9   t  )          "             +  /   >  +   n            
          #     #     %         E     f     z                      W        @  "   ]       &     "                       5     N  !   m       '     "               !   %  #   G     k  !   ~  %               !          &   5  5   \  *     C     =        ?  (   Q  %   z  %     0     &          /   0     `  >   r  @                    3   %  ,   Y                                '   	     1  '   J     r            +                       +     A     Q     f     y       	          %     /              0   
   K      Y   &   x         !                     !  1   !  /   :!     j!  !   w!     !  ,   !  T   !     7"  
   "      "     "  
   "     "  
   #     #     ,#     K#  4   f#  $   #     #     #     #     $     7$     T$  *   k$  :   $     $      $  )   %  $   :%     _%  #   |%  #   %  0   %     %     &  
   &     "&     %&     9&     Q&     l&     &  %   &     &     &     &     '  &   3'     Z'     \'     l'     '     '  4   '     '     '     '    '     w)     y)  "   )    )     &-  (   D-  #   m-     -     -  &   -     -     .     .  *   ,.     W.     t.     |.  9   .  )   .     .  "   .     "/     :/  /   M/  +   }/     /     /  
   /     /  #   /  #   
0  %   .0      T0     u0     0     0     0     0     0  W   0     O1  "   l1     1  &   1  "   1     1     2     +2     D2     ]2  !   |2     2  '   2  "   2     3     3  !   43  #   V3     z3  !   3  %   3     3     3  !   4     )4  &   D4  5   k4  *   4  C   4  =   5     N5  (   `5  %   5  %   5  0   5  &   6     -6  /   ?6     o6  >   6  @   6     7     7     7  3   47  ,   h7     7     7     7     7     7      8  '   8     @8  '   Y8     8     8     8  +   8     8     	9     '9     :9     P9     `9     u9     9     9  	   9     9  %   9  /   9     !:     ?:  
   Z:     h:  &   :     :  !   :     :     
;     ;  1   ;  /   I;     y;  !   ;     ;  ,   ;  T   ;     F<  
   <      <     <  
   <     
=  
   =     (=     ;=     Z=  4   u=  $   =     =     =     >     *>     F>     c>  *   z>  :   >     >      >  )   ?  $   I?     n?  #   ?  #   ?  0   ?     @     @  
   &@     1@     4@     H@     `@     {@     @  %   @     @     @     A     (A  &   BA     iA     kA     {A     A     A  4   A     A     A     A           
   O          x             +       y      )                  R      S                  '           .      e                 J   ;      p   	          !   q             "   D                   I               5   X          4               K       W         7      -      H             }          c                        \   ~   G                    @         <      a                 _   Z         V   >   `      k      g      l   f       |   3      j       o           {   ]           #      M   t              
   N      B           [   ,      ^                   v   %   F          r       (      1   /   d                  w          0       ?   b                             L   8   2                     9      =      A   6   h          $         *                      n   u      E   T   s                Y   i                &      z               Q   :       P      U       C                 m       
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2011-05-29 12:56+0000
Last-Translator: Joel Pickett <jlkpcktt@gmail.com>
Language-Team: English (Australia) <en_AU@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writeable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalise destination address Could not normalise source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalisation Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |      h     i     k  "   s           (   6  #   _            &                    *        H     e     m  9   t  )          "             +  /   >  +   n            
          #     #     %         E     f     z                      W        @  "   ]       &     "                       5     N  !   m       '     "               !   %  #   G     k  !   ~  %               !          &   5  5   \  *     C     =        ?  (   Q  %   z  %     0     &          /   0     `  >   r  @                    3   %  ,   Y                                '   	     1  '   J     r            +                       +     A     Q     f     y       	          %     /              0   
   K      Y   &   x         !                     !  1   !  /   :!     j!  !   w!     !  ,   !  T   !     7"  
   "      "     "  
   "     "  
   #     #     ,#     K#  4   f#  $   #     #     #     #     $     7$     T$  *   k$  :   $     $      $  )   %  $   :%     _%  #   |%  #   %  0   %     %     &  
   &     "&     %&     9&     Q&     l&     &  %   &     &     &     &     '  &   3'     Z'     \'     l'     '     '  4   '     '     '     '    '     )     )  "   )    )     :-  (   X-  #   -     -     -  &   -     -     .     *.  *   ?.     j.     .     .  9   .  )   .     .  "   /     5/     M/  /   `/  +   /     /     /  
   /     /  #   /  #   0  %   A0      g0     0     0     0     0     0     0  W   
1     b1  "   1     1  &   1  "   1     
2     &2     >2     W2     p2  !   2     2  '   2  "   2     3     03  !   G3  $   i3     3  "   3  &   3     3     4  !   4     @4  &   [4  5   4  *   4  C   4  =   '5     e5  (   w5  %   5  %   5  0   5  &   6     D6  /   V6     6  >   6  @   6     7     7     67  3   K7  ,   7     7     7     7     7     8     8  '   /8     W8  '   p8     8     8     8  +   8      9      9     >9     Q9     g9     w9     9     9     9  	   9     9  %   9  /   :     8:     V:  
   q:     :  &   :     :  !   :     ;     !;     ';  1   .;  /   `;     ;  !   ;     ;  ,   ;  T   <     ]<  
   <      <     	=  
   =     $=  
   1=     ?=     R=     q=  4   =  $   =     =     >     #>     A>     ]>     z>  *   >  :   >     >      ?  )   6?  $   `?     ?  #   ?  #   ?  0   ?     @     ,@  
   =@     H@     K@     _@     w@     @     @  %   @     @     A     "A     ?A  0   YA     A     A     A     A     A  4   A     B     B     B           
   O          x             +       y      )                  R      S                  '           .      e                 J   ;      p   	          !   q             "   D                   I               5   X          4               K       W         7      -      H             }          c                        \   ~   G                    @         <      a                 _   Z         V   >   `      k      g      l   f       |   3      j       o           {   ]           #      M   t              
   N      B           [   ,      ^                   v   %   F          r       (      1   /   d                  w          0       ?   b                             L   8   2                     9      =      A   6   h          $         *                      n   u      E   T   s                Y   i                &      z               Q   :       P      U       C                 m       
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2012-08-17 23:21+0000
Last-Translator: Anthony Harrington <untaintableangel@ubuntu.com>
Language-Team: English (United Kingdom) <en_GB@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 3.2)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalise destination address Could not normalise source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Could not determine iptables version Could not find '%s' Could not find parent pid for '%s' Could not find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: This script should not be SGID ERROR: This script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalisation Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments In order to run this script, you need to be root n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |      h     i     k  "   s           (   6  #   _            &                    *        H     e     m  9   t  )          "             +  /   >  +   n            
          #     #     %         E     f     z                      W        @  "   ]       &     "                       5     N  !   m       '     "               !   %  #   G     k  !   ~  %               !          &   5  5   \  *     C     =        ?  (   Q  %   z  %     0     &          /   0     `  >   r  @                    3   %  ,   Y                                '   	     1  '   J     r            +                       +     A     Q     f     y       	          %     /              0   
   K      Y   &   x         !                     !  1   !  /   :!     j!  !   w!     !  ,   !  T   !     7"  
   "      "     "  
   "     "  
   #     #     ,#     K#  4   f#  $   #     #     #     #     $     7$     T$  *   k$  :   $     $      $  )   %  $   :%     _%  #   |%  #   %  0   %     %     &  
   &     "&     %&     9&     Q&     l&     &  %   &     &     &     &     '  &   3'     Z'     \'     l'     '     '  4   '     '     '     '  m  '     a)  
   c)  =   n)    )  &   -  1   -  ;   .  /   Y.  4   .  +   .     .     /     /  6   5/      l/     /     /  O   /  2   /     %0  '   ?0     g0     0  ?   0  8   0     1     91     I1     `1  3   1  3   1  1   1  )   2     C2     X2     l2     2     2     2  l   2  #   L3  (   p3  (   3  6   3  .   3  %   (4  !   N4  $   p4  $   4  (   4  .   4  .   5  .   A5  -   p5     5     5  +   5  -   6     06  4   L6  9   6  (   6     6  8   7  *   :7  <   e7  C   7  <   7  O   #8  D   s8     8  8   8  '   9  '   ,9  C   T9  4   9     9  H   9  (   5:  O   ^:  L   :     :  &   ;     (;  W   G;  9   ;     ;  #   ;  #   <  $   =<  !   b<  &   <  2   <      <  6   <  #   6=  "   Z=     }=  6   =  )   =  +   =     >     3>     O>  "   a>     >     >     >     >     >  6   >  ?   %?  -   e?  *   ?     ?  0   ?  <    @  "   =@  &   `@  *   @     @     @  @   @  <   A     AA  #   MA  2   qA  6   A  w   A     SB     C  +   C     <C     LC     \C     nC     C  3   C  #   C  A   C  1   5D  &   gD  "   D  '   D  #   D  (   D  "   &E  6   IE  O   E  (   E  ,   E  J   &F  $   qF  6   F  (   F  (   F  0   G     PG     aG     rG     G  "   G     G  %   G     G     	H  -   'H     UH  9   sH  ;   H      H  7   
I     BI     DI     XI     tI     I  :   I     I     I     I           
   O          x             +       y      )                  R      S                  '           .      e                 J   ;      p   	          !   q             "   D                   I               5   X          4               K       W         7      -      H             }          c                        \   ~   G                    @         <      a                 _   Z         V   >   `      k      g      l   f       |   3      j       o           {   ]           #      M   t              
   N      B           [   ,      ^                   v   %   F          r       (      1   /   d                  w          0       ?   b                             L   8   2                     9      =      A   6   h          $         *                      n   u      E   T   s                Y   i                &      z               Q   :       P      U       C                 m       
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2012-08-25 12:16+0000
Last-Translator: Jose Luis Tirado <Unknown>
Language-Team: Spanish <es@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Ninguno) 
Se produjo un error al aplicar las reglas de la aplicación. 
Uso: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s activa el cortafuegos
 %(disable)-31s desactiva el cortafuegos
 %(default)-31s establece política por defecto
 %(logging)-31s establece trazas a %(level)s
 %(allow)-31s añadir permitir %(rule)s
 %(deny)-31s añadir denegar %(rule)s
 %(reject)-31s añadir rechazar %(rule)s
 %(limit)-31s añadir límite %(rule)s
 %(delete)-31s borrar %(urule)s
 %(insert)-31s insertar %(urule)s en %(number)s
 %(reload)-31s recargar cortafuegos
 %(reset)-31s reiniciar cortafuegos
 %(status)-31s mostrar estado del cortafuegos
 %(statusnum)-31s mostrar estado del cortafuegos como una lista numerada de %(rules)s
 %(statusverbose)-31s mostrar estado ampliado del cortafuegos
 %(show)-31s mostrar informe del cortafuegos
 %(version)-31s mostrar información de la versión

%(appcommands)s:
 %(applist)-31s mostrar perfiles de aplicación
 %(appinfo)-31s mostrar información sobre %(profile)s
 %(appupdate)-31s actualizar %(profile)s
 %(appdefault)-31s establecer política de aplicación por defecto
  (se omite la recarga del cortafuegos)  Las reglas se han podido revertir correctamente.  Es posible que algunas reglas no se hayan podido revertir. ¡El grupo posee permiso de escritura sobre %s! ¡todo el mundo posee permiso de escritura sobre %s! «%(f)s» el archivo «%(name)s» no existe «%s» ya existe. Cancelando. «%s» no existe «%s» no se puede escribir (asegúrese de actualizar sus reglas consecuentemente) : Necesita al menos python 2.6)
 Interrumpido Acción Reglas añadidas del usuario (vea «ufw status» para ejecutar el cortafuegos): Fallo al agregar la regla IPv6: IPv6 no habilitado Aplicaciones disponibles: Respaldando «%(old)s» en «%(new)s»
 Dirección de destino errónea Nombre de interfaz incorrecto Nombre de interfaz erróneo: no se puede usar alias de interfaz Nombre de interfaz incorrecto: caracter reservado: «!» Tipo de interfaz incorrecto Puerto erróneo Puerto erróneo «%s» Dirección de orígen errónea No se pudo insertar la regla en la posición «%d» No se pudo insertar la regla en la posición «%s» No se puede especificar «all» con «--add-new» No se puede especificar insertar y borrar Comprobar ip6tables
 Comprobar iptables
 Comprobando ip6tables en bruto
 Comprobando iptables en bruto
 Verificación desactivada La orden «%s» ya existe El comando puede interrumpir las conexiones ssh existentes. ¿Continuar con la operación (%(yes)s|%(no)s)?  No se pudo revertir la regla «%s» No se puede borrar una regla inexistente No se pudo encontrar «%s». Cancelando. No se pudo encontrar un perfil que coincida con «%s» No se pudo encontrar el ejecutable para «%s» No se pudo encontrar el perfil «%s» No se pudo encontrar el protocolo No se pudo encontrar la regla «%d» No se pudo encontrar la regla «%s» No se pudo obtener el estado de escuchas No se pudieron obtener estadísticas de «%s» No se han podido cargar las reglas de registro No se pudo normalizar la dirección de destino No se pudo normalizar la dirección de origen No se puede hacer «%s» No se pudo establecer LOGLEVEL No se pudo actualizar el cortafuegos activo No se pudo determinar la versión de iptables No se pudo encontrar «%s» No se ha podido encontrar el PID del padre de «%s» No se ha podido encontrar el PID (¿está montado /proc?) No se puede abrir «%s» para su lectura No se pudo hacer stat «%s» No se han podido actualizar las reglas de la aplicación No se pudo actualizar el archivo de reglas No se puede actualizar el archivo de reglas para el registro La política %(direction)s predeterminada cambió a «%(policy)s»
 Directivas de aplicación predeterminadas cambiadas a «%s» Predeterminado: %(in)s (entrantes), %(out)s (salientes), %(routed)s (enrutados) Borrando:
 %(rule)s
¿Continuar con la operación (%(yes)s|%(no)s)?  Descripción: %s

 Perfil «%s» duplicado; se usará el último encontrado ERROR: este guión no debería ser SGID ERROR: este guión no debería ser SUID El cortafuegos está activo y habilitado en el arranque del sistema El cortafuegos no está activado (omitiendo recarga) El cortafuegos se ha recargado El cortafuegos está detenido y deshabilitado en el arranque del sistema Se ha encontrado una coincidencia exacta Se encontraron varias coincidencias para «%s». Use un nombre de perfil exacto Coincidencia encontrada non-action/non-logtype (%(xa)s/%(ya)s %(xl)s/%(yl)s) Desde El soporte para IPv6 no está activado Error de sintáxis en la regla Sintaxis inapropiada para la regla (se especificó «%s» con una regla de aplicación) La posición «%s» insertada no es una posición válida Cláusula «%s» no válida La cláusula «from» es incorrecta La cláusula «port» es incorrecta La cláusula «proto» es incorrecta La cláusula «to» es incorrecta La versión de IP «%s» no es válida Dirección IPv6 incorrecta con el protocolo «%s» Cláusula de interfaz incorrecta Clausula de interfaz no válida para regla de enrutado Nivel de registro «%s» incorrecto Tipo de registro «%s» incorrecto Opción no valida Política «%(policy)s» incorrecta para «%(chain)s» Puerto incorrecto con el protocolo «%s» Hay puertos incorrectos en el perfil «%s» Posición ' incorrecta Posición «%d» incorrecta Perfil incorrecto El nombre del perfil es incorrecto El token «%s» es incorrecto Registro desactivado Registro activado Acceso:  Falta política para «%s» Las versiones IP de «from» y «to» están mezcladas Se debe especificar «tcp» o «udp» al indicar varios puertos Se necesita usar «from» o «to» con «%s» Se necesita la cláusula «to» o «from» Perfiles nuevos: No se han encontrado puertos en el perfil «%s» No se han encontrado reglas para el perfil de la aplicación Opción «log» no permitida aquí Opción «log-all» no permitida aquí Los rangos de puertos deben ser numéricos Puerto: Puertos: El perfil «%(fn)s» tiene vacío el campo obligatorio «%(f)s» En el perfil «%(fn)s» falta el campo obligatorio «%(f)s» Perfil: %s
 No existe el directorio de perfiles Discordancia en el uso de los argumentos (from/to) El protocolo no concuerda con el especificado («%s») Reiniciando todas las reglas a sus valores predeterminados instalados. ¿Continuar con la operación (%(yes)s|%(no)s)?  Reiniciando todas las reglas a sus valores predeterminados instalados. Esto puede interrumpir las conexiones ssh existentes. ¿Continuar con la operación (%(yes)s|%(no)s)?  Regla agregada Se cambió una regla tras la normalización Regla eliminada Regla insertada Regla actualizada Reglas actualizadas Reglas actualizadas (v6) Se han actualizado las reglas para el perfil «%s» Se omite la recarga del cortafuegos Omitiendo «%(value)s»: valor demasiado largo para «%(field)s» Omitiendo «%s»: está también en /etc/services Omitiendo «%s»: no se puede procesar Omitiendo «%s»: no se puede leer Omitiendo «%s»: campo demasiado largo Omitiendo «%s»: nombre incorrecto Omitiendo «%s»: nombre demasiado largo Omitiendo «%s»: demasiado grande Omitiendo «%s»: ya se han leído demasiados archivos Omitiendo las reglas de aplicación IPv6. Se necesita iptables 1.4 como mínimo Omitiendo adición de regla ya existente Saltando la inserción de regla ya existente Omitiendo regla errónea (longitud errónea): %s. Verifique su cortafuegos Omitida tupla malformada (iface): %s Omitiendo línea erróna: %s. Verifique su cortafuegos Omitiendo regla «%s» IPv4 no permitida Omitiendo regla IPv6 «%s» no soportada Estado: activo
%(log)s
%(pol)s
%(app)s%(status)s Estado: activo%s Estado: inactivo Título: %s
 Hasta La política «%s» es desconocida Acción «%s» no soportada Política predeterminada no permitida Dirección «%s» no permitida Política «%s» no permitida Politica para dirección «%s»  no permitida Protocolo «%s» no permitido AVISO: «%s» tiene permiso de lectura para todo el mundo AVISO: «%s» tiene permiso de escritura para todo el mundo Número incorrecto de argumentos Debe ser root (administrador) para ejecutar este guión n problema ejecutando problema al ejecutar sysctl error al ejecutar ufw-init
%s ejecutando ufw-init El uid es %(uid)s pero «%(path)s» pertenece a %(st_uid)s desconocido s sí                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  G      T  a                             1     O     c     x            9                    
        %  #   8  #   \                                !        4     G  !   f            0          /        (	     :	     I	     g	     z	     	     	     	  	   	  
   	     	     	     	  1   
  /   7
     g
  !   t
  
   
     
  
   
     
  
   
     
     
     	  0         Q     b  
   s     ~                 &                  1     9  l  =     
     
     
  !   
     
                6     B  ;   J            	               ,     ,        >     X  !   i                 )                  ,     K     j  C   z       E             1     >     \     p            
                              7     5   3     i     v                                (        5  3   U                                     9        O     e     {          C   ;       (      &   F   -   .            :   
   '      %   /   *   	           3   >       8                            4   #   ,       ?              
   "   2      G           0   =      D                            7                 6      )         E      1      B          <          !          9       5          A          @       $       +       
 
(None) %s is world writable! '%s' already exists. Aborting '%s' does not exist '%s' is not writable : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Available applications: Bad destination address Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Checking iptables
 Checks disabled Could not find '%s'. Aborting Could not find profile '%s' Could not find protocol Could not load logging rules Could not update running firewall Couldn't find '%s' Couldn't open '%s' for reading Couldn't update application rules Couldn't update rules file Description: %s

 Firewall is active and enabled on system startup Firewall reloaded Firewall stopped and disabled on system startup Found exact match Invalid option Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Logging disabled Logging enabled Logging:  New profiles: No ports found in profile '%s' Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Rule added Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipping '%s': too big Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 Unknown policy '%s' Unsupported policy '%s' Unsupported protocol '%s' Wrong number of arguments You need to be root to run this script problem running problem running ufw-init
%s unknown yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2014-11-09 04:28+0000
Last-Translator: Marko Silluste <Unknown>
Language-Team: Estonian <et@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Mitte) %s ei ole kirjutatav! '%s' on juba olemas. Tühistamine '%s' ei eksisteeri '%s' ei ole kirjutatav : Vajab vähemalt python 2.6)
 Tühistatud Tegevus Lisatud kasutaja reegeid (vaata 'ufw status' tulemüüril): Saadaval olevad rakendused: Halb sihtkoha aadress Halb port Halb port '%s' Halb lähteaadress Ei saa sisestada reegleid positsioonile '%d' Ei saa sisestada reegleid positsioonile '%s' iptables'i kontrollimine
 Kontroll väljas Ei suuda leida '%s'. Tühistamine Ei suuda leida '%s' Ei suuda leida protokolli Ei suuda laadida logi reegleid Ei saa uuendada töös olevat tulemüüri Ei leia '%s' Ei saa avada '%s' lugemiseks Ei saa uuendada reeglite faili Ei saa uuendada reeglite faili Kirjeldus: %s

 Tulemüür on aktiivne ja sisselülitatud süsteemis käivitamiseks Tulemüür on uuendatud Tulemüür on peatatud ja välja lülitatud süsteemis käivitamiseks Leiti täpne sobivus Vigane valik Vigased pordid profiilil '%s' Vigane positsioon ' Vigane positsioon '%d' Vigane profiil Logimine väljas Logimine sees Logid:  Uued profiilid: Profiilis  '%s' porte ei leitud Port: Pordid: Profiilil '%(fn)s' on tühjad vajalikud väljad '%(f)s' Profiilil '%(fn)s' puuduvad vajalikud väljad '%(f)s' Profiil: %s
 Profiili asukohta ei eksisteeri Reegel lisatud Reegel on kustutatud Reegel on lisatud Reegel uuendatud Reeglid on uuendatud Reeglid on uuendatud (v6) Reeglid on uuendatud proffili '%s' jaoks Jäetud vahele '%s': liiga suur Staatus: aktiivne
%(log)s
%(pol)s
%(app)s%(status)s Staatus: aktiivne%s Staatus: väljas Tiitel: %s
 Tundmatu poliis '%s' Toetamata poliis '%s' Toetamata protokoll '%s' Vigane argumentide arv Sa pead olema juure õigustes, et jooksutada seda skripti probleem töötamisel probleem  ufw-init
%s tundmatu jah                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             7        I                          )     
                  !     1     M     `  (   r  %     %                            2     B  
   W     e                 !     
          
          
               4   3  $   h                              !  *   8  :   c            
                    %     &    	     G	     W	     h	  k  p	     
     
     
  =   
     1     J     b  !   y                  9     2     2   R                 '                  
  &   +
     R
     Z
  
   b
  "   p
     
     
     
     
     
     
  '     A   >  9     &     #     )     &   /  &   V     }  .     P             -  	   ?  
   I     W     s  7     C             !  
   6            6   "                       %      5   
           !                    4      +         	   0      #         (                   3      '       
                     *          1   ,            -      )              7          $      /   &      2   .    
 Aborted Action Adding IPv6 rule failed: IPv6 not enabled Bad port '%s' Checking ip6tables
 Checking iptables
 Checks disabled Could not find profile '%s' Couldn't stat '%s' Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID From IPv6 support not enabled Invalid option Invalid ports in profile '%s' Invalid profile Invalid profile name New profiles: No ports found in profile '%s' Port: Ports: Profile: %s
 Profiles directory does not exist Rule added Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported policy '%s' Unsupported policy for direction '%s' You need to be root to run this script problem running running ufw-init unknown Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2012-09-02 11:27+0000
Last-Translator: Jiri Grönroos <Unknown>
Language-Team: Finnish <fi@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 Keskeytetty Toiminto IPv6-säännön lisäys epäonnistui: IPv6 ei ole käytössä Virheellinen portti '%s' Tarkistetaan ip6tables
 Tarkistetaan iptables
 Tarkastukset eivät ole päällä Profiilia '%s' ei löytynyt Ei voitu luoda statistiikka '%s' Kuvaus: %s

 Monista profiili '%s', käyttäen viimeistä löytynyttä VIRHE: tämän komentosarjan ei pitäisi olla SGID VIRHE: tämän komentosarjan ei pitäisi olla SUID Lähettäjä IPv6-tuki ei käytössä Virheellinen valinta Virheellisiä portteja profiilissa '%s' Virheellinen profiili Virheellinen profiilin nimi Uudet profiilit: Portteja ei löytynyt profiilista '%s' Portti: Portit: Profiili: %s
 Profiilihakemistoa ei ole olemassa Sääntö lisätty Sääntö poistettu Sääntö lisätty Sääntö päivitetty Säännöt päivitetty Säännöt päivitetty (v6) Säännöt päivitetty profiilille '%s' Sivutetaan '%(value)s': arvo on liian pitkä paikkaan '%(field)s' Sivuutetaan '%s': löytyy myös tiedostosta /etc/services Sivuutetaan '%s': ei voitu käsitellä Sivuutetaan '%s': Tilastoa ei saada Sivuutetaan '%s': kenttä on liian pitkä Sivuutetaan '%s': nimi on virheellinen Sivuutetaan '%s': nimi on liian pitkä Sivuutetaan '%s': liian iso Sivuutetaan '%s': liian monta tiedostoa luettu Sivuutetaan IPv6-sovellussääntö. Tarvitaan vähintään iptablesin versio 1.4 Tila: käytössä%s Tila: passiivinen Nimi: %s
 Vastaanottaja Tuntematon käytäntö '%s' Käytäntö '%s' ei ole tuettu Ohjaukselle '%s' ei löytynyt kelvollista käytäntöä Tarvitset pääkäyttäjän oikeudet suorittaaksesi tamän komennon ongelma ajettaessa suoritetaan ufw-init tuntematon                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ,                  "          (   4  #   ]            &                    *        F     c     k  9   r  )          "             )  /   <     l       
          #     #     %              8     L     _     w            W          "   /     R  &   p  "                               !   ?     a  '   ~  "               !     #        =  !   P  %   r            !          &     5   .  *   d  =          (     %     %   .  0   T  &          /          >      @   ?                 3     ,             (     >     T     k       '                         +        @     `     ~                                	         
  %   "  /   H     x       
          &          !   #     E     a     g  1   n  /          !          ,     T   H       
         (     I  
   V     d  
   q                 4     $        &     F     c                 *     :        7       U   )   v         #      #      0   !     6!     G!  
   X!     c!     f!     z!     !     !     !  %   !     "      "     ="     Z"  &   t"     "     "     "     "     "  4   "     &#     .#     0#  g  4#     $     $  8   $  #   $  6   %  1   ;%  0   m%  4   %  @   %  !   &     6&  ,   N&  7   {&  "   &     &     &  N   &  8   4'     m'  3   '  +   '  '   '  V   (  %   h(     (     (  )   (  9   (  9   )  ;   U)  9   )     )     )  $   *  #   '*     K*  $   h*  g   *  +   *  3   !+     U+  ;   u+  3   +  *   +  "   ,  *   3,  *   ^,  (   ,  5   ,  3   ,  1   -  /   N-  !   ~-     -  .   -  /   -      .  ;   @.  =   |.  4   .  '   .  9   /  2   Q/  ?   /  g   /  I   ,0  G   v0     0  <   0  0   1  0   @1  9   q1  '   1     1  F   1  *   -2  [   X2  b   2     3  ,   3  *   G3  `   r3  4   3  &   4  (   /4     X4  )   x4  &   4  &   4  6   4     '5  /   E5  -   u5     5  D   5  *   5  -   #6     Q6     h6     6     6  %   6     6     6     7  +   "7  F   N7  I   7  ;   7  @   8     \8  ,   p8  6   8  -   8  1   9  -   49     b9     j9  D   s9  H   9     :  '   :  "   ?:  6   b:     :     ;     ;  %   ;     <     .<     J<  #   i<  *   <  /   <      <  F   	=  /   P=  +   =  3   =  %   =  %   >  #   ,>     P>  1   p>  R   >  *   >  .    ?  7   O?  $   ?  3   ?  9   ?  0   @     K@     \@     m@     z@     @  %   @  *   @  +   @  )   A  6   EA  0   |A  ?   A  A   A     /B  6   LB     B     B  (   B  !   B     B  >   B     9C     AC     CC        U         f   b         K          o          '      p           y      T   X      V                   .   t   =   D   R   &   F   #       C   A   J   Z                      *      M   9      d      5   @          1   )   L                  a   _   e                     i   }                                  g                           3                        l   ,   z   ^   s   !   [       G         %   0   ?       +   r   (          m             j      Q   $   P           E                               x   u                4   "      /   v            >                    B   O   k          c   :   8                 ]   ;                                    n   W                Y   6   	   2   
   N       <   q          H   \                 {      h   7                  -      S      `                 w   ~            
   I           |                     
 
(None) 
Error applying application rules.  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2010-09-28 06:10+0000
Last-Translator: Bruno Patri <Unknown>
Language-Team: French <fr@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Aucun) 
Erreur lors du traitement des règles de l'application.  (rechargement du pare-feu ignoré)  Les règles choisies ont été retirées avec succès  Certaines régles ne peuvent pas être retirées %s est accessible en écriture pour le groupe ! %s est accessible en écriture pour tout le monde ! Le fichier de « %(f)s » nommé « %(name)s » n'existe pas « %s » existe déjà. Abandon « %s » n'existe pas « %s » n'est pas accessible en écriture (veillez à mettre à jour vos règles en conséquence) : Nécessite au moins python 2.6)
 Annulé Action Règles utilisateur ajoutées (voir 'ufw status' pour le pare-feu en cours) : L'ajout de la règle IPv6 a échoué : IPv6 non activé Applications disponibles : Sauvegarde de « %(old)s » vers « %(new)s »
 L'adresse de destination n'est pas correcte Le nom de l'interface n'est pas correct Le nom de l'interface n'est pas correct : impossible d'utiliser les alias d'interface Le type d'interface n'est pas correct Port incorrect Port « %s » incorrect L'adresse de la source n'est pas correcte Impossible d'insérer la règle à la position « %d » Impossible d'insérer la règle à la position « %s » Impossible de spécifier « all » avec « --add-new » Impossible de spécifier « insert » et « delete » Vérification de ip6tables
 Vérification de iptables
 Vérification des règles ip6tables
 Vérification des règles iptables
 Vérifications désactivées Commande « %s » déjà existante La commande peut interrompre les connexions ssh existantes. Exécuter l'opération (%(yes)s|%(no)s) ?  Impossible de remonter la règle « %s » Impossible de supprimer une règle qui n'existe pas « %s » introuvable. Abandon Impossible de trouver un profil correspondant à « %s » Impossible de trouver l'exécutable pour « %s » Impossible de trouver le profil « %s » Impossible de trouver le protocole Impossible de trouver la règle « %d » Impossible de trouver la règle « %s » Impossible d'acquérir l'état d'écoute Impossible d'obtenir les statistiques pour « %s » Impossible de charger les règles de journalisation Impossible de normaliser l'adresse de destination Impossible de normaliser l'adresse de la source Impossible d'accomplir « %s » Impossible de définir LOGLEVEL Impossible de mettre à jour le pare-feu actif Impossible de déterminer la version d'iptables Impossible de trouver « %s » Impossible de trouver le « pid » parent pour « %s » Impossible de trouver le « pid » (/proc est-il monté ?) Impossibel d'ouvrir le fichier « %s » en lecture Impossible d'évaluer « %s » (stat) Impossible de mettre à jour les règles de l'application Impossible de mettre à jour le fichier de règles Impossible de mettre à jour les règles pour la journalisation La stratégie par défaut pour le sens « %(direction)s » a été remplacée par « %(policy)s »
 La stratégie par défaut de l'application a été changée en « %s » Suppression de :
 %(rule)s
Exécuter l'opération (%(yes)s|%(no)s) ?  Description : %s

 Profil « %s » en doublon, utilisation du dernier trouvé ERREUR : ce script ne devrait pas avoir le SGID ERREUR : ce script ne devrait pas avoir le SUID Le pare-feu est actif et lancé au démarrage du système Pare-feu inactif (rechargement ignoré) Pare-feu rechargé Le pare-feu est arrêté et désactivé lors du démarrage du système Une correspondance exacte a été trouvée Correspondance multiple trouvée pour « %s ». Veuillez utiliser le nom exact du profil. Une « non-action/non-logtype » correspondant à (%(xa)s/%(ya)s %(xl)s/%(yl)s) a été trouvée De La prise en charge d'IPv6 n'est pas activée La règle présente une syntaxe incorrecte La règle présente une syntaxe incorrecte (« %s » spécifié avec une règle d'application) La position d'insertion « %s » n'est pas valable La clause « %s » n'est pas valable La clause « from » n'est pas valable Clause « port » non valable La clause « proto » n'est pas valable La clause « to » n'est pas valable Version d'IP non valable : « %s » Adresse IPv6 incompatible avec le protocole « %s » Clause d'interface incorrecte Niveau de journalisation non valable « %s » Type de journalisation « %s » non valable Option invalide La stratégie « %(policy)s » pour « %(chain)s » est invalide Port invalide avec le protocole « %s » Ports non valables dans le profile « %s » Position non valable ' Position « %d » non valable Profil non valable Nom de profil non valable Le jeton « %s » n'est pas valable Journalisation désactivée Journalisation activée Journalisation :  La stratégie pour « %s » est manquante Versions d'IP différentes pour les clauses « from » et « to » Vous devez spécifier « tcp » ou « udp » avec des ports multiples « for » ou « to » sont nécessaires avec « %s » Une clause « from » ou une clause « to » est nécessaire Nouveaux profils : Aucun port trouvé dans le profil « %s » Aucune règle trouvée pour le profil de l'application L'option « log » n'est pas autorisée ici L'option « log-all » n'est pas autorisée ici Les plages de ports doivent être des nombres Port : Ports : Le champ requis « %(f)s » est vide dans le profil « %(fn)s » Le champ « %(f)s » requis pour le profil « %(fn)s » est manquant Profil : « %s »
 Le répertoire des profils n'existe pas Protocoles incompatibles (from/to) Protocole incompatible avec le protocole %s spécifié Réinitialisation de toutes les règles à leurs paramètres installés par défaut. Exécuter l'opération (%(yes)s|%(no)s) ?  Réinitialisation de toutes les règles à leurs paramètres installés par défaut. Cela peut interrompre les connexions ssh existantes. Exécuter l'opération (%(yes)s|%(no)s) ?  La règle a été ajoutée Règle modifiée après normalisation La règle a été supprimée La régle a été insérée La règle a été mise à jour Les règles ont été mises à jour Les règles ont été mises à jour (IPv6) Règles mises à jour pour le profil « %s » Rechargement du pare-feu ignoré « %(value)s » ignoré : valeur trop grande pour « %(field)s » « %s » ignoré : déjà dans /etc/services « %s » ignoré : traitement impossible « %s » ignoré : impossible à évaluer (stat) « %s » ignoré : champ trop long « %s » ignoré : nom non valable « %s » ignoré : nom trop long « %s » ignoré : trop gros « %s » ignoré : trop de fichiers déjà lus Omission de la règle IPv6 de l'application. Cela requiert au minimum iptables 1.4 Omission de l'ajout de la règle existante Omission de l'insertion de la règle existante Omission du tuple non conforme (longeur erronée) : %s Omission du tuple non conforme : %s La règle IPv4 '%s' non supportée a été ignorée Omission de la règle IPv6 non prise en charge « %s » État : actif
%(log)s
%(pol)s
%(app)s%(status)s État : actif%s État : inactif Titre : %s
 Vers Stratégie « %s » inconnue Action « %s » non prise en charge Stratégie par défaut non prise en charge Le sens « %s » n'est pas pris en charge Stratégie « %s » non prise en charge Stratégie non prise en charge pour le sens « %s » Le protocole « %s » n'est pas pris en charge ALERTE : « %s » est accessible en lecture à tout le monde ALERTE : « %s » est accessible en écriture à tout le monde Nombre d'arguments incorrect Vous devez être root pour pouvoir exécuter ce script n problème en cours problème lors de l'exécution de sysctl problème pour lancer ufw-init
%s exécution de ufw-init uid est %(uid)s mais « %(path)s » appartient à %(st_uid)s inconnu o oui                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              3        G   L      h     i     k       *          )               
        "     5     I     \  !   l                 %     /        1     C     H     a     v                                          %   (     N     i  ,     
               
          )        "  #   ?     c     f     ~       &          l       V
  (   X
  $   
  <   
  
   
  9   
     (     G     [      t                 2     /     %   C  3   i  ;     R     "   ,
     O
  )   T
     ~
     
     
     
     
  !        (     @     [     u  7     &     6     P   !     r                      S     ?   5  0   u       #     #     &     G        b        2      '   $           )            ,                +         (                    #   !   	   %           3          -       
              0   .                
   &                                  "   *   1          /                             
 %s is group writable! %s is world writable! (be sure to update your rules accordingly) Action Adding IPv6 rule failed: IPv6 not enabled Bad destination address Bad port Bad port '%s' Bad source address Checking ip6tables
 Checking iptables
 Checks disabled Could not update running firewall Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update rules file ERROR: this script should not be SGID Firewall stopped and disabled on system startup Found exact match From IPv6 support not enabled Improper rule syntax Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid option Invalid token '%s' Logging disabled Logging enabled Mixed IP versions for 'from' and 'to' Need 'to' or 'from' clause Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Rule added Rule deleted Rule updated Rules updated Rules updated (v6) Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv6 '%s' rule To Unsupported policy '%s' Unsupported protocol '%s' Wrong number of arguments You need to be root to run this script problem running Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2009-08-26 19:18+0000
Last-Translator: Yaron <sh.yaron@gmail.com>
Language-Team: Hebrew <he@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 %s ניתן לכתיבה קבוצתית! %s נין לכתיבה עולמית! (ודא כי עדכנת את הכללים שלך בהתאם) פעולה הוספת כלל ה־IPv6 נכשל: IPv6 לא הופעל כתובת היעד שגויה פתחה שגויה פתחה שגויה '%s' כתובת המקור שגויה בדוק את ip6tables
 בודק את iptables
 הבדיקות בוטלו לא ניתן לעדכן חומת־אש פעילה לא ניתן לפתוח את '%s' לקריאה לא ניתן לבצע stat על '%s' לא ניתן לעדכן את קובץ הכללים שגיאה: סקריפט זה לא אמור להיות SGID חומת האש נוטרלה כמו גם הפעלתה עם הפעלת המערכת נמצאה התאמה מושלמת מ־ התמיכה ב־IPv6 אינה פעילה תחביר הכלל שגוי פסקת 'from' שגויה פסקת 'port' שגויה פסקת 'proto' שגויה פסקת 'to' שגויה גירסת ה־IP שגויה '%s' אפשרות שגויה אסימון שגוי '%s' הרישום מנוטרל הרישום פעיל גרסאות IP מעורבות עבור 'from' ו־'to' זקוק לפיסקת 'to' או 'from' חוסר תאימות הפרוטוקולים (from/to) חוסר תאימות הפרוטוקול עם הפרוטוקול שצויין %s נוסף כלל הכלל נמחק הכלל עודכן הכללים עודכנו הכללים עודכנו (v6) מדלג על רשומה פגומה במסד הנתונים (אורך שגוי): %s מדלג על רשומה פגומה במסד הנתונים: %s מדלג על כלל לא נתמך ב־IPv6 '%s' עד מדיניות לא נתמכת '%s' פרוטוקול לא נתמך '%s' מספר הארגומנטים שגוי עליך להיות משתמש על כדי להריץ סקריפט זה בעיה בהפעלה                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ?        Y         p     q     s    {          	  *   )	     T	     q	  9   x	  )   	     	  +   	      
  
   )
     7
     J
     ^
     q
  !   
  #   
     
     
     
  C     %   X  %   ~  /                                 /     E     \     p  '                    %        
     !
  ,   =
  
   j
     u
     
  
   
     
  )   
  $   
     
  #     #   @     d     g            &                    z                  $   @  #   e  _     1          R   $  E   w       2     
                   /     H     `  !   {  3     ,          2     N   K  :     :     P     !   a       &     #     !          #         <  $   ]  6                    9     .   2  ,   a  2                              4   -  /   b       3     -          2        O     n  I               +   
                ,   /   *         !                   5          4   %      '       7      #   3   +   &       >   	           =                   2       6      <   8          $   ;   1                 -   .              0   "       
                                            :   (   )      9          ?   
                     
 
(None) 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
 %s is group writable! %s is world writable! (be sure to update your rules accordingly) : Need at least python 2.6)
 Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Bad destination address Bad interface name: reserved character: '!' Bad port Bad port '%s' Bad source address Checking ip6tables
 Checking iptables
 Checks disabled Could not update running firewall Couldn't determine iptables version Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update rules file Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall stopped and disabled on system startup Found exact match From IPv6 support not enabled Improper rule syntax Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid interface clause for route rule Invalid option Logging disabled Logging enabled Mixed IP versions for 'from' and 'to' Need 'to' or 'from' clause Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Rule added Rule deleted Rule updated Rules updated Rules updated (v6) Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule To Unsupported policy '%s' Unsupported protocol '%s' Wrong number of arguments You need to be root to run this script problem running problem running sysctl problem running ufw-init
%s Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2009-08-26 19:19+0000
Last-Translator: Hrotkó Gábor <roti@profi-media.com>
Language-Team: Hungarian <hu@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Nincs) 
Használat: %(progname)s %(command)s
%(commands)s:

 %(enable)-31s engedélyezi a tűzfalat
 %(disable)-31s letiltja a tűzfalat
 %(default)-31s beállítja az alapértelmezett szabályokat
 %(logging)-31s %(level)s értékre állítja a naplózást
 %(allow)-31s engedélyezi a(z) %(rule)s szabályt
 %(deny)-31s letiltja a(z) %(rule)s szabályt
 %(reject)-31s visszautasítja a(z) %(rule)s szabályt
 %(limit)-31s korlátozza a(z) %(rule)s szabályt
 %(delete)-31s törli a(z) %(urule)s szabályt
 %(insert)-31s %(urule)s szabály hozzáfűzése %(number)s számmal
 %(reload)-31s újratölti a tűzfalat
 %(reset)-31s újraindítja a tűzfalat
 %(status)-31s kiírja a tűzfal állapotát
 %(statusnum)-31s kiírja a tűzfal állapotát számozott listaként a(z) %(rules)s szabályokról
 %(statusverbose)-31s kiírja a tűzfal állapotát bővebben
 %(show)-31s kiírja a tűzfal jelentését
 %(version)-31s kiírja a verziószámot

%(appcommands)s:
 %(applist)-31s alkalmazásprofilok listája
 %(appinfo)-31s kiírja a(z) %(profile)s adatait
 %(appupdate)-31s frissíti a(z) %(profile)s profilt
 %(appdefault)-31s beállítja az alapértelmezett alkalmazásszabályokat
 A(z) '%s' a csoport által írható! A(z) '%s' mindenki által írható! (győződjön meg arról, hogy az alkalmazásszabályai megfelelően rögzítésre kerültek-e) : Python 2.6 vagy későbbi verzió szükséges)
 Művelet Felhasználói szabályok hozzáadva (a futó tűzfalhoz lásd: „ufw status”): IPv6 szabály hozzáadása nem sikerült: az IPv6 nincs engedélyezve Rossz cél cím Hibás csatolónév: fenntartott karakter: „!” Rossz port Rossz port: '%s' Rossz forrás cím Ip6tables ellenőrzése
 Iptables ellenőrzése
 Ellenőrzések kikapcsolva A futó tűzfal nem frissíthető Nem sikerült meghatározni az iptables verzióját A(z) '%s' fájl nem nyitható meg olvasásra Nem található a(z) '%s' A szabályokat tartalmazó fájl nem frissíthető Alapértelmezett: %(in)s (bejövő), %(out)s (kimenő), %(routed)s (route-olt) HIBA: ehhez a parancsfájlhoz nem állítható SGID jelző HIBA: ehhez a parancsfájlhoz nem állítható SUID jelző A tűzfalat leállította és elindulását letiltotta a rendszer elindulásakor Pontosan illeszkedő találat van Feladó Az IPv6 támogatás nem engedélyezett Nem megfelelő szabály szintaktika Érvénytelen 'honnan' kifejezés Érvénytelen 'port' kifejezés Érvénytelen 'protokol' kifejezés Érvénytelen 'hová' kifejezés A(z) '%s' érvénytelen IP változat Érvénytelen interface utasítás a route szabályhoz Helytelen opció Naplózás kikapcsolva Naplózás bekapcsolva Kevert Ip változatok a 'honnan' és 'hová' értékekhez Szükség van a 'honnan' vagy 'hová' szavakra Nincs egyezés a protokolnál (honnan/hová) A protokol nem egyezik a megadott '%s' protokollal Szabály hozzáadva Szabály törölve Szabály frissítve Szabályok frissítve Szabályok frissítve (v6) A következő kihagyása: '%s' (érvénytelen hossz) Rosszul formázott tuple (iface) kihagyása: %s A következő kihagyása:' %s' Nem támogatott IPv4 szabály („%s”) kihagyása Nem támogatott '%s' IPv6 szabály kihagyása Címzett A(z) '%s' biztonsági beállítás nem támogatott Nem támogatott protokol: '%s' Hibás számú argumentumok A parancsfájl futtatásához rendszergazdai jogosultságok szükségesek Probléma futás közben Probléma a sysctl futtatásako hiba történt az ufw-init futtatásakor
%s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ,      <       P      Q   y  S                           
 Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2009-08-26 19:21+0000
Last-Translator: Jamie Strandboge <jamie@ubuntu.com>
Language-Team: Indonesian <id@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |      h     i     k  "   s           (   6  #   _            &                    *        H     e     m  9   t  )          "             +  /   >  +   n            
          #     #     %         E     f     z                      W        @  "   ]       &     "                       5     N  !   m       '     "               !   %  #   G     k  !   ~  %               !          &   5  5   \  *     C     =        ?  (   Q  %   z  %     0     &          /   0     `  >   r  @                    3   %  ,   Y                                '   	     1  '   J     r            +                       +     A     Q     f     y       	          %     /              0   
   K      Y   &   x         !                     !  1   !  /   :!     j!  !   w!     !  ,   !  T   !     7"  
   "      "     "  
   "     "  
   #     #     ,#     K#  4   f#  $   #     #     #     #     $     7$     T$  *   k$  :   $     $      $  )   %  $   :%     _%  #   |%  #   %  0   %     %     &  
   &     "&     %&     9&     Q&     l&     &  %   &     &     &     &     '  &   3'     Z'     \'     l'     '     '  4   '     '     '     '  |  '     p)  
   r)  1   })    )      -  *   -  .   .     F.     c.  %   ~.     .     .     .  <   .      %/  	   F/     P/  L   W/  5   /     /  1   /      &0     G0  F   b0  8   0     0     0     
1     1  2   61  2   i1  -   1  +   1     1     2     %2     A2     \2     s2  l   2  =   2  ,   :3  $   g3  5   3  )   3  #   3  !   4      24  "   S4  )   v4  ,   4  *   4  4   4  -   -5     [5     u5  0   5  /   5     5  ,   6  7   ;6  "   s6  !   6  0   6  +   6  @   7  <   V7  6   7  N   7  E   8     _8  .   q8  .   8  .   8  1   8  -   09     ^9  5   r9     9  I   9  K   :     \:     _:     }:  J   :  <   :     ";     ;;     V;     q;     ;     ;  -   ;  !   ;  >   <  #   Q<  %   u<     <  0   <  $   <  !   =     &=     ==     W=     j=     =     =     =     =     =  +   =  :   $>  '   _>  !   >     >  &   >  7   >     ?  !   5?  .   W?     ?     ?  =   ?  5   ?     @  #   @  #   9@  :   ]@  g   @      A     A  '   A     A     A     A     B     B  %   5B     [B  7   yB  #   B  "   B  &   B     C     ?C     \C     {C  (   C  G   C  %   D  (   -D  1   VD  $   D     D  )   D  )   D  /    E     PE     `E     pE     |E     ~E     E  #   E     E     E  -   F     @F  (   _F  '   F     F  4   F      G     G  "   G  "   >G     aG  8   xG     G     G     G           
   O          x             +       y      )                  R      S                  '           .      e                 J   ;      p   	          !   q             "   D                   I               5   X          4               K       W         7      -      H             }          c                        \   ~   G                    @         <      a                 _   Z         V   >   `      k      g      l   f       |   3      j       o           {   ]           #      M   t              
   N      B           [   ,      ^                   v   %   F          r       (      1   /   d                  w          0       ?   b                             L   8   2                     9      =      A   6   h          $         *                      n   u      E   T   s                Y   i                &      z               Q   :       P      U       C                 m       
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2013-08-12 08:23+0000
Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>
Language-Team: Italian <it@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Nessuna) 
Errore nell'applicare le regole di applicazione. 
Uso: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s Abilita il firewall
 %(disable)-31s Disabilita il firewall
 %(default)-31s Imposta la politica predefinita
 %(logging)-31s Imposta la registrazione a %(level)s
 %(allow)-31s Aggiunge la %(rule)s allow
 %(deny)-31s Aggiunge la %(rule)s deny
 %(reject)-31s Aggiunge la %(rule)s reject
 %(limit)-31s Aggiunge la %(rule)s limit
 %(delete)-31s Elimina %(urule)s
 %(insert)-31s Inserisce %(urule)s a %(number)s
 %(reload)-31s Ricarica il firewall
 %(reset)-31s Azzera il firewall
 %(status)-31s Mostra lo stato del firewall
 %(statusnum)-31s Mostra lo stato del firewall come elenco numerato di %(rules)s
 %(statusverbose)-31s Mostra lo stato del firewall in modo prolisso
 %(show)-31s Mostra il rapporto del firewall
 %(version)-31s Mostra le informazioni di versioni

%(appcommands)s:
 %(applist)-31s Elenca i profili di applicazione
 %(appinfo)-31s Mostra le informazioni su %(profile)s
 %(appupdate)-31s Aggiorna %(profile)s
 %(appdefault)-31s Imposta la politica di applicazione predefinita
  (omesso aggiornamento firewall)  Regole di prova disattivate con successo.  Alcune regole non possono essere disattivate. %s è scrivibile dal gruppo. %s è scrivibile da tutti. "%(f)s" il file "%(name)s" non esiste "%s" esiste già. Interrotto "%s" non esiste "%s" non è scrivibile (assicurarsi di aggiornare le proprie regole di conseguenza) : necessario almeno Python 2.6)
 Terminato Azione Aggiunte regole utente (consultare «ufw status» per eseguire il firewall): Aggiunta regola IPv6 non riuscita: IPv6 non abilitato Applicazioni disponibili: Copia di sicurezza di «%(old)s» in «%(new)s»
 Indirizzo di destinazione errato Nome di interfaccia errato Nome di interfaccia errata: impossibile usare gli alias di interfaccia Nome interfaccia inappropriato: carattere riservato: "!" Tipo di interfaccia errato Porta errata Porta "%s" errata Indirizzo sorgente errato Impossibile inserire la regola alla posizione "%d" Impossibile inserire la regola alla posizione "%s" Impossibile specificare "all" con "--add-new" Impossibile specificare "insert" e "delete" Controllo di ip6tables
 Controllo di iptables
 Controllo grezzo ip6tables
 Controllo grezzo iptables
 Controlli disabilitati Il comando "%s" esiste già Il comando potrebbe interrompere le connessioni SSH esistenti. Procedere con l'operazione (%(yes)s|%(no)s)?  Impossibile annullare le modifiche apportate alla regola "%s" Impossibile eliminare una regola inesistente Impossibile trovare "%s". Interrotto Impossibile trovare un profilo che corrisponda a "%s" Impossibile trovare l'eseguibile per "%s" Impossibile trovare il profilo "%s" Impossibile trovare il protocollo Impossibile trovare la regola %d Impossibile trovare la regola "%s" Impossibile ottenere lo stato come elenco Impossibile ottenere le statistiche per "%s" Impossibile caricare le regole di registro Impossibile normalizzare l'indirizzo di destinazione Impossibile normalizzare l'indirizzo sorgente Impossibile eseguire "%s" Impossibile impostare LOGLEVEL Impossibile aggiornare il firewall in esecuzione Impossibile determinare la versione di iptables Impossibile trovare "%s" Impossibile trovare il PID genitore per "%s" Impossibile trovare il PID (forse /proc non è montato) Impossibile aprire "%s" in lettura Impossibile eseguire stat su "%s" Impossibile aggiornare le regole di applicazione Impossibile aggiornare il file delle regole Impossibile aggiornare il file delle regole per la registrazione Politica %(direction)s predefinita cambiata in "%(policy)s"
 Politica predefinita dell'applicazione cambiata a "%s" Predefinito: %(in)s (in entrata), %(out)s (in uscita), %(routed)s (instradato) Eliminazione:
 %(rule)s
Procedere con l'operazione (%(yes)s|%(no)s)?  Descrizione: %s

 Profilo "%s" duplicato, usato l'ultimo trovato ERRORE: questo script non dovrebbe essere SGID ERRORE: questo script non dovrebbe essere SUID Firewall attivo e abilitato all'avvio del sistema Firewall non abilitato (omesso aggiornamento) Firewall ricaricato Firewall fermato e disabilitato all'avvio del sistema Trovata corrispondenza esatta Trovate corrispondenze multiple per "%s". Usare il nome di profilo esatto Trovata corrispondenza non-azione/non-logtype (%(xa)s/%(ya)s %(xl)s/%(yl)s) Da Supporto a IPv6 non abilitato Sintassi di regola impropria Sintassi di regola impropria ("%s" specificata con regola di applicazione) La posizione di inserimento "%s" non è una posizione valida Clausola "%s" non valida Clausola "from" non valida Clausola "port" non valida Clausola "proto" non valida Clausola "to" non valida Versione IP "%s" non valida Indirizzo IPv6 non valido col protocollo "%s" Clausola di intefaccia non valida Clausola interfaccia non valida per la regola di instradamento Livello di registro "%s" non valido Tipo di registrazione "%s" non valido Opzione non valida Politica "%(policy)s" non valida per "%(chain)s" Porta non valida col protocollo "%s" Porte non valide nel profilo "%s" Posizione non valida ' Posizione "%d" non valida Profilo non valido Nome di profilo non valido Token "%s" non valido Registazione disabilitata Registrazione abilitata Registrazione:  Politica mancante per "%s" Versioni di IP eterogenee per "from" e "to" È necessario specificare "tcp" o "upd" con porte multiple Necessario "from" o "to" assieme a "%s" Necessaria clausola "to" o "from" Nuovi profili: Nessuna porta trovata nel profilo "%s" Nessuna regola trovata per il profilo dell'applicazione Opzione "log" non ammessa qui Opzione "log-all" non ammessa qui Gli intervalli di porta devono essere numerici Porta: Porte: Il profilo "%(fn)s" presenta il campo richiesto "%(f)s" vuoto Al profilo "%(fn)s" manca il campo necessario "%(f)s" Profilo: %s
 La directory dei profili non esiste Discrepanza di protocollo (from/to) Discrepanza di protocollo con il protocollo %s specificato Si sta per azzerare tutte le regole a quelle predefinite. Procedere con l'operazione (%(yes)s|%(no)s)?  Si sta per azzerare tutte le regole a quelle predefinite. Ciò potrebbe interrompere le connessioni SSH esistenti. Procedere con l'operazione (%(yes)s|%(no)s)?  Regola aggiunta Regola cambiata dopo la normalizzazione Regola eliminata Regola inserita Regola aggiornata Regole aggiornate Regole aggiornate (v6) Regole aggiornate per il profilo "%s" Omesso aggiornamento firewall Omesso "%(value)s": valore troppo lungo per "%(field)s" Omesso "%s": anche in /etc/services Omesso "%s": impossibile elaborare Omesso "%s": impossibile eseguire stat Omesso "%s": campo troppo lungo Omesso "%s": nome non valido Omesso "%s": nome troppo lungo Omesso "%s": troppo grande Omesso "%s": già troppe letture di file Omessa regola di applicazione IPv6. Necessario iptables 1.4 o superiore Omessa l'aggiunto di regola esistente Omesso l'inserimento di regola esistente Omissione tuple malformate (lunghezza errata): %s Saltare tuple malformate (iface): %s Omissione tuple malformate: %s Saltata regola IPv4 «%s» non supportata Omissione regola IPv6 "%s" non supportata Stato: attivo
%(log)s
%(pol)s
%(app)s%(status)s Stato: attivo%s Stato: inattivo Titolo: %s
 A Politica "%s" sconosciuta Azione "%s" non supportata Politica predefinita non supportata Direzione "%s" non supportata Politica "%s" non supportata Politica non supportata per la direzione "%s" Protocollo "%s" non supportato ATTENZIONE: "%s" è leggibile a chiunque ATTENZIONE: "%s" è scrivibile da tutti Numero di argomenti errato È necessario essere root per eseguire questo script n problema nell'esecuzione Problema nell'esecuzione di sysctl problema nell'eseguire ufw-init
%s esecuzione di ufw-init UID è %(uid)s, ma "%(path)s" è posseduto da %(st_uid)s sconosciuta s sì                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  !      $  /   ,                            +   )     U  #   h  =               
          /   $  !   T  T   v       4   K  $                                  9  *   P  $   {  #                            -  w  I  	     (          9   	  N   A	  ?   	  3   	  =   
     B
  '   X
     
  B   
  Q   
  9   2  v   l       C     ;     .   
  5   B
  :   x
  .   
  1   
  +     I   @  @     I     /     F   E  F     1     3        
                              	                                                                                     !      
                                 
(None) : Need at least python 2.6)
 Aborted Bad interface name Bad interface name: reserved character: '!' Bad interface type Couldn't determine iptables version Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Invalid '%s' clause Invalid interface clause New profiles: No ports found in profile '%s' Profile '%(fn)s' missing required field '%(f)s' Profiles directory does not exist Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping malformed tuple (iface): %s Skipping unsupported IPv4 '%s' rule Unsupported policy '%s' WARN: '%s' is world readable WARN: '%s' is world writable problem running sysctl problem running ufw-init
%s Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2011-09-19 15:37+0000
Last-Translator: Fumihito YOSHIDA <hito@kugutsu.org>
Language-Team: Japanese <ja@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
(なし) : 少なくとも python 2.6 が必要)
 中断しました インターフェース名が適切ではありません インターフェース名が適切ではありません: '!' は予約文字 インターフェースタイプが適切ではありません iptables のバージョンを確認できません 削除:
 %(rule)s
操作を続けますか (%(yes)s|%(no)s)?  無効な '%s' 項目 無効なインターフェース項目 新しいプロファイル: プロファイル '%s' にポート指定が見つかりません プロファイル'%(fn)s'には必要なフィールド'%(f)s'がありません プロファイルディレクトリが存在しません インストール時のデフォルトルールを再設定します。操作を続行しますか (%(yes)s|%(no)s)?  インストール時のデフォルトルールを再設定します。既存のSSH接続を中断することがあります。操作を続行しますか (%(yes)s|%(no)s)?  '%(value)s'を飛ばします: '%(field)s' の値が長すぎます '%s' を飛ばします: /etc/servicesにも存在します '%s' を飛ばします: 処理できません '%s' を飛ばします: statできませんでした '%s' を飛ばします: フィールドが長すぎます '%s' を飛ばします: 名前が無効です '%s' を飛ばします: 名前が長すぎます '%s' を飛ばします: 大きすぎます '%s' を飛ばします: 読み込まれたファイルが多すぎます 不正な形式の tuple (iface) をスキップしました: %s サポートされていないIPv4 '%s' ルールをスキップします サポートされていないポリシー '%s' 警告: '%s' は外部ネットワークから読み取り可能です 警告: '%s' は外部ネットワークから書き込み可能です sysctl の実行時に問題が発生しました ufw-init の実行に問題が発生しました
%s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  $      ,       8   k  9               Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2015-01-17 11:44+0000
Last-Translator: FULL NAME <EMAIL@ADDRESS>
Language-Team: Korean <ko@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ,      <       P      Q   l  Y                           Aborted Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2014-06-06 18:47+0000
Last-Translator: FULL NAME <EMAIL@ADDRESS>
Language-Team: Latvian <lv@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 Atsaukts                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |      h     i     k  "   s           (   6  #   _            &                    *        H     e     m  9   t  )          "             +  /   >  +   n            
          #     #     %         E     f     z                      W        @  "   ]       &     "                       5     N  !   m       '     "               !   %  #   G     k  !   ~  %               !          &   5  5   \  *     C     =        ?  (   Q  %   z  %     0     &          /   0     `  >   r  @                    3   %  ,   Y                                '   	     1  '   J     r            +                       +     A     Q     f     y       	          %     /              0   
   K      Y   &   x         !                     !  1   !  /   :!     j!  !   w!     !  ,   !  T   !     7"  
   "      "     "  
   "     "  
   #     #     ,#     K#  4   f#  $   #     #     #     #     $     7$     T$  *   k$  :   $     $      $  )   %  $   :%     _%  #   |%  #   %  0   %     %     &  
   &     "&     %&     9&     Q&     l&     &  %   &     &     &     &     '  &   3'     Z'     \'     l'     '     '  4   '     '     '     '    '     s)     u)  8   ~)  
  )  +   -     -      .  /   '.  %   W.  &   }.      .     .     .  ,   .  '   !/     I/     Q/  A   Z/  9   /     /  /   /      0     40  D   L0  3   0     0     0     0     1  0   1  0   K1  9   |1  1   1     1      2     2     /2     F2  !   ^2  _   2  #   2  /   3     43  *   O3  "   z3     3     3     3     3      3  *   4  +   I4  &   u4  '   4     4  7   4  +   5  B   G5     5  !   5  2   5  &   5  *   6  &   B6  !   i6  1   6  ?   6  .   6  F   ,7  6   s7     7  D   7  )   8  )   +8  D   U8  ?   8  !   8  L   8     I9  0   ^9  L   9     9     9     9  6   :     H:     f:     }:     :     :     :     :  )   ;     ,;  *   H;  &   s;     ;     ;  4   ;  #   ;  !   <     @<     Y<     w<     <     <     <     <  
   <     <  G   
=  S   U=  4   =  &   =  
   >  #   >  #   7>      [>  $   |>  %   >     >     >  6   >  5   ?     B?     N?  +   f?  1   ?  _   ?     $@     @      @  
   @     @     A     A     &A  '   AA  (   iA  @   A  6   A  )   
B  9   4B  (   nB  !   B  (   B  %   B  >   C  \   GC  0   C  0   C  2   D  ,   9D  $   fD  '   D  '   D  /   D     E     E     +E     7E     ;E     YE      xE     E      E  *   E      F  "   #F  (   FF     oF  3   F     F  %   F  /   F  4   G     GG  3   XG     G     G     G           
   O          x             +       y      )                  R      S                  '           .      e                 J   ;      p   	          !   q             "   D                   I               5   X          4               K       W         7      -      H             }          c                        \   ~   G                    @         <      a                 _   Z         V   >   `      k      g      l   f       |   3      j       o           {   ]           #      M   t              
   N      B           [   ,      ^                   v   %   F          r       (      1   /   d                  w          0       ?   b                             L   8   2                     9      =      A   6   h          $         *                      n   u      E   T   s                Y   i                &      z               Q   :       P      U       C                 m       
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2009-08-26 19:23+0000
Last-Translator: Jamie Strandboge <jamie@ubuntu.com>
Language-Team: Norwegian Bokmal <nb@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Ingen) 
Det oppstod en feil da programregler skulle tas i bruk. 
Bruk: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s slå på brannmur
 %(disable)-31s slå av brannmur
 %(default)-31s velg standard regelsett
 %(logging)-31s velg %(level)s som loggføringsnivå
 %(allow)-31s legg til %(rule)s for tillatt tilkobling
 %(deny)-31s legg til %(rule)s for nektet tilkobling
 %(reject)-31s legg til %(rule)s for avvisning av tilkobling
 %(limit)-31s legg til %(rule)s for begrensning av tilkobling
 %(delete)-31s slett %(urule)s
 %(insert)-31s sett inn %(urule)s ved %(number)s
 %(reload)-31s last inn brannmur på nytt
 %(reset)-31s tilbakestill brannmur
 %(status)-31s viss brannmur-status
 %(statusnum)-31s vis brannmur-status i form av nummerert liste over %(rules)s
 %(statusverbose)-31s vis detaljert brannmur-status
 %(show)-31s vis brannmur-rapport
 %(version)-31s vis versjonsinformasjon

%(appcommands)s:
 %(applist)-31s vis programprofiler
 %(appinfo)-31s vis informasjon om %(profile)s
 %(appupdate)-31s oppdater %(profile)s
 %(appdefault)-31s velg standard regelsett for programmer
  (lot være å laste inn brannmur på nytt)  Reglene ble tatt bort.  Noen regler ble ikke tatt bort. %s kan overskrives av tilhørende brukergruppe! %s kan overskrives av hvem som helst! «%(f)s»-fil «%(name)s» finnes ikke «%s» finnes allerede. Avbryter «%s» finnes ikke «%s» kan ikke overskrives (pass på å oppdatere alle regler deretter) : dette krever python 2.6 eller nyere)
 Avbrutt Handling Lagt til brukerregler (se «ufw status» for kjørende brannmur): Registrering av IPv6-regel mislyktes. IPv6 er ikke i bruk Tilgjengelige programmer: Sikkerhetskopierer «%(old)s» til «%(new)s»
 Ugyldig måladresse Ugyldig grensesnittnavn Ugyldig grensesnittnavn. Du kan ikke bruke alias for grensesnitt her Ugyldig grensesnitt-navn. Tegnet «!» er reservert Ugyldig grensesnitt-type Ugyldig port «%s» er en ugyldig port Ugyldig kildeadresse Klarte ikke å sette inn regel i posisjon «%d» Klarte ikke å sette inn regel i posisjon «%s» Du kan ikke velge både «all» og «--add-new» samtidig Du kan ikke sette inn og slette en regel samtidig Kontrollerer ip6tables
 Kontrollerer iptables
 Kontrollerer ip6tables
 Kontrollerer iptables
 Kontroller er slått av Kommandoen «%s» finnes allerede Denne kommandoen kan forstyrre pågående ssh-tilkoblinger. Vil du fortsette (%(yes)s|%(no)s)?  Klarte ikke å ta ut regelen «%s» Regelen finnes ikke, og kan derfor ikke slettes Fant ikke «%s». Avbryter Fant ingen profil som samsvarer med «%s» Fant ingen kjørbar fil for «%s» Fant ikke profilen «%s» Fant ikke protokoll Fant ikke regelen «%d» Fant ikke regelen «%s» Klarte ikke å hente lyttestatus Klarte ikke å hente statistikk for «%s» Klarte ikke å laste inn loggføringsregler Klarte ikke å normalisere måladresse Klarte ikke å normalisere kildeadresse Klarte ikke å  utføre «%s» Klarte ikke å velge terskel for loggføring (LOGLEVEL) Klarte ikke å oppdatere kjørende brannmur Klarte ikke å finne ut hvilken iptables-versjon som er installert Fant ikke «%s» Fant ikke forelder-PID for «%s» Fant ikke PID (kontroller at «/proc» er montert) Klarte ikke å åpne «%s» for lesing Klarte ikke å hente informasjon om «%s» Klarte ikke å oppdatere programregler Klarte ikke å oppdatere regelfil Klarte ikke å oppdatere regelfil for loggføring Standard regler for %(direction)s er endret til «%(policy)s»
 Standard programregelsett er endret til «%s» Standard: %(in)s (inngående), %(out)s (utgående), %(routed)s (rutet) Sletter:
 %(rule)s
Vil du fortsette (%(yes)s|%(no)s)?  Beskrivelse: %s

 Profilen «%s» er en duplikat. Bruker profilen som ble funnet sist. FEIL: dette skriptet skal ikke være SGID FEIL: dette skriptet skal ikke være SUID Brannmuren er nå i bruk, og slås på automatisk ved systemoppstart Brannmuren er ikke slått på (lar være å laste inn på nytt) Brannmuren er lastet inn på nytt Brannmuren er nå slått av, og slås ikke på automatisk ved systemoppstart Fant nøyaktig treff «%s» ga flere treff. Bruk nøyaktig profilnavn Fant søketreff som ikke er handling/loggtype: (%(xa)s/%(ya)s %(xl)s/%(yl)s) Fra IPv6-støtte er slått av Feilaktig regelsyntaks Feilaktig regelsyntaks (brukt «%s» med programregel) «%s» er en ugyldig posisjon Ugyldig «%s»-klausul InUgyldig «fra»-klausul Ugyldig «port»-klausul Ugyldig «proto»-klausul Ugyldig «til»-klausul «%s» er en ugyldig IP-versjon Ugyldig IPv6-adresse med protokoll «%s» Ugyldig grensesnitt-klausul Ugyldig grensesnitt-klausul for rute-regel «%s» er et ugyldig loggføringsnivå «%s» er en ugyldig loggtype Ugyldig valg «%(policy)s» er en ugyldig regel for «%(chain)s» «%s» er en ugyldig port/protokoll Ugyldige porter i profilen «%s» ' er en ugyldig posisjon «%d» er en ugyldig posisjon Ugyldig profil Ugyldig profilnavn «%s» er et ugyldig symbol Loggføring slått av Loggføring slått på Loggføring:  Mangler regelsett for «%s» Du må holde deg til én IP-versjon i både «fra»- og «til»-klausul Du må velge «tcp» eller «udp» når regler skal gjelde et spenn av flere porter Du må angi «fra» eller «til»-klausul med «%s» «til»- eller «fra»-klausul mangler Nye profiler: Fant ingen porter i profilen «%s» Fant ingen regler for programprofil Valget «log» tillates ikke her Valget «log-all» tillates ikke her Portrekkevidde må angis i tallformat Port: Porter: Profil «%(fn)s» har tomt obligatorisk felt «%(f)s» Profil «%(fn)s» mangler obligatorisk felt «%(f)s» Profil: %s
 Profilmappe finnes ikke Protokollene (fra/til) stemmer ikke overens Protokoll stemmer ikke med spesifikk protokoll %s Tilbakestiller alle regler til installerte standardverdier. Vil du fortsette (%(yes)s|%(no)s)?  Tilbakestiller alle regler til installerte standardverdier. Dette kan forstyrre pågående ssh-tilkoblinger. Vil du fortsette (%(yes)s|%(no)s)?  Regel lagt til Regel endret etter normalisering Regel slettet Regel satt inn Regel oppdatert Regler er oppdatert Regler (IPv6) er oppdatert Regler for profilen «%s» er oppdatert Lot være å laste inn brannmur på nytt Hopper over «%(value)s». Verdien er for lang for «%(field)s» Hopper over «%s». Dette finnes også i /etc/services Hopper over «%s». Behandling mislyktes. Hopper over «%s». Klarte ikke å samle inn informasjon. Hopper over «%s». Feltet er for langt. Hopper over «%s». Ugyldig navn. Hopper over «%s». Navnet er for langt. Hopper over «%s». Fila er for stor. Hopper over «%s». Programmet leser allerede for mange filer. Hopper over IPv6-regel. Du må ha iptables versjon 1.4 eller nyere for at dette skal fungere Lar være å legge til regel som finnes allerede Lar være å sette inn regel som finnes allerede Hopper over feilformatert tuppel (feil lengde): %s Hopper over feilformatert tuppel (iface): %s Hopper over feilformatert tuppel: %s Hopper over ustøttet IPv4-regel «%s» Hopper over ustøttet IPv6-regel «%s» Status: aktiv
%(log)s
%(pol)s
%(app)s%(status)s Status: aktiv%s Status: inaktiv Tittel: %s
 Til «%s» er et ukjent regelsett Handlinga «%s» støttes ikke Standard regelsett støttes ikke «%s» er en ugyldig retning Regelsettet «%s» støttes ikke Regelsett for retning «%s» støttes ikke Protokollen «%s» støttes ikke ADVARSEL: «%s» kan leses av alle ADVARSEL: «%s» kan overskrives av alle Feil antall argumenter Du må være rotbruker for å kjøre dette skriptet n det oppstod et problem under kjøring det oppstod et problem under kjøring av sysctl det oppstod et problem under kjøring av ufw-init
%s kjører ufw-init uid er %(uid)s, men «%(path)s» eies av %(st_uid)s ukjent j ja                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |      h     i     k  "   s           (   6  #   _            &                    *        H     e     m  9   t  )          "             +  /   >  +   n            
          #     #     %         E     f     z                      W        @  "   ]       &     "                       5     N  !   m       '     "               !   %  #   G     k  !   ~  %               !          &   5  5   \  *     C     =        ?  (   Q  %   z  %     0     &          /   0     `  >   r  @                    3   %  ,   Y                                '   	     1  '   J     r            +                       +     A     Q     f     y       	          %     /              0   
   K      Y   &   x         !                     !  1   !  /   :!     j!  !   w!     !  ,   !  T   !     7"  
   "      "     "  
   "     "  
   #     #     ,#     K#  4   f#  $   #     #     #     #     $     7$     T$  *   k$  :   $     $      $  )   %  $   :%     _%  #   |%  #   %  0   %     %     &  
   &     "&     %&     9&     Q&     l&     &  %   &     &     &     &     '  &   3'     Z'     \'     l'     '     '  4   '     '     '     '  i  '     ])     _)  '   g)    )  %   -      -  1   -  $   -  $   #.  '   H.  %   p.     .     .  .   .      .  
   /     /  H   $/  4   m/     /  ?   /     /     0  ;   +0  5   g0     0     0     0     0  '   0  '   1  +   :1  -   f1     1     1     1     1     1     2  p   *2     2  )   2  *   2  &   
3  -   43     b3     3     3     3  !   3  *   3     4  &   44     [4     {4     4  %   4      4     4  #   5  ,   05     ]5  #   }5  "   5      5  )   5  :   6  -   J6  M   x6  <   6     7  3   7  *   J7  *   u7  D   7  1   7     8  F   )8     p8  E   8  L   8      9  $   $9     I9  ?   `9  *   9     9     9     9     :     2:     J:  %   c:     :  1   :     :     :     ;  -   ;  !   D;  !   f;     ;     ;     ;     ;     ;     ;     <     <     <  '   8<  5   `<  !   <     <     <  %   <  *   =      ;=  $   \=      =     =     =  0   =  *   =     >     >     3>  !   O>  N   q>     >     c?     t?     ?     ?     ?     ?     ?  #   ?  $   @  6   8@  *   o@  &   @      @     @  "   @      "A     CA  3   `A  S   A  '   A  &   B  0   7B  %   hB     B  /   B  /   B  0   C     =C     NC  
   _C     jC     oC     C      C     C     C  *   C     *D  2   ID  5   |D     D  ,   D     D     D  !   E  &   9E     `E  0   sE     E     E     E           
   O          x             +       y      )                  R      S                  '           .      e                 J   ;      p   	          !   q             "   D                   I               5   X          4               K       W         7      -      H             }          c                        \   ~   G                    @         <      a                 _   Z         V   >   `      k      g      l   f       |   3      j       o           {   ]           #      M   t              
   N      B           [   ,      ^                   v   %   F          r       (      1   /   d                  w          0       ?   b                             L   8   2                     9      =      A   6   h          $         *                      n   u      E   T   s                Y   i                &      z               Q   :       P      U       C                 m       
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2014-03-02 09:30+0000
Last-Translator: rob <linuxned@gmail.com>
Language-Team: Dutch <nl@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Geen) 
Fout bij toepassen van programmaregels 
Gebruik: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s de firewall inschakelen
 %(disable)-31s de firewall uitschakelen
 %(default)-31s standaardbeleid instellen
 %(logging)-31s logniveau instellen op %(level)s
 %(allow)-31s  toestaan-%(rule)s toevoegen
 %(deny)-31s (stil) blokkeren-%(rule)s toevoegen
 %(reject)-31s blokkeren-%(rule)s toevoegen
 %(limit)-31s  beperken-%(rule)s toevoegen
 %(delete)-31s %(urule)s verwijderen
 %(insert)-31s %(urule)s invoeren op positie %(number)s
 %(reload)-31s firewall herladen
 %(reset)-31s firewall resetten
 %(status)-31s firewall-status tonen
 %(statusnum)-31s firewall-status tonen als genummerde lijst van %(rules)s
 %(statusverbose)-31s firewall-status tonen met extra informatie
 %(show)-31s firewall-rapport tonen
 %(version)-31s versie-informatie tonen

%(appcommands)s:
 %(applist)-31s programmaprofielen tonen
 %(appinfo)-31s informatie tonen van %(profile)s
 %(appupdate)-31s %(profile)s bijwerken
 %(appdefault)-31s standaardprogrammabeleid instellen
  (herladen van firewall overgeslagen)  Regels succesvol uitgeschakeld.  Sommige regels konden niet uitgeschakeld worden. %s kan door de groep bewerkt worden! %s kan door iedereen bewerkt worden! '%(f)s' bestand '%(name)s' bestaat niet '%s' bestaat al. Wordt nu afgebroken. '%s' bestaat niet '%s' is niet beschrijfbaar (zorg dat u uw regels overeenkomstig bijwerkt) : Minimaal python 2.6 benodigd)
 Afgebroken Actie Toegevoegde gebruikersregels (zie 'ufw-status' voor draaiende firewall): IPv6-regel toevoegen mislukt: IPv6 niet ingeschakeld Beschikbare programma's: Er wordt een reservekopie gemaakt van '%(old)s' naar '%(new)s'
 Ongeldig bestemmingsadres Slechte interfacenaam Slechte interfacenaam: kan interface-aliases niet gebruiken Slechte interfacenaam: volgend teken is ongeldig: '!' Slecht interfacetype Ongeldige poort Ongeldige poort '%s' Ongeldig bronadres Kan regel niet invoeren op positie '%d' Kan geen regel invoeren op positie '%s' Kan 'all' niet met '--add-new' specificeren Kan invoeren en verwijderen niet specificeren Ip6tables controleren
 iptables controleren
 Ruwe ip6tables controleren
 Ruwe iptables controleren
 Controles geannuleerd Opdracht '%s' bestaat reeds Deze opdracht kan mogelijk bestaande bestaande ssh-verbindingen verstoren. Opdracht uitvoeren (%(yes)s|%(no)s)?  Kon regel '%s' niet weigeren Kon niet-bestaande regel niet verwijderen Kon '%s' niet vinden. Wordt nu afgebroken. Geen zoekresultaten gevonden voor '%s' Kon uitvoerbaar bestand voor '%s' niet vinden Kon profiel '%s' niet vinden Kon protocol niet vinden Kon regel '%d' niet vinden Kon regel '%s' niet vinden Kon geen luisterstatus verkrijgen Kon geen statistieken verkrijgen voor '%s' Kon logregels niet laden Kon bestemmingsadres niet normaliseren Kon bronadres niet normaliseren Kon '%s' niet uitvoeren Kon LOGNIVEAU niet instellen Kon draaiende firewall niet bijwerken Kon iptables-versie niet bepalen Kan '%s' niet vinden Kon ouder-pid voor '%s' niet vinden Kon pid niet vinden (is /proc aangekoppeld?) Kon '%s' niet voor lezen openen Kon '%s' niet in statistiek brengen Kon programmaregels niet bijwerken Kon regelsbestand niet bijwerken Kon regelsbestand niet bijwerken voor log Standaardbeleid %(direction)s gewijzigd naar '%(policy)s'
 Standaard programmabeleid gewijzigd naar '%s' Standaardwaarde: %(in)s (inkomend), %(out)s (uitgaand), %(routed)s (omgeleid) Verwijderen:
 %(rule)s
Opdracht uitvoeren (%(yes)s|%(no)s)?  Omschrijving: %s

 Dubbel profiel '%s', laatst gevonden wordt gebruikt FOUT: dit script zou geen SGID moeten zijn FOUT: dit script zou geen SUID moeten zijn Firewall is actief en ingeschakeld bij het opstarten van het systeem Firewall niet ingeschakeld (herstarten overslaan) Firewall herstart Firewall is gestopt en uitgeschakeld bij het opstarten van het systeem Exacte overeenkomst gevonden Meerdere resultaten gevonden voor '%s'. Geef de exacte profielnaam op Niet-actie/niet-logtype-overeenkomst gevonden: (%(xa)s/%(ya)s %(xl)s/%(yl)s) Van IPv6-ondersteuning niet ingeschakeld Onjuiste regelsyntaxis Onjuiste regelsyntaxis ('%s' gespecificeerd met programmaregel) Invoerpositie '%s' is geen geldige positie Ongeldige '%s'-clausule Ongeldige 'from'-clausule Ongeldige 'port'-clausule Ongeldige 'proto'-clausule Ongeldige 'to'-clausule Ongeldige IP-versie '%s' Ongeldig IPv6-adres met protocol '%s' Ongeldige interface-clausule Ongeldige interface-clausule voor omleidingsregel Ongeldig logniveau '%s' Ongeldig logtype '%s' Ongeldige optie Ongeldig beleid '%(policy)s' voor '%(chain)s' Ongeldige poort met protocol '%s' Ongeldige poorten in profiel '%s' Ongeldige positie ' Ongeldige positie '%d' Ongeldig profiel Ongeldige profielnaam Ongeldige token '%s' Loggen uitschakeld Loggen ingeschakeld Loggen:  Missend beleid voor '%s' Gemengde IP-versies voor 'from' en 'to' Moet 'tcp' of 'udp' met meerdere poorten specificeren 'from' of 'to' benodigd voor '%s' 'to' of 'from'-clausule vereist Nieuwe profielen: Geen poorten gevonden in profiel '%s' Geen regels gevonden voor programmaprofiel Optie 'log' niet toegestaan hier Optie 'log-all' niet toegestaan hier Poortbereik moeten numeriek zijn Poort: Poorten: Profiel '%(fn)s' heeft leeg vereist veld '%(f)s' Profiel '%(fn)s' mist vereist veld '%(f)s' Profiel: %s
 Profielmap bestaat niet Protocol-mismatch (from/to) Protocol-mismatch met protocol %s Alle regels terugzetten naar de standaardwaarden. Uitvoeren (%(yes)s|%(no)s)?  Alle regels terugzetten naar de standaardwaarden. Deze opdracht kan mogelijk bestaande bestaande ssh-verbindingen verstoren. Opdracht uitvoeren (%(yes)s|%(no)s)?  Regel toegevoegd Regel gewijzigd na normalisatie Regel verwijderd Regel ingevoerd Regel bijgewerkt Regels bijgewerkt Regels bijgewerkt (v6) Regels bijgewerkt voor profiel '%s' Herstarten van firewall overgeslagen '%(value)s' overslaan: waarde te lang voor '%(field)s' Overslaan van '%s': reeds in /etc/services Overslaan van '%s': kon niet verwerken '%s' overslaan: kon niet bepalen '%s' overslaan: veld te lang Overslaan van '%s': ongeldige naam Overslaan van '%s': naam te lang Overslaan van '%s': te groot Overslaan van '%s': reeds te veel bestanden gelezen IPv6-programmaregel wordt genegeerd. Ten minste versie 1.4 van iptables is vereist. Toevoegen van bestaande regel overslaan Invoeren van bestaande regel overslaan Misvormde tupel overslaan (ongeldige lengte): %s Misvormde tupel overslaan (iface): %s Misvormde tupel overslaan: %s Overslaan van niet ondersteunde IPv4 '%s'-regel Overslaan van niet-ondersteunde IPv6 '%s'-regel Status: actief
%(log)s
%(pol)s
%(app)s%(status)s Status: actief%s Status: inactief Titel: %s
 Naar Onbekend beleid '%s' Niet-ondersteunde actie '%s' Niet-ondersteund standaardbeleid Niet-ondersteunde richting '%s' Niet-ondersteund beleid '%s' Niet-ondersteund beleid voor richting '%s' Niet-ondersteund protocol '%s' WAARSCHUWING: iedereen heeft leesrechten voor '%s' WAARSCHUWING: iedereen heeft schrijfrechten voor '%s' Ongeldig aantal argumenten U moet root zijn om dit script uit te voeren n probleem met uitvoeren van probleem met uitvoeren van sysctl probleem met uitvoeren van ufw-init
%s ufw-init uitvoeren uid is %(uid)s maar '%(path)s' is van %(st_uid)s onbekend y ja                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         <      \       p      q      s   &      u        (     *  *   E                   
 Unsupported policy '%s' You need to be root to run this script Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2010-08-28 01:01+0000
Last-Translator: Jamie Strandboge <jamie@ubuntu.com>
Language-Team: Polish <pl@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 Niewspierana polityka '%s' Skrypt wymaga uprawnień administracyjnych                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |      h     i     k  "   s           (   6  #   _            &                    *        H     e     m  9   t  )          "             +  /   >  +   n            
          #     #     %         E     f     z                      W        @  "   ]       &     "                       5     N  !   m       '     "               !   %  #   G     k  !   ~  %               !          &   5  5   \  *     C     =        ?  (   Q  %   z  %     0     &          /   0     `  >   r  @                    3   %  ,   Y                                '   	     1  '   J     r            +                       +     A     Q     f     y       	          %     /              0   
   K      Y   &   x         !                     !  1   !  /   :!     j!  !   w!     !  ,   !  T   !     7"  
   "      "     "  
   "     "  
   #     #     ,#     K#  4   f#  $   #     #     #     #     $     7$     T$  *   k$  :   $     $      $  )   %  $   :%     _%  #   |%  #   %  0   %     %     &  
   &     "&     %&     9&     Q&     l&     &  %   &     &     &     &     '  &   3'     Z'     \'     l'     '     '  4   '     '     '     '  {  '     o)  	   q)  *   {)    )  &   b-  (   -  0   -     -     .  '   ".     J.     e.  (   v.  ,   .  %   .     .     .  N   /  5   R/     /  9   /     /     /  8   0  1   H0     z0     0     0     0  +   0  )   0  +   #1  (   O1     x1     1     1     1     1     1  ]   2  "   p2  *   2  $   2  3   2  -   3  "   E3      h3  %   3  %   3     3  4   3  '   *4  0   R4  *   4     4     4  .   4  3   5     H5  (   b5  3   5  "   5     5  2   6  )   46  6   ^6  <   6  3   6  E   7  @   L7     7  6   7  ,   7  ,   8  .   08  1   _8     8  2   8  $   8  b   8  U   a9     9     9     9  K   9  :   >:     y:     :     :     :     :      ;  -   ;      K;  5   l;      ;     ;     ;  1   ;  !   &<      H<     i<     <     <     <     <     <     <     <     
=  )   '=  5   Q=  #   =  "   =  
   =  ,   =  8   	>  !   B>  %   d>  )   >     >     >  6   >  6   >     1?  "   =?  (   `?  >   ?  f   ?     /@     @  #   @     @     
A     A     +A     >A  %   VA  #   |A  :   A  '   A  #   B  (   'B  $   PB     uB  #   B     B  3   B  I   C  *   UC  (   C  0   C  &   C     D  )   !D  '   KD  /   sD     D     D     D     D     D     D      
E     .E     LE  .   jE     E  $   E  '   E     F  ,   !F     NF     PF     eF  "   F     F  9   F     F      G     G           
   O          x             +       y      )                  R      S                  '           .      e                 J   ;      p   	          !   q             "   D                   I               5   X          4               K       W         7      -      H             }          c                        \   ~   G                    @         <      a                 _   Z         V   >   `      k      g      l   f       |   3      j       o           {   ]           #      M   t              
   N      B           [   ,      ^                   v   %   F          r       (      1   /   d                  w          0       ?   b                             L   8   2                     9      =      A   6   h          $         *                      n   u      E   T   s                Y   i                &      z               Q   :       P      U       C                 m       
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2014-09-16 09:56+0000
Last-Translator: cetautomatix <mag.formacao@gmail.com>
Language-Team: Portuguese <pt@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Nenhum) 
Erro ao aplicar as regras de aplicação. 
Utilização: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s Ativa a firewall
 %(disable)-31s desativa the firewall
 %(default)-31s define políticas padrão
 %(logging)-31s define logging para %(level)s
 %(allow)-31s add permissão %(rule)s
 %(deny)-31s add negação %(rule)s
 %(reject)-31s add rejeição %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s apaga %(urule)s
 %(insert)-31s inserir %(urule)s em %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s mostrar status da firewall
 %(statusnum)-31s mostra status da firewall como lista numerada de %(rules)s
 %(statusverbose)-31s mostra status verbose da firewall
 %(show)-31s mostra relatório da firewall
 %(version)-31s apresenta a versão

%(appcommands)s:
 %(applist)-31s lista de perfis de aplicações
 %(appinfo)-31s mostrar informações sobre %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s define políticas padrão
  (ignorado recarregamento da firewall)  Regras tentadas esquecidas com sucesso.  Algumas regras não puderam ser não aplicadas. %s pode ser escrito pelo grupo! %s pode ser escrito por todos! '%(f)s' ficheiro '%(name)s' não existe '%s' já existe. A abortar '%s' não existe '%s' não está disponível para escrita (certifique-se de que altera as suas regras) : Necessita pelo menos o python 2.6)
 Abortado Acção Adicionadas regras de utilizador (veja 'ufw status' para executar a firewall): Falha ao adicionar regra IPv6: IPv6 não está activo Aplicações disponíveis: A fazer cópia de segurança de '%(old)s' para '%(new)s'
 Endereço de destino errado Mau nome de interface Mau nome de interface: não pode usar nomes alternativos Mau nome de interface: caracteres reservados: '!' Tipo mau de interface Porta incorreta Porta errada '%s' Endereço de origem errado Não pode inserir a regra na posição '%d' Não pode inserir regra na posição '%s' Não pode especificar 'all' com '--add-new' Não pode especificar o inserir e apagar A verificar ip6tables
 A verificar iptables
 Verificando ipt6ables brutos
 Verificando iptables brutos
 Verificações desligadas Comando '%s' já existe O comando pode romper ligações ssh existentes. Proceder com a operação (%(yes)s|%(no)s)?  Incapaz de retroceder a regra '%s' Impossível de apagar regra não existente Não pôde encontrar '%s'. A abortar Não pôde encontrar o perfil correspondente a '%s' Não pôde encontrar um executável para '%s' Não pôde encontrar o perfil '%s' Não pôde encontrar o protocolo Não conseguiu encontrar a regra '%d' Não conseguiu encontrar a regra '%s' Não atingiu o estado de escuta Não foi possível encontrar estatísticas para '%s' Não pôde carregar a regras de registo Impossível de normalizar o endereço de destino Não pude normalizar o endereço de origem Não pôde executar '%s' Não pôde ajustar o LOGLEVEL Não pôde atualizar firewall em funcionamento Não foi possível determinar a versão do iptables Não pôde encontrar '%s' Não pôde encontrar o pid pai para '%s' Não pôde encontrar o pid (o /proc está montado?) Não pôde abrir '%s' para leitura Não conseguiu fazer stat '%s' Não foi possível atualizar regras da aplicação Não pôde atualizar o ficheiro de regras Não pôde atualizar o ficheiro de regras para registo Política de %(direction)s padrão mudada para '%(policy)s'
 Política padrão de aplicação alterada para '%s' Predefinido: %(in)s (entrada), %(out)s (saída), %(routed)s (roteado) A apagar:
 %(rule)s
Proceder com a operação (%(yes)s|%(no)s)?  Descrição: %s

 Perfil duplicado '%s', utilizando o último encontrado ERRO: Este script não deve ser do tipo SGID ERRO: este script não deve ser do tipo SUID Firewall ativa e ligada no arranque do sistema Firewall não ligada (ignorando o recarregamento) Firewall recarregada Firewall parada e desligada no arranque do sistema Foi encontrada uma ocorrência exata Foram encontradas múltiplas correspondências para '%s'. Por favor utilize o nome exato do perfil Encontrou ocorrência não-acção/não-tipo de registo (%(xa)s/%(ya)s %(xl)s/%(yl)s) De Suporte IPv6 não habilitado Sintaxe de regra inválida Regra com sintaxe imprópria ('%s' especificada com a regra da aplicação) Posição de inserção '%s' não é uma posição válida Cláusula '%s' inválida Clásula 'de' inválida Cláusula de 'porta' inválida Cláusula 'proto' inválida Cláusula 'para' inválida Versão '%s' de IP inválida Endereço IPv6 inválido com o protocolo '%s' Cláusula de interface inválida Cláusula de interface inválida para regras de route Nível de registo inválido '%s' Tipo de registo '%s' inválido Opção inválida Política inválida '%(policy)s' para '%(chain)s' Porta inválida com protoclo '%s' Portas inválidas no perfil '%s' Posição inválida ' Posição '%d' inválida Perfil inválido Nome de perfil inválido Símbolo inválido '%s' Registo desativado Registo ativado A registar:  Política em falta para '%s' Versões IP misturadas para 'de' e 'para' Deve especificar 'tcp' ou 'udp' com múltiplas portas Necessário 'from' ou 'to' com '%s' Necessita cláusula 'de' ou 'para' Novos perfis: Não foram encontradas portas no perfil '%s' Não foram encontradas regras para perfil de aplicação Opção 'log' não permitida aqui Opção 'log-all' não permitida aqui Intervalos de portas devem ser numéricos Porta: Portas: Perfil '%(fn)s' tem um campo necessário vazio '%(f)s' Perfil '%(fn)s' tem em falta campo necessário '%(f)s' Perfil: %s
 O diretório de perfis não existe Protocolo sem correspondência (from/to) Protocolo sem correspondência com o protocolo especificado %s A reconfigurar todas as regras para os padrões instalados. Proceder com operação (%(yes)s|%(no)s)?  A reconfigurar todas as regras para os padrões instalados. Isso pode romper as ligações ssh existentes. Proceder com operação (%(yes)s|%(no)s)?  Regra adicionada Regra alterada após normalização Regra eliminada Regra inserida Regra actualizada Regras atualizadas Regras atualizadas (v6) Regras atualizadas para o perfil '%s' Recarregamento da firewall ignorado A evitar '%(value)s': valor demasiado longo em '%(field)s' A evitar '%s': também em /etc/services A evitar '%s': não pôde processar A evitar '%s': não conseguiu fazer stat A evitar '%s': campo demasiado longo A evitar '%s': nome inválido A evitar '%s': nome demasiado longo A evitar '%s': demasiado grande A saltar '%s': já foram lidos demasiados ficheiros A evitar a regra de aplicação IPv6. Necessita pelo menos o iptables 1.4 A evitar a adição de uma regra existente A evitar a inserção de regra existente A ignorar tuple mal formado (tamanho errado): %s Ignorando tupla malformada (iface):% s A ignorar tuple mal formado: %s Ignorando regra IPv4 não suportada '% s' Saltando regra IPv6 '%s' não suportada Estado: ativo
%(log)s
%(pol)s
%(app)s%(status)s Estado: active%s Estado: inativo Título: %s
 Para Política desconhecida '%s' Ação '%s' não suportada Política padrão não suportada Direção não suportada '%s' Política '%s' não suportada Política não suportada para a direção '%s' Protocolo '%s' não suportado AVISO: '%s' pode ser lido pelo mundo AVISO: '%s' pode ser escrito pelo mundo Número de argumentos errado Necessita ser root para executar este script n problema ao executar problema executando o sysctl problema ao executar o ufw-init
%s a executar ufw-init uid é %(uid)s mas '%(path)s' é possuído por %(st_uid)s desconhecido s sim                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \     
      (     )     +  "   3     V  (   t  #               &             (  *   =     h     p  9   w  )          "             .  /   A     q       
          #     #     %              =     Q     d     |       W          "        ;  &   Y  "                            	  !   (     J  '   g  "               !     #        &  !   9  %   [            !          5     *   &     Q  (   c  %     %     0     &   	     0  /   B     r  >     @             	     "  3   7  ,   k                                '        C     \     s       +                                 0     C     T  	   d     n  %     /               
        #  &   B     i  !                    1     /        4  !   A     c  ,     
                
          
              !     @  4   [  $                            ,     I  *   `  :                )        /  #   L  #   p  0               
                  	     !     <     W  %   o                      &         *      ,      <      X   4   i                             :"  
   <"  &   G"  &   n"  0   "  .   "  0   "  .   &#  &   U#     |#     #  ;   #     #     #  L   #  6   =$     t$  "   $     $     $  H   $     5%     Q%     a%     v%  1   %  1   %  3   %  -   ,&     Z&     q&     &     &     &  \   &  (   &'  3   O'      '  :   '  4   '  *   (  &   ?(     f(     (  "   (  (   (  .   (  2   )  1   L)      ~)  (   )  7   )  8    *  !   9*  0   [*  9   *  "   *  '   *  2   +  0   D+  :   u+  /   +     +  ;   +  ;   .,  ;   j,  ?   ,  2   ,     -  :   .-     i-  Q   -  P   -     ).     ,.     L.  I   h.  7   .     .     /     /     9/     U/     n/  +   /      /     /     /     
0  1   0      Q0     r0     0     0     0     0     0     0  	   1     1  (   ,1  8   U1  #   1  #   1  
   1  '   1  4   2  !   A2  %   c2  (   2     2     2  6   2  1   2     *3      63  (   W3  9   3     3  '   3  
   3     4     4     !4     44  %   L4  #   r4  ;   4  (   4  ,   4  /   (5  #   X5     |5  "   5     5  )   5  F   6  *   L6  .   w6  3   6     6  ,   6  *   '7  /   R7     7     7     7     7     7     7      7     8     *8  .   H8     w8  *   8  !   8     8  9   8     99     ;9     P9     n9  ?   9     9     9     9             ,   
   	   5   +   y                    j   o                P           ~              I            V   X   J      N                    {      M              x   =   O                              <   .                     C   /   T       :   a   #   D       |   S                f   k       }   W   )           7       A         n            G         8   d   >      H   6   3   R           s   e             Z      ;       u              m             $         g      2      -   [      '   1   9   w   Y   _       B   v   r   q                h                        b      F   
                              ^         l          &      `           t   Q       L              \   E   c   0   4                 p   (             i   !          "   @         U      %   ?          K      *                  ]       z        
 
(None) 
Error applying application rules.  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2012-05-12 02:07+0000
Last-Translator: Neliton Pereira Jr. <nelitonpjr@gmail.com>
Language-Team: Brazilian Portuguese <pt_BR@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Nenhuma) 
Erro ao aplicar regras de aplicativo.  (ignorado recarregamento do firewall)  Regras tentadas foram desaplicadas com sucesso.  Algumas regras não puderam ser desaplicadas. %s está com permissão de escrita para o grupo! %s está com permissão de escrita para todos! '%(f)s' arquivo '%(name)s' não existe '%s' não existe '%s' não é gravável (assegure-se de ter atualizado suas regras apropriadamente) Abortado Ação Regras de usuário adicionadas (veja 'ufw status' para executar o firewall): Falha ao adicionar regra de IPv6: IPv6 não habilitado Aplicativos disponíveis: Salvando '%(old)s' para '%(new)s'
 Endereço de destino incorreto Nome de interface incorreto Nome de interface incorreto: não é possível usar aliases de interface Tipo de interface incorreto Porta incorreta Porta '%s' incorreta Endereço de origem incorreto Não é possível inserir regra na posição '%d' Não é possível inserir regra na posição '%s' Não é possível especificar 'all' com '--add-new' Não é possível especificar Insert e Delete Verificando ip6tables
 Verificando iptables
 Checando ip6tables
 Checando iptables
 Verificação desabilitada O comando pode romper conexões ssh existentes. Proceder com a operação (%(yes)s|%(no)s)?  Não foi possível retornar a regra '%s' Não é possível remover uma regra que não existe Não pôde achar '%s', Abortando Não foi possível encontrar um perfil correspondente '%s' Não foi possível encontrar o executável para '%s' Não foi possível encontrar o perfil '%s' Não foi possível encontrar protocolo Não pôde achar regra '%d' Não pôde achar regra '%s' Não pôde obter status de ouvinte Não pôde obter estatísticas para '%s' Não foi possível carregar regras de registro Não foi possível normalizar endereço de destino Não foi possível normalizar endereço de origem Não foi possível executar '%s' Não foi possível definir Nível de Log Não é possível atualizar enquanto executa o firewall Não foi possível determinar a versão da tabela de IPs Não foi possível encontrar '%s' Não foi possível encontrar o pid pai para '%s' Não foi possível encontrar o pid (/proc está montado?) Não pôde abrir '%s' para leitura Não foi possível obter estado de '%s' Não foi possível atualizar regras de aplicativos Não foi possível atualizar o arquivo de regras A política padrão %(direction)s mudou para '%(policy)s'
 Política padrão do aplicativo mudou para '%s' Descrição: %s

 Perfil duplicado '%s'. Utilizando o último perfil válido. ERRO: esse script não deveria estar com permissão de SGID ERRO: esse script não deveria estar com permissão de SUID Firewall está ativo e habilitado na inicialização do sistema Firewall não habilitado (recarregamento ignorado) Firewall recarregado Firewall parado e desativado na inicialização do sistema Encontrada ocorrência exata Encontrados múltiplos resultados para '%s'. Por favor use o nome exato do perfil Correspondência non-action/non-logtype encontrada (%(xa)s/%(ya)s %(xl)s/%(yl)s) De Suporte ao IPv6 não habilitado Sintaxe de regra imprópria Regra de sintaxe imprópria ('%s' especificado com a regra do aplicativo) A posição inserida '%s' não é uma posição válida Cláusula '%s' inválida Cláusula 'from' inválida Cláusula 'port' inválida Cláusula 'proto' inválida Cláusula 'to' inválida Versão IP '%s' inválida Endereço IPV6 inválido com protocolo '%s' Cláusula de interface inválida Nível de log inválido '%s' Tipo '%s' de log inválido Opção inválida Política '%(policy)s' inválida para '%(chain)s' Portas inválidas no perfil '%s' Posição inválida ' Posição inválida '%d' Perfil inválido Nome de perfil inválido Sinal '%s' inválido Registro desativado Registro ativado Logando:  Faltando política para '%s' Versões de IP mistos para 'from' e 'to' Deve-se especificar 'tcp' ou 'udp' com múltiplas portas Necessário 'from' ou 'to' com '%s' Precisa da cláusula 'de' ou 'para' Novos perfis: Nenhuma porta encontrada no perfil '%s' Nenhuma regra encontrada para o perfil do aplicativo Opção 'log' não permitida aqui Opção 'log-all' não permitida aqui O intervalo de portas deve ser numérico Porta: Portas: O Perfil '%(fn)s' tem um campo requerido vazio '%(f)s' Perfil '%(fn)s'. Faltando campo requerido '%(f)s' Perfil: %s
 Diretório de perfis não existe Incompatibilidade de protocolo (de/para) Protocolo incompatível com o protocolo '%s' especificado Regra adicionada Regra alterada depois da normalização Regra apagada Regra inserida Regra atualizada Regras atualizadas Regras atualizadas (v6) Regras atualizadas para o perfil '%s' Recarregamento do firewall ignorado Ignorando '%(value)s': valor muito extenso para '%(field)s' Ignorando '%s': também em /etc/services Ignorando '%s': não foi possível processar Ignorando '%s': Não foi possível obter status Ignorando '%s': campo muito extenso Ignorando '%s': nome inválido Ignorando '%s': nome muito extenso Ignorando '%s': muito grande Ignorando '%s': muitos arquivos já lidos Pulando regra de aplicativos IPv6. Necessário no mínimo iptables 1.4 Ignorando adição de regra que já existe Ignorando a inserção de regra já existente. Ignorando tupla mal-formada (tamanho inválido): %s Ignorando tupla mal-formada: %s Ignorando regra de  IPv4 '%s' não suportada Ignorando a regra IPv6 '%s' não suportada Estado: ativo
%(log)s
%(pol)s
%(app)s%(status)s Estado: ativo%s Estado: inativo Título: %s
 Para Política desconhecida '%s' Ação '%s' não suportada Política padrão não suportada Direção não suportada '%s' Política '%s' não suportada Política não suportada para a direção '%s' Protocolo não suportado '%s' Aviso: '%s' pode ser lido por qualquer um. AVISO: '%s' é um mundo gravável Número errado de argumentos Você precisa ser superusuário para executar este script n problema ao executar falha ao executar ufw-init
%s executando ufw-init A uid é %(uid)s mas '%(path)s' é de propriedade de %(st_uid)s desconhecido s sim                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             "     	          (     #   G     k       &                    9     *   ?     j            9     )          "        5     M  )   `  /     +     +     +        >     Q  
   Z     h  #   {  #     %              
          1     I     `     p  W                "        @  &   ^  "                              !   -     O  '   l  "               !     #        +  !   >  %   `            !          &     5     *   R  C   }  =          (     %   :  %   `  0     &          /           $   2  >   W  Z                    3   $  ,   X                                '         0   '   I      q               +                     !     *!     @!     P!     e!     x!     !  	   !     !  %   !  /   !     "     /"  
   J"  &   X"  *   "     "  !   "     "     #     #  1   #  /   E#     u#  !   #     #  ,   #  T   #     B$  
   $      $     $  
   $     	%  
   %     $%     7%     V%  4   q%  $   %     %     %     &     &&     B&     _&  *   v&  :   &     &      &  )   '  $   E'     j'  #   '  #   '  0   '      (     (  
   "(     -(     0(     D(     \(     w(     (  %   (     (     (     )     $)  &   >)     e)     g)     w)     )     )  4   )     )     )     )    )     ,  
   	,  +   ,    @,  4   1  /   1  %   %2  ;   K2  7   2  /   2  &   2     3     *3  [   E3  ?   3  '   3     	4     $4     -4  :   4     4  @   	5      J5     k5  D   5  B   5  8   6  >   H6  3   6     6  
   6     6     6  .   7  .   C7  A   r7  O   7     8     "8  #   ?8  "   c8     8     8  _   8  '   9  A   D9  (   9  ,   9  A   9  /   :  $   N:     s:  "   :  "   :  (   :  2    ;  <   3;  ,   p;  $   ;     ;     ;  4   ;  -   0<     ^<  M   z<  L   <  ,   =  (   B=  ,   k=  *   =  K   =  I   >  ;   Y>  N   >  B   >     '?  6   7?  >   n?  >   ?  T   ?  A   A@  +   @  W   @     A  8   %A  b   ^A  j   A     ,B  /   2B     bB  K   B  8   B     C  !   %C  !   GC  "   iC     C  %   C  -   C  %    D  <   &D  %   cD  #   D     D  @   D  #   E  &   %E     LE     aE     }E     E  "   E     E     E  
   E  "   F  5   &F  D   \F  2   F  +   F      G  1   G  8   AG  )   zG  -   G  /   G     H     H  =   H  C   OH     H  "   H     H  6   H  j   I     I     &J  %   ?J     eJ     }J     J     J  !   J  1   J  1   !K  E   SK  7   K  '   K  -   K  )   'L  '   QL  (   yL  !   L  2   L  R   L  )   JM  $   tM  :   M  .   M  &   N  *   *N  *   UN  .   N     N     N  
   N     N     N     N  !   O  %   <O  $   bO  0   O     O  :   O  :   P     KP  7   gP     P     P     P      P     P  @   Q  
   GQ     RQ     TQ           
   T          ~            0       V      -   "               g      Y                   +           3      k                 O   @      v   	         %   w             &   I      d             N       p       :   ^   \       9              P       ]         <      2      M                      i                        b      L                    E         A                        e   `            C   f      q      m      r   l          8      .       u              c          '      R   z              
   S      G          a   1      X                   {   )   K   !       x      ,      6   4   j                  }          5       D   h                             Q   =   7                     >      B      F   ;   n      |   (         /   $                  t          J   Z   y                _   o             #   *                     W   ?       U      [       H                  s       
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(route)-31s add route %(urule)s
 %(route-delete)-31s delete route %(urule)s
 %(route-insert)-31s insert route %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable 'route delete NUM' unsupported. Use 'delete NUM' instead. (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use '.' or '..' Bad interface name: can't use interface aliases Bad interface name: interface name is empty Bad interface name: interface name too long Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Comment may not contain "'" Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found exact match, excepting comment Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype/comment match (%(xa)s/%(ya)s/'%(xc)s' %(xl)s/%(yl)s/'%(yc)s') From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No rules found for application profile Option 'comment' missing required argument Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw 0.36.1-4.1
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2023-04-02 17:39+0200
Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>
Language: ro
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n%100<=19) ? 1 : 2);
X-Bugs: Report translation errors to the Language-Team address.
X-Generator: Poedit 3.2.2
 
 
(Niciuna) 
Eroare la aplicarea regulilor aplicației. 
Utilizare: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s activează paravanul de protecție
 %(disable)-31s dezactivează paravanul de protecție
 %(default)-31s stabilește politica implicită
 %(logging)-31s stabilește nivelul jurnalizării la %(level)sn
 %(allow)-31s adaugă %(rule)s « permite»
 %(deny)-31s adaugă %(rule)s « refuză»
 %(reject)-31s adaugă %(rule)s « respinge»
 %(limit)-31s adaugă %(rule)s «limitei»
 %(delete)-31s șterge %(urule)s
 %(insert)-31s inserează %(urule)s la %(number)s
 %(route)-31s adaugă %(rule)s «direcționare»
 %(route-delete)-31s șterge %(rule)s «direcționare»
 %(route-insert)-31s inserează %(rule)s «direcționare» la %(number)s
 %(reload)-31s reîncarcă paravanul de protecție
 %(reset)-31s reinițiază paravanul de protecție
 %(status)-31s afișează starea paravanului de protecție
 %(statusnum)-31s afișează starea paravanului de protecție ca listă numerotată de %(rules)s
 %(statusverbose)-31s afișează starea paravanului de protecție cu informații detaliate
 %(show)-31s afișează raportul paravanului de protecție
 %(version)-31s afișează informațiile despre versiune

%(appcommands)s:
 %(applist)-31s listează profilurile aplicațiilor
 %(appinfo)-31s afișează informații despre %(profile)s
 %(appupdate)-31s actualizează %(profile)s
 %(appdefault)-31s stabilește politica implicită de aplicație
  (se omite reîncărcarea paravanului de protecție)  Regulile încercate au fost anulate cu succes.  Unele reguli nu au putut fi anulate. %s are permisiuni de scriere pentru toți membrii grupului! %s are permisiuni de scriere pentru toți utilizatorii! „%(f)s” fișierul „%(name)s” nu există „%s” există deja. Se abandonează „%s” nu există „%s” nu poate fi scris directiva „route delete NUM” nu este acceptată. Folosiți „delete NUM” în schimb. (asigurați-vă că vă actualizați regulile în consecință) : Are nevoie de cel puțin python 2.6)
 Operația a fost anulată! Acțiune S-au adăugat regulile date de utilizator (consultați „ufw status” pentru a cunoaște starea actuală a paravanului de protecție): Adăugarea regulii IPv6 nu a reușit: IPv6 nu este activat Aplicații disponibile: Se fac copii de rezervă pentru „%(old)s” în „%(new)s”
 Adresă de destinație greșită Nume de interfață greșit Nume de interfață greșit: nu se poate folosi „.” sau „..” Nume de interfață greșit: nu se pot folosi alias de interfață Nume de interfață greșit: numele interfeței este gol Nume de interfață greșit: numele interfeței este prea lung Nume de interfață greșit: caracter rezervat: '!' Tip de interfață greșit Port incorect Port incorect „%s” Adresă sursă greșită Nu se poate insera regula la poziția „%d” Nu se poate insera regula la poziția „%s” Nu se pot specifica „all” (toate regulile) cu „--add-new” Nu se pot specifica în același timp directivele „insert” și „delete” Se verifică „ip6tables”
 Se verifică „iptables”
 Se verifică „ip6tables” brute
 Se verifică „iptables” brute
 Verificări dezactivate Comanda „%s” există deja Comanda poate întrerupe conexiunile SSH existente. Continuați cu operația (%(yes)s|%(no)s)?  Comentariul nu poate conține „’” Nu s-a putut restabilii definiția anterioară a regulei „%s” Nu s-a putut șterge regula inexistentă Nu s-a putut găsi „%s”. Se abandonează Nu s-a putut găsi un profil care să se potrivească cu „%s” Nu s-a putut găsi executabilul pentru „%s” Nu s-a putut găsi profilul „%s” Nu s-a putut găsi protocolul Nu s-a putut găsi regula „%d” Nu s-a putut găsi regula „%s” Nu s-a putut obține starea de ascultare Nu s-au putut obține statisticile pentru „%s” Nu s-au putut încărca regulile de înregistrare în jurnal Nu s-a putut normaliza adresa de destinație Nu s-a putut normaliza adresa sursă Nu s-a putut efectua „%s” Nu s-a putut fixa LOGLEVEL Nu s-a putut actualiza paravanul de protecție activ Nu s-a putut determina versiunea «iptables» Nu s-a putut găsi „%s” Nu s-a putut găsi identificatorul procesului părinte (ppid) pentru „%s” Nu s-a putut găsi identificatorul de proces (pid); este „/proc” montat? Nu s-a putut deschide „%s” pentru citire Nu s-a putut stabili starea lui „%s” Nu s-au putut actualiza regulile aplicației Nu s-a putut actualiza fișierul cu reguli Nu s-a putut actualiza fișierul cu reguli pentru înregistrarea în jurnal Politica implicită %(direction)s a fost schimbată în „%(policy)s”
 Politica implicită de aplicație s-a schimbat în „%s” Implicit: %(in)s (care-intră), %(out)s (care-iese), %(routed)s (direcționat) Se șterge:
  %(rule)s
Continuați cu operația (%(yes)s|%(no)s)?  Descriere: %s

 Profil duplicat „%s”, se folosește ultimul găsit EROARE: acest script nu ar trebui să aibă bitul SGID activat EROARE: acest script nu ar trebui să aibă bitul SUID activat Paravanul de protecție este activ și activat pentru lansare la pornirea sistemului Paravanul de protecție nu este activat (se omite reîncărcarea) Paravanul de protecție a fost reîncărcat Paravanul de protecție este oprit și dezactivat pentru lansare la pornirea sistemului S-a găsit potrivirea exactă S-a găsit potrivire exactă, cu excepția comentariului S-au găsit mai multe potriviri pentru „%s”. Trebuie să utilizați numele exact al profilului S-a găsit potrivirea „non-action/non-logtype/comment”: (%(xa)s/%(ya)s/'%(xc)s' %(xl)s/%(yl)s/'%(yc)s' De la Suportul pentru protocolul IPv6 nu este activat Sintaxă incorectă a regulii Sintaxă incorectă a regulii („%s” specificată cu regula aplicației) Poziția de inserare „%s” nu este o poziție validă Clauza „%s” nu este validă Clauza „from” nu este validă Clauza „port” nu este validă Clauza „proto” nu este validă Clauza „to” nu este validă Versiunea IP „%s” nu este validă Adresă IPv6 nevalidă cu protocolul „%s” Clauza de interfață nu este validă Clauza de interfață nu este validă pentru regula de rută Nivel de jurnalizare nevalid „%s” Tip de jurnalizare nevalid „%s” Opțiune nevalidă Politica „%(policy)s” nu este validă pentru „%(chain)s” Port nevalid cu protocolul „%s” Porturi nevalide în profilul „%s” Poziție nevalidă ' Poziție nevalidă „%d” Profil nevalid Nume de profil nevalid Indicativ (token) nevalid „%s” Jurnalizare dezactivată Jurnalizare activată Jurnalizare:  Lipsește politica pentru „%s” Versiuni IP amestecate pentru „from” și „to” Trebuie să specificați „tcp” sau „udp” cu porturi multiple Este nevoie de „from” sau „to” cu „%s” Se necesită clauza „to” sau „from” Profiluri noi: Nu s-au găsit reguli pentru profilul aplicației Opțiunii „comment” îi lipsește argumentul necesar Opțiunea „log” nu este permisă aici Opțiunea „log-all” nu este permisă aici Intervalele de porturi trebuie să fie numerice Port: Porturi: Profilul „%(fn)s” are câmpul obligatoriu gol „%(f)s” Din profilul „%(fn)s” lipsește câmpul obligatoriu „%(f)s” Profil: %s
 Directorul de profiluri nu există Nepotrivire protocol (from/to) Nepotrivire a protocolului cu protocolul specificat %s Se restabilesc toate regulile la valorile implicite instalate. Continuați cu operația (%(yes)s|%(no)s)?  Se restabilesc toate regulile la valorile implicite instalate. Acest lucru poate întrerupe conexiunile SSH existente. Continuați cu operația (%(yes)s|%(no)s)?  Regula a fost adăugată Regulă modificată după normalizare Regula a fost ștearsă Regula a fost inserată Regula a fost actualizată Regulile au fost actualizate Regulile au fost actualizate (v6) S-au actualizat regulile pentru profilul „%s” S-a omis reîncărcarea paravanului de protecție Se omite „%(value)s”: valoarea este prea X pentru „%(field)s” Se omite „%s”: de asemenea, în „/etc/services” Se omite „%s”: nu s-a putut procesa Se omite „%s”: nu se poate obține starea Se omite „%s”: câmpul este prea lung Se omite „%s”: numele nu este valid Se omite „%s”: numele este prea lung Se omite „%s”: este prea mare Se omite „%s”: prea multe fișiere citite deja Se omite regula IPv6 a aplicației. Se necesită cel puțin versiunea iptables 1.4 Se omite adăugarea unei reguli existente Se omite inserarea regulii existente Se omite n-uplul (tuple) malformat (lungime greșită): %s Se omite n-uplul (tuple) malformat (iface): %s Se omite n-uplul (tuple) malformat: %s Se omite regula IPv4 „%s” neacceptată Se omite regula IPv6 „%s” neacceptată Stare: activ
%(log)s
%(pol)s
%(app)s%(status)s Stare: activ%s Stare: inactiv Titlu: %s
 La Politică necunoscută „%s” Acțiune neacceptată „%s” Politică implicită neacceptată Direcția „%s” nu este acceptată Politica „%s” nu este acceptată Politică neacceptată pentru direcția „%s” Protocol neacceptat „%s” AVERTISMENT: „%s” poate fi citit de toți utilizatorii AVERTISMENT: „%s” poate fi scris de toți utilizatorii Număr greșit de argumente Trebuie să fiți „root” pentru a rula acest script n problemă rulând problemă la rularea «sysctl» problemă la rularea ufw-init
%s rulează ufw-init uid este %(uid)s, dar „%(path)s” este deținut de %(st_uid)s necunoscut d da                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         L           	       "       6       (     #        #     9  &   O     v            *                  
  9     )   N     x  "               /     +        :     M  
   V     d  #   w  #     %                        -     E     \     l  W          "           &   >  "   e                           !   
     /  '   L  "   t            !     #          !     %   @     f       !          &     5     *   2  =   ]       (     %     %     0   "  &   S     z  /          >     @   
     N     S     l  3     ,                       "     9     M  '   e                      +             .     L     _     u                      	          %     /        F     d  
          &          !              /      5   1   <   /   n         !            ,      T   !     k!  
   !      !     "  
   $"     2"  
   ?"     M"     `"     "  4   "  $   "     "     #     1#     O#     k#     #  *   #  :   #     $      #$  )   D$     n$  #   $  #   $  0   $     %     %  
   &%     1%     4%     H%     `%     {%     %  %   %     %     %     &     (&  &   B&     i&     k&     {&     &     &  4   &     &     &     &  x  '     {(     }(  E   (    (  ?   .  ?   .  M   &/  5   t/  1   /  9   /  2   0      I0  /   j0  T   0  <   0     ,1     =1  x   N1  R   1  (   2  E   C2  8   2  ,   2     2  b   u3  ,   3  !   4  (   '4  6   P4  L   4  L   4  E   !5  O   g5     5     5  &   5  %   6  #   ;6  1   _6     6  8   *7  O   c7  5   7  J   7  L   48  4   8  /   8  4   8  4   9  R   P9  G   9  S   9  i   ?:  g   :  -   ;  1   ?;  Y   q;  >   ;  %   
<  I   0<  k   z<  =   <  8   $=  H   ]=  :   =  W   =  Z   9>  X   >  T   >     B?  u   Y?  G   ?  G   @  x   _@  a   @  -   :A     hA  0   A     B  X   B     C  -   	C  :   7C  x   rC  5   C  &   !D  (   HD  (   qD  )   D  &   D  '   D  ?   E  >   SE  C   E  -   E  !   F  C   &F  :   jF  4   F  !   F  &   F  '   #G  .   KG  ,   zG  /   G  -   G     H  3   $H  E   XH  d   H  H   I  :   LI     I  7   I  K   I  6   &J  :   ]J  J   J  	   J     J  c   J  [   ]K     K  9   K  9   L  ]   AL     L     (M  !   	N  C   +N     oN  !   N  !   N  !   N  &   N  >   O  B   YO  `   O  V   O  @   TP  O   P  =   P  6   #Q  F   ZQ  2   Q  W   Q  s   ,R  T   R  G   R  \   =S  >   S  T   S  S   .T  D   T  $   T  &   T     U     +U  ,   .U  8   [U  G   U  >   U  6   V  T   RV  8   V  R   V  R   3W  :   W  l   W     .X     0X  /   PX  +   X     X  4   X     X     Y     Y     
   W         h   d         M          q          )      r           {      V   Z      X                   0   v   ?   F   T   (   H   %       E   C   L   \                      ,      O   ;      f      7   B          3   +   N              a   c      g   	                  k                                     i                           5                        n   .   |   `   u   #   ]       I         '   2   A       -   t   *          o              l      S   &   R   "       G                 !              z   w                6   $      1   x            @                    D   Q   m         e   <   :                 _   =                                    p   Y                [   8   
   4      P       >   s          J   ^                 }      j   9                  /      U      b                 y                  K           ~                     
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2013-03-09 17:21+0000
Last-Translator: Sergey Basalaev <SBasalaev@gmail.com>
Language-Team: Russian <ru@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Отсутствует) 
Ошибка применения правил приложения. 
Использование: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s включить брандмауэр
 %(disable)-31s отключить брандмауэр
 %(default)-31s установить политику по умолчанию
 %(logging)-31s задать уровень журналирования %(level)s
 %(allow)-31s добавить allow %(rule)s
 %(deny)-31s добавить deny %(rule)s
 %(reject)-31s добавить reject %(rule)s
 %(limit)-31s добавить limit %(rule)s
 %(delete)-31s удалить %(urule)s
 %(insert)-31s вставить %(urule)s в позиции %(number)s
 %(reload)-31s перезагрузить брандмауэр
 %(reset)-31s сбросить брандмауэр
 %(status)-31s показать статус брандмауэра
 %(statusnum)-31s показать статус брандмауэра как нумерованый список %(rules)s
 %(statusverbose)-31s показать подробное состояние брандмауэра
 %(show)-31s показать отчёт брандмауэра
 %(version)-31s показать информацию о версии

%(appcommands)s:
 %(applist)-31s показать профили приложения
 %(appinfo)-31s показать информацию о %(profile)s
 %(appupdate)-31s обновить %(profile)s
 %(appdefault)-31s установить политику приложения по умолчанию
  (пропущен перезапуск брандмауэра)  Пробные правила отменены успешно.  Некоторые правила не могут быть отменены. %s доступен для записи группе! %s доступен для записи всем! «%(f)s» файл «%(name)s» не существует «%s» уже существует. Пропуск «%s» не существует «%s» недоступен для записи (не забудьте соответственно обновить правила) : Необходим python версии не ниже 2.6)
 Прервано Действие Добавленные правила пользователя (см. 'ufw status' межсетевого экрана): Сбой при добавлении правила IPv6: IPv6 не включён Доступные приложения: Резервное копирование «%(old)s» в «%(new)s»
 Недопустимый адрес назначения Неверное имя интерфейса Неверное имя интерфейса: невозможно использовать псевдонимы интерфейса Неверное имя интерфейса: зарезервированный символ: '!' Неверный тип интерфейса Недопустимый порт Недопустимый порт «%s» Недопустимый адрес источника Не удалось вставить правило в позицию «%d» Не удалось добавить правило в позицию «%s» Нельзя указывать «all» вместе с «--add-new» Не удалось распознать вставку или удаление Проверка ip6tables
 Проверка iptables
 Проверка рядов ip6tables
 Проверка рядов iptables
 Проверки выключены Команда «%s» уже существует Команда может разорвать существующие соединения ssh. Продолжить операцию (%(yes)s|%(no)s)?  Не удалось вернуть правило «%s» Невозможно удалить несуществующее правило Не удалось найти «%s». Пропуск Не найдено профилей соответствующих «%s» Не удалось найти исполняемый файл для «%s» Не удалось найти профиль «%s» Не удалось найти протокол Не удалось найти правило «%d» Не удалось найти правило «%s» Не удалось получить состояние прослушивания Не удалось получить статистику для «%s» Не удалось загрузить правила ведения журнала Не удалось привести адрес назначения к стандартному виду Не удалось привести адрес источника к стандартному виду Не удалось выполнить «%s» Не удалось установить LOGLEVEL Не удалось обновить запущенный межсетевой экран Не удалось определить версию iptables Не удалось найти «%s» Не удалось найти родительский pid для «%s» Не удалось найти pid (убедитесь, что каталог /proc смонтирован) Не удалось открыть «%s» для чтения Не удалось получить статус «%s» Не удалось обновить правила приложения Не удалось обновить файл правил Не удалось обновить файл правил журналирования Правило по умолчанию %(direction)s изменено на «%(policy)s»
 Правило приложения по умолчанию изменено на «%s» Удаление:
 %(rule)s
Продолжить операцию (%(yes)s|%(no)s)?  Описание: %s

 Профиль «%s» дублируется, будет использован последний найденный Ошибка: этот сценарий не должен быть SGID Ошибка: этот сценарий не должен быть SUID Межсетевой экран включён и будет запускаться при запуске системы Межсетевой экран не включён (перезагрузка пропущена) Брандмауэр перезагружен Межсетевой экран отключён и не будет запускаться при запуске системы Найдено точное совпадение Найдены множественные совпадения для «%s». Используйте точное название профиля Найдено non-action/non-logtype совпадение (%(xa)s/%(ya)s %(xl)s/%(yl)s) Из Поддержка IPv6 не включена Недопустимый синтаксис правила Неверный синтаксис правила («%s» указан с правилом для приложения) Неверная позиция вставки «%s» Неверное условие «%s» Неверное условие «from» Неверное условие «port» Неверное условие «proto» Неверное условие «to» Неверная версия IP «%s» Неверный адрес IPv6 с протоколом «%s» Неверное расположение интерфейса Неверный уровень журналирования «%s» Неверный тип журнала «%s» Неверный параметр Неверное правило «%(policy)s» для «%(chain)s» Неверный порт для протокола «%s» Неверные порты в профиле «%s» Неверная позиция ' Неверная позиция «%d» Неправильный профиль Неправильное имя профиля Некорректный символ «%s» Журналирование отключено Журналирование включено Журналирование:  Отсутствует правило для «%s» Указаны разные версии IP для «from» и «to» При нескольких портах должно быть указано «tcp» или «udp» Необходимо указать «from» или «to» для «%s» Необходимо условие «to» или «from» Новые профили: Не указаны порты в профиле «%s» Не найдено правил для профиля приложения Параметр 'log' здесь недопустим Параметр 'log-all' здесь недопустим Интервалы портов должны быть численными Порт: Порты: Профиль «%(fn)s» содержит пустое обязательное поле «%(f)s» В профиле «%(fn)s» пропущено обязательное поле «%(f)s» Профиль: %s
 Каталог профилей не существует Несоответствие протокола (из/в) Несоответствие протокола с указанным протоколом %s Сброс всех правил к значениям по умолчанию. Продолжить операцию (%(yes)s|%(no)s)?  Сброс всех правил к значениям по умолчанию. Это может разорвать существующие соединения ssh. Продолжить операцию (%(yes)s|%(no)s)?  Правило добавлено Правило изменено после нормализации Правило удалено Правило вставлено Правило обновлено Правила обновлены Правила обновлены (v6) Правила для профиля «%s» обновлены Пропущена перезагрузка брандмауэра Пропуск «%(value)s»: значение слишком велико для «%(field)s»: Пропуск «%s»: информация уже находится в /etc/services Пропуск «%s»: невозможно обработать Пропуск «%s»: невозможно собрать статистику Пропуск «%s»: поле слишком большое Пропуск «%s»: недопустимое имя Пропуск «%s»: слишком длинное имя файла Пропуск «%s»: слишком велико Пропуск «%s»: слишком много файлов уже прочитано Пропуск правила приложения IPv6. Требуется iptables версии не ниже 1.4 Пропуск добавления уже существующего правила Пропуск вставки существующего правила Пропуск некорректных элементов (неверная длина): %s Пропуск некорректных элементов: %s Пропуск не поддерживаемого правила «%s» для IPv4 Пропуск неподдерживаемого правила «%s» для IPv6 Состояние: активен
%(log)s
%(pol)s
%(app)s%(status)s Состояние: активен%s Состояние: неактивен Заголовок: %s
 В Неизвестное правило «%s» Неподдерживаемое действие «%s» Неподдерживаемое правило по умолчанию Неподдерживаемое направление «%s» Неподдерживаемое правило «%s» Неподдерживаемое правило для направления «%s» Неподдерживаемый протокол «%s» Предупреждение: «%s» доступен для чтения всем Предупреждение: «%s» доступен для записи всем Неверное количество аргументов Для запуска этого сценария требуются права администратора n проблема запуска ошибка при выполнении sysctl проблема запуска ufw-init
%s выполнение ufw-init uid %(uid)s, но «%(path)s» занят %(st_uid)s неизвестный y да                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              $      ,       8   r  9               Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2012-08-15 22:05+0000
Last-Translator: FULL NAME <EMAIL@ADDRESS>
Language-Team: Northern Sami <se@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "          (   $  #   M     q       &                    *        6     S     [  9   b  )          "               /   ,     \     o  
   x       #     #     %              (     <     O     g     ~       W          "        B  &   `  "                              !   /     Q  '   n  "               !     #   	     -  !   @  %   b            !          &     5     *   T  =          (     %     %     0   D  &   u       /          >     @   /     p     u       3     ,                  .     D     [     o  '                         +        0     P     n                                	          %     /   8     h       
          &          !        5     Q     W  1   ^  /          !          ,     T   8       
   
           9  
   F     T  
   a     o            4     $             6     S     q            *     :        '       E   )   f         #      #      0         &!     7!  
   H!     S!     V!     j!     !     !     !  %   !     !     "     -"     J"  &   d"     "     "     "     "  4   "     "     #     	#  p  
#     ~$  
   $  0   $  0   $  ,   $  -   %  "   H%  %   k%  ,   %      %     %  %   %  :   &  !   T&  	   v&  	   &  ]   &  4   &     '  ,   3'     `'     y'  <   '     '     '     '     (  5   !(  /   W(  0   (  2   (     (     )  '   )  &   D)     k)     })  T   )  )   )  '   *  *   B*  3   m*  )   *  %   *     *  "   +     3+  &   Q+  +   x+  2   +  -   +  -   ,      3,      T,  .   u,  &   ,     ,      ,  &   -  -   (-  %   V-  0   |-  -   -  7   -  A   .  5   U.  4   .     .  =   .  #   
/  #   ./  4   R/  ?   /     /  :   /     0  O   50  T   0     0     0     0  D   1  6   Z1      1     1     1     1     
2     %2  +   B2     n2  +   2     2     2  7   2  $    3  "   E3     h3     }3     3     3     3     3     3     3     4  (   -4  >   V4  ,   4  -   4     4  1   4  8   15  $   j5  (   5  $   5     5     5  =   5  5   (6     ^6     j6     6  ,   6  Z   6     *7     7  $   7     7     8     8     .8     G8  )   e8  -   8  L   8  -   
9  0   89  ,   i9  +   9  (   9  -   9  (   :  @   B:  M   :  -   :  .   :  2   .;      a;  3   ;  3   ;  1   ;     <     -<     ><     J<     M<  "   h<  $   <     <      <  )   <      =  A   9=  :   {=     =  9   =     
>     >  %   &>     L>  5   b>     >     >     >        U         f   b         K          o          '      p           y      T   X      V                   .   t   =   D   R   &   F   #       C   A   J   Z                      *      M   9      d      5   @          1   )   L                  a   _   e                     i   }                                  g                           3                        l   ,   z   ^   s   !   [       G         %   0   ?       +   r   (          m             j      Q   $   P           E                               x   u                4   "      /   v            >                    B   O   k          c   :   8                 ]   ;                                    n   W                Y   6   	   2   
   N       <   q          H   \                 {      h   7                  -      S      `                  w   ~            
   I           |                     
 
(None) 
Error applying application rules.  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2010-09-18 00:47+0000
Last-Translator: helix84 <Unknown>
Language-Team: Slovak <sk-i18n@lists.linux.sk>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Žiadne) 
Chyba pri pokuse použiť pravidlá aplikácie.  (preskočené opätovné načítanie firewallu)  Požadované pravidlá úspešne zrušené.  Niektoré pravidlá nebolo možné zrušiť. %s je zapisovateľný pre skupinu! %s je zapisovateľný pre všetkých! „%(f)s“ súbor „%(name)s“ neexistuje „%s“ už existuje. Ruší sa „%s“ neexistuje „%s“ nie je prístupný na zápis (urobte príslušné aktualizácie vo vašich pravidlách) : Vyžaduje najmenej python 2.6)
 Zrušené Operácia Pridané používateľské pravidlá (bežiaci firewall zobrazíte pomocou „ufw status“): Pridanie pravidla IPv6 zlyhalo: IPv6 nie je zapnutý Dostupné aplikácie: Zálohuje sa „%(old)s“ do „%(new)s“
 Chybná cieľová adresa Chybný názov rozhrania Chybný názov rozhrania: nemožno použiť aliasy rozhrania Chybný typ rozhrania Chybný port Chybný port „%s” Chybná zdrojová adresa Nie je možné vložiť pravidlo na pozíciu „%d“ Nemožno vložiť pravidlo na pozíciu „%s“ Nemožno zadť „all“ spolu s „--add-new“ Nie je možné špecifikovať vkladanie a zmazanie Kontroluje sa ip6tables
 Kontroluje sa iptables
 Kontrolujú sa nespracované ip6tables
 Kontrolujú sa nespracované iptables
 Kontroly vypnuté Príkaz „%s“ už existuje Príkaz môže narušiť prebiehajúce spojenia ssh. Pokračovať (%(yes)s|%(no)s)?  Nepodarilo sa stiahnuť pravidlo „%s“ Nemožno zmazať neexistujúce pravidlo Nebolo možné nájsť „%s“. Ruší sa Nepodarilo sa násť profil zodpovedajúci „%s“ Nenájdený spustiteľný súbor „%s“ Nebolo možné násť profil „%s“ Nepodarilo sa nájsť protokol Nebolo nájdené pravidlo „%d“ Nenájdené pravidlo „%s“ Nepodarilo sa zistiť stav počúvania Nepodarilo sa získať štatistiku „%s“ Nepodarilo sa načítať pravidlá zaznamenávania Nebolo možné normalizovať cieľovú adresu Nebolo možné normalizovať zdrojovú adresu Nebolo možné vykonať „%s“ Nepodarilo sa nastaviť LOGLEVEL Nebolo možné aktualizovať bežiaci firewall Nebolo možné určiť verziu iptables Nenájdený „%s“ Nenájdený PID rodiča „%s“ Nenájdený PID (je /proc pripojený?) Nebolo možné otvoriť „%s” na čítanie Nie je možné vykonať stat „%s” Nepodarilo sa aktualizovať pravidlá aplikácie Nebolo možné aktualizovať súbor pravidiel Nepodarilo sa aktualizovať súbor pravidiel na záznam Štandardná politika %(direction)s zmenená na „%(policy)s“
 Štandardná politika aplikácie zmenená na „%s“ Zmaže sa:
 %(rule)s
Pokračovať (%(yes)s|%(no)s)?  Popis: %s

 Duplicitný profil „%s“, používa sa posledné nájdené CHYBA: tento skript nemá byť SGID CHYBA: tento skript nemá byť SUID Firewall je aktívny a zapnutý pri štarte systému Firewall nie je zapnutý (preskakuje sa opätovné načítanie) Firewall znovu načítaný Firewall je zastavený a nespustí sa pri štarte systému Nájdená presná zhoda Nájdené viaceré zhody pre „%s“. Prosím, použite presný názov profilu Nájdená zhoda, ktorá nie je akcia ani typ záznamu  (%(xa)s/%(ya)s %(xl)s/%(yl)s) Od Podpora IPv6 nie je zapnutá Nesprávna syntax pravidla Neplatná syntax pravidla („%s“ uvedené s pravidlom aplikácie) Pozícia na vloženie „%s“ nie je platná pozícia Nepodporovaná klauzula „%s“ Neplatná kluzula „from” Neplatná kluzula „port” Neplatná kluzula „proto” Neplatná kluzula „to” Neplatná verzia IP „%s” Neplatná IPv6 adresa s protokolom „%s“ Neplatná klauzula rozhrania Neplatná úroveň zaznamenávania „%s“ Neplatný typ záznamu „%s“ Neplatná voľba Neplatná politika „%(policy)s“ pre „%(chain)s“ Neplatný port s protokolom „%s“ Neplatné porty v profile „%s“ Neplatná pozícia ' Neplatná pozícia „%d“ Neplatný profil Neplatný názov profilu Neplatný token „%s” Záznam vypnutý Záznam zapnutý Zaznamenávanie:  Chýba politika pre „%s“ Zmiešané verzie IP „od” a „do” Musíte uviesť „tcp“ alebo „udp“ s viacerými portami „%s“ vyžaduje „from“ alebo „to“ Vyžaduje sa klauzula „od” alebo „do” Nové profily: V profile „%s“ neboli nájdené žiadne porty Pre profil aplikácie neboli nájdené žiadne pravidlá Tu nie je voľba „log“ povolená Tu nie je voľba „log-all“ povolená Rozsahy portov musia byť číselné Port: Porty: Profil „%(fn)s“ nemá vyplnené povinné pole „%(f)s“ Profilu „%(fn)s“ chýba povinné pole „%(f)s“ Profil: %s
 Adresár profilov neexistuje Nezhoda protokolov (od/do) Nezhoda protokolov s určeným protokolom %s Všetky pravidlá sa vrátia na predinštalované hodnoty. Pokračovať (%(yes)s|%(no)s)?  Všetky pravidlá sa vrátia na predinštalované hodnoty. Príkaz môže narušiť prebiehajúce spojenia ssh. Pokračovať (%(yes)s|%(no)s)?  Pravidlo pridané Pravidlo sa zmenilo po normalizácii Pravidlo zmazané Pravidlo vložené Pravidlo aktualizované Pravidlá aktualizované Pravidlá aktualizované (v6) Pravidlá profilu „%s“ aktualizované Preskočené opätovné načítanie firewallu Preskakuje sa „%(value)s“: hodnota je príliš dlhá pre „%(field)s“ Preskakuje sa „%s“: tiež v /etc/services Preskakuje sa „%s“: nepodarilo sa spracovať Preskakuje sa „%s“: nepodarilo sa stat() Preskakuje sa „%s“: pole príliš dlhé Preskakuje sa „%s“: neplatný názov Preskakuje sa „%s“: názov príliš dlhý Preskakuje sa „%s“: príliš veľký Preskakuje sa „%s“: už bolo načítaných priveľa súborov Preskakuje sa aplikačné pravidlo IPv6. Vyžaduje iptables aspoň verzie 1.4 Preskakuje sa pridanie existujúceho pravidla Preskakuje sa vloženie existujúceho pravidla Preskakuje sa chybná n-tica (chybná dĺžka): %s Preskakuje sa chybná n-tica: %s Preskakuje sa nepodporované pravidlo IPv4 „%s“ Preskakuje sa nepodporované pravidlo IPv6 „%s” Statv: aktívny
%(log)s
%(pol)s
%(app)s%(status)s Stav: aktívny%s Stav: neaktívny Názov: %s
 Do Neznáma politika „%s“ Nepodaporovaná operácia „%s“ Nepodporovaná štandardná politika Nepodporovaný smer „%s“ Nepodporovaná politika „%s” Nepodporovaná politika pre smer „%s“ nepodporovaný protokol „%s” UPOZ: „%s“ je prístupný na zápis všetkým používateľom UPOZ: do „%s“ môžu zapisovať všetci používatelia Chybný počet argumentov Aby ste mohli spúšťať tento skript, musíte byť root n problém pri spúšťaní problém pri spúšťaní ufw-init
%s spúšťa sa ufw-init uid je %(uid)s ale „%(path)s“ vlastní %(st_uid)s neznáme a ano                                                                                                                                                                                                                                                                                                                                                                         l      0     1     3  "   ;    ^       (     #   '     K     a  &   w                 *             -     5  9   <  )   v       "               /     +   6     b     u  
   ~       #     #     %         
     .     B     U     m            W          "   %     H  &   f  "                              !   5     W  '   t  "               !     #        3  !   F  %   h            !          &     5   $  *   Z  C     =          (     %   B  %   h  0     &          /        (  >   :  @   y                 3     ,   !     N     b     x                 '          '        :     Q     g  +   v                         	          .     A     R  	   b     l  %     /               
         !   &   @      g   !                        1      /   !     2!  !   ?!     a!  ,   }!  T   !     !  
   "      "     "  
   "     "  
   "     "     "     #  4   .#  $   c#     #     #     #     #     #     $  *   3$  :   ^$     $      $  )   $     %  #   %  #   C%  0   g%     %     %  
   %     %     %     %     %     &     *&  %   B&     h&     &     &     &  &   &     &     &     '     &'     B'  4   S'     '     '     '    '     )     )  *   ')    R)  .   O-  .   ~-  )   -  "   -     -  &   .     <.     Y.     i.  1   |.  "   .  
   .     .  S   .  5   8/     n/  4   /     /     /  :   /  '   0     E0     Z0     k0     0  ,   0  ,   0  (   0  )   1     H1     _1     u1     1     1     1  b   1      G2  +   h2  !   2  -   2  ,   2     3     /3     J3     h3  '   3  '   3  &   3  )   3  *   '4     R4  "   j4  /   4  (   4     4  (   4  (   %5  !   N5  %   p5  %   5  -   5  8   5  :   #6  ,   ^6  E   6  <   6  
   7  0   7  #   J7  #   n7  9   7  9   7      8  ?   '8     g8  C   }8  E   8     9     
9     )9  B   E9  ,   9     9     9     9     :     :     8:  (   V:     :  2   :     :     :     
;  .   !;  "   P;     s;     ;     ;     ;     ;     ;     <     <     0<     =<  %   T<  2   z<      <  #   <  
   <  $    =     %=  %   B=  )   h=     =     =     =  1   =  /   =      >     ,>     E>  .   a>  h   >     >     ?  %   ?     ?     ?     ?      @     @  &   /@  +   V@  8   @  "   @  !   @  +    A     ,A     LA     iA     A  '   A  <   A  %   B  (   *B  9   SB  %   B  %   B  +   B  1   C     7C     IC     ZC     fC     iC     ~C     C     C     C     C     C  #   D  &   5D     \D  .   yD     D     D     D  !   D     D  2   E     BE     JE     LE                   b             $                 w   a                 y                          P      \   d   H   i   Z       t       `      F           z              |                 5                 x   '   h          4      e      {   
                 L              *   "       @       n   N   K            =   l                     Y   A                Q      >      &      ;   T      /   	   u       U   +   j   8          r             D          R          _                   %   G         #   V       2       }            E   W      S   s      I             (      ?         [      ,   O      9   1          J             
          M      3       ]              )                       -       q          g   k      :          o                 6   B      <          f   ~       7          X   p       C       0   m                 v   ^   .              !   c    
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2012-11-25 20:06+0000
Last-Translator: Andrej Znidarsic <andrej.znidarsic@gmail.com>
Language-Team: Slovenian <sl@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Ničesar) 
Napaka med uveljavljanjem pravil programa 
Uporaba: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s omogoči požarni zid
 %(disable)-31s onemogoči požarni zid
 %(default)-31s nastavi privzeti pravilnik
 %(logging)-31s nastavi beleženje na %(level)s
 %(allow)-31s dodaj dovoli %(rule)s
 %(deny)-31s dodaj prepovej %(rule)s
 %(reject)-31s dodaj zavrni %(rule)s
 %(limit)-31s dodaj omejitev %(rule)s
 %(delete)-31s izbriši %(urule)s
 %(insert)-31s vstavi %(urule)s na %(number)s
 %(reload)-31s ponovno naloži požarni zid
 %(reset)-31s ponastavi požarni zid
 %(status)-31s prikaži stanje požarnega zidu
 %(statusnum)-31s prikaži stanje požarnega zidu kot oštevilčen seznam %(rules)s
 %(statusverbose)-31s prikaži podrobni izpis stanja požarnega zidu
 %(show)-31s prikaži poročilo požarnega zidu
 %(version)-31s prikaži podrobnosti različice
%(appcommands)s:
 %(applist)-31s navedi profile programov
 %(appinfo)-31s prikaži podatke %(profile)s
 %(appupdate)-31s posodobi %(profile)s
 %(appdefault)-31s nastavi privzet pravilnik programov
  (preskok ponovnega nalaganja požarnega zidu)  Poskušana pravila so uspešno oduveljavljena  Nekaterih pravil ni mogoče razveljaviti V %s lahko pišejo člani skupine! V %s lahko piše kdorkoli! '%(f)s' datoteka '%(name)s' ne obstaja '%s' že obstaja. Prekinitev '%s' ne obstaja '%s' ni zapisljivo (zagotovite ustrezno posodabljanje vaših pravil) : zahtevan je najmanj python 2.6)
 Preklicano Dejanje Dodana uporabniška pravila (za izvajanje požarnega zidu si oglejte 'ufw status'): Dodajanje pravil za IPv6 ni uspelo: IPv6 ni omogočen Dostopni programi: Ustvarjanje varnostne kopije '%(old)s' na '%(new)s'
 Neveljaven ciljni naslov Slabo ime vmesnika Slabo ime vmesnika: vzdevkov vmesnika ni mogoče uporabiti Slabo ime vmesnika: pridržan znak: '!' Slaba vrsta vmesnika Neveljavna vrata Neveljavna vrata '%s' Neveljaven izvorni naslov Pravila ni mogoče vstaviti na položaj '%d' Pravila ni mogoče vstaviti na položaj '%s' Z '--add-new' ni mogoče določiti 'all' Vstavitve in izbrisa ni mogoče določiti Preverjanje ip6tables
 Preverjanje iptables
 Preverjanje surovih ip6tables
 Preverjanje surovih iptables
 Preverjanje je onemogočeno Ukaz '%s' že obstaja Ukaz lahko prekine obstoječe povezave ssh. Ali želite nadaljevati z opravilom (%(yes)s|%(no)s)?  Pravila '%s' ni mogoče umakniti Neobstoječega pravila ni mogoče izbrisati Ni mogoče najti '%s'. Prekinitev Profila skladajočega z '%s' ni mogoče najti Izvršilne datoteke za '%s' ni mogoče najti Profila '%s' ni mogoče najti Protokola ni mogoče najti Ni mogoče najti pravila '%d' Ni mogoče najti pravila '%s' Ni mogoče pridobiti stanja poslušanja Ni mogoče pridobiti statistike za '%s' Pravil beleženja ni mogoče naložiti Ciljnega naslova ni mogoče normalizirati Izvornega naslova ni mogoče normalizirati '%s' ni mogoče izvesti RAVNIDNEVNIKA ni mogoče nastaviti Požarnega zidu ni mogoče posodobiti med tekom Ni mogoče določiti različice iptables '%s' ni mogoče najti Nadrejenega pid za '%s' ni mogoče najti Ni mogoče najti (je /proc priklopljen?) '%s' ni mogoče odpreti za branje Ukaza stat ni mogoče izvesti na '%s' Pravil programa ni mogoče posodobiti Datoteke s pravili ni bilo mogoče posodobiti Ni bilo mogoče posodobiti datoteke pravil za beleženje Privzeto pravilo %(direction)s spremenjeno v '%(policy)s'
 Privzeto pravilo programa spremenjeno v '%s' Privzeto: %(in)s (dohodni), %(out)s (odhodni), %(routed)s (usmerjeni) Brisanje:
 %(rule)s
Nadaljevanje opravila (%(yes)s|%(no)s)?  Opis: %s

 Dvojnik profila '%s', uporaba zadnjega najdenega NAPAKA: ta skripta ne sme biti SGID NAPAKA: ta skripta ne sme biti SUID Požarni zid je dejaven in omogočen ob sistemskem zagonu Požarni zid ni onemogočen (preskok ponovnega nalaganja) Požarni zid je ponovno naložen Požarni zid je zaustavljen in onemogočen ob sistemskem zagonu Najden točen zadetek Najdenih je bilo več ujemanj za '%s'. Uporabite točno ime profila Najden ne-dejavni/ne-dnevniški zadetek (%(xa)s/%(ya)s %(xl)s/%(yl)s) Od Poodpora za IPv6 ni omogočena Neveljavno pravilo skladnje Nepravilna skladnja pravila ('%s' je določen s pravilom programa) Vstavljen položaj '%s' ni veljaven položaj Neveljavna določba '%s' Neveljavna določba 'od' Neveljavna določba 'vrata' Neveljavna določba 'proto' Neveljavna določba 'do' Neveljavna različica IP '%s' Neveljaven naslov IPv6 s protokolom '%s' Neveljavna določba vmesnika Neveljavna določba vmesnika za pravilo usmerjanja Neveljavna raven dnevnika '%s' Neveljavna vrsta dnevnika '%s' neveljavna možnost Neveljavno pravilo '%(policy)s' za '%(chain)s' Neveljavna vrata s protokolom '%s' Neveljavna vrata v profilu '%s' Neveljaven položaj ' Neveljaven položaj '%d' Neveljaven profil Neveljavno ime profila Neveljaven žeton '%s' Beleženje onemogočeno Beleženje omogočeno Beleženje:  Manjka pravilo za '%s' Mešane različice IP za 'od' in 'do' Potrebno je določiti 'tcp' ali 'udp' z več vrati Z '%s' je zahtevan 'od' ali 'do' Zahtevana je določba 'od' ali 'za' Novi profili: V profilu '%s' ni mogoče najti vrat Ni pravil za profil programa Možnost 'beleži' tukaj ni dovoljena Možnost 'beleži-vse' tukaj ni dovoljena Obseg vrat mora biti število Vrata: Vrata: Profil '%(fn)s' ima prazno zahtevno polje '%(f)s' Profilu '%(fn)s' manjka zahtevano polje '%(f)s' Profil: %s
 Mapa profilov ne obstaja Neustrezen protokol (od/do) Neustrezen protokol z določenim protokolom %s Ponastavljanje vseh pravil na privzete vrednosti. Ali želite nadaljevati z opravilom (%(yes)s|%(no)s)?  Ponastavljanje vseh pravil na privzete vrednosti. Ukaz lahko prekine obstoječe povezave ssh. Ali želite nadaljevati z opravilom (%(yes)s|%(no)s)?  Pravilo dodano Pravilo je spremenjeno po izenačenju Pravilo izbrisano Pravilo je vstavljeno Pravilo posodobljeno Pravila posodobljena Pravila posodobljena (v6) Pravila za profil '%s' so posodobljena Preskok ponovnega nalaganja požarnega zidu Preskok '%(value)s': vrednost je predolga za '%(field)s' Preskok '%s': tudi v /etc/services Preskok '%s': ni mogoče obdelati Preskok '%s': ukaza stat ni mogoče izvesti Preskok '%s': polje je predolgo Preskok '%s': neveljavno ime Preskok '%s': ime je predolgo Preskok '%s': preveliko Preskok '%s': preveč prebranih datotek Preskok IPv6 pravila programa. Zahtevan je vsaj iptables 1.4 Preskok dodajanja obstoječega prvila Preskok vstavljanja obstoječega pravila Preskok slabo oblikovane n-terice (napačna dolžina): %s Preskok slabo oblikovane n-terice: %s Preskok nepodprtega pravila IPv4 '%s' Izpustitev nepodprtega pravila za IPv6 '%s' Stanje: dejavno
%(log)s
%(pol)s
%(app)s%(status)s Stanje: dejavno%s Stanje nedejavno Naslov: %s
 Za Neznano pravilo '%s' Nepodprto dejanje '%s' Nepodprta privzeta pravila Nepodprta smer '%s' Nepodprta pravila '%s' Nepodprta pravila za smer '%s' Nepodprt protokol '%s' OPOZORILO: '%s' lahko bere ves svet OPOZORILO: '%s' je splošno zapisljivo Napačno število argumentov Za zagon te skripte morate biti skrbnik (root) n težave z zagonom težave pri izvajanju sysctl napaka med izvajanjem ufw-init
%s zaganjanje ufw-init uid je %(uid)s toda '%(path)s ' nadzira %(st_uid)s neznano y da                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ,      <       P      Q   v  S                           
 Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2009-08-26 19:29+0000
Last-Translator: Jamie Strandboge <jamie@ubuntu.com>
Language-Team: Serbian <sr@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               <     \
      
     
     
  "   
           (     #             	  &        F  *   Z                 9     )             -     E  /   X  +               
          #     #     %   9      _                                "     &   &  "   M     p            '     "             #  !   :  #   \       !     %               !   
     /  5   J  *     C          (     %   *  %   P  0   v  &          /          >   "  @   a                 3     ,   	     6     J     `     v                 '                  '  +   6     b                                     	          %   $  /   J     z       
          &          !   %     G     c     i  1   p  /          !          ,     
   J      U     v  
          
                    4     $   .     S     s                      *     :   )      d          )      $            #   !  #   3!  0   W!     !     !  
   !     !     !     !     !     !     "  %   2"     X"     r"  &   "     "     "     "     "     "  4   	#     >#     F#     H#  v  L#     $     $  '   $    $  )   (  !   )  &   ;)     b)     )  #   )     )  3   )  !   *     %*     .*  B   7*  @   z*     *     *     *  C   +  5   E+     {+  
   +     +     +  '   +  '   +  #   ,     >,     ^,     v,     ,     ,     ,     ,  )   ,  +   &-  &   R-     y-     -  #   -  #   -  $   -     ".     =.  (   \.  %   .     .  )   .  *   .  $   /     ;/  "   Y/     |/  A   /  '   /  I   0     P0  1   b0  $   0  $   0  7   0  3   1     J1  9   _1     1  A   1  F   1     72     =2     W2  4   l2  3   2     2     2     2     3     3     %3     =3  *   Z3     3     3     3  ,   3     3     
4      4     64     E4     Y4     m4     4  
   4     4  *   4  .   4  #   5     65  
   Q5  $   _5  )   5      5  $   5  #   5     6     6  7   &6  5   ^6     6     6  ,   6  ;   6     $7  !   57     W7  
   g7     u7     7     7  %   7  &   7  B   7  .   A8  &   p8  '   8  &   8      8  )   9     19  3   N9  ;   9  (   9  )   9  6   :  ,   H:  $   u:  '   :  ,   :  /   :     ;     /;  
   ?;     J;     O;     b;     ~;     ;     ;  (   ;     ;     <  /   (<     X<     Z<     k<  #   <  
   <  1   <     <     <     <                   P      *      D      0   {      9   x          v       g       !         K       $         \                ^   d          u                 N   e       `   o                     R   E   q   s   f           }      Z   %      t   7   Y       V       b       "                >   /      3   h   ;   y               W       a   Q   
              (   =   ,   	       .      2   I         p                     6       M             U   m   c                     ~      :       n          C   -   <          O      @   |      4   i             T      8                 [                 j              J   S            k      5      l   w           X   ]   )                                 H      #   _   A       z   &   F   r                         G   +       
           1   ?       '          L   B          
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' does not exist (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Could not back out rule '%s' Could not delete non-existent rule Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2010-08-28 01:18+0000
Last-Translator: Daniel Nylander <yeager@ubuntu.com>
Language-Team: Swedish <sv@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Ingen) 
Fel vid tillämpning av programregler. 
Användning: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s aktiverar brandväggen
 %(disable)-31s inaktiverar brandväggen
 %(default)-31s anger standardpolicy
 %(logging)-31s ställ in loggningsnivå till %(level)s
 %(allow)-31s lägg till tillåt %(rule)s
 %(deny)-31s lägg till neka %(rule)s
 %(reject)-31s lägg till avslå %(rule)s
 %(limit)-31s lägg till begränsning %(rule)s
 %(delete)-31s ta bort %(rule)s
 %(insert)-31s infoga %(urule)s vid %(number)s
 %(reload)-31s uppdatera brandväggen
 %(reset)-31s starta om brandväggen
 %(status)-31s visa brandväggens tillstånd
 %(statusnum)-31s visa brandväggens tillstånd som numrerad lista över %(rules)s
 %(statusverbose)-31s visa utförligt brandväggens tillstånd
 %(show)-31s visa rapport från brandväggen
 %(version)-31s visa versionsinformation

%(appcommands)s:
 %(applist)-31s lista programprofiler
 %(appinfo)-31s visa information om %(profile)s
 %(appupdate)-31s uppdatera %(profile)s
 %(appdefault)-31s ange standardprogrampolicy
  (hoppade över omläsning av brandvägg)  Inaktivering av regler lyckades.  Några regler kunde inte inaktiveras. %s är skrivbar för gruppen! %s är skrivbar för alla! "%(f)s"-filen "%(name)s" finns inte "%s" finns inte (glöm inte att uppdatera dina regler enligt detta) : Kräver python 2.6 el. senare)
 Avbruten Åtgärd Lade till användarregler (se 'ufw status' för aktiv brandvägg): Misslyckades med att lägga till IPv6-regel: IPv6 inte aktiverat Tillgängliga program: Felaktig måladress Felaktigt gränssnittsnamn Felaktigt gränssnittsnamn: kan inte använd alias för gränssnitt Dåligt namn för gränssnitt: reserverat tecken: '!' Felaktig gränssnittstyp Felaktig port Felaktig port "%s" Felaktig källadress Kan inte infoga regel på position "%d" Kan inte infoga regel på position "%s" Kan inte ange "all" med "--add-new" Kan inte ange insert och delete Kontrollerar ip6tables
 Kontrollerar iptables
 Kontrollerar rå ip6tables
 Kontrollerar rå iptables
 Kontroller inaktiverade Kunde inte backa ut regeln "%s" Kunde inte ta bort icke-existerande regel Kunde inte hitta en profil som matchar "%s" Kunde inte hitta körbar fil för "%s" Kunde inte hitta profilen "%s" Kunde inte hitta protokollet Kunde inte läsa in loggningsregler Kunde inte normalisera måladressen Kunde inte normalisera källadressen Kunde inte genomföra "%s" Kunde inte ställa in LOGLEVEL Kunde inte uppdatera körande brandvägg Kunde inte bestämma iptables version Kunde inte hitta "%s" Kunde inte hitta föräldra-pid för "%s" Kunde inte hitta pid (är /proc monterad?) Kunde inte öppna "%s" för läsning Kunde inte ta status på "%s" Kunde inte uppdatera programregler Kunde inte uppdatera regelfilen Standardpolicy för %(direction)s har ändrats till "%(policy)s"
 Standardprogrampolicy ändrad till "%s" Förval: %(in)s (inkommande), %(out)s (utgående), %(routed)s (ruttlagda) Beskrivning: %s

 Dublett av profilen "%s", använder senast hittad FEL: detta skript ska inte vara SGID FEL: detta skript ska inte vara SUID Brandväggen är aktiv och aktiverad vid systemuppstart Brandvägg inte aktiverad (hoppar över omläsning) Brandväggen omläst Brandvägg stoppad och inaktiverad vid systemets uppstart Hittade exakt träff Hittade flera träffar för "%s". Använd det exakta profilnamnet Hittade non-action/non-logtype-matchning (%(xa)s/%(ya)s %(xl)s/%(yl)s) Från IPv6-stöd inte aktiverat Felaktig regelsyntax Felaktig regelsyntax ("%s" angiven med programregel) Inmatningsposition "%s" är inte en giltig position Ogiltig "%s"-klausul Ogiltig "from" Ogiltig "port" Ogiltig "proto" Ogiltig "to" Ogiltig IP-version "%s" Ogiltigt gränssnittsklausul Ogiltig gränssnittsklausul för ruttregel Ogiltig loggnivå "%s" Ogiltig loggtyp "%s" Ogiltig flagga Ogiltig policy "%(policy)s" för "%(chain)s" Ogiltiga portar i profilen "%s" Ogiltig position " Ogiltig position "%d" Ogiltig profil Ogiltigt profilnamn Ogiltigt token "%s" Loggning inaktiverad Loggning aktiverad Loggning:  Saknar policy för "%s" Blandade IP-versioner för "from" och "to" Måste ange "tcp" eller "udp" med flera portar Behöver "from" eller "to" med "%s" Behöver "to" eller "from" Nya profiler: Inga portar hittades i profilen "%s" Inga regler hittades för programprofilen Flaggan "log" tillåts inte här Flaggan "log-all" tillåts inte här Portintervall måste vara numeriska Port: Portar: Profilen "%(fn)s" har nödvändiga fältet "%(f)s" tomt Profilen "%(fn)s" saknar nödvändiga fältet "%(f)s" Profil: %s
 Profilkatalogen finns inte Protokollen stämmer inte överens (from/to) Protokollen stämmer inte överens med angivet protokoll %s Regel lades till Regel ändrad efter normalisering Regel borttagen Regel infogad Regel uppdaterad Regler uppdaterade Regler uppdaterade (v6) Regler uppdaterade för profilen "%s" Hoppade över omläsning av brandvägg Hoppar över "%(value)s": värdet är för långt för "%(field)s" Hoppar över "%s": finns även i /etc/services Hoppar över "%s": kunde inte behandla Hoppar över "%s": kunde inte ta status Hoppar över "%s": fältet för långt Hoppar över "%s": ogiltigt namn Hoppar över "%s": namnet är för långt Hoppar över "%s": för stor Hoppar över "%s": för många filer inlästa redan Hoppar över IPv6-programregel. Behöver minst iptables 1.4 Hoppar över addering av befintlig regel Hoppar över inmatning av befintlig regel Hoppar över felformulerad tupel (felaktig längd): %s Hoppar över felformaterad tuple (iface): %s Hoppar över felformulerad tupel: %s Hoppar över IPv4 '%s'-regel utan stöd Hoppar över IPv6 "%s"-regel som inte stöds Status: aktiv
%(log)s
%(pol)s
%(app)s%(status)s Status: aktiv%s Status: inaktiv Titel: %s
 Till Okänd policy "%s" Åtgärden "%s" stöds inte Standardpolicyn stöds inte Riktningen stöds inte "%s" Policyn "%s" stöds inte Policyn för riktningen "%s" stöds inte Protokollet "%s" stöds inte Fel antal argument Du måste vara root för att köra detta skript n kunde inte köra problem vid körning av sysctl problem vid körning av ufw-init
%s kör ufw-init uid är %(uid)s men "%(path)s" ägs av %(st_uid)s okänd j ja                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ,      <       P      Q   v  S                           
 Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2009-08-26 19:31+0000
Last-Translator: Jamie Strandboge <jamie@ubuntu.com>
Language-Team: Tagalog <tl@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |      h     i     k  "   s           (   6  #   _            &                    *        H     e     m  9   t  )          "             +  /   >  +   n            
          #     #     %         E     f     z                      W        @  "   ]       &     "                       5     N  !   m       '     "               !   %  #   G     k  !   ~  %               !          &   5  5   \  *     C     =        ?  (   Q  %   z  %     0     &          /   0     `  >   r  @                    3   %  ,   Y                                '   	     1  '   J     r            +                       +     A     Q     f     y       	          %     /              0   
   K      Y   &   x         !                     !  1   !  /   :!     j!  !   w!     !  ,   !  T   !     7"  
   "      "     "  
   "     "  
   #     #     ,#     K#  4   f#  $   #     #     #     #     $     7$     T$  *   k$  :   $     $      $  )   %  $   :%     _%  #   |%  #   %  0   %     %     &  
   &     "&     %&     9&     Q&     l&     &  %   &     &     &     &     '  &   3'     Z'     \'     l'     '     '  4   '     '     '     '    '     )     )  0   )  V  )  5   .  4   T.  &   .     .     .     .  "   
/     -/     6/  @   O/     /  
   /     /  a   /  *   "0     M0  )   j0     0     0  6   0  .   0     $1     ;1     H1     Z1     p1     1  ,   1     1     1     2     -2     M2     l2     2  V   2     2     3  !   )3  )   K3  2   u3     3     3     3     3     4  %   *4  $   P4  !   u4  "   4     4     4  /   4      5     ;5  +   L5  +   x5  '   5     5  #   5  !   6  .   (6  I   W6  ;   6  L   6  9   *7     d7  0   u7  8   7  8   7  @   8  <   Y8  #   8  E   8      9  K   9  `   i9  	   9     9     9  A   	:  %   K:     q:     :     :     :     :     :  (   ;     0;  4   J;     ;  "   ;     ;  9   ;  !   <  !   0<     R<     d<     y<     <     <     <     <     <     <  .   
=  7   <=  )   t=      =     =  $   =  -   =  )   ">  -   L>  &   z>     >     >  /   >  0   >     .?     :?  "   O?  4   r?  c   ?     @  
   @  (   @  
   @  
   @     @     A     A  (   2A  2   [A  :   A  0   A     A  !   B     9B     YB     wB     B  (   B  I   B  $   (C  $   MC  =   rC  1   C  )   C  +   D  +   8D  .   dD     D     D  
   D     D     D     D  #    E     $E     <E  )   YE     E  #   E  %   E     E  6   F     ;F     =F  *   SF  '   ~F     F  4   F  
   F     G     G           
   O          x             +       y      )                  R      S                  '           .      e                 J   ;      p   	          !   q             "   D                   I               5   X          4               K       W         7      -      H             }          c                        \   ~   G                    @         <      a                 _   Z         V   >   `      k      g      l   f       |   3      j       o           {   ]           #      M   t              
   N      B           [   ,      ^                   v   %   F          r       (      1   /   d                  w          0       ?   b                             L   8   2                     9      =      A   6   h          $         *                      n   u      E   T   s                Y   i                &      z               Q   :       P      U       C                 m       
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Default: %(in)s (incoming), %(out)s (outgoing), %(routed)s (routed) Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid interface clause for route rule Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple (iface): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2014-12-29 10:32+0000
Last-Translator: Necdet Yucel <Unknown>
Language-Team: Turkish <tr@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
Language: tr
X-POOTLE-MTIME: 1419799925.000000
 
 
(Hiç) 
Uygulama kuralları uygulanırken hata oluştu. 
Kullanım: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s güvenlik duvarını etkinleştirir
 %(disable)-31s güvenlik duvarını devre dışı bırakır
 %(default)-31s öntanımlı ilkeyi ayarla
 %(logging)-31s günlük seviyesini %(level)s olarak ayarla
 %(allow)-31s izin ver %(rule)s ekle
 %(deny)-31s engelle %(rule)s ekle
 %(reject)-31s reddet %(rule)s ekle
 %(limit)-31s sınır %(rule)s ekle
 %(delete)-31s %(urule)s sil
 %(insert)-31s %(urule)s kuralını %(number)s konumuna ekle
 %(reload)-31s güvenlik duvarını yeniden yükle
 %(reset)-31s güvenlik duvarını sıfırla
 %(status)-31s güvenlik duvarı durumunu göster
 %(statusnum)-31s güvenlik duvarı durumunu numaralı listeli %(rules)s olarak göster
 %(statusverbose)-31s ayrıntılı güvenlik duvarı durumunu göster
 %(show)-31s güvenlik duvarı raporunu göster
 %(version)-31s sürüm bilgisini göster

%(appcommands)s:
 %(applist)-31s uygulama profillerini listele
 %(appinfo)-31s %(profile)s üzerinde bilgiyi göster
 %(appupdate)-31s %(profile)s güncelle
 %(appdefault)-31s öntanımlı uygulama ilkesini ayarla
  (güvenlik duvarının yeniden yüklenmesi atlandı)  Kurallar başarıyla uygulanmamış hale getirildi.  Bazı kurallar uygulanmamış olamaz. %s grup için yazılabilir! %s herkes için yazılabilir! '%(f)s' dosyası '%(name)s' yok '%s' zaten mevcut. İptal ediliyor '%s' yok '%s' yazılabilir değil (kurallarınızı uygun şekilde güncellediğinizden emin olun) :En az python 2.6 gerekli)
 İptal edildi Eylem Kullanıcı kuralları eklendi (çalışan güvenlik duvarı için 'ufw status' komutuna bakın): IPv6 kuralı eklenemedi: IPv6 etkin değil Kullanılabilir uygulamalar: '%(old)s', '%(new)s' olarak yedekleniyor
 Hatalı hedef adresi Hatalı arayüz adı Hatalı arayüz adı: arayüz takma adı kullanılamaz Hatalı arayüz adı: ayrılmış karaker: '!' Hatalı arayüz türü Hatalı port Hatalı port '%s' Hatalı kaynak adresi '%d' konumuna kural eklenemez '%s' konumuna kural eklenemez '--add-new' ile birlikte 'all' kullanılamaz Ekleme ve silme belirtilemez Ip6tables kontrol ediliyor
 Iptables kontrol ediliyor
 Ham ip6tables kontrol ediliyor
 Ham iptables kontrol ediliyor
 Kontroller kapalı '%s' komutu halihazırda var Bu komut mevcut ssh bağlantılarını bozabilir. İşleme devam et (%(yes)s|%(no)s)?  '%s' kuralı geri alınamadı Olmayan kural silinemez '%s' bulunamadı. İptal ediliyor '%s' ile eşleşen bir profil bulunamadı '%s' için çalıştırılabilir dosya bulunamadı '%s' profili bulunamadı Protokol bulunamadı '%d' kuralı bulunamadı '%s' kural dosyası bulunamadı Dinleme durumu alınamadı '%s' için istatistikler getirilemedi Günlükleme kuralları yüklenemedi Hedef adresi normalleştirilemedi Kaynak adresi normalleştirilemedi '%s' gerçekleştiremedi LOGLEVEL ayarlanamadı Çalışan bir güvenlik duvarı güncellenemez iptables sürümü belirlenemedi '%s' bulunamadı '%s' için üst sürece ait pid bulunamadı Pid bulunamadı (/proc dizini bağlı mı?) '%s' dosyası okumak için açılamadı '%s' başlatılamadı Uygulama kuralları güncellenemedi Kurallar dosyası güncellenemedi Kayıt için kurallar dosyası güncellenemedi Varsayılan %(direction)s politikası '%(policy)s' olarak değiştirildi
 Varsayılan uygulama politikası '%s' olarak değiştirildi Öntanımlı: %(in)s (gelen), %(out)s (giden), %(routed)s (yönlendirilmiş) Siliniyor:
 %(rule)s
İşleme devam et (%(yes)s|%(no)s)?  Tanımlama: %s

 Son bulunanı kullanarak '%s' profilini çoğalt HATA: bu betik SGID hakkıyla çalıştırılmamalıdır HATA: bu betik SUID hakkıyla çalıştırılmamalıdır Güvenlik duvarı etkin ve sistem açılışında başlatılacak Güvenlik duvarı etkin değil (yeniden yükleme atlanıyor) Güvenlik duvarı yeniden yüklendi Güvenlik duvarı kapalı ve sistem açılışında başlatılmayacak Birebir eşleştirme bulundu '%s' için birden fazla eşleşme var. Lütfen tam profil adını kullanın Eylem-olmayan/günlükleme türü olmayan eşleşme türü bulundu (%(xa)s/%(ya)s %(xl)s/%(yl)s) Gönderen IPv6 desteği etkin değil Uygunsuz kural sözdizimi Uygunsuz kural sözdizimi ('%s' uygulama kuralında belirtilmiş) '%s' konumu geçerli bir konum değil Geçersiz '%s' ifadesi Geçersiz 'from' ifadesi Geçersiz 'port' ifadesi Geçersiz 'proto' ifadesi Geçersiz 'to' ifadesi Geçersiz IP sürümü '%s' '%s' protokolüyle geçersiz IPv6 adresi Geçersiz arayüz ifadesi Yönlendirme kuralı için geçersiz arayüz ifadesi Geçersiz kayıt seviyesi '%s' Geçersiz günlükleme türü '%s' Geçersiz seçenek Geçersiz politika '%(policy)s' '%(chain)s' zinciri için '%s' protokolünde geçersiz port '%s' profilinde geçersiz portlar Geçersiz konum ' Geçersiz konum '%d' Geçersiz profil Geçersiz profil adı Geçersiz jeton '%s' Günlükleme kapalı Günlükleme açık Günlük tutuluyor:  '%s' için eksik politika 'from' ve 'to' için karışık IP sürümleri Çoklu portla birlikte 'tcp' veya 'udp' belirtilmelidir '%s' ile 'from' veya 'to' ifadesi gerekli 'to' veya 'from' ifadesi gerekli Yeni profiller: '%s' profilinde hiç port bulunmuyor Uygulama profili için hiç kural bulunamadı 'log' seçeneğine burada izin verilmiyor 'log-all' seçeneğine burada izin verilmiyor Port aralıkları sayısal olmalıdır Bağlantı Noktası: Bağlantı Noktaları: '%(fn)s' profilinde gerekli '%(f)s' alanı boş '%(fn)s' profilinde gerekli '%(f)s' alanı eksik Profil: %s
 Profiller dizini yok Protokol uyuşmazlığı (from/to) Belirtilen %s protokolüyle protokol uyuşmazlığı Tüm kurallar kurulum varsayılanlara sıfırlanıyor. İşleme devam edilsin mi (%(yes)s|%(no)s)?  Tüm kurallar kurulum varsayılanlara sıfırlanıyor. Bu mevcut ssh bağlantılarını bozabilir. İşleme devam edilsin mi (%(yes)s|%(no)s)?  Kural eklendi Normalleştirme sonrası kural değişti Kural silindi Kural eklendi Kural güncellendi Kurallar güncellendi Kurallar güncellendi (v6) '%s' profili için kurallar güncellendi Güvenlik duvarının yeniden yüklenmesi atlandı '%(value)s' atlanıyor: değer '%(field)s' için çok uzun '%s' atlanıyor: zaten /etc/services dosyasında '%s' atlanıyor: işlenemedi '%s' atlanıyor: başlatılamadı '%s' atlanıyor: alan çok uzun '%s' atlanıyor: geçersiz ad '%s' atlanıyor: adı çok uzun '%s' atlanıyor: çok büyük '%s' atlanıyor: çok fazla dosya açık IPv6 uygulama kuralı atlanıyor. En az iptables 1.4 sürümü gereklidir Mevcut kuralın eklenmesi atlanıyor Mevcut kuralın eklenmesi atlanıyor Kusurlu tanımlama düzeni (hatalı uzunluklu) atlanıyor: %s Kusurlu tanımlama düzeni (iface) atlanıyor: %s Kusurlu tanımlama düzeni atlanıyor: %s Desteklenmeyen IPv4 '%s' kuralı atlanıyor Desteklenmeyen IPv6 '%s' kuralı atlanıyor Durum: etkin
%(log)s
%(pol)s
%(app)s%(status)s Durum: etkin%s Durum: etkin değil Başlık: %s
 Alıcı Bilinmeyen politika '%s' Desteklenmeyen '%s' eylemi Desteklenmeyen varsayılan politika Desteklenmeyen yön %s' Desteklenmeyen politika '%s' '%s' yönü için desteklenmeyen politika Desteklenmeyen protokol '%s' UYARI: '%s' herkes için okunabilir UYARI: '%s' herkes için yazılabilir Hatalı argüman sayısı Bu betiği çalıştırmak için root olmanız gerekir h çalıştırma sorunu sysctl çalıştırılırken sorun oluştu ufw-init çalıştırılırken sorun
%s ufw-init çalıştırılıyor uid %(uid)s ama '%(path)s' yolunun sahibi %(st_uid)s bilinmeyen e evet                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     L           	       "       6       (     #        #     9  &   O     v            *                  
  9     )   N     x  "               /     +        :     M  
   V     d  #   w  #     %                        -     E     \     l  W          "           &   >  "   e                           !   
     /  '   L  "   t            !     #          !     %   @     f       !          &     5     *   2  =   ]       (     %     %     0   "  &   S     z  /          >     @   
     N     S     l  3     ,                       "     9     M  '   e                      +             .     L     _     u                      	          %     /        F     d  
          &          !              /      5   1   <   /   n         !            ,      T   !     k!  
   !      !     "  
   $"     2"  
   ?"     M"     `"     "  4   "  $   "     "     #     1#     O#     k#     #  *   #  :   #     $      #$  )   D$     n$  #   $  #   $  0   $     %     %  
   &%     1%     4%     H%     `%     {%     %  %   %     %     %     &     (&  &   B&     i&     k&     {&     &     &  4   &     &     &     &    '     (     (  N   (    (  M   .  ?   .  E   /  5   T/  3   /  +   /  .   /     0  1   /0  e   a0  <   0     1     1  r   1  Z   1  "   1  B   2  0   R2  ,   2     2  ]   C3  *   3     3     3  (   4  I   *4  H   t4  E   4  Q   5     U5     s5  (   5  '   5  #   5  %   6  }   +6  :   6  M   6  ?   27  A   r7  N   7  6   8  3   :8  6   n8  6   8  L   8  G   )9  F   q9  u   9  D   .:  )   s:  3   :  L   :  <   ;     [;  P   v;  j   ;  A   2<  8   t<  D   <  :   <  Q   -=  T   =  G   =  E   >     b>  j   q>  =   >  =   ?  j   X?  b   ?  3   &@  a   Z@  &   @     @  N   rA     A  /   A  <   A  |   1B  ;   B  (   B  *   C  *   >C  +   iC  (   C  +   C  ?   C  D   *D  C   oD  3   D  '   D  E   E  B   UE  4   E  '   E  (   E  %   F  0   DF  *   uF  .   F  0   F      G  +    G  E   LG  \   G  D   G  4   4H     iH  9   H  V   H  8   I  ;   LI  B   I  	   I     I  b   I  X   DJ     J  6   J  9   J  ]   "K     K     L     L  A   L     6M  !   VM     xM     M  $   M  :   M  J   N  V   cN  Z   N  <   O  M   RO  ,   O  3   O  -   P  ,   /P  L   \P  s   P  @   Q  <   ^Q  d   Q  <    R  R   =R  L   R  <   R     S     7S     VS     nS  $   sS  (   S  :   S  2   S  2   /T  J   bT  4   T  P   T  N   3U  6   U  k   U     %V     'V  1   GV  +   yV     V  <   V     V     W     W     
   W         h   d         M          q          )      r           {      V   Z      X                   0   v   ?   F   T   (   H   %       E   C   L   \                      ,      O   ;      f      7   B          3   +   N              a   c      g   	                  k                                     i                           5                        n   .   |   `   u   #   ]       I         '   2   A       -   t   *          o              l      S   &   R   "       G                 !              z   w                6   $      1   x            @                    D   Q   m         e   <   :                 _   =                                    p   Y                [   8   
   4      P       >   s          J   ^                 }      j   9                  /      U      b                 y                  K           ~                     
 
(None) 
Error applying application rules. 
Usage: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s enables the firewall
 %(disable)-31s disables the firewall
 %(default)-31s set default policy
 %(logging)-31s set logging to %(level)s
 %(allow)-31s add allow %(rule)s
 %(deny)-31s add deny %(rule)s
 %(reject)-31s add reject %(rule)s
 %(limit)-31s add limit %(rule)s
 %(delete)-31s delete %(urule)s
 %(insert)-31s insert %(urule)s at %(number)s
 %(reload)-31s reload firewall
 %(reset)-31s reset firewall
 %(status)-31s show firewall status
 %(statusnum)-31s show firewall status as numbered list of %(rules)s
 %(statusverbose)-31s show verbose firewall status
 %(show)-31s show firewall report
 %(version)-31s display version information

%(appcommands)s:
 %(applist)-31s list application profiles
 %(appinfo)-31s show information on %(profile)s
 %(appupdate)-31s update %(profile)s
 %(appdefault)-31s set default application policy
  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface name: reserved character: '!' Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not normalize source address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running sysctl problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2013-11-08 16:11+0000
Last-Translator: Микола Ткач <Stuartlittle1970@gmail.com>
Language-Team: Ukrainian <uk@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
(Відсутній) 
Помилка при застосуванні правил програми. 
Використання: %(progname)s %(command)s

%(commands)s:
 %(enable)-31s увімкнути брандмауер
 %(disable)-31s вимкнути брандмауер
 %(default)-31s встановити типову політику
 %(logging)-31s вказати рівень журналювання %(level)s
 %(allow)-31s додати allow %(rule)s
 %(deny)-31s додати deny %(rule)s
 %(reject)-31s додати reject %(rule)s
 %(limit)-31s додати limit %(rule)s
 %(delete)-31s вилучити %(urule)s
 %(insert)-31s вставити %(urule)s у позиції %(number)s
 %(reload)-31s перезавантажити брандмауер
 %(reset)-31s скинути брандмауер
 %(status)-31s показати статус брандмауера
 %(statusnum)-31s показати статус брандмауера як нумерований перелік %(rules)s
 %(statusverbose)-31s показати детальний стан брандмауера
 %(show)-31s показати звіт брандмауера
 %(version)-31s показати інформацію про версію

%(appcommands)s:
 %(applist)-31s показати профілі додатку
 %(appinfo)-31s показати інформацію про %(profile)s
 %(appupdate)-31s оновити %(profile)s
 %(appdefault)-31s встановити типову політику додатку
  (пропущено перезавантаження брандмауера)  Пробні правила скасовано успішно.  Деякі правила не може бути скасовано. %s доступний для запису групі! %s доступний для запису усім! '%(f)s' файл '%(name)s' не існує '%s' вже існує. Переривання '%s' не існує. «%s» недоступний для запису (переконайтеся, що оновили ваші правила належним чином) : Потрібен python версії не нижче 2.6)
 Перервано Дія Додані правила користувача (див. 'ufw status' міжмережевого екрану): Додавання правила IPv6 не вдалося: IPv6 не увімкнений Доступні програми: Резервне копіювання з '%(old)s' до '%(new)s'
 Погана адреса призначення Погана назва інтерфейсу Неправильне ім’я інтерфейсу: неможливо використовувати псевдоніми інтерфейсу Невірне ім’я інтерфейсу: зарезервований символ: '!' Поганий тип інтерфейсу Поганий порт Поганий порт '%s' Погана адреса джерела Неможливо вставити правило у позицію '%d' Не вдалося додати правило у позицію «%s» Неможна вказувати «all» разом з «--add-new» Не вдалося розпізнати вставку або вилучення Перевірка ip6tables
 Перевірка iptables
 Перевірка рядів ip6tables
 Перевірка рядів iptables
 Перевірки вимкнено Команда '%s' вже існує Команда може розірвати ssh з'єднання що існують. Продовжити (%(yes)s|%(no)s)?  Не вдалося відновити правило '%s' Неможливо вилучити правило якого не існує Не вдається знайти '%s'. Переривання Не знайдено профілю подібного до '%s' Не вдається знайти виконуваний файл для '%s' Не вдається знайти профіль '%s' Не вдається знайти протокол Не вдається знайти правило '%d' Не вдається знайти правило '%s' Не вдалося отримати стан прослуховування Не вдається отримати статистику для '%s' Не вдається прочитати правила журналу Не вдалося привести адресу призначення до стандартного вигляду Не вдається виправити адресу джерела Не вдалося виконати '%s' Не вдається встановити LOGLEVEL Не вдається оновити запущений брандмауер Не вдалося визначити версію iptables Незнайдено  '%s' Незнайдено батьківського ід. процесу для '%s' Неможливо знайти ідентифікатора процесу ( /proc змонтовано?) Не вдається відкрити '%s' для читання Не вдалося отримати статус «%s» Не вдається оновити правила програми Не вдається оновити файл правил Не вдалося оновити файл правил журналювання Типова політика для %(direction)s змінена на '%(policy)s'
 Типова політика програми змінена на '%s' Вилучення:
 %(rule)s
Продовжити (%(yes)s|%(no)s)?  Опис: %s

 Дублювання профілю '%s', використовуючи останній знайдений ПОМИЛКА: цей скрипт не має бути SGID ПОМИЛКА: цей скрипт не має бути SUID Брандмауер є активним і буде запускатися разом з системою Брандмауер не увімкнено (перезавантаження пропущено) Брандмауер перезавантажено Брандмауер зупинено і не буде запускатися з системою Знайдено точний збіг Знайдено багато схожого на '%s'. Будь ласка, використовуйте точну назву профілю Знайдено non-action/non-logtype збіг (%(xa)s/%(ya)s %(xl)s/%(yl)s) З Підтримку IPv6 не увімкнено Неприпустимий синтаксис правила Неправильний синтаксис правила («%s» вказано з правилом для додатку) Неправильна позиція вставки «%s» Неправильна умова «%s» Неправильна умова «from» Неправильна умова «port» Неправильна умова «proto» Неправильна умова «to» Неправильна версія IP '%s' Недійсна IPv6 адреса з протоколом '%s' Неправильне розташування інтерфейсу Неправильний рівень журналювання '%s' Неправильний тип '%s' журналу Некоректний параметр Неправильне правило '%(policy)s' для '%(chain)s' Неправильний порт для протоколу «%s» Помилкові порти у профілі '%s' Неправильна позиція ' Некоректна позиція '%d' Некоректний профіль Неправильна назва профілю Некоректний символ «%s» Ведення журналу вимкнено Ведення журналу увімкнено Ведення журналу:  Відсутнє правило для '%s' Вказано різні версії IP для «from» та «to» При декількох портах має бути вказано «tcp» або «udp» Потрібно вказати «from» або «to» для «%s» Необхідна умова «to» або «from» Нові профілі: Не вказано портів у профілі «%s» Не знайдено жодних правил для профілю програми Параметр 'log'' не дозволений тут Параметр 'log-all' не дозволений тут Портовий діапазон має бути числовим Порт: Порти: Профіль «%(fn)s» містить порожнє обов’язкове поле «%(f)s» Профіль '%(fn)s' вимагається поле '%(f)s', яке відсутнє Профіль: %s
 Відсутня директорія профілів Невідповідність протоколу (з/у) Невідповідність протоколу з вказаним протоколом %s Відновлення усіх правил до типово встановлених. Продовжити (%(yes)s|%(no)s)?  Відновлення усіх правил до типово встановлених. Команда може розірвати ssh з'єднання що існують. Продовжити (%(yes)s|%(no)s)?  Правило додано Правило змінено після нормалізації Правило вилучено Правило вставлено Правило оновлено Правила оновлено Правила оновлено (v6) Правила оновлено для профілю '%s' Пропущено перезавантаження брандмауера Пропускання '%(value)s': значення задовге для '%(field)s' Пропуск «%s»: інформація вже знаходиться у /etc/services Пропуск '%s': неможливо опрацювати Пропуск «%s»: неможливо зібрати статистику Пропуск '%s': задовгі поля Пропуск '%s': неправильне ім'я Пропуск '%s': ім'я завелике Пропуск '%s': дуже великий Пропуск '%s': забагото файлів вже прочитано Пропуск правила додатку IPv6. Вимагається iptables версії не нижче 1.4 Пропуск додавання правила що існує Пропуск вставки правила що існує Пропуск некоректних елементів (неправильна довжина): %s Пропуск некоректних елементів: %s Пропуск не підтримуваного правила «%s» для IPv4 Пропускання непідтримуване IPv6 '%s' правило Стан: активний
%(log)s
%(pol)s
%(app)s%(status)s Стан: активний%s Стан: неактивний Заголовок: %s
 До Невідоме правило '%s' Непідтримувана дія '%s' Непідтримувана типова політика Непідтримуваний напрям «%s» Непідтримуване правило «%s» Непідтримуване правило для напрямку «%s» Непідтримуваний протокол '%s' Попередження: '%s' доступний для читання усім Попередження: '%s' доступний для запису усім Неправильне число аргументів Ви маєте бути супер-користувачем, щоб запустити цей скрипт n проблема запуску проблема при виконанні sysctl проблема запуску ufw-init
%s виконання ufw-init uid %(uid)s, але «%(path)s» зайнятий %(st_uid)s невідомий y так                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 $      ,       8   i  9               Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2010-10-27 20:08+0000
Last-Translator: FULL NAME <EMAIL@ADDRESS>
Language-Team: Urdu <ur@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             <	      P     Q  "   S     v  (     #               &   

     4
  *   H
     s
     {
  )   
     
     
     
  /   
          2  
   ;     I  #   \  #     %                             *     A     Q  "   n  &     "                    '   ,  "   T     w  !          !     %             *  !   =     _  5   z  *          (     %     %   <  0   b  &          /          >        M     R     k  3     ,                  
     $     8     P     g     }  +                                 $     7     H  	   X     b  %   z  /          
          &        ?  !   ]                 1     /        
  !        9  ,   U  
                
          
                    4   1  $   f                                *   6  :   a             )          #   "     F     W  
   h     s     v                      %             0  &   J     q     s       4                           ]     _  !   y  +                    #        C  -   U  	          -                    0        5     K     [     p            %                        "      =      W      g         '      *               !     "!     ;!     W!     p!  $   !     !     !  .   !  !   	"  $   +"     P"  !   o"  5   "  )   "     "  6    #  $   7#  $   \#  *   #  &   #     #  '   #     $  A   -$     o$     v$  !   $  ;   $  -   $     %     2%     J%     c%     y%     %     %     %  )   %  $   &     )&     8&     M&     `&     y&     &     &     &     &  #   &  4   &      0'     Q'  (   e'  !   '  "   '  &   '     '     (  	   (  .   ((  ,   W(     (     (     (  %   (     (     (     )     ')     7)     G)     `)  !   x)     )  B   )  ,   )     &*  )   A*     k*     *     *     *  )   *  5   *  !   .+     P+  0   o+     +  &   +     +     +     	,     ,     ,     /,     F,     _,     w,     ,     ,     ,  '   ,     -     -     -  3   ,-     `-     g-     i-     0   ,   f   5      A   p   x   O            
   B      =       !   D       [   	   '   e       }   r   >   y   ^   4         w   (   q       t                      X       d   T       |          h          3      %   n                 /   1   s       :      .   #   _   o   -   v       G                         ~   `   F   k           K                     E           ]       a                        S   \   P         
      "       U   I      M      &       N            l          ?       W   g   Y      2   *   j      V                  m   9   L       u   b   C              {   +   6           c      Z   7   Q   J   ;      <   z       H              $              R                      )   @       8                i           
 
Error applying application rules.  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' does not exist (be sure to update your rules accordingly) Aborted Action Adding IPv6 rule failed: IPv6 not enabled Available applications: Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Could not back out rule '%s' Could not delete non-existent rule Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not load logging rules Could not normalize destination address Could not normalize source address Could not set LOGLEVEL Could not update running firewall Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv6 '%s' rule Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' Wrong number of arguments You need to be root to run this script n problem running running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>
PO-Revision-Date: 2010-08-28 01:33+0000
Last-Translator: Xhacker Liu <liu.dongyuan@gmail.com>
Language-Team: Simplified Chinese <zh_CN@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
 
 
应用规则时出错。  (跳过重新加载的防火墙)  成功撤销了对尝试规则的应用。  一些规则不能被撤销。 %s 是全组可写属性！ %s 是全局可写属性！ '%(f)s' 文件 '%(name)s' 不存在 “%s”不存在 （请相应地更新你的防火墙规则） 已中止 动作 添加 IPv6 规则失败： IPv6 未被启用 可用应用程序： 错误的目标地址 错误的接口名称 错误的接口名称：无法使用接口别名 错误的接口类型 错误的端口 错误的端口 '%s' 错误的源地址 无法在'%d'处插入规则 无法在'%s'处插入规则 不能指定 'all' 使用 '--add-new' 无法指定插入和删除 检查 ip6tables
 检查 iptables
 检查原始的 ip6tables
 检查原始的 iptables
 检查被禁用 无法备份规则 '%s' 无法删除不存在的规则 无法为 '%s' 找到相匹配的配置 无法找到针对 '%s' 的可执行文件 无法找到配置文件 '%s' 无法找到协议 无法加载日志规则 不能标准化目标地址 不能标准化源地址 无法设置 LOGLEVEL 无法更新正在运行的防火墙 无法找到 '%s' 无法找到 '%s' 的父 pid 无法找到 pid (/proc 是否已经加载？) 无法打开 '%s' 进行读操作 无法在 '%s' 上运行 stat 命令 不能更新应用程序规则 无法更新防火墙规则文件 默认的 %(direction)s 策略更改为 '%(policy)s'
 '%s' 的默认应用程序策略已改变 描述： %s

 重复的配置 “%s”，使用上次发现的配置 错误： 这个脚本不能被 SGID 错误： 这个脚本不能被 SUID 在系统启动时启用和激活防火墙 未启用防火墙(跳过重新载入) 已经重新载入防火墙 防火墙在系统启动时自动禁用 找到完全匹配项 '%s' 找到了多个匹配。清使用更精确的配置名称。 来自 IPv6 支持未被启用 防火墙规则的语法不正确 不正确的规则语法 ('%s' 是由程序规则指定的) 插入位置‘%s'不是一个有效的位置 无效的 'from' 从句 无效的 'port' 从句 无效的 'proto' 从句 无效的 'to' 从句 错误的 IP 协议版本 '%s' 无效的日志级别 '%s' 无效的日志类型'%s' 无效选项 '%(chain)s' 的策略 '%(policy)s' 无效 配置 '%s' 中含有无效的端口 无效位置 ' 无效的位置 '%d' 非法配置文件 非法的配置文件名 无效的标记 '%s' 日志被禁用 日志被启用 日志:  针对  '%s' 的策略不存在 'from' 和 'to' 的 IP 版本不同 必须在复合的端口中指定 'tcp' 或者 'udp' 需要 'to' 或者 'from' 从句 新建配置文件: 在配置 “%s” 中没有发现端口 没有发现程序配置的规则 此处不允许使用 'log' 选项 此处不允许使用 'log-all' 选项 端口范围必须为数字 端口: 端口： 配置 '%(fn)s' 的必需字段 '%(f)s' 为空 配置 '%(fn)s' 缺少必需的字段 %(f)s' 配置: %s
 配置目录不存在 from 和 to 的协议不匹配 协议与指定的协议 %s 不匹配 规则已添加 标准化后规则被改变 规则已删除 规则已插入 规则已更新 防火墙规则已更新 规则已更新（v6） 配置 '%s' 的规则已经升级 跳过重新加载防火墙 跳过 “%(value)s”： 对于 “%(field)s”来说，值过长 跳过 '%s'：在 /etc/services 中也存在 跳过 '%s'：不能执行 跳过‘%s’：不能进行 stat 操作 跳过 '%s'：域太长 跳过 '%s'：非法名称 跳过 '%s'：名称太长 跳过 '%s'：太大 跳过‘%s’：已经打开太多文件 忽略 IPv6 应用规则。需要 iptables 1.4 以上 跳过添加已经存在的规则 跳过插入已存在的规则 忽略错误的多员组（长度错误）： %s 跳过错误的元组： %s 忽略未被支持的 IPv6 '%s' 规则 状态： 激活%s 状态：不活动 标题：%s
 至 未知的策略 '%s' 不支持的动作'%s' 不支持的默认策略 不支持的方向 '%s' 策略 '%s' 未被支持 '%s' 方向不支持的策略 未被支持的协议 '%s' 参数数目错误 只有 root 用户才能运行此脚本 n 运行时出现问题 运行 ufw-init uid 是 %(uid)s 但是 '%(path)s' 属于 %(st_uid)s 未知 y 是                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     "          (     #   %     I     _  &   u                 *             +     3  9   :  )   t       "               /        4     G  
   P     ^  #   q  #     %                         '     ?     V     f  W          "          &   8  "   _                           !        )  '   F     n       !     #          !     %        =     \  !   o       &     5     *   	  =   4     r  (     %     %     0     &   *     Q  /   c       >     @        %     *     C  3   X  ,                                 $  '   <     d     }            +                  #     6     L     \     q            	          %     /             ;  
   V     d  &          !                    1     /   E     u  !          ,     T        B  
                
        	  
        $     7     V  4   q  $                       &     B     _  *   v  :                )         E   #   b   #      0                  
         !     !     !     7!     R!     m!  %   !     !     !     !     !  &   "     @"     B"     R"     n"  4   "     "     "     "    "     P$     R$     Y$  !   s$  +   $     $     $     $  #   %     =%     X%     j%  *   z%     %     %     %  A   %  )   &     ;&     Q&     p&     &  0   &     &     &     &     '     '     8'  %   U'     {'     '     '     '     '     '     '  L   (     e(     }(     (  '   (  '   (     
)     ()     ;)     S)     k)     )     )     )     )     )  $   )     *     ?*     Q*  .   p*  !   *  $   *     *  !   +  *   '+  5   R+  )   +  6   +     +  6   +  $   /,  $   T,  !   y,  &   ,     ,  !   ,      -  A   -  @   X-     -     -  !   -  8   -  -   .     ?.     R.     j.     .     .     .     .     .     /     /     6/  )   C/     m/  $   /     /     /     /     /      0     0     %0     50     >0  #   ^0  4   0     0      0     0  %   1  !   ,1  "   N1  &   q1     1     1  	   1  .   1  ,   1     "2     .2     D2  %   c2  A   2  a   2     -3     =3     Y3     i3     y3     3     3  !   3     3  B   3  ,   ;4     h4  0   4     4     4     4     5  )   5  ;   A5  !   }5     5  0   5     5  #   6  #   /6  0   S6     6     6     6     6     6     6     6     6     7     +7     J7     `7     7     7  *   7     7     7  "   7     8  3   '8     [8     b8     d8                         U                   g              4   S                   n       5             Z      	       f   l      9   k              y           {         0   ,           (       
   |          '   ;   &             J          }   6                 s                          z         j   G   \   P                        <      u                  F   C   N          X                )   .         /   i          _             r   T                        [   @       D   H   -                 #      ~      !   t             c   d   A   q   M              =   `   ^           B         7   o      b                  K   >   v   
          ?   W   p   L      %      ]         a   I      *   "   e   V   Y   x                 1   m   3   w   R   $       O   8           h                             2   :   +   E          Q                
 
(None) 
Error applying application rules.  (skipped reloading firewall)  Attempted rules successfully unapplied.  Some rules could not be unapplied. %s is group writable! %s is world writable! '%(f)s' file '%(name)s' does not exist '%s' already exists. Aborting '%s' does not exist '%s' is not writable (be sure to update your rules accordingly) : Need at least python 2.6)
 Aborted Action Added user rules (see 'ufw status' for running firewall): Adding IPv6 rule failed: IPv6 not enabled Available applications: Backing up '%(old)s' to '%(new)s'
 Bad destination address Bad interface name Bad interface name: can't use interface aliases Bad interface type Bad port Bad port '%s' Bad source address Cannot insert rule at position '%d' Cannot insert rule at position '%s' Cannot specify 'all' with '--add-new' Cannot specify insert and delete Checking ip6tables
 Checking iptables
 Checking raw ip6tables
 Checking raw iptables
 Checks disabled Command '%s' already exists Command may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Could not back out rule '%s' Could not delete non-existent rule Could not find '%s'. Aborting Could not find a profile matching '%s' Could not find executable for '%s' Could not find profile '%s' Could not find protocol Could not find rule '%d' Could not find rule '%s' Could not get listening status Could not get statistics for '%s' Could not load logging rules Could not normalize destination address Could not perform '%s' Could not set LOGLEVEL Could not update running firewall Couldn't determine iptables version Couldn't find '%s' Couldn't find parent pid for '%s' Couldn't find pid (is /proc mounted?) Couldn't open '%s' for reading Couldn't stat '%s' Couldn't update application rules Couldn't update rules file Couldn't update rules file for logging Default %(direction)s policy changed to '%(policy)s'
 Default application policy changed to '%s' Deleting:
 %(rule)s
Proceed with operation (%(yes)s|%(no)s)?  Description: %s

 Duplicate profile '%s', using last found ERROR: this script should not be SGID ERROR: this script should not be SUID Firewall is active and enabled on system startup Firewall not enabled (skipping reload) Firewall reloaded Firewall stopped and disabled on system startup Found exact match Found multiple matches for '%s'. Please use exact profile name Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) From IPv6 support not enabled Improper rule syntax Improper rule syntax ('%s' specified with app rule) Insert position '%s' is not a valid position Invalid '%s' clause Invalid 'from' clause Invalid 'port' clause Invalid 'proto' clause Invalid 'to' clause Invalid IP version '%s' Invalid IPv6 address with protocol '%s' Invalid interface clause Invalid log level '%s' Invalid log type '%s' Invalid option Invalid policy '%(policy)s' for '%(chain)s' Invalid port with protocol '%s' Invalid ports in profile '%s' Invalid position ' Invalid position '%d' Invalid profile Invalid profile name Invalid token '%s' Logging disabled Logging enabled Logging:  Missing policy for '%s' Mixed IP versions for 'from' and 'to' Must specify 'tcp' or 'udp' with multiple ports Need 'from' or 'to' with '%s' Need 'to' or 'from' clause New profiles: No ports found in profile '%s' No rules found for application profile Option 'log' not allowed here Option 'log-all' not allowed here Port ranges must be numeric Port: Ports: Profile '%(fn)s' has empty required field '%(f)s' Profile '%(fn)s' missing required field '%(f)s' Profile: %s
 Profiles directory does not exist Protocol mismatch (from/to) Protocol mismatch with specified protocol %s Resetting all rules to installed defaults. Proceed with operation (%(yes)s|%(no)s)?  Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (%(yes)s|%(no)s)?  Rule added Rule changed after normalization Rule deleted Rule inserted Rule updated Rules updated Rules updated (v6) Rules updated for profile '%s' Skipped reloading firewall Skipping '%(value)s': value too long for '%(field)s' Skipping '%s': also in /etc/services Skipping '%s': couldn't process Skipping '%s': couldn't stat Skipping '%s': field too long Skipping '%s': invalid name Skipping '%s': name too long Skipping '%s': too big Skipping '%s': too many files read already Skipping IPv6 application rule. Need at least iptables 1.4 Skipping adding existing rule Skipping inserting existing rule Skipping malformed tuple (bad length): %s Skipping malformed tuple: %s Skipping unsupported IPv4 '%s' rule Skipping unsupported IPv6 '%s' rule Status: active
%(log)s
%(pol)s
%(app)s%(status)s Status: active%s Status: inactive Title: %s
 To Unknown policy '%s' Unsupported action '%s' Unsupported default policy Unsupported direction '%s' Unsupported policy '%s' Unsupported policy for direction '%s' Unsupported protocol '%s' WARN: '%s' is world readable WARN: '%s' is world writable Wrong number of arguments You need to be root to run this script n problem running problem running ufw-init
%s running ufw-init uid is %(uid)s but '%(path)s' is owned by %(st_uid)s unknown y yes Project-Id-Version: ufw
Report-Msgid-Bugs-To: 
PO-Revision-Date: 2012-12-12 10:04+0000
Last-Translator: Walter Cheuk <wwycheuk@gmail.com>
Language-Team: Chinese (traditional) <chinese-l10n@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Launchpad-Export-Date: 2015-01-26 20:08+0000
X-Generator: Launchpad (build 17306)
Language: zh_TW
 
 
(無) 
套用規則時出錯。  (跳過重新載入的防火牆)  成功撤銷了對嘗試規則的套用。  一些規則無法被撤銷。 %s 是全組可寫屬性！ %s 是全局可寫屬性！ '%(f)s' 檔案 '%(name)s' 不存在 '%s' 已存在，取消中 “%s”不存在 %s 無法寫入 （請相應更新您的防火牆規則） : 需要至少 python 2.6)
 中止 動作 已添加使用者規則 (要執行防火牆請見 'ufw status'): 添加 IPv6 規則失敗：未啟用 IPv6 可用套用程序： 備份 '%(old)s' 到 '%(new)s
 錯誤的目標地址 錯誤的接口名稱 錯誤的接口名稱：無法使用接口別名 錯誤的接口類型 錯誤的埠號 錯誤的埠號 '%s' 錯誤的源地址 無法在'%d'處插入規則 無法在'%s'處插入規則 無法指定 'all' 使用 '--add-new' 無法指定插入和刪除 檢查 ip6tables
 檢查 iptables
 檢查原始的 ip6tables
 檢查原始的 iptables
 檢查被禁用 命令 '%s' 已經存在 指令可能會中斷現有的 ssh 連接。繼續執行(%(yes)s|%(no)s)？  無法備份規則 '%s' 無法刪除不存在的規則 無法找到 '%s'。取消中 無法為 '%s' 找到相相配的設定 無法找到針對 '%s' 的可執行檔 無法找到設定檔案 '%s' 無法找到協定 無法找到規則 '%d' 無法找到規則 '%s' 無法取得聽取狀態 無法取得 '%s' 數據 無法載入日誌規則 無法標準化目標地址 無法執行 '%s' 無法設置 LOGLEVEL 無法更新正在運行的防火牆 無法判斷 iptables 的版本 無法找到 '%s' 無法找到 '%s' 的母行程 無法找到 pid (/proc 是否已經掛載？) 無法開啟 '%s' 進行讀操作 無法在 '%s' 上運行 stat 指令 無法更新套用程序規則 無法更新防火牆規則檔案 無法爲日誌記錄更新防火牆規則 預設的 %(direction)s 策略更改為 '%(policy)s'
 '%s' 的預設套用程序策略已改變 刪除中:
 %(rule)s
 繼續執行(%(yes)s|%(no)s)？  描述： %s

 重復的設定 “%s”，使用上次發現的設定 錯誤： 這個腳本無法被 SGID 錯誤： 這個腳本無法被 SUID 在系統啟動時啟用防火牆 未啟用防火牆(跳過重新載入) 已經重新載入防火牆 在系統啟動時停用防火牆 找到完全相配項 '%s' 找到了多個相配。清使用更精確的設定名稱。 Found non-action/non-logtype match (%(xa)s/%(ya)s %(xl)s/%(yl)s) 來自 未啟用 IPv6 支援 防火牆規則的語法不正確 規則語法不正確 ('%s' 是由程序規則指定的) 插入位置‘%s'不是一個有效的位置 錯誤 '%s' 語法 無效的 'from' 從句 無效的 'port' 從句 無效的 'proto' 從句 無效的 'to' 從句 錯誤的 IP 協定版本 '%s' 無效的 IPv6 位址 '%s' 錯誤的介面語法 無效的日誌級別 '%s' 無效的日誌類型'%s' 無效選項 '%(chain)s' 的策略 '%(policy)s' 無效 '%s' 中使用無效的埠號 設定 '%s' 中含有無效的埠號 無效位置 ' 無效的位置 '%d' 無效設定檔案 無效的設定檔案名 無效的標記 '%s' 日誌被禁用 日誌被啟用 日誌:  針對  '%s' 的策略不存在 'from' 和 'to' 的 IP 版本不同 必須在復合的埠號中指定 'tcp' 或者 'udp' %s 需要 'from' 或 'to' 需要 'to' 或者 'from' 從句 新建設定檔案: 在設定 “%s” 中未發現埠號 沒有發現程序設定的規則 此處不允許使用 'log' 選項 此處不允許使用 'log-all' 選項 埠號範圍必須為數字 埠號: 埠號： 設定 '%(fn)s' 的必需欄位 '%(f)s' 為空 設定 '%(fn)s' 缺少必需的欄位 %(f)s' 設定: %s
 設定目錄不存在 from 和 to 的協定不相配 協定與指定的協定 %s 不相配 重設所有規則為預設值。繼續執行(%(yes)s|%(no)s)？  重設所有規則為預設，這可能影響現有 ssh 連線。繼續執行(%(yes)s|%(no)s)？  已添加規則 標準化後規則被改變 已刪除規則 已插入規則 已更新規則 已更新防火牆規則 已更新規則（v6） 設定 '%s' 的規則已經更新 跳過重新載入防火牆 跳過 “%(value)s”： 對于 “%(field)s”來說，值過長 跳過 '%s'：在 /etc/services 中也存在 跳過 '%s'：無法執行 跳過‘%s’：無法查詢檔案狀態 (stat) 跳過 '%s'：域太長 跳過 '%s'：無效名稱 跳過 '%s'：名稱太長 跳過 '%s'：太大 跳過‘%s’：已經開啟太多檔案 跳過 IPv6 套用規則。需要 iptables 1.4 版或以上 跳過添加已經存在的規則 跳過插入已存在的規則 跳過錯誤的多員組（長度錯誤）： %s 跳過錯誤的元組： %s 跳過不支援的 IPv4 '%s' 規則 跳過不支援的 IPv6 '%s' 規則 狀態: 啓用
%(log)s
%(pol)s
%(app)s%(status)s 狀態： 啓用%s 狀態：不活動 標題：%s
 至 未知的策略 '%s' 不支援 '%s' 動作 預設策略不受支援 不支援 '%s' 方向 不支援 '%s' 策略 不支援 '%s' 方向的策略 不支援 '%s' 協定 WARN: %s 是全局可讀屬性 WARN: %s 是全域可寫屬性 參數數目錯誤 只有 root 使用者才能運行此腳本 n 運行時出現問題 執行 ufw-init 時發生問題
%s 運行 ufw-init uid 是 %(uid)s 但是 '%(path)s' 屬於 %(st_uid)s 未知 y 是                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         # /etc/ufw/ufw.conf
#

# Set to yes to start on boot. If setting this remotely, be sure to add a rule
# to allow your remote connection before starting ufw. Eg: 'ufw allow 22/tcp'
ENABLED=no

# Please use the 'ufw' command to set the loglevel. Eg: 'ufw logging medium'.
# See 'man ufw' for details.
LOGLEVEL=low
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        e952cf6dfd1eeb102fca427686ebd0c5  /usr/share/ufw/user.rules
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    17cfc3d4736a7b51ae8e9a934635cd9f  /usr/share/ufw/user6.rules
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   /.
/etc
/etc/default
/etc/default/ufw
/etc/init.d
/etc/init.d/ufw
/etc/logrotate.d
/etc/logrotate.d/ufw
/etc/rsyslog.d
/etc/rsyslog.d/20-ufw.conf
/etc/ufw
/etc/ufw/applications.d
/etc/ufw/applications.d/ufw-bittorent
/etc/ufw/applications.d/ufw-chat
/etc/ufw/applications.d/ufw-directoryserver
/etc/ufw/applications.d/ufw-dnsserver
/etc/ufw/applications.d/ufw-fileserver
/etc/ufw/applications.d/ufw-loginserver
/etc/ufw/applications.d/ufw-mailserver
/etc/ufw/applications.d/ufw-printserver
/etc/ufw/applications.d/ufw-proxyserver
/etc/ufw/applications.d/ufw-webserver
/etc/ufw/sysctl.conf
/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/ufw.service
/lib/ufw
/lib/ufw/ufw-init
/lib/ufw/ufw-init-functions
/usr
/usr/lib
/usr/lib/python3
/usr/lib/python3/dist-packages
/usr/lib/python3/dist-packages/ufw
/usr/lib/python3/dist-packages/ufw/__init__.py
/usr/lib/python3/dist-packages/ufw/applications.py
/usr/lib/python3/dist-packages/ufw/backend.py
/usr/lib/python3/dist-packages/ufw/backend_iptables.py
/usr/lib/python3/dist-packages/ufw/common.py
/usr/lib/python3/dist-packages/ufw/frontend.py
/usr/lib/python3/dist-packages/ufw/parser.py
/usr/lib/python3/dist-packages/ufw/util.py
/usr/lib/python3/dist-packages/ufw-0.36.2.egg-info
/usr/sbin
/usr/sbin/ufw
/usr/share
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/ufw
/usr/share/doc
/usr/share/doc/ufw
/usr/share/doc/ufw/README.Debian
/usr/share/doc/ufw/README.gz
/usr/share/doc/ufw/changelog.Debian.gz
/usr/share/doc/ufw/changelog.Debian.pre-0.27.1.gz
/usr/share/doc/ufw/changelog.gz
/usr/share/doc/ufw/copyright
/usr/share/doc/ufw/examples
/usr/share/doc/ufw/examples/skel-ui.example
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/ufw
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/ufw-framework.8.gz
/usr/share/man/man8/ufw.8.gz
/usr/share/ufw
/usr/share/ufw/after.init
/usr/share/ufw/after.rules.md5sum
/usr/share/ufw/after6.rules.md5sum
/usr/share/ufw/before.init
/usr/share/ufw/before.rules.md5sum
/usr/share/ufw/before6.rules.md5sum
/usr/share/ufw/check-requirements
/usr/share/ufw/iptables
/usr/share/ufw/iptables/after.rules
/usr/share/ufw/iptables/after6.rules
/usr/share/ufw/iptables/before.rules
/usr/share/ufw/iptables/before6.rules
/usr/share/ufw/iptables/user.rules
/usr/share/ufw/iptables/user6.rules
/usr/share/ufw/messages
/usr/share/ufw/messages/ar.mo
/usr/share/ufw/messages/ast.mo
/usr/share/ufw/messages/bg.mo
/usr/share/ufw/messages/bs.mo
/usr/share/ufw/messages/ca.mo
/usr/share/ufw/messages/ce.mo
/usr/share/ufw/messages/cs.mo
/usr/share/ufw/messages/da.mo
/usr/share/ufw/messages/de.mo
/usr/share/ufw/messages/el.mo
/usr/share/ufw/messages/en_AU.mo
/usr/share/ufw/messages/en_GB.mo
/usr/share/ufw/messages/es.mo
/usr/share/ufw/messages/et.mo
/usr/share/ufw/messages/fi.mo
/usr/share/ufw/messages/fr.mo
/usr/share/ufw/messages/he.mo
/usr/share/ufw/messages/hu.mo
/usr/share/ufw/messages/id.mo
/usr/share/ufw/messages/it.mo
/usr/share/ufw/messages/ja.mo
/usr/share/ufw/messages/ko.mo
/usr/share/ufw/messages/lv.mo
/usr/share/ufw/messages/nb.mo
/usr/share/ufw/messages/nl.mo
/usr/share/ufw/messages/pl.mo
/usr/share/ufw/messages/pt.mo
/usr/share/ufw/messages/pt_BR.mo
/usr/share/ufw/messages/ro.mo
/usr/share/ufw/messages/ru.mo
/usr/share/ufw/messages/se.mo
/usr/share/ufw/messages/sk.mo
/usr/share/ufw/messages/sl.mo
/usr/share/ufw/messages/sr.mo
/usr/share/ufw/messages/sv.mo
/usr/share/ufw/messages/tl.mo
/usr/share/ufw/messages/tr.mo
/usr/share/ufw/messages/uk.mo
/usr/share/ufw/messages/ur.mo
/usr/share/ufw/messages/zh_CN.mo
/usr/share/ufw/messages/zh_TW.mo
/usr/share/ufw/ufw.conf
/usr/share/ufw/user.rules.md5sum
/usr/share/ufw/user6.rules.md5sum
/usr/share/ufw/after.rules
/usr/share/ufw/after6.rules
/usr/share/ufw/before.rules
/usr/share/ufw/before6.rules
/usr/share/ufw/user.rules
/usr/share/ufw/user6.rules
                                                                                                                                                                                                      /usr/share/debianutils/shells.d debianutils/noawait
/usr/lib/systemd/catalog systemd/noawait
/usr/lib/binfmt.d systemd/noawait
/lib/udev/hwdb.d udev/noawait
/etc/dbus-1/system.d dbus/noawait
/usr/share/dbus-1/system.d dbus/noawait
/usr/share/dbus-1/system-services dbus/noawait
/usr/lib/mime/packages mailcap/noawait
/usr/share/applications mailcap/noawait
/usr/man man-db/noawait
/usr/share/man man-db/noawait
/usr/local/man man-db/noawait
/usr/local/share/man man-db/noawait
/usr/X11R6/man man-db/noawait
/opt/man man-db/noawait
/usr/share/hunspell dictionaries-common/noawait
/usr/lib/x86_64-linux-gnu/gio/modules libglib2.0-0:amd64/noawait
/usr/share/glib-2.0/schemas libglib2.0-0:amd64
/usr/share/mime/packages shared-mime-info/noawait
/etc/ufw/applications.d ufw/noawait
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Package: ufw
Status: install reinstreq unpacked
Priority: optional
Section: admin
Installed-Size: 857
Maintainer: Jamie Strandboge <jdstrand@ubuntu.com>
Architecture: all
Version: 0.36.2-1
Depends: iptables, ucf, python3:any, debconf (>= 0.5) | debconf-2.0
Suggests: rsyslog
Breaks: iptables-persistent, netfilter-persistent
Conffiles:
 /etc/default/ufw newconffile
 /etc/init.d/ufw newconffile
 /etc/logrotate.d/ufw newconffile
 /etc/rsyslog.d/20-ufw.conf newconffile
 /etc/ufw/applications.d/ufw-bittorent newconffile
 /etc/ufw/applications.d/ufw-chat newconffile
 /etc/ufw/applications.d/ufw-directoryserver newconffile
 /etc/ufw/applications.d/ufw-dnsserver newconffile
 /etc/ufw/applications.d/ufw-fileserver newconffile
 /etc/ufw/applications.d/ufw-loginserver newconffile
 /etc/ufw/applications.d/ufw-mailserver newconffile
 /etc/ufw/applications.d/ufw-printserver newconffile
 /etc/ufw/applications.d/ufw-proxyserver newconffile
 /etc/ufw/applications.d/ufw-webserver newconffile
 /etc/ufw/sysctl.conf newconffile
Description: program for managing a Netfilter firewall
 The Uncomplicated FireWall is a front-end for iptables, to make managing a
 Netfilter firewall easier. It provides a command line interface with syntax
 similar to OpenBSD's Packet Filter. It is particularly well-suited as a
 host-based firewall.
Homepage: https://launchpad.net/ufw
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Package: ufw
Status: install ok unpacked
Priority: optional
Section: admin
Installed-Size: 857
Maintainer: Jamie Strandboge <jdstrand@ubuntu.com>
Architecture: all
Version: 0.36.2-1
Depends: iptables, ucf, python3:any, debconf (>= 0.5) | debconf-2.0
Suggests: rsyslog
Breaks: iptables-persistent, netfilter-persistent
Conffiles:
 /etc/default/ufw newconffile
 /etc/init.d/ufw newconffile
 /etc/logrotate.d/ufw newconffile
 /etc/rsyslog.d/20-ufw.conf newconffile
 /etc/ufw/applications.d/ufw-bittorent newconffile
 /etc/ufw/applications.d/ufw-chat newconffile
 /etc/ufw/applications.d/ufw-directoryserver newconffile
 /etc/ufw/applications.d/ufw-dnsserver newconffile
 /etc/ufw/applications.d/ufw-fileserver newconffile
 /etc/ufw/applications.d/ufw-loginserver newconffile
 /etc/ufw/applications.d/ufw-mailserver newconffile
 /etc/ufw/applications.d/ufw-printserver newconffile
 /etc/ufw/applications.d/ufw-proxyserver newconffile
 /etc/ufw/applications.d/ufw-webserver newconffile
 /etc/ufw/sysctl.conf newconffile
Description: program for managing a Netfilter firewall
 The Uncomplicated FireWall is a front-end for iptables, to make managing a
 Netfilter firewall easier. It provides a command line interface with syntax
 similar to OpenBSD's Packet Filter. It is particularly well-suited as a
 host-based firewall.
Homepage: https://launchpad.net/ufw
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      #!/bin/sh
#
# see: dh_installdeb(1)

set -e

# summary of how this script can be called:
#        * <postrm> `remove'
#        * <postrm> `purge'
#        * <old-postrm> `upgrade' <new-version>
#        * <new-postrm> `failed-upgrade' <old-version>
#        * <new-postrm> `abort-install'
#        * <new-postrm> `abort-install' <old-version>
#        * <new-postrm> `abort-upgrade' <old-version>
#        * <disappearer's-postrm> `disappear' <overwriter>
#          <overwriter-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package

case "$1" in
    purge)
	if [ -x "`which ucf 2>/dev/null`" ]; then
		ucf --purge /etc/apt/apt.conf.d/20auto-upgrades
		ucf --purge /etc/apt/apt.conf.d/50unattended-upgrades
	fi
	rm -f /etc/apt/apt.conf.d/20auto-upgrades.ucf-*
	rm -f /etc/apt/apt.conf.d/50unattended-upgrades.ucf-*
	rm -f /etc/apt/apt.conf.d/20auto-upgrades
	rm -f /etc/apt/apt.conf.d/50unattended-upgrades
	dpkg-maintscript-helper rm_conffile /etc/apt/apt.conf.d/50unattended-upgrades -- "$@"
    ;;
    
    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
    ;;

    *)
        echo "postrm called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

# Automatically added by dh_installinit/13.11.4
if [ "$1" = "remove" ] && [ -x "/etc/init.d/unattended-upgrades" ] ; then
	chmod -x "/etc/init.d/unattended-upgrades" >/dev/null || true
fi
if [ -z "${DPKG_ROOT:-}" ] && [ "$1" = "purge" ] ; then
	update-rc.d unattended-upgrades remove >/dev/null
fi
# End automatically added section
# Automatically added by dh_systemd_enable/13.11.4
if [ "$1" = "purge" ]; then
	if [ -x "/usr/bin/deb-systemd-helper" ]; then
		deb-systemd-helper purge 'unattended-upgrades.service' >/dev/null || true
	fi
fi
# End automatically added section
# Automatically added by dh_installdebconf/13.11.4
if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
	. /usr/share/debconf/confmodule
	db_purge
fi
# End automatically added section


exit 0


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin
messagebus:x:100:107::/nonexistent:/usr/sbin/nologin
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
xoa:x:1000:1000:xoa,,,:/home/xoa:/bin/bash
_rpc:x:102:65534::/run/rpcbind:/usr/sbin/nologin
netdata:x:999:996::/var/lib/netdata:/bin/sh
statd:x:103:65534::/var/lib/nfs:/usr/sbin/nologin
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       