* [gentoo-commits] repo/gentoo:master commit in: net-firewall/ufw/, net-firewall/ufw/files/
@ 2016-03-14 4:31 Jason Zaman
0 siblings, 0 replies; 4+ messages in thread
From: Jason Zaman @ 2016-03-14 4:31 UTC (permalink / raw
To: gentoo-commits
commit: 6c1e5a81ed729a304bbbfe6eadc76798a68f6e55
Author: Nicholas Vinson <nvinson234 <AT> gmail <DOT> com>
AuthorDate: Thu Mar 10 18:54:09 2016 +0000
Commit: Jason Zaman <perfinion <AT> gentoo <DOT> org>
CommitDate: Mon Mar 14 04:29:27 2016 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6c1e5a81
net-firewall/ufw: version bump to 0.35
Updates ufw to version 0.35. The ebuild has also been updated to use EAPI
6. Patches were updated to address EAPI and upstream code changes.
Gentoo-Bug: 563168
Package-Manager: portage-2.2.28
net-firewall/ufw/Manifest | 1 +
.../ufw/files/ufw-0.35-bash-completion.patch | 17 ++
net-firewall/ufw/files/ufw-0.35-move-path.patch | 179 ++++++++++++++++++++
net-firewall/ufw/ufw-0.35.ebuild | 186 +++++++++++++++++++++
4 files changed, 383 insertions(+)
diff --git a/net-firewall/ufw/Manifest b/net-firewall/ufw/Manifest
index 6380dd5..d8f8b5e 100644
--- a/net-firewall/ufw/Manifest
+++ b/net-firewall/ufw/Manifest
@@ -1 +1,2 @@
DIST ufw-0.34_pre805.tar.gz 335875 SHA256 a78693da04720f9f7eb463447b940eed18c3e2c20d3de336ebf9bf821dfdac2f SHA512 b8bba3bb8c423070d6434d1df7274423edf3a356415f54c6448fa0ff2d13a4b2ac21c4bb627cba01d6955b04f793eeaf2fc535c6221e7de48f11bef745035263 WHIRLPOOL 5e5238925d928e883c9869b3b72a7a04ad18352ebbcb5fead9b14c7bb5225f1bbae613d9117ceb5e9d435e1ca1f1d0d033bbdf673896990eda5efcb7a7d04829
+DIST ufw-0.35.tar.gz 375310 SHA256 662f865bc83bf8aa1a40a6fe578bc2ce796ff60a1be2c1103def7db1b91f8509 SHA512 b36c82559910634505648f717d19eb5a0cb1ce739a804359087e74c966869d0375c4ed5811954b32d2b5b51866f6ae1bec62a4a464f226b2eecc56b096f303fc WHIRLPOOL 789b163bf9cc3b27f231024f33a68d3637ca26cf71f202b438abbf16a2725485ba787b811a040d03d4f99fb8c510f8f9a25154e03d2387d3fb0f03a7c4624de7
diff --git a/net-firewall/ufw/files/ufw-0.35-bash-completion.patch b/net-firewall/ufw/files/ufw-0.35-bash-completion.patch
new file mode 100644
index 0000000..fde635d
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.35-bash-completion.patch
@@ -0,0 +1,17 @@
+--- a/shell-completion/bash
++++ b/shell-completion/bash
+@@ -52,7 +52,6 @@
+ echo "numbered verbose"
+ }
+
+-have ufw &&
+ _ufw()
+ {
+ cur=${COMP_WORDS[COMP_CWORD]}
+@@ -83,5 +82,5 @@
+ fi
+ }
+
+-[ "$have" ] && complete -F _ufw ufw
++complete -F _ufw ufw
+
diff --git a/net-firewall/ufw/files/ufw-0.35-move-path.patch b/net-firewall/ufw/files/ufw-0.35-move-path.patch
new file mode 100644
index 0000000..58af7721
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.35-move-path.patch
@@ -0,0 +1,179 @@
+diff -Naur ufw-0.31.orig/doc/ufw-framework.8 ufw-0.31/doc/ufw-framework.8
+--- ufw-0.31.orig/doc/ufw-framework.8 2012-03-10 00:07:11.000000000 +0100
++++ ufw-0.31/doc/ufw-framework.8 2012-03-12 16:55:50.680992962 +0100
+@@ -18,7 +18,7 @@
+ parameters and configuration of IPv6. The framework consists of the following
+ files:
+ .TP
+-#STATE_PREFIX#/ufw\-init
++#SHARE_DIR#/ufw\-init
+ initialization script
+ .TP
+ #CONFIG_PREFIX#/ufw/before[6].rules
+@@ -41,7 +41,7 @@
+
+ .SH "BOOT INITIALIZATION"
+ .PP
+-\fBufw\fR is started on boot with #STATE_PREFIX#/ufw\-init. This script is a
++\fBufw\fR is started on boot with #SHARE_DIR#/ufw\-init. This script is a
+ standard SysV style initscript used by the \fBufw\fR command and should not be
+ modified. It supports the following arguments:
+ .TP
+diff -Naur ufw-0.31.orig/README ufw-0.31/README
+--- ufw-0.31.orig/README 2012-03-10 00:07:11.000000000 +0100
++++ ufw-0.31/README 2012-03-12 16:55:50.681993089 +0100
+@@ -58,7 +58,7 @@
+ on your needs, this can be as simple as adding the following to a startup
+ script (eg rc.local for systems that use it):
+
+-# /lib/ufw/ufw-init start
++# /usr/share/ufw/ufw-init start
+
+ For systems that use SysV initscripts, an example script is provided in
+ doc/initscript.example. See doc/upstart.example for an Upstart example. Consult
+@@ -72,9 +72,9 @@
+ /etc/defaults/ufw high level configuration
+ /etc/ufw/before[6].rules rules evaluated before UI added rules
+ /etc/ufw/after[6].rules rules evaluated after UI added rules
+-/lib/ufw/user[6].rules UI added rules (not to be modified)
++/etc/ufw/user/user[6].rules UI added rules (not to be modified)
+ /etc/ufw/sysctl.conf kernel network tunables
+-/lib/ufw/ufw-init start script
++/usr/share/ufw/ufw-init start script
+
+
+ Usage
+@@ -149,7 +149,7 @@
+ that the primary chains don't move around other non-ufw rules and chains. To
+ completely flush the built-in chains with this configuration, you can use:
+
+-# /lib/ufw/ufw-init flush-all
++# /usr/share/ufw/ufw-init flush-all
+
+ Alternately, ufw may also take full control of the firewall by setting
+ MANAGE_BUILTINS=yes in /etc/defaults/ufw. This will flush all the built-in
+@@ -247,7 +247,7 @@
+
+ Remote Management
+ -----------------
+-On /lib/ufw/ufw-init start and 'ufw enable' the chains are flushed, so
++On /usr/share/ufw/ufw-init start and 'ufw enable' the chains are flushed, so
+ ssh may drop. This is needed so ufw is in a consistent state. Once the ufw is
+ 'enabled' it will insert rules into the existing chains, and therefore not
+ flush the chains (but will when modifying a rule or changing the default
+@@ -290,7 +290,7 @@
+
+ Distributions
+ -------------
+-While it certainly ok to use /lib/ufw/ufw-init as the initscript for
++While it certainly ok to use /usr/share/ufw/ufw-init as the initscript for
+ ufw, this script is meant to be used by ufw itself, and therefore not
+ particularly user friendly. See doc/initscript.example for a simple
+ implementation that can be adapted to your distribution.
+diff -Naur ufw-0.31.orig/setup.py ufw-0.31/setup.py
+--- ufw-0.31.orig/setup.py 2012-03-10 00:07:11.000000000 +0100
++++ ufw-0.31/setup.py 2012-03-12 16:55:50.682993216 +0100
+@@ -54,7 +54,8 @@
+ return
+
+ real_confdir = os.path.join('/etc')
+- real_statedir = os.path.join('/lib', 'ufw')
++ # real_statedir = os.path.join('/lib', 'ufw')
++ real_statedir = os.path.join('/etc', 'ufw', 'user')
+ real_prefix = self.prefix
+ if self.home != None:
+ real_confdir = self.home + real_confdir
+@@ -116,7 +117,7 @@
+ self.copy_file('doc/ufw.8', manpage)
+ self.copy_file('doc/ufw-framework.8', manpage_f)
+
+- # Install state files and helper scripts
++ # Install state files
+ statedir = real_statedir
+ if self.root != None:
+ statedir = self.root + real_statedir
+@@ -127,8 +128,14 @@
+ self.copy_file('conf/user.rules', user_rules)
+ self.copy_file('conf/user6.rules', user6_rules)
+
+- init_helper = os.path.join(statedir, 'ufw-init')
+- init_helper_functions = os.path.join(statedir, 'ufw-init-functions')
++ # Install helper scripts
++ sharedir = real_sharedir
++ if self.root != None:
++ sharedir = self.root + real_sharedir
++ self.mkpath(sharedir)
++
++ init_helper = os.path.join(sharedir, 'ufw-init')
++ init_helper_functions = os.path.join(sharedir, 'ufw-init-functions')
+ self.copy_file('src/ufw-init', init_helper)
+ self.copy_file('src/ufw-init-functions', init_helper_functions)
+
+@@ -199,13 +206,18 @@
+
+ subprocess.call(["sed",
+ "-i",
++ "s%#SHARE_DIR#%" + real_sharedir + "%g",
++ f])
++
++ subprocess.call(["sed",
++ "-i",
+ "s%#VERSION#%" + ufw_version + "%g",
+ f])
+
+ # Install pristine copies of rules files
+- sharedir = real_sharedir
+- if self.root != None:
+- sharedir = self.root + real_sharedir
++ #sharedir = real_sharedir
++ #if self.root != None:
++ # sharedir = self.root + real_sharedir
+ rulesdir = os.path.join(sharedir, 'iptables')
+ self.mkpath(rulesdir)
+ for file in [ before_rules, after_rules, \
+diff -Naur ufw-0.31.orig/src/backend_iptables.py ufw-0.31/src/backend_iptables.py
+--- ufw-0.31.orig/src/backend_iptables.py 2012-03-10 00:07:11.000000000 +0100
++++ ufw-0.31/src/backend_iptables.py 2012-03-12 16:58:36.879115890 +0100
+@@ -38,6 +38,7 @@
+ files = {}
+ config_dir = _findpath(ufw.common.config_dir, datadir)
+ state_dir = _findpath(ufw.common.state_dir, datadir)
++ share_dir = _findpath(ufw.common.share_dir, datadir)
+
+ files['rules'] = os.path.join(config_dir, 'ufw/user.rules')
+ files['before_rules'] = os.ppath.join(config_dir, 'ufw/before.rules')
+@@ -45,7 +46,7 @@
+ files['rules6'] = os.path.join(state_dir, 'user6.rules')
+ files['before6_rules'] = os.path.join(config_dir, 'ufw/before6.rules')
+ files['after6_rules'] = os.path.join(config_dir, 'ufw/after6.rules')
+- files['init'] = os.path.join(_findpath(state_dir, rootdir), 'ufw-init')
++ files['init'] = os.path.join(_findpath(share_dir, rootdir), 'ufw-init')
+
+ ufw.backend.UFWBackend.__init__(self, "iptables", dryrun, files)
+
+diff -Naur ufw-0.31.orig/src/ufw-init ufw-0.31/src/ufw-init
+--- ufw-0.31.orig/src/ufw-init 2012-03-10 00:07:11.000000000 +0100
++++ ufw-0.31/src/ufw-init 2012-03-12 16:55:50.687993851 +0100
+@@ -18,10 +18,10 @@
+ #
+ set -e
+
+-if [ -s "${rootdir}#STATE_PREFIX#/ufw-init-functions" ]; then
+- . "${rootdir}#STATE_PREFIX#/ufw-init-functions"
++if [ -s "${rootdir}#SHARE_DIR#/ufw-init-functions" ]; then
++ . "${rootdir}#SHARE_DIR#/ufw-init-functions"
+ else
+- echo "Could not find ${rootdir}#STATE_PREFIX#/ufw-init-functions (aborting)"
++ echo "Could not find ${rootdir}#SHARE_DIR#/ufw-init-functions (aborting)"
+ exit 1
+ fi
+
+@@ -56,7 +56,7 @@
+ flush_builtins || exit "$?"
+ ;;
+ *)
+- echo "Usage: #STATE_PREFIX#/ufw-init {start|stop|restart|force-reload|force-stop|flush-all|status}"
++ echo "Usage: #SHARE_DIR#/ufw-init {start|stop|restart|force-reload|force-stop|flush-all|status}"
+ exit 1
+ ;;
+ esac
diff --git a/net-firewall/ufw/ufw-0.35.ebuild b/net-firewall/ufw/ufw-0.35.ebuild
new file mode 100644
index 0000000..8fec635
--- /dev/null
+++ b/net-firewall/ufw/ufw-0.35.ebuild
@@ -0,0 +1,186 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python{2_7,3_3,3_4} )
+DISTUTILS_IN_SOURCE_BUILD=1
+
+inherit bash-completion-r1 eutils linux-info distutils-r1 systemd
+
+DESCRIPTION="A program used to manage a netfilter firewall"
+HOMEPAGE="https://launchpad.net/ufw"
+SRC_URI="https://launchpad.net/ufw/${PV}/${PV}/+download/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="examples ipv6"
+
+DEPEND="sys-devel/gettext"
+RDEPEND=">=net-firewall/iptables-1.4[ipv6?]
+ !<kde-misc/kcm-ufw-0.4.2
+ !<net-firewall/ufw-frontends-0.3.2
+"
+
+# tests fail; upstream bug: https://bugs.launchpad.net/ufw/+bug/815982
+RESTRICT="test"
+
+PATCHES=(
+ # Remove unnecessary build time dependency on net-firewall/iptables.
+ "${FILESDIR}"/${PN}-0.33-dont-check-iptables.patch
+ # Move files away from /lib/ufw.
+ "${FILESDIR}"/${PN}-0.35-move-path.patch
+ # Remove shebang modification.
+ "${FILESDIR}"/${PN}-0.34_pre805-shebang.patch
+ # Fix bash completions, bug #526300
+ "${FILESDIR}"/${P}-bash-completion.patch
+)
+
+pkg_pretend() {
+ local CONFIG_CHECK="~PROC_FS
+ ~NETFILTER_XT_MATCH_COMMENT ~NETFILTER_XT_MATCH_HL
+ ~NETFILTER_XT_MATCH_LIMIT ~NETFILTER_XT_MATCH_MULTIPORT
+ ~NETFILTER_XT_MATCH_RECENT ~NETFILTER_XT_MATCH_STATE"
+
+ if kernel_is -ge 2 6 39; then
+ CONFIG_CHECK+=" ~NETFILTER_XT_MATCH_ADDRTYPE"
+ else
+ CONFIG_CHECK+=" ~IP_NF_MATCH_ADDRTYPE"
+ fi
+
+ # https://bugs.launchpad.net/ufw/+bug/1076050
+ if kernel_is -ge 3 4; then
+ CONFIG_CHECK+=" ~NETFILTER_XT_TARGET_LOG"
+ else
+ CONFIG_CHECK+=" ~IP_NF_TARGET_LOG"
+ use ipv6 && CONFIG_CHECK+=" ~IP6_NF_TARGET_LOG"
+ fi
+
+ CONFIG_CHECK+=" ~IP_NF_TARGET_REJECT"
+ use ipv6 && CONFIG_CHECK+=" ~IP6_NF_TARGET_REJECT"
+
+ check_extra_config
+
+ # Check for default, useful optional features.
+ if ! linux_config_exists; then
+ ewarn "Cannot determine configuration of your kernel."
+ return
+ fi
+
+ local nf_nat_ftp_ok="yes"
+ local nf_conntrack_ftp_ok="yes"
+ local nf_conntrack_netbios_ns_ok="yes"
+
+ linux_chkconfig_present \
+ NF_NAT_FTP || nf_nat_ftp_ok="no"
+ linux_chkconfig_present \
+ NF_CONNTRACK_FTP || nf_conntrack_ftp_ok="no"
+ linux_chkconfig_present \
+ NF_CONNTRACK_NETBIOS_NS || nf_conntrack_netbios_ns_ok="no"
+
+ # This is better than an essay for each unset option...
+ if [[ ${nf_nat_ftp_ok} = no ]] || [[ ${nf_conntrack_ftp_ok} = no ]] \
+ || [[ ${nf_conntrack_netbios_ns_ok} = no ]]
+ then
+ echo
+ local mod_msg="Kernel options listed below are not set. They are not"
+ mod_msg+=" mandatory, but they are often useful."
+ mod_msg+=" If you don't need some of them, please remove relevant"
+ mod_msg+=" module name(s) from IPT_MODULES in"
+ mod_msg+=" '${EROOT}etc/default/ufw' before (re)starting ufw."
+ mod_msg+=" Otherwise ufw may fail to start!"
+ ewarn "${mod_msg}"
+ if [[ ${nf_nat_ftp_ok} = no ]]; then
+ ewarn "NF_NAT_FTP: for better support for active mode FTP."
+ fi
+ if [[ ${nf_conntrack_ftp_ok} = no ]]; then
+ ewarn "NF_CONNTRACK_FTP: for better support for active mode FTP."
+ fi
+ if [[ ${nf_conntrack_netbios_ns_ok} = no ]]; then
+ ewarn "NF_CONNTRACK_NETBIOS_NS: for better Samba support."
+ fi
+ fi
+}
+
+python_prepare_all() {
+ # Set as enabled by default. User can enable or disable
+ # the service by adding or removing it to/from a runlevel.
+ sed -i 's/^ENABLED=no/ENABLED=yes/' conf/ufw.conf \
+ || die "sed failed (ufw.conf)"
+
+ sed -i "s/^IPV6=yes/IPV6=$(usex ipv6)/" conf/ufw.defaults || die
+
+ # If LINGUAS is set install selected translations only.
+ if [[ -n ${LINGUAS+set} ]]; then
+ _EMPTY_LOCALE_LIST="yes"
+ pushd locales/po > /dev/null || die
+
+ local lang
+ for lang in *.po; do
+ if ! has "${lang%.po}" ${LINGUAS}; then
+ rm "${lang}" || die
+ else
+ _EMPTY_LOCALE_LIST="no"
+ fi
+ done
+
+ popd > /dev/null || die
+ else
+ _EMPTY_LOCALE_LIST="no"
+ fi
+
+ distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+ newconfd "${FILESDIR}"/ufw.confd ufw
+ newinitd "${FILESDIR}"/ufw-2.initd ufw
+ systemd_dounit "${FILESDIR}/ufw.service"
+
+ exeinto /usr/share/${PN}
+ doexe tests/check-requirements
+
+ # users normally would want it
+ insinto /usr/share/doc/${PF}/logging/syslog-ng
+ doins "${FILESDIR}"/syslog-ng/*
+
+ insinto /usr/share/doc/${PF}/logging/rsyslog
+ doins "${FILESDIR}"/rsyslog/*
+ doins doc/rsyslog.example
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}/examples
+ doins examples/*
+ fi
+ newbashcomp shell-completion/bash ${PN}
+
+ [[ $_EMPTY_LOCALE_LIST != yes ]] && domo locales/mo/*.mo
+
+ distutils-r1_python_install_all
+ python_replicate_script "${D}usr/sbin/ufw"
+}
+
+pkg_postinst() {
+ if [[ -z ${REPLACING_VERSIONS} ]]; then
+ echo
+ elog "To enable ufw, add it to boot sequence and activate it:"
+ elog "-- # rc-update add ufw boot"
+ elog "-- # /etc/init.d/ufw start"
+ echo
+ elog "If you want to keep ufw logs in a separate file, take a look at"
+ elog "/usr/share/doc/${PF}/logging."
+ fi
+ if [[ -z ${REPLACING_VERSIONS} ]] \
+ || [[ ${REPLACING_VERSIONS} < 0.34 ]];
+ then
+ echo
+ elog "/usr/share/ufw/check-requirements script is installed."
+ elog "It is useful for debugging problems with ufw. However one"
+ elog "should keep in mind that the script assumes IPv6 is enabled"
+ elog "on kernel and net-firewall/iptables, and fails when it's not."
+ fi
+ echo
+ ewarn "Note: once enabled, ufw blocks also incoming SSH connections by"
+ ewarn "default. See README, Remote Management section for more information."
+}
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: net-firewall/ufw/, net-firewall/ufw/files/
@ 2019-03-30 18:32 Patrice Clement
0 siblings, 0 replies; 4+ messages in thread
From: Patrice Clement @ 2019-03-30 18:32 UTC (permalink / raw
To: gentoo-commits
commit: 13cabfd23b3d793596453e85057789ef14a4faa1
Author: Hasan ÇALIŞIR <hasan.calisir <AT> psauxit <DOT> com>
AuthorDate: Thu Mar 21 01:08:46 2019 +0000
Commit: Patrice Clement <monsieurp <AT> gentoo <DOT> org>
CommitDate: Sat Mar 30 18:32:11 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=13cabfd2
net-firewall/ufw: version bump to 0.36 && EAPI 7 bump.
Reported-by: yuLya <gen2xmach1ne <AT> tutanota.com>
Tested-by: Hasan ÇALIŞIR <hasan.calisir <AT> psauxit.com>
Closes: https://bugs.gentoo.org/680540
Closes: https://github.com/gentoo/gentoo/pull/11430
Package-Manager: Portage-2.3.62, Repoman-2.3.11
Signed-off-by: Hasan ÇALIŞIR <hasan.calisir <AT> psauxit.com>
Signed-off-by: Patrice Clement <monsieurp <AT> gentoo.org>
net-firewall/ufw/Manifest | 1 +
.../ufw/files/ufw-0.36-bash-completion.patch | 16 ++
.../ufw/files/ufw-0.36-dont-check-iptables.patch | 45 +++++
net-firewall/ufw/files/ufw-0.36-move-path.patch | 174 ++++++++++++++++++
net-firewall/ufw/files/ufw-0.36-shebang.patch | 15 ++
net-firewall/ufw/metadata.xml | 15 +-
net-firewall/ufw/ufw-0.36.ebuild | 199 +++++++++++++++++++++
7 files changed, 463 insertions(+), 2 deletions(-)
diff --git a/net-firewall/ufw/Manifest b/net-firewall/ufw/Manifest
index ed396f855b3..ad31ad0661a 100644
--- a/net-firewall/ufw/Manifest
+++ b/net-firewall/ufw/Manifest
@@ -1,2 +1,3 @@
DIST ufw-0.34_pre805.tar.gz 335875 BLAKE2B a2b654fe35a299ffd9978ef14a8d5667f799b654b6285bc81756c8081d9f4417b2fa9c05a234351d42709c2c57ff624b4fe7bca8ffe4d13cd12436feead6e4da SHA512 b8bba3bb8c423070d6434d1df7274423edf3a356415f54c6448fa0ff2d13a4b2ac21c4bb627cba01d6955b04f793eeaf2fc535c6221e7de48f11bef745035263
DIST ufw-0.35.tar.gz 375310 BLAKE2B 3babf22e860ead6970c1386b0ab9fc3de364ba3f5c8bc0237be4a9446358fe058d216e7928d16eed8a148fbee5b82fc1d9e3b358f357c2fac236ae6f6b942a01 SHA512 b36c82559910634505648f717d19eb5a0cb1ce739a804359087e74c966869d0375c4ed5811954b32d2b5b51866f6ae1bec62a4a464f226b2eecc56b096f303fc
+DIST ufw-0.36.tar.gz 580338 BLAKE2B a7e07ac11539061a69bb83d45c0affc54793503b31c9e9f9f8b34fa890a3fe97682f9133102e74e5f6e1eb372a929cfc8619baa2cc9efc1dc289d9f4a1766efd SHA512 b32d7f79f43c203149c48b090ee0d063df78fcf654344ee11066a7363e799a62b046758ffe02b8bd15121545ac2a6b61df21fe56f8b810319fe4dd562cbdadb3
diff --git a/net-firewall/ufw/files/ufw-0.36-bash-completion.patch b/net-firewall/ufw/files/ufw-0.36-bash-completion.patch
new file mode 100644
index 00000000000..927af244eef
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.36-bash-completion.patch
@@ -0,0 +1,16 @@
+--- a/shell-completion/bash 2018-12-14 21:25:55.000000000 +0300
++++ b/shell-completion/bash 2019-03-21 01:26:46.152181981 +0300
+@@ -57,7 +57,6 @@
+ echo "numbered verbose"
+ }
+
+-_have ufw &&
+ _ufw()
+ {
+ cur=${COMP_WORDS[COMP_CWORD]}
+@@ -91,4 +90,4 @@
+ fi
+ }
+
+-_have ufw && complete -F _ufw ufw
++complete -F _ufw ufw
diff --git a/net-firewall/ufw/files/ufw-0.36-dont-check-iptables.patch b/net-firewall/ufw/files/ufw-0.36-dont-check-iptables.patch
new file mode 100644
index 00000000000..11eb1748dd1
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.36-dont-check-iptables.patch
@@ -0,0 +1,45 @@
+--- a/setup.py 2019-03-21 01:32:28.500245586 +0300
++++ b/setup.py 2019-03-21 01:39:17.166095026 +0300
+@@ -257,41 +257,7 @@
+ os.unlink(os.path.join('staging', 'ufw-init'))
+ os.unlink(os.path.join('staging', 'ufw-init-functions'))
+
+-iptables_exe = ''
+-iptables_dir = ''
+-
+-for e in ['iptables']:
+- for dir in ['/sbin', '/bin', '/usr/sbin', '/usr/bin', '/usr/local/sbin', \
+- '/usr/local/bin']:
+- if e == "iptables":
+- if os.path.exists(os.path.join(dir, e)):
+- iptables_dir = dir
+- iptables_exe = os.path.join(iptables_dir, "iptables")
+- print("Found '%s'" % iptables_exe)
+- else:
+- continue
+-
+- if iptables_exe != "":
+- break
+-
+-
+-if iptables_exe == '':
+- print("ERROR: could not find required binary 'iptables'", file=sys.stderr)
+- sys.exit(1)
+-
+-for e in ['ip6tables', 'iptables-restore', 'ip6tables-restore']:
+- if not os.path.exists(os.path.join(iptables_dir, e)):
+- print("ERROR: could not find required binary '%s'" % (e), file=sys.stderr)
+- sys.exit(1)
+-
+-(rc, out) = cmd([iptables_exe, '-V'])
+-if rc != 0:
+- raise OSError(errno.ENOENT, "Could not find version for '%s'" % \
+- (iptables_exe))
+-version = re.sub('^v', '', re.split('\s', str(out))[1])
+-print("Found '%s' version '%s'" % (iptables_exe, version))
+-if version < "1.4":
+- print("WARN: version '%s' has limited IPv6 support. See README for details." % (version), file=sys.stderr)
++iptables_dir = '/sbin'
+
+ setup (name='ufw',
+ version=ufw_version,
diff --git a/net-firewall/ufw/files/ufw-0.36-move-path.patch b/net-firewall/ufw/files/ufw-0.36-move-path.patch
new file mode 100644
index 00000000000..1ba9d117be5
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.36-move-path.patch
@@ -0,0 +1,174 @@
+--- a/doc/ufw-framework.8 2018-12-14 21:25:55.000000000 +0300
++++ b/doc/ufw-framework.8 2019-03-21 00:12:37.852104313 +0300
+@@ -18,7 +18,7 @@
+ parameters and configuration of IPv6. The framework consists of the following
+ files:
+ .TP
+-#STATE_PREFIX#/ufw\-init
++#SHARE_DIR#/ufw\-init
+ initialization script
+ .TP
+ #CONFIG_PREFIX#/ufw/before.init
+@@ -47,7 +47,7 @@
+
+ .SH "BOOT INITIALIZATION"
+ .PP
+-\fBufw\fR is started on boot with #STATE_PREFIX#/ufw\-init. This script is a
++\fBufw\fR is started on boot with #SHARE_DIR#/ufw\-init. This script is a
+ standard SysV style initscript used by the \fBufw\fR command and should not be
+ modified. The #CONFIG_PREFIX#/before.init and #CONFIG_PREFIX#/after.init
+ scripts may be used to perform any additional firewall configuration that is
+--- a/README 2018-07-24 16:42:38.000000000 +0300
++++ b/README 2019-03-21 00:18:18.253205303 +0300
+@@ -60,7 +60,7 @@
+ on your needs, this can be as simple as adding the following to a startup
+ script (eg rc.local for systems that use it):
+
+-# /lib/ufw/ufw-init start
++# /usr/share/ufw/ufw-init start
+
+ For systems that use SysV initscripts, an example script is provided in
+ doc/initscript.example. See doc/upstart.example for an Upstart example and
+@@ -74,10 +74,9 @@
+ /etc/defaults/ufw high level configuration
+ /etc/ufw/before[6].rules rules evaluated before UI added rules
+ /etc/ufw/after[6].rules rules evaluated after UI added rules
+-/lib/ufw/user[6].rules UI added rules (not to be modified)
++/etc/ufw/user/user[6].rules UI added rules (not to be modified)
+ /etc/ufw/sysctl.conf kernel network tunables
+-/lib/ufw/ufw-init start script
+-
++/usr/share/ufw/ufw-init start script
+
+ Usage
+ -----
+@@ -152,7 +151,7 @@
+ that the primary chains don't move around other non-ufw rules and chains. To
+ completely flush the built-in chains with this configuration, you can use:
+
+-# /lib/ufw/ufw-init flush-all
++# /usr/share/ufw/ufw-init flush-all
+
+ Alternately, ufw may also take full control of the firewall by setting
+ MANAGE_BUILTINS=yes in /etc/defaults/ufw. This will flush all the built-in
+@@ -260,7 +259,7 @@
+
+ Remote Management
+ -----------------
+-On /lib/ufw/ufw-init start and 'ufw enable' the chains are flushed, so
++On /usr/share/ufw/ufw-init start and 'ufw enable' the chains are flushed, so
+ ssh may drop. This is needed so ufw is in a consistent state. Once the ufw is
+ 'enabled' it will insert rules into the existing chains, and therefore not
+ flush the chains (but will when modifying a rule or changing the default
+@@ -303,7 +302,7 @@
+
+ Distributions
+ -------------
+-While it certainly ok to use /lib/ufw/ufw-init as the initscript for
++While it certainly ok to use /usr/share/ufw/ufw-init as the initscript for
+ ufw, this script is meant to be used by ufw itself, and therefore not
+ particularly user friendly. See doc/initscript.example for a simple
+ implementation that can be adapted to your distribution.
+--- a/setup.py 2018-12-14 21:25:55.000000000 +0300
++++ b/setup.py 2019-03-21 00:44:49.603002503 +0300
+@@ -55,7 +55,7 @@
+ return
+
+ real_confdir = os.path.join('/etc')
+- real_statedir = os.path.join('/lib', 'ufw')
++ real_statedir = os.path.join('/etc', 'ufw', 'user')
+ real_prefix = self.prefix
+ if self.home != None:
+ real_confdir = self.home + real_confdir
+@@ -132,14 +132,20 @@
+ self.copy_file('doc/ufw.8', manpage)
+ self.copy_file('doc/ufw-framework.8', manpage_f)
+
+- # Install state files and helper scripts
++ # Install state files
+ statedir = real_statedir
+ if self.root != None:
+ statedir = self.root + real_statedir
+ self.mkpath(statedir)
+
+- init_helper = os.path.join(statedir, 'ufw-init')
+- init_helper_functions = os.path.join(statedir, 'ufw-init-functions')
++ # Install helper scripts
++ sharedir = real_sharedir
++ if self.root != None:
++ sharedir = self.root + real_sharedir
++ self.mkpath(sharedir)
++
++ init_helper = os.path.join(sharedir, 'ufw-init')
++ init_helper_functions = os.path.join(sharedir, 'ufw-init-functions')
+ self.copy_file('src/ufw-init', init_helper)
+ self.copy_file('src/ufw-init-functions', init_helper_functions)
+
+@@ -220,14 +226,19 @@
+ f])
+
+ subprocess.call(["sed",
++ "-i",
++ "s%#SHARE_DIR#%" + real_sharedir + "%g",
++ f])
++
++ subprocess.call(["sed",
+ "-i",
+ "s%#VERSION#%" + ufw_version + "%g",
+ f])
+
+ # Install pristine copies of rules files
+- sharedir = real_sharedir
+- if self.root != None:
+- sharedir = self.root + real_sharedir
++ #sharedir = real_sharedir
++ #if self.root != None:
++ # sharedir = self.root + real_sharedir
+ rulesdir = os.path.join(sharedir, 'iptables')
+ self.mkpath(rulesdir)
+ for f in [ before_rules, after_rules, \
+--- a/src/backend_iptables.py 2018-12-14 21:25:55.000000000 +0300
++++ b/src/backend_iptables.py 2019-03-21 00:52:10.416829220 +0300
+@@ -38,6 +38,7 @@
+ files = {}
+ config_dir = _findpath(ufw.common.config_dir, datadir)
+ state_dir = _findpath(ufw.common.state_dir, datadir)
++ share_dir = _findpath(ufw.common.share_dir, datadir)
+
+ files['rules'] = os.path.join(config_dir, 'ufw/user.rules')
+ files['before_rules'] = os.path.join(config_dir, 'ufw/before.rules')
+@@ -45,7 +46,7 @@
+ 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')
+- files['init'] = os.path.join(state_dir, 'ufw-init')
++ files['init'] = os.path.join(share_dir, 'ufw-init')
+
+ ufw.backend.UFWBackend.__init__(self, "iptables", dryrun, files,
+ rootdir=rootdir, datadir=datadir)
+--- a/src/ufw-init 2018-03-30 22:45:52.000000000 +0300
++++ b/src/ufw-init 2019-03-21 01:06:32.720483789 +0300
+@@ -31,10 +31,11 @@
+ fi
+ export DATA_DIR="$datadir"
+
+-if [ -s "${rootdir}#STATE_PREFIX#/ufw-init-functions" ]; then
+- . "${rootdir}#STATE_PREFIX#/ufw-init-functions"
++if [ -s "${rootdir}#SHARE_DIR#/ufw-init-functions" ]; then
++ . "${rootdir}#SHARE_DIR#/ufw-init-functions"
++
+ else
+- echo "Could not find ${rootdir}#STATE_PREFIX#/ufw-init-functions (aborting)"
++ echo "Could not find ${rootdir}#SHARE_DIR#/ufw-init-functions (aborting)"
+ exit 1
+ fi
+
+@@ -83,7 +84,7 @@
+ fi
+ ;;
+ *)
+- echo "Usage: #STATE_PREFIX#/ufw-init {start|stop|restart|force-reload|force-stop|flush-all|status}"
++ echo "Usage: #SHARE_DIR#/ufw-init {start|stop|restart|force-reload|force-stop|flush-all|status}"
+ exit 1
+ ;;
+ esac
diff --git a/net-firewall/ufw/files/ufw-0.36-shebang.patch b/net-firewall/ufw/files/ufw-0.36-shebang.patch
new file mode 100644
index 00000000000..8c2b8fe2392
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.36-shebang.patch
@@ -0,0 +1,15 @@
+--- a/setup.py 2019-03-21 01:51:55.751971770 +0300
++++ b/setup.py 2019-03-21 01:54:40.142513567 +0300
+@@ -122,12 +122,6 @@
+ for f in [ script, manpage, manpage_f ]:
+ self.mkpath(os.path.dirname(f))
+
+- # update the interpreter to that of the one the user specified for setup
+- print("Updating staging/ufw to use %s" % (sys.executable))
+- subprocess.call(["sed",
+- "-i",
+- "1s%^#.*python.*%#! /usr/bin/env " + sys.executable + "%g",
+- 'staging/ufw'])
+ self.copy_file('staging/ufw', script)
+ self.copy_file('doc/ufw.8', manpage)
+ self.copy_file('doc/ufw-framework.8', manpage_f)
diff --git a/net-firewall/ufw/metadata.xml b/net-firewall/ufw/metadata.xml
index b8103d2da1a..a35eb64d103 100644
--- a/net-firewall/ufw/metadata.xml
+++ b/net-firewall/ufw/metadata.xml
@@ -1,13 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
- <!-- maintainer-needed -->
+ <maintainer type="person">
+ <email>hasan.calisir@psauxit.com</email>
+ <name>Hasan ÇALIŞIR</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <use>
+ <flag name="examples">Example ufw config files</flag>
+ <flag name="ipv6">IPv6 support for iptables</flag>
+ </use>
<longdescription lang="en">
The Uncomplicated Firewall (ufw) is a frontend for iptables and is
particularly well-suited for host-based firewalls. It provides a framework
for managing netfilter, as well as an easy to use command-line interface for
manipulating the firewall.
-</longdescription>
+ </longdescription>
<upstream>
<remote-id type="launchpad">ufw</remote-id>
</upstream>
diff --git a/net-firewall/ufw/ufw-0.36.ebuild b/net-firewall/ufw/ufw-0.36.ebuild
new file mode 100644
index 00000000000..a625741775a
--- /dev/null
+++ b/net-firewall/ufw/ufw-0.36.ebuild
@@ -0,0 +1,199 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
+DISTUTILS_IN_SOURCE_BUILD=1
+
+inherit bash-completion-r1 distutils-r1 eutils linux-info systemd
+
+DESCRIPTION="A program used to manage a netfilter firewall"
+HOMEPAGE="https://launchpad.net/ufw"
+SRC_URI="https://launchpad.net/ufw/${PV}/${PV}/+download/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="examples ipv6"
+
+DEPEND=""
+
+RDEPEND=">=net-firewall/iptables-1.4[ipv6?]
+ !<kde-misc/kcm-ufw-0.4.2
+ !<net-firewall/ufw-frontends-0.3.2"
+
+BDEPEND="sys-devel/gettext"
+
+# tests fail; upstream bug: https://bugs.launchpad.net/ufw/+bug/815982
+RESTRICT="test"
+
+PATCHES=(
+ # Move files away from /lib/ufw.
+ "${FILESDIR}/${P}-move-path.patch"
+ # Remove unnecessary build time dependency on net-firewall/iptables.
+ "${FILESDIR}/${P}-dont-check-iptables.patch"
+ # Remove shebang modification.
+ "${FILESDIR}/${P}-shebang.patch"
+ # Fix bash completions, bug #526300
+ "${FILESDIR}/${P}-bash-completion.patch"
+)
+
+pkg_pretend() {
+ local CONFIG_CHECK="~PROC_FS
+ ~NETFILTER_XT_MATCH_COMMENT ~NETFILTER_XT_MATCH_HL
+ ~NETFILTER_XT_MATCH_LIMIT ~NETFILTER_XT_MATCH_MULTIPORT
+ ~NETFILTER_XT_MATCH_RECENT ~NETFILTER_XT_MATCH_STATE"
+
+ if kernel_is -ge 2 6 39; then
+ CONFIG_CHECK+=" ~NETFILTER_XT_MATCH_ADDRTYPE"
+ else
+ CONFIG_CHECK+=" ~IP_NF_MATCH_ADDRTYPE"
+ fi
+
+ # https://bugs.launchpad.net/ufw/+bug/1076050
+ if kernel_is -ge 3 4; then
+ CONFIG_CHECK+=" ~NETFILTER_XT_TARGET_LOG"
+ else
+ CONFIG_CHECK+=" ~IP_NF_TARGET_LOG"
+ use ipv6 && CONFIG_CHECK+=" ~IP6_NF_TARGET_LOG"
+ fi
+
+ CONFIG_CHECK+=" ~IP_NF_TARGET_REJECT"
+ use ipv6 && CONFIG_CHECK+=" ~IP6_NF_TARGET_REJECT"
+
+ check_extra_config
+
+ # Check for default, useful optional features.
+ if ! linux_config_exists; then
+ ewarn "Cannot determine configuration of your kernel."
+ return
+ fi
+
+ local nf_nat_ftp_ok="yes"
+ local nf_conntrack_ftp_ok="yes"
+ local nf_conntrack_netbios_ns_ok="yes"
+
+ linux_chkconfig_present \
+ NF_NAT_FTP || nf_nat_ftp_ok="no"
+ linux_chkconfig_present \
+ NF_CONNTRACK_FTP || nf_conntrack_ftp_ok="no"
+ linux_chkconfig_present \
+ NF_CONNTRACK_NETBIOS_NS || nf_conntrack_netbios_ns_ok="no"
+
+ # This is better than an essay for each unset option...
+ if [[ "${nf_nat_ftp_ok}" == "no" ]] || \
+ [[ "${nf_conntrack_ftp_ok}" == "no" ]] || \
+ [[ "${nf_conntrack_netbios_ns_ok}" == "no" ]]; then
+ echo
+ local mod_msg="Kernel options listed below are not set. They are not"
+ mod_msg+=" mandatory, but they are often useful."
+ mod_msg+=" If you don't need some of them, please remove relevant"
+ mod_msg+=" module name(s) from IPT_MODULES in"
+ mod_msg+=" '${EROOT}etc/default/ufw' before (re)starting ufw."
+ mod_msg+=" Otherwise ufw may fail to start!"
+ ewarn "${mod_msg}"
+ if [[ "${nf_nat_ftp_ok}" == "no" ]]; then
+ ewarn "NF_NAT_FTP: for better support for active mode FTP."
+ fi
+ if [[ "${nf_conntrack_ftp_ok}" == "no" ]]; then
+ ewarn "NF_CONNTRACK_FTP: for better support for active mode FTP."
+ fi
+ if [[ "${nf_conntrack_netbios_ns_ok}" == "no" ]]; then
+ ewarn "NF_CONNTRACK_NETBIOS_NS: for better Samba support."
+ fi
+ fi
+}
+
+python_prepare_all() {
+ # Set as enabled by default. User can enable or disable
+ # the service by adding or removing it to/from a runlevel.
+ sed -i 's/^ENABLED=no/ENABLED=yes/' conf/ufw.conf \
+ || die "sed failed (ufw.conf)"
+
+ sed -i "s/^IPV6=yes/IPV6=$(usex ipv6)/" conf/ufw.defaults || die
+
+ # If LINGUAS is set install selected translations only.
+ if [[ -n ${LINGUAS+set} ]]; then
+ _EMPTY_LOCALE_LIST="yes"
+ pushd locales/po > /dev/null || die
+
+ local lang
+ for lang in *.po; do
+ if ! has "${lang%.po}" ${LINGUAS}; then
+ rm "${lang}" || die
+ else
+ _EMPTY_LOCALE_LIST="no"
+ fi
+ done
+
+ popd > /dev/null || die
+ else
+ _EMPTY_LOCALE_LIST="no"
+ fi
+
+ distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+ newconfd "${FILESDIR}"/ufw.confd ufw
+ newinitd "${FILESDIR}"/ufw-2.initd ufw
+ systemd_dounit "${FILESDIR}/ufw.service"
+
+ exeinto /usr/share/${PN}
+ doexe tests/check-requirements
+
+ # users normally would want it
+ docinto "/usr/share/doc/${PF}/logging/syslog-ng"
+ doins -r "${FILESDIR}"/syslog-ng/*
+
+ docinto "/usr/share/doc/${PF}/logging/rsyslog"
+ doins -r "${FILESDIR}"/rsyslog/*
+ doins doc/rsyslog.example
+
+ if use examples; then
+ docinto "/usr/share/doc/${PF}/examples"
+ doins -r examples/*
+ fi
+ newbashcomp shell-completion/bash "${PN}"
+
+ [[ $_EMPTY_LOCALE_LIST != "yes" ]] && domo locales/mo/*.mo
+
+ distutils-r1_python_install_all
+ python_replicate_script "${D}/usr/sbin/ufw"
+}
+
+pkg_postinst() {
+ local print_check_req_warn
+ print_check_req_warn=false
+
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ echo
+ elog "To enable ufw, add it to boot sequence and activate it:"
+ elog "-- # rc-update add ufw boot"
+ elog "-- # /etc/init.d/ufw start"
+ echo
+ elog "If you want to keep ufw logs in a separate file, take a look at"
+ elog "/usr/share/doc/${PF}/logging."
+ print_check_req_warn=true
+ else
+ local rv
+ for rv in "${REPLACING_VERSIONS}"; do
+ local major=${rv%%.*}
+ local minor=${rv#${major}.}
+ if [[ "${major}" -eq 0 && "${minor}" -lt 34 ]]; then
+ print_check_req_warn=true
+ fi
+ done
+ fi
+ if [[ "${print_check_req_warn}" == "true" ]]; then
+ echo
+ elog "/usr/share/ufw/check-requirements script is installed."
+ elog "It is useful for debugging problems with ufw. However one"
+ elog "should keep in mind that the script assumes IPv6 is enabled"
+ elog "on kernel and net-firewall/iptables, and fails when it's not."
+ fi
+ echo
+ ewarn "Note: once enabled, ufw blocks also incoming SSH connections by"
+ ewarn "default. See README, Remote Management section for more information."
+}
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: net-firewall/ufw/, net-firewall/ufw/files/
@ 2022-07-01 8:29 Florian Schmaus
0 siblings, 0 replies; 4+ messages in thread
From: Florian Schmaus @ 2022-07-01 8:29 UTC (permalink / raw
To: gentoo-commits
commit: 5b92f67047e6ae788b7e68acd72ca421d4e42d01
Author: Hasan ÇALIŞIR <hasan.calisir <AT> psauxit <DOT> com>
AuthorDate: Tue Jun 28 08:25:53 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Jul 1 08:28:35 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5b92f670
net-firewall/ufw: bump to 0.36.1
* version bump to 0.36.1.
* bump to EAPI 8.
* python_combat drop 3.7, add 3.11, current range 8,11.
* dropped NonexistentBlockers from RDEPEND.
!<kde-misc/kcm-ufw-0.4.2
!<net-firewall/ufw-frontends-0.3.2"
* Removed RESTRICT="test" -->
upstream bug: https://bugs.launchpad.net/ufw/+bug/815982 fixed and commited.
* Change mod 0644 for all rules in /etc/ufw.
* Drop comparison operator >= for iptables 1.4.
Current repo already meets the requirement.
* Patches synced with current version that we still need them.
[ flow: add Closes bug# 834130 git trailer ]
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Hasan ÇALIŞIR <hasan.calisir <AT> psauxit.com>
Closes: https://bugs.gentoo.org/834130
Closes: https://github.com/gentoo/gentoo/pull/26110
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
net-firewall/ufw/Manifest | 1 +
.../ufw/files/ufw-0.36.1-bash-completion.patch | 16 ++
.../ufw/files/ufw-0.36.1-dont-check-iptables.patch | 50 +++++
net-firewall/ufw/files/ufw-0.36.1-move-path.patch | 124 ++++++++++++
net-firewall/ufw/files/ufw-0.36.1-shebang.patch | 15 ++
net-firewall/ufw/ufw-0.36.1.ebuild | 217 +++++++++++++++++++++
6 files changed, 423 insertions(+)
diff --git a/net-firewall/ufw/Manifest b/net-firewall/ufw/Manifest
index ab0de6087c34..91de7839ba25 100644
--- a/net-firewall/ufw/Manifest
+++ b/net-firewall/ufw/Manifest
@@ -1 +1,2 @@
+DIST ufw-0.36.1.tar.gz 583123 BLAKE2B 16e1ee67493d5db10a04667b646a019aa3aeb06345d0facc334fb07eeff4d4f6674a4699b2bd7bd6ed29de1c05c4e14812e9e8ec55c4bfb8579b8e3e2e577f6a SHA512 77d01fef661083eac041be6d6eabffb1d8aedb215f73e44e18a9a63a48da96414b3c0166e3ffd9402c22c72a6de5d774ba14b15368b02997aae8e08d1c5dd4c0
DIST ufw-0.36.tar.gz 580338 BLAKE2B a7e07ac11539061a69bb83d45c0affc54793503b31c9e9f9f8b34fa890a3fe97682f9133102e74e5f6e1eb372a929cfc8619baa2cc9efc1dc289d9f4a1766efd SHA512 b32d7f79f43c203149c48b090ee0d063df78fcf654344ee11066a7363e799a62b046758ffe02b8bd15121545ac2a6b61df21fe56f8b810319fe4dd562cbdadb3
diff --git a/net-firewall/ufw/files/ufw-0.36.1-bash-completion.patch b/net-firewall/ufw/files/ufw-0.36.1-bash-completion.patch
new file mode 100644
index 000000000000..927af244eef1
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.36.1-bash-completion.patch
@@ -0,0 +1,16 @@
+--- a/shell-completion/bash 2018-12-14 21:25:55.000000000 +0300
++++ b/shell-completion/bash 2019-03-21 01:26:46.152181981 +0300
+@@ -57,7 +57,6 @@
+ echo "numbered verbose"
+ }
+
+-_have ufw &&
+ _ufw()
+ {
+ cur=${COMP_WORDS[COMP_CWORD]}
+@@ -91,4 +90,4 @@
+ fi
+ }
+
+-_have ufw && complete -F _ufw ufw
++complete -F _ufw ufw
diff --git a/net-firewall/ufw/files/ufw-0.36.1-dont-check-iptables.patch b/net-firewall/ufw/files/ufw-0.36.1-dont-check-iptables.patch
new file mode 100644
index 000000000000..ae0c95525a46
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.36.1-dont-check-iptables.patch
@@ -0,0 +1,50 @@
+--- a/setup.py 2022-06-27 17:33:18.043794598 +0300
++++ b/setup.py 2022-06-27 18:15:18.384463926 +0300
+@@ -256,46 +256,7 @@
+ os.unlink(os.path.join('staging', 'ufw-init'))
+ os.unlink(os.path.join('staging', 'ufw-init-functions'))
+
+-iptables_exe = ''
+-iptables_dir = ''
+-
+-for e in ['iptables']:
+- # Historically iptables was in /sbin, then later also symlinked from
+- # /usr/sbin/iptables to /sbin/iptables. Debian bullseye moves iptables
+- # to /usr/sbin with no symlink in /sbin except on upgrades. To accomodate
+- # buildds that may still have the old iptables, search /usr/sbin first
+- for dir in ['/usr/sbin', '/sbin', '/usr/bin', '/bin', '/usr/local/sbin', \
+- '/usr/local/bin']:
+- if e == "iptables":
+- if os.path.exists(os.path.join(dir, e)):
+- iptables_dir = dir
+- iptables_exe = os.path.join(iptables_dir, "iptables")
+- print("Found '%s'" % iptables_exe)
+- else:
+- continue
+-
+- if iptables_exe != "":
+- break
+-
+-
+-if iptables_exe == '':
+- print("ERROR: could not find required binary 'iptables'", file=sys.stderr)
+- sys.exit(1)
+-
+-for e in ['ip6tables', 'iptables-restore', 'ip6tables-restore']:
+- if not os.path.exists(os.path.join(iptables_dir, e)):
+- print("ERROR: could not find required binary '%s'" % (e), file=sys.stderr)
+- sys.exit(1)
+-
+-(rc, out) = cmd([iptables_exe, '-V'])
+-if rc != 0:
+- raise OSError(errno.ENOENT, "Could not find version for '%s'" % \
+- (iptables_exe))
+-version = re.sub('^v', '', re.split('\s', str(out))[1])
+-print("Found '%s' version '%s'" % (iptables_exe, version))
+-if version < "1.4":
+- print("WARN: version '%s' has limited IPv6 support. See README for details." % (version), file=sys.stderr)
+-
++iptables_dir = '/sbin'
+ setup (name='ufw',
+ version=ufw_version,
+ description='front-end for Linux firewalling',
diff --git a/net-firewall/ufw/files/ufw-0.36.1-move-path.patch b/net-firewall/ufw/files/ufw-0.36.1-move-path.patch
new file mode 100644
index 000000000000..8ace1edc1166
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.36.1-move-path.patch
@@ -0,0 +1,124 @@
+--- a/doc/ufw-framework.8 2021-09-19 04:19:03.000000000 +0300
++++ b/doc/ufw-framework.8 2022-06-27 17:14:11.292890569 +0300
+@@ -18,7 +18,7 @@
+ parameters and configuration of IPv6. The framework consists of the following
+ files:
+ .TP
+-#STATE_PREFIX#/ufw\-init
++#SHARE_DIR#/ufw\-init
+ initialization script
+ .TP
+ #CONFIG_PREFIX#/ufw/before.init
+@@ -47,7 +47,7 @@
+
+ .SH "BOOT INITIALIZATION"
+ .PP
+-\fBufw\fR is started on boot with #STATE_PREFIX#/ufw\-init. This script is a
++\fBufw\fR is started on boot with #SHARE_DIR#/ufw\-init. This script is a
+ standard SysV style initscript used by the \fBufw\fR command and should not be
+ modified. The #CONFIG_PREFIX#/before.init and #CONFIG_PREFIX#/after.init
+ scripts may be used to perform any additional firewall configuration that is
+--- a/setup.py 2021-09-19 04:19:01.000000000 +0300
++++ b/setup.py 2022-06-27 17:33:18.043794598 +0300
+@@ -54,7 +54,7 @@
+ return
+
+ real_confdir = os.path.join('/etc')
+- real_statedir = os.path.join('/lib', 'ufw')
++ real_statedir = os.path.join('/etc', 'ufw', 'user')
+ real_prefix = self.prefix
+ if self.home != None:
+ real_confdir = self.home + real_confdir
+@@ -131,14 +131,20 @@
+ self.copy_file('doc/ufw.8', manpage)
+ self.copy_file('doc/ufw-framework.8', manpage_f)
+
+- # Install state files and helper scripts
++ # Install state files
+ statedir = real_statedir
+ if self.root != None:
+ statedir = self.root + real_statedir
+ self.mkpath(statedir)
+
+- init_helper = os.path.join(statedir, 'ufw-init')
+- init_helper_functions = os.path.join(statedir, 'ufw-init-functions')
++ # Install helper scripts
++ sharedir = real_sharedir
++ if self.root != None:
++ sharedir = self.root + real_sharedir
++ self.mkpath(sharedir)
++
++ init_helper = os.path.join(sharedir, 'ufw-init')
++ init_helper_functions = os.path.join(sharedir, 'ufw-init-functions')
+ self.copy_file('src/ufw-init', init_helper)
+ self.copy_file('src/ufw-init-functions', init_helper_functions)
+
+@@ -219,14 +225,19 @@
+ f])
+
+ subprocess.call(["sed",
++ "-i",
++ "s%#SHARE_DIR#%" + real_sharedir + "%g",
++ f])
++
++ subprocess.call(["sed",
+ "-i",
+ "s%#VERSION#%" + ufw_version + "%g",
+ f])
+
+ # Install pristine copies of rules files
+- sharedir = real_sharedir
+- if self.root != None:
+- sharedir = self.root + real_sharedir
++ #sharedir = real_sharedir
++ #if self.root != None:
++ # sharedir = self.root + real_sharedir
+ rulesdir = os.path.join(sharedir, 'iptables')
+ self.mkpath(rulesdir)
+ for f in [ before_rules, after_rules, \
+--- a/src/backend_iptables.py 2021-09-19 04:19:01.000000000 +0300
++++ b/src/backend_iptables.py 2022-06-27 17:44:24.880445896 +0300
+@@ -37,6 +37,8 @@
+
+ files = {}
+ config_dir = _findpath(ufw.common.config_dir, datadir)
++ state_dir = _findpath(ufw.common.state_dir, datadir)
++ share_dir = _findpath(ufw.common.share_dir, datadir)
+
+ files['rules'] = os.path.join(config_dir, 'ufw/user.rules')
+ files['before_rules'] = os.path.join(config_dir, 'ufw/before.rules')
+@@ -48,8 +50,7 @@
+ # 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')
++ files['init'] = os.path.join(share_dir, 'ufw-init')
+
+ ufw.backend.UFWBackend.__init__(self, "iptables", dryrun, files,
+ rootdir=rootdir, datadir=datadir)
+--- a/src/ufw-init 2021-09-19 03:50:19.000000000 +0300
++++ b/src/ufw-init 2022-06-27 17:48:34.352545026 +0300
+@@ -31,10 +31,10 @@
+ fi
+ export DATA_DIR="$datadir"
+
+-if [ -s "${rootdir}#STATE_PREFIX#/ufw-init-functions" ]; then
+- . "${rootdir}#STATE_PREFIX#/ufw-init-functions"
++if [ -s "${rootdir}#SHARE_DIR#/ufw-init-functions" ]; then
++ . "${rootdir}#SHARE_DIR#/ufw-init-functions"
+ else
+- echo "Could not find ${rootdir}#STATE_PREFIX#/ufw-init-functions (aborting)"
++ echo "Could not find ${rootdir}#SHARE_DIR#/ufw-init-functions (aborting)"
+ exit 1
+ fi
+
+@@ -83,7 +83,7 @@
+ fi
+ ;;
+ *)
+- echo "Usage: #STATE_PREFIX#/ufw-init {start|stop|restart|force-reload|force-stop|flush-all|status}"
++ echo "Usage: #SHARE_DIR#/ufw-init {start|stop|restart|force-reload|force-stop|flush-all|status}"
+ exit 1
+ ;;
+ esac
diff --git a/net-firewall/ufw/files/ufw-0.36.1-shebang.patch b/net-firewall/ufw/files/ufw-0.36.1-shebang.patch
new file mode 100644
index 000000000000..aaafaac12ae9
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.36.1-shebang.patch
@@ -0,0 +1,15 @@
+--- a/setup.py 2019-03-21 01:51:55.751971770 +0300
++++ b/setup.py 2019-03-21 01:54:40.142513567 +0300
+@@ -121,12 +121,6 @@
+ for f in [ script, manpage, manpage_f ]:
+ self.mkpath(os.path.dirname(f))
+
+- # update the interpreter to that of the one the user specified for setup
+- print("Updating staging/ufw to use %s" % (sys.executable))
+- subprocess.call(["sed",
+- "-i",
+- "1s%^#.*python.*%#! /usr/bin/env " + sys.executable + "%g",
+- 'staging/ufw'])
+ self.copy_file('staging/ufw', script)
+ self.copy_file('doc/ufw.8', manpage)
+ self.copy_file('doc/ufw-framework.8', manpage_f)
diff --git a/net-firewall/ufw/ufw-0.36.1.ebuild b/net-firewall/ufw/ufw-0.36.1.ebuild
new file mode 100644
index 000000000000..8eca27c146a6
--- /dev/null
+++ b/net-firewall/ufw/ufw-0.36.1.ebuild
@@ -0,0 +1,217 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..11} )
+DISTUTILS_IN_SOURCE_BUILD=1
+DISTUTILS_USE_SETUPTOOLS=no
+
+inherit bash-completion-r1 distutils-r1 linux-info systemd
+
+DESCRIPTION="A program used to manage a netfilter firewall"
+HOMEPAGE="https://launchpad.net/ufw"
+SRC_URI="https://launchpad.net/ufw/${PV%.*}/${PV}/+download/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="examples ipv6"
+
+RDEPEND="net-firewall/iptables[ipv6(+)?]"
+BDEPEND="sys-devel/gettext"
+
+PATCHES=(
+ # Move files away from /lib/ufw.
+ "${FILESDIR}/${P}-move-path.patch"
+ # Remove unnecessary build time dependency on net-firewall/iptables.
+ "${FILESDIR}/${P}-dont-check-iptables.patch"
+ # Remove shebang modification.
+ "${FILESDIR}/${P}-shebang.patch"
+ # Fix bash completions, bug #526300
+ "${FILESDIR}/${P}-bash-completion.patch"
+)
+
+pkg_pretend() {
+ local CONFIG_CHECK="~PROC_FS
+ ~NETFILTER_XT_MATCH_COMMENT ~NETFILTER_XT_MATCH_HL
+ ~NETFILTER_XT_MATCH_LIMIT ~NETFILTER_XT_MATCH_MULTIPORT
+ ~NETFILTER_XT_MATCH_RECENT ~NETFILTER_XT_MATCH_STATE"
+
+ if kernel_is -ge 2 6 39; then
+ CONFIG_CHECK+=" ~NETFILTER_XT_MATCH_ADDRTYPE"
+ else
+ CONFIG_CHECK+=" ~IP_NF_MATCH_ADDRTYPE"
+ fi
+
+ # https://bugs.launchpad.net/ufw/+bug/1076050
+ if kernel_is -ge 3 4; then
+ CONFIG_CHECK+=" ~NETFILTER_XT_TARGET_LOG"
+ else
+ CONFIG_CHECK+=" ~IP_NF_TARGET_LOG"
+ use ipv6 && CONFIG_CHECK+=" ~IP6_NF_TARGET_LOG"
+ fi
+
+ CONFIG_CHECK+=" ~IP_NF_TARGET_REJECT"
+ use ipv6 && CONFIG_CHECK+=" ~IP6_NF_TARGET_REJECT"
+
+ check_extra_config
+
+ # Check for default, useful optional features.
+ if ! linux_config_exists; then
+ ewarn "Cannot determine configuration of your kernel."
+ return
+ fi
+
+ local nf_nat_ftp_ok="yes"
+ local nf_conntrack_ftp_ok="yes"
+ local nf_conntrack_netbios_ns_ok="yes"
+
+ linux_chkconfig_present \
+ NF_NAT_FTP || nf_nat_ftp_ok="no"
+ linux_chkconfig_present \
+ NF_CONNTRACK_FTP || nf_conntrack_ftp_ok="no"
+ linux_chkconfig_present \
+ NF_CONNTRACK_NETBIOS_NS || nf_conntrack_netbios_ns_ok="no"
+
+ # This is better than an essay for each unset option...
+ if [[ "${nf_nat_ftp_ok}" == "no" ]] || \
+ [[ "${nf_conntrack_ftp_ok}" == "no" ]] || \
+ [[ "${nf_conntrack_netbios_ns_ok}" == "no" ]]; then
+ echo
+ local mod_msg="Kernel options listed below are not set. They are not"
+ mod_msg+=" mandatory, but they are often useful."
+ mod_msg+=" If you don't need some of them, please remove relevant"
+ mod_msg+=" module name(s) from IPT_MODULES in"
+ mod_msg+=" '${EROOT}/etc/default/ufw' before (re)starting ufw."
+ mod_msg+=" Otherwise ufw may fail to start!"
+ ewarn "${mod_msg}"
+ if [[ "${nf_nat_ftp_ok}" == "no" ]]; then
+ ewarn "NF_NAT_FTP: for better support for active mode FTP."
+ fi
+ if [[ "${nf_conntrack_ftp_ok}" == "no" ]]; then
+ ewarn "NF_CONNTRACK_FTP: for better support for active mode FTP."
+ fi
+ if [[ "${nf_conntrack_netbios_ns_ok}" == "no" ]]; then
+ ewarn "NF_CONNTRACK_NETBIOS_NS: for better Samba support."
+ fi
+ fi
+}
+
+python_prepare_all() {
+ # Set as enabled by default. User can enable or disable
+ # the service by adding or removing it to/from a runlevel.
+ sed -i 's/^ENABLED=no/ENABLED=yes/' conf/ufw.conf \
+ || die "sed failed (ufw.conf)"
+
+ sed -i "s/^IPV6=yes/IPV6=$(usex ipv6)/" conf/ufw.defaults || die
+
+ # If LINGUAS is set install selected translations only.
+ if [[ -n ${LINGUAS+set} ]]; then
+ _EMPTY_LOCALE_LIST="yes"
+ pushd locales/po > /dev/null || die
+
+ local lang
+ for lang in *.po; do
+ if ! has "${lang%.po}" ${LINGUAS}; then
+ rm "${lang}" || die
+ else
+ _EMPTY_LOCALE_LIST="no"
+ fi
+ done
+
+ popd > /dev/null || die
+ else
+ _EMPTY_LOCALE_LIST="no"
+ fi
+
+ distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+ newconfd "${FILESDIR}"/ufw.confd ufw
+ newinitd "${FILESDIR}"/ufw-2.initd ufw
+ systemd_dounit "${FILESDIR}/ufw.service"
+
+ pushd "${ED}" || die
+ fperms -R 0644 etc/ufw/*.rules
+ popd || die
+
+ exeinto /usr/share/${PN}
+ doexe tests/check-requirements
+
+ # users normally would want it
+ insinto "/usr/share/doc/${PF}/logging/syslog-ng"
+ doins -r "${FILESDIR}"/syslog-ng/*
+
+ insinto "/usr/share/doc/${PF}/logging/rsyslog"
+ doins -r "${FILESDIR}"/rsyslog/*
+ doins doc/rsyslog.example
+
+ if use examples; then
+ insinto "/usr/share/doc/${PF}/examples"
+ doins -r examples/*
+ fi
+ newbashcomp shell-completion/bash "${PN}"
+
+ [[ $_EMPTY_LOCALE_LIST != "yes" ]] && domo locales/mo/*.mo
+
+ distutils-r1_python_install_all
+ python_replicate_script "${D}/usr/sbin/ufw"
+}
+
+pkg_postinst() {
+ local print_check_req_warn
+ print_check_req_warn=false
+
+ local found=()
+ local apps=( "net-firewall/arno-iptables-firewall"
+ "net-firewall/ferm"
+ "net-firewall/firehol"
+ "net-firewall/firewalld"
+ "net-firewall/ipkungfu" )
+
+ for exe in "${apps[@]}"
+ do
+ if has_version "${exe}"; then
+ found+=( "${exe}" )
+ fi
+ done
+
+ if [[ -n ${found} ]]; then
+ echo ""
+ ewarn "WARNING: Detected other firewall applications:"
+ ewarn "${found[@]}"
+ ewarn "If enabled, these applications may interfere with ufw!"
+ fi
+
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ echo ""
+ elog "To enable ufw, add it to boot sequence and activate it:"
+ elog "-- # rc-update add ufw boot"
+ elog "-- # /etc/init.d/ufw start"
+ echo
+ elog "If you want to keep ufw logs in a separate file, take a look at"
+ elog "/usr/share/doc/${PF}/logging."
+ print_check_req_warn=true
+ else
+ local rv
+ for rv in "${REPLACING_VERSIONS}"; do
+ local major=${rv%%.*}
+ local minor=${rv#${major}.}
+ if [[ "${major}" -eq 0 && "${minor}" -lt 34 ]]; then
+ print_check_req_warn=true
+ fi
+ done
+ fi
+ if [[ "${print_check_req_warn}" == "true" ]]; then
+ echo
+ elog "/usr/share/ufw/check-requirements script is installed."
+ elog "It is useful for debugging problems with ufw. However one"
+ elog "should keep in mind that the script assumes IPv6 is enabled"
+ elog "on kernel and net-firewall/iptables, and fails when it's not."
+ fi
+ echo
+ ewarn "Note: once enabled, ufw blocks also incoming SSH connections by"
+ ewarn "default. See README, Remote Management section for more information."
+}
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: net-firewall/ufw/, net-firewall/ufw/files/
@ 2024-10-08 15:18 Sam James
0 siblings, 0 replies; 4+ messages in thread
From: Sam James @ 2024-10-08 15:18 UTC (permalink / raw
To: gentoo-commits
commit: 6c7a7f2c99d77a5aed1dc21d9525a5f85fea5968
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 8 15:17:52 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Oct 8 15:18:12 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6c7a7f2c
net-firewall/ufw: strip distutils use
Signed-off-by: Sam James <sam <AT> gentoo.org>
net-firewall/ufw/files/ufw-0.36.1-distutils.patch | 14 ++++++++++++++
.../ufw/{ufw-0.36.1.ebuild => ufw-0.36.1-r1.ebuild} | 6 +++---
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/net-firewall/ufw/files/ufw-0.36.1-distutils.patch b/net-firewall/ufw/files/ufw-0.36.1-distutils.patch
new file mode 100644
index 000000000000..fe7ab3845058
--- /dev/null
+++ b/net-firewall/ufw/files/ufw-0.36.1-distutils.patch
@@ -0,0 +1,14 @@
+https://src.fedoraproject.org/rpms/ufw/raw/rawhide/f/ufw-0.35-distutils-setuptools.patch
+--- a/setup.py
++++ b/setup.py
+@@ -26,8 +26,8 @@
+ #
+
+ from __future__ import print_function
+-from distutils.command.install import install as _install
+-from distutils.core import setup
++from setuptools.command.install import install as _install
++from setuptools import setup
+ import errno
+ import os
+ import re
diff --git a/net-firewall/ufw/ufw-0.36.1.ebuild b/net-firewall/ufw/ufw-0.36.1-r1.ebuild
similarity index 98%
rename from net-firewall/ufw/ufw-0.36.1.ebuild
rename to net-firewall/ufw/ufw-0.36.1-r1.ebuild
index b731656a901d..09b82a5878f8 100644
--- a/net-firewall/ufw/ufw-0.36.1.ebuild
+++ b/net-firewall/ufw/ufw-0.36.1-r1.ebuild
@@ -20,10 +20,8 @@ IUSE="examples ipv6"
RDEPEND="net-firewall/iptables[ipv6(+)?]"
BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
sys-devel/gettext
- $(python_gen_cond_dep '
- dev-python/setuptools[${PYTHON_USEDEP}]
- ' python3_12)
"
PATCHES=(
@@ -35,6 +33,8 @@ PATCHES=(
"${FILESDIR}/${P}-shebang.patch"
# Fix bash completions, bug #526300
"${FILESDIR}/${PN}-0.36-bash-completion.patch"
+ # Strip distutils use
+ "${FILESDIR}/${PN}-0.36.1-distutils.patch"
)
pkg_pretend() {
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-10-08 15:18 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-08 15:18 [gentoo-commits] repo/gentoo:master commit in: net-firewall/ufw/, net-firewall/ufw/files/ Sam James
-- strict thread matches above, loose matches on Subject: below --
2022-07-01 8:29 Florian Schmaus
2019-03-30 18:32 Patrice Clement
2016-03-14 4:31 Jason Zaman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox