summaryrefslogtreecommitdiff
path: root/net-ftp
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-13 22:21:26 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-13 22:21:26 -0500
commitf997c3ee588099e4f43e9ec845935868e3e60b8e (patch)
tree07f0967cda575ee2edf2d62ed8c0f67855ae6bd3 /net-ftp
parentb589bc93e15b300c3e5318fe97241d57e464bea1 (diff)
downloadbaldeagleos-repo-f997c3ee588099e4f43e9ec845935868e3e60b8e.tar.gz
baldeagleos-repo-f997c3ee588099e4f43e9ec845935868e3e60b8e.tar.xz
baldeagleos-repo-f997c3ee588099e4f43e9ec845935868e3e60b8e.zip
Adding metadata
Diffstat (limited to 'net-ftp')
-rw-r--r--net-ftp/frox/frox-0.7.18-r7.ebuild (renamed from net-ftp/frox/frox-0.7.18-r9.ebuild)57
-rw-r--r--net-ftp/frox/metadata.xml12
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-gcc15.patch16
-rw-r--r--net-ftp/ftp/ftp-0.17.34.0.2.5.1-r1.ebuild74
-rw-r--r--net-ftp/ftp/ftp-0.17.34.0.2.5.1-r2.ebuild (renamed from net-ftp/ftp/ftp-0.17.34.0.2.5.1.ebuild)38
-rw-r--r--net-ftp/ftp/metadata.xml4
-rw-r--r--net-ftp/gftp/Manifest2
-rw-r--r--net-ftp/gftp/files/patch-lib-pty.c25
-rw-r--r--net-ftp/gftp/files/signal.patch22
-rw-r--r--net-ftp/gftp/gftp-2.9.1b-r1.ebuild52
-rw-r--r--net-ftp/gftp/gftp-2.9.1b-r4.ebuild89
-rw-r--r--net-ftp/gftp/gftp-2.9.1b.ebuild41
-rw-r--r--net-ftp/gftp/metadata.xml4
-rw-r--r--net-ftp/proftpd/Manifest6
-rw-r--r--net-ftp/proftpd/files/contrib_mod_tlc_c.patch13
-rw-r--r--net-ftp/proftpd/files/mod_tls-1.3.8.patch171
-rw-r--r--net-ftp/proftpd/files/mod_tls.patch113
-rw-r--r--net-ftp/proftpd/files/proftpd-1.3.6_rc4-gss-refresh-api.patch60
-rw-r--r--net-ftp/proftpd/files/proftpd-1.3.6_rc4-msg-refresh-api.patch29
-rw-r--r--net-ftp/proftpd/files/proftpd-1.3.6_rc4-vroot-refresh-api.patch23
-rw-r--r--net-ftp/proftpd/files/proftpd-1.3.7a-tinfow-segv.patch197
-rw-r--r--net-ftp/proftpd/files/proftpd-1.3.8-configure-clang16.patch255
-rw-r--r--net-ftp/proftpd/files/proftpd-1.3.9-clamav-debool.patch82
-rw-r--r--net-ftp/proftpd/files/proftpd-1.3.9-clamav-refresh-api.patch24
-rw-r--r--net-ftp/proftpd/files/proftpd-1.3.9-fix_heimdal.patch151
-rw-r--r--net-ftp/proftpd/files/proftpd-1.3.9-gss-refresh-api.patch87
-rw-r--r--net-ftp/proftpd/files/proftpd-tmpfiles.d.conf1
-rw-r--r--net-ftp/proftpd/files/proftpd.initd51
-rw-r--r--net-ftp/proftpd/files/proftpd.initd-r12
-rw-r--r--net-ftp/proftpd/metadata.xml12
-rw-r--r--net-ftp/proftpd/proftpd-1.3.8c.ebuild298
-rw-r--r--net-ftp/proftpd/proftpd-1.3.9-r3.ebuild11
-rw-r--r--net-ftp/proftpd/proftpd-1.3.9a.ebuild44
-rw-r--r--net-ftp/pure-ftpd/files/pure-ftpd.conf_d-390
-rw-r--r--net-ftp/pure-ftpd/files/pure-ftpd.rc1175
-rw-r--r--net-ftp/pure-ftpd/metadata.xml19
-rw-r--r--net-ftp/pure-ftpd/pure-ftpd-1.0.53.ebuild49
-rw-r--r--net-ftp/pure-ftpd/pure-ftpd-1.0.54.ebuild49
-rw-r--r--net-ftp/pure-ftpd/pure-ftpd-9999.ebuild162
39 files changed, 1763 insertions, 747 deletions
diff --git a/net-ftp/frox/frox-0.7.18-r9.ebuild b/net-ftp/frox/frox-0.7.18-r7.ebuild
index 3600629b54f9..3cee46075dea 100644
--- a/net-ftp/frox/frox-0.7.18-r9.ebuild
+++ b/net-ftp/frox/frox-0.7.18-r7.ebuild
@@ -1,29 +1,26 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 2022 Liguros Authors
# Distributed under the terms of the GNU General Public License v2
-
EAPI=8
+inherit autotools
-inherit autotools toolchain-funcs
-
-DESCRIPTION="Transparent ftp proxy"
-HOMEPAGE="https://frox.sourceforge.net/"
-SRC_URI="https://frox.sourceforge.net/download/${P}.tar.bz2"
+DESCRIPTION="A transparent ftp proxy"
+SRC_URI="http://frox.sourceforge.net/download/${P}.tar.bz2"
+HOMEPAGE="https://sourceforge.net/projects/frox/"
-LICENSE="GPL-2+"
+LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ~ppc x86"
IUSE="clamav ssl transparent"
DEPEND="
- acct-group/ftpproxy
- acct-user/ftpproxy
clamav? ( >=app-antivirus/clamav-0.80 )
- kernel_linux? ( >=sys-kernel/linux-headers-2.6 )
ssl? (
- dev-libs/openssl:0=
- )
+ dev-libs/openssl:0
+ )
+ kernel_linux? ( >=sys-kernel/linux-headers-2.6 )
+ acct-group/ftpproxy
+ acct-user/ftpproxy
"
-
RDEPEND="${DEPEND}"
# INSTALL has useful filewall rules
@@ -49,8 +46,8 @@ src_prepare() {
eapply "${FILESDIR}/${P}-no-common.patch"
if use clamav ; then
- sed -e "s:^# VirusScanner.*:# VirusScanner '\"/usr/bin/clamscan\" \"%s\"':" \
- -i "src/${PN}.conf" || die
+ sed -i -e "s:^# VirusScanner.*:# VirusScanner '\"/usr/bin/clamscan\" \"%s\"':" \
+ "src/${PN}.conf" || die
fi
mv configure.in configure.ac || die
@@ -58,30 +55,24 @@ src_prepare() {
}
src_configure() {
- local myeconfargs=(
- --enable-http-cache --enable-local-cache
- --enable-procname
- --enable-configfile=/etc/frox.conf
- $(use_enable !kernel_linux libiptc)
- $(use_enable clamav virus-scan)
- $(use_enable ssl)
- $(use_enable transparent transparent-data)
+ econf \
+ --enable-http-cache --enable-local-cache \
+ --enable-procname \
+ --enable-configfile=/etc/frox.conf \
+ $(use_enable !kernel_linux libiptc) \
+ $(use_enable clamav virus-scan) \
+ $(use_enable ssl) \
+ $(use_enable transparent transparent-data) \
$(use_enable !transparent ntp)
- )
-
- econf "${myeconfargs[@]}"
-}
-
-src_compile() {
- emake AR="$(tc-getAR)"
}
src_install() {
default
- keepdir /var/log/"${PN}"
+ keepdir /var/{log,spool}/"${PN}"
- fowners ftpproxy:ftpproxy /var/log/frox
+ fperms 700 /var/spool/frox
+ fowners ftpproxy:ftpproxy /var/{log,spool}/frox
newman "doc/${PN}.man" "${PN}.man.8"
newman "doc/${PN}.conf.man" "${PN}.conf.man.5"
diff --git a/net-ftp/frox/metadata.xml b/net-ftp/frox/metadata.xml
index 00586fe62ae1..e5caa5583183 100644
--- a/net-ftp/frox/metadata.xml
+++ b/net-ftp/frox/metadata.xml
@@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
<pkgmetadata>
- <maintainer type="person" proxied="yes">
- <email>kabel@kernel.org</email>
- <name>Marek BehĂșn</name>
+ <maintainer type="project">
+ <email>dev@liguros.net</email>
+ <name>Development</name>
</maintainer>
- <maintainer type="project" proxied="proxy">
+ <maintainer type="person">
+ <email>kabel@blackhole.sk</email>
+ <name>Marek Behun</name>
+ </maintainer>
+ <maintainer type="project">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-gcc15.patch b/net-ftp/ftp/files/netkit-ftp-0.17-gcc15.patch
new file mode 100644
index 000000000000..90f4565920e4
--- /dev/null
+++ b/net-ftp/ftp/files/netkit-ftp-0.17-gcc15.patch
@@ -0,0 +1,16 @@
+diff --git a/ftp/cmds.c b/ftp/cmds.c
+index f0478fd..9622779 100644
+--- a/ftp/cmds.c
++++ b/ftp/cmds.c
+@@ -1052,9 +1052,9 @@ checkglob(int fd, const char *pattern)
+ }
+
+ static const char *
+-onoff(int bool)
++onoff(int opt)
+ {
+- return (bool ? "on" : "off");
++ return (opt ? "on" : "off");
+ }
+
+ /*
diff --git a/net-ftp/ftp/ftp-0.17.34.0.2.5.1-r1.ebuild b/net-ftp/ftp/ftp-0.17.34.0.2.5.1-r1.ebuild
new file mode 100644
index 000000000000..673fe0236c59
--- /dev/null
+++ b/net-ftp/ftp/ftp-0.17.34.0.2.5.1-r1.ebuild
@@ -0,0 +1,74 @@
+# Copyright 2021-2025 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+
+inherit flag-o-matic toolchain-funcs
+
+PATCH_VER="3"
+MY_PN="netkit-ftp"
+MY_PV="$(ver_cut 1-2)"
+MY_P="netkit-${PN}-${MY_PV}"
+DEB_PN="${MY_PN}-ssl"
+DEB_PV="$(ver_cut 1-3)+$(ver_cut 4-5)-$(ver_cut 6-7)"
+DESCRIPTION="Standard Linux FTP client"
+HOMEPAGE="https://wiki.linuxfoundation.org/networking/netkit"
+SRC_URI="ftp://sunsite.unc.edu/pub/Linux/system/network/netkit/${MY_P}.tar.gz
+ mirror://debian/pool/main/n/${DEB_PN}/${DEB_PN}_${DEB_PV}.debian.tar.xz
+ https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${MY_P}-patches-${PATCH_VER}.tar.bz2"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86"
+IUSE="ipv6 readline ssl"
+
+RDEPEND="
+ >=sys-libs/ncurses-5.2:=
+ readline? ( sys-libs/readline:0= )
+ ssl? (
+ dev-libs/openssl:0=
+ )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="sys-apps/grep"
+
+S=${WORKDIR}/${MY_P}
+
+PATCHES=( $FILESDIR/netkit-ftp-0.17-gcc15.patch )
+
+src_prepare() {
+ local p
+ for p in $(grep -v "^#" "${WORKDIR}"/debian/patches/series || die); do
+ eapply "${WORKDIR}/debian/patches/${p}"
+ done
+
+ eapply "${WORKDIR}"/patch
+ eapply "${FILESDIR}"/${PN}-0.17.34.0.2.5.1-musl-glob-brace.patch
+
+ sed -i \
+ -e 's:echo -n:printf %s :' \
+ configure || die
+
+ default
+}
+
+src_configure() {
+ append-lfs-flags #101038
+ tc-export CC
+ # not an autoconf script
+ ./configure \
+ --prefix=/usr \
+ $(use_enable ipv6) \
+ $(use_enable readline) \
+ $(use_enable ssl) \
+ || die
+
+ if use elibc_musl ; then
+ sed -i -e '/^LIBS=/ s/$/ -lobstack/' MCONFIG || die
+ fi
+}
+
+src_install() {
+ dobin ftp/ftp
+ doman ftp/ftp.1 ftp/netrc.5
+ dodoc ChangeLog README BUGS
+}
diff --git a/net-ftp/ftp/ftp-0.17.34.0.2.5.1.ebuild b/net-ftp/ftp/ftp-0.17.34.0.2.5.1-r2.ebuild
index ca63630adac2..ae15ec038419 100644
--- a/net-ftp/ftp/ftp-0.17.34.0.2.5.1.ebuild
+++ b/net-ftp/ftp/ftp-0.17.34.0.2.5.1-r2.ebuild
@@ -1,9 +1,8 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 2021-2025 Liguros Authors
# Distributed under the terms of the GNU General Public License v2
+EAPI=8
-EAPI=7
-
-inherit edo flag-o-matic toolchain-funcs
+inherit flag-o-matic toolchain-funcs
PATCH_VER="3"
MY_PN="netkit-ftp"
@@ -11,39 +10,40 @@ MY_PV="$(ver_cut 1-2)"
MY_P="netkit-${PN}-${MY_PV}"
DEB_PN="${MY_PN}-ssl"
DEB_PV="$(ver_cut 1-3)+$(ver_cut 4-5)-$(ver_cut 6-7)"
-
DESCRIPTION="Standard Linux FTP client"
HOMEPAGE="https://wiki.linuxfoundation.org/networking/netkit"
-SRC_URI="http://ftp.linux.org.uk/pub/linux/Networking/netkit/${MY_P}.tar.gz
- ftp://sunsite.unc.edu/pub/Linux/system/network/netkit/${MY_P}.tar.gz
+SRC_URI="ftp://sunsite.unc.edu/pub/Linux/system/network/netkit/${MY_P}.tar.gz
mirror://debian/pool/main/n/${DEB_PN}/${DEB_PN}_${DEB_PV}.debian.tar.xz
https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${MY_P}-patches-${PATCH_VER}.tar.bz2"
-S="${WORKDIR}"/${MY_P}
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86"
IUSE="ipv6 readline ssl"
RDEPEND="
>=sys-libs/ncurses-5.2:=
- elibc_musl? ( sys-libs/obstack-standalone )
- readline? ( sys-libs/readline:= )
- ssl? ( dev-libs/openssl:= )
+ readline? ( sys-libs/readline:0= )
+ ssl? (
+ dev-libs/openssl:0=
+ )
"
DEPEND="${RDEPEND}"
BDEPEND="sys-apps/grep"
+S=${WORKDIR}/${MY_P}
+
+PATCHES=( $FILESDIR/netkit-ftp-0.17-gcc15.patch )
+
src_prepare() {
local p
for p in $(grep -v "^#" "${WORKDIR}"/debian/patches/series || die); do
- eapply "${WORKDIR}"/debian/patches/${p}
+ eapply "${WORKDIR}/debian/patches/${p}"
done
eapply "${WORKDIR}"/patch
eapply "${FILESDIR}"/${PN}-0.17.34.0.2.5.1-musl-glob-brace.patch
- # Drop bashism from configure
sed -i \
-e 's:echo -n:printf %s :' \
configure || die
@@ -52,19 +52,19 @@ src_prepare() {
}
src_configure() {
- # bug #101038
- append-lfs-flags
+ append-lfs-flags #101038
tc-export CC
# bug #943875
append-cflags "-std=gnu17"
- # Not an autoconf script
- edo ./configure \
+ # not an autoconf script
+ ./configure \
--prefix=/usr \
$(use_enable ipv6) \
$(use_enable readline) \
- $(use_enable ssl)
+ $(use_enable ssl) \
+ || die
if use elibc_musl ; then
sed -i -e '/^LIBS=/ s/$/ -lobstack/' MCONFIG || die
diff --git a/net-ftp/ftp/metadata.xml b/net-ftp/ftp/metadata.xml
index f308c62eb267..cbc880a592a8 100644
--- a/net-ftp/ftp/metadata.xml
+++ b/net-ftp/ftp/metadata.xml
@@ -2,6 +2,10 @@
<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
+ <email>dev@liguros.net</email>
+ <name>Development</name>
+ </maintainer>
+ <maintainer type="project">
<email>base-system@gentoo.org</email>
<name>Gentoo Base System</name>
</maintainer>
diff --git a/net-ftp/gftp/Manifest b/net-ftp/gftp/Manifest
index d3f87b51fe19..446c2a6eda2b 100644
--- a/net-ftp/gftp/Manifest
+++ b/net-ftp/gftp/Manifest
@@ -1 +1 @@
-DIST gftp-2.9.1b.tar.xz 872308 BLAKE2B 3588321689a1c6d8e0585e0439507f774b30e05630f774d7909f32fd66c289a961602b84cde97377de47d0c63fe4cf5452ec1e0b986c578958a6080cf5814fc8 SHA512 31d0aa4d3c5adf3d9ac2c2517402f9bdcab5fb1187df521a978acf41c1997a120797056dd1ca7bedc32e0dec0ac7c06c1790e47821660277fb6572205ce0fe93
+DIST gftp-a7265eb958437fafc8b4d4e8f4fe960371723237.tar.gz 1548646 BLAKE2B 318485d949c66c21ad96977a9e2bbfa5e4cc0517635d5ec4c2c1995058913a59466ed22fe8380e6313900c8473c6874b1f1b182ca3cb8304c588805122609019 SHA512 5d3d940f99d580922d62906c9a64aa4be1c36de0f85697cbfc93454a3c21e6ce55599ea270a309a9b879f08a33a210f114a1cf0635b920a55a2cc37d389be612
diff --git a/net-ftp/gftp/files/patch-lib-pty.c b/net-ftp/gftp/files/patch-lib-pty.c
new file mode 100644
index 000000000000..9b0e8224fcc7
--- /dev/null
+++ b/net-ftp/gftp/files/patch-lib-pty.c
@@ -0,0 +1,25 @@
+--- lib/pty.c.orig 2022-02-15 06:31:19 UTC
++++ lib/pty.c
+@@ -91,7 +91,9 @@ _gftp_ptys_open (int fdm, int fds, char *pts_name)
+ #include <utmp.h> /* for login_tty */
+ #elif HAVE_LIBUTIL_H
+ #include <libutil.h>
+-#include <utmp.h> /* for login_tty */
++#else
++extern int openpty(int *amaster, int *aslave, char *name, struct termios *termp, struct winsize * winp);
++extern int login_tty(int fd);
+ #endif
+
+ char *
+@@ -118,8 +120,10 @@ _gftp_ptys_open (int fdm, int fds, char *pts_name)
+ static int
+ _gftp_ptys_open (int fdm, int fds, char *pts_name)
+ {
+- if (login_tty (fds) < 0)
++ if (login_tty (fds) < 0) {
++ close(fds);
+ return (GFTP_EFATAL);
++ }
+
+ return (fds);
+ }
diff --git a/net-ftp/gftp/files/signal.patch b/net-ftp/gftp/files/signal.patch
new file mode 100644
index 000000000000..fe5d2ff4bf51
--- /dev/null
+++ b/net-ftp/gftp/files/signal.patch
@@ -0,0 +1,22 @@
+From ab50ec131840339983ba152363323d7de15ecbaa Mon Sep 17 00:00:00 2001
+From: Adrian Bunk <bunk@debian.org>
+Date: Fri, 26 Sep 2025 22:17:20 +0300
+Subject: [PATCH] Fix building with GCC 15
+
+---
+ lib/pty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/pty.c b/lib/pty.c
+index 9c8494b..d87f428 100644
+--- a/lib/pty.c
++++ b/lib/pty.c
+@@ -36,7 +36,7 @@ static int
+ _gftp_ptym_open (char *pts_name, size_t len, int *fds)
+ {
+ char *new_pts_name;
+- void (*savesig)();
++ void (*savesig)(int);
+ int fdm;
+
+ if ((fdm = open ("/dev/ptmx", O_RDWR)) < 0)
diff --git a/net-ftp/gftp/gftp-2.9.1b-r1.ebuild b/net-ftp/gftp/gftp-2.9.1b-r1.ebuild
deleted file mode 100644
index ca2ceb50197b..000000000000
--- a/net-ftp/gftp/gftp-2.9.1b-r1.ebuild
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-inherit gnome2
-
-DESCRIPTION="a free multithreaded file transfer client"
-HOMEPAGE="https://github.com/masneyb/gftp"
-SRC_URI="https://github.com/masneyb/gftp/releases/download/${PV}/${P}.tar.xz"
-
-# Override gnome.org.eclass's S= (bug #904064)
-S="${WORKDIR}/${P}"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="~alpha amd64 ~arm64 ppc ppc64 ~riscv ~sparc x86"
-IUSE="gtk ssl"
-
-RDEPEND="
- dev-libs/glib:2
- sys-libs/ncurses:0=
- sys-libs/readline:0
- gtk? ( x11-libs/gtk+:2 )
- ssl? ( dev-libs/openssl:0= )
-"
-DEPEND="${RDEPEND}"
-BDEPEND="
- sys-devel/gettext
- virtual/pkgconfig
-"
-
-PATCHES=(
- # https://github.com/masneyb/gftp/issues/178
- "${FILESDIR}"/"${P}"-fix-socklen-type.patch
-)
-
-src_prepare() {
- gnome2_src_prepare
- # https://github.com/masneyb/gftp/issues/181
- sed -i -e 's/Icon=gftp.png/Icon=gftp/' docs/gftp.desktop || die
-}
-
-src_configure() {
- gnome2_src_configure \
- $(use_enable gtk gtkport) \
- $(use_enable ssl)
-}
-
-src_install() {
- gnome2_src_install
- dodoc docs/USERS-GUIDE
-}
diff --git a/net-ftp/gftp/gftp-2.9.1b-r4.ebuild b/net-ftp/gftp/gftp-2.9.1b-r4.ebuild
new file mode 100644
index 000000000000..d387339dec1c
--- /dev/null
+++ b/net-ftp/gftp/gftp-2.9.1b-r4.ebuild
@@ -0,0 +1,89 @@
+# Copyright 2021-2025 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+inherit flag-o-matic gnome2 meson
+
+DESCRIPTION="a free multithreaded file transfer client"
+HOMEPAGE="https://github.com/masneyb/gftp"
+GIT_COMMIT="a7265eb958437fafc8b4d4e8f4fe960371723237"
+SRC_URI="https://github.com/masneyb/gftp/archive/${GIT_COMMIT}.tar.gz -> ${PN}-${GIT_COMMIT}.tar.gz"
+
+# Override gnome.org.eclass's S= (bug #904064)
+S="${WORKDIR}/${PN}-${GIT_COMMIT}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm64 ppc ppc64 ~riscv sparc x86"
+IUSE="gtk gtk2 gtk3 ssl"
+REQUIRED_USE="gtk? ( || ( gtk2 gtk3 ) )"
+
+RDEPEND="
+ dev-libs/glib:2
+ sys-libs/ncurses:0=
+ sys-libs/readline:0
+ gtk? (
+ gtk2? ( x11-libs/gtk+:2 )
+ gtk3? ( x11-libs/gtk+:3 )
+ )
+ ssl? (
+ dev-libs/openssl:0=
+ )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ sys-devel/gettext
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ # https://github.com/masneyb/gftp/issues/178
+ "${FILESDIR}"/"${P}"-fix-socklen-type.patch
+)
+
+src_prepare() {
+ gnome2_src_prepare
+ # https://github.com/masneyb/gftp/issues/181
+ sed -i -e 's/Icon=gftp.png/Icon=gftp/' docs/gftp.desktop || die
+ eapply -p0 ${FILESDIR}/patch-lib-pty.c
+}
+
+src_configure() {
+ local emesonargs=(
+ $(meson_use ssl)
+ )
+
+ if use gtk; then
+ local emesonargs+=(
+ $(meson_use gtk2)
+ $(meson_use gtk3)
+ -Dgtkport=true
+ -Dtextport=false
+ -Dgtkwarnings=true
+ )
+ else
+ local emesonargs+=(
+ $(meson_use gtk2)
+ -Dgtkport=false
+ -Dtextport=true
+ -Dgtkwarnings=false
+ )
+ fi
+
+ meson_src_configure
+# gnome2_src_configure \
+# $(use_enable gtk gtkport) \
+# $(use_enable ssl)
+}
+
+src_compile() {
+ append-cxxflags -Wno-error=incompatible-pointer-types
+ append-cflags -Wno-error=incompatible-pointer-types
+# default
+ meson_src_compile
+}
+
+src_install() {
+ meson_src_install
+ #gnome2_src_install
+ dodoc docs/USERS-GUIDE
+}
diff --git a/net-ftp/gftp/gftp-2.9.1b.ebuild b/net-ftp/gftp/gftp-2.9.1b.ebuild
deleted file mode 100644
index 0166dd9a66ae..000000000000
--- a/net-ftp/gftp/gftp-2.9.1b.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-inherit gnome2
-
-DESCRIPTION="a free multithreaded file transfer client"
-SRC_URI="https://github.com/masneyb/gftp/releases/download/${PV}/${P}.tar.xz"
-HOMEPAGE="https://github.com/masneyb/gftp"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="~alpha amd64 ~arm64 ppc ppc64 ~riscv ~sparc x86"
-IUSE="gtk ssl"
-
-RDEPEND="
- dev-libs/glib:2
- sys-libs/ncurses:0=
- sys-libs/readline:0
- gtk? ( x11-libs/gtk+:2 )
- ssl? ( dev-libs/openssl:0= )
-"
-DEPEND="${RDEPEND}"
-BDEPEND="
- sys-devel/gettext
- virtual/pkgconfig
-"
-
-# Override gnome.org.eclass's S= (bug #904064)
-S="${WORKDIR}/${P}"
-
-src_configure() {
- gnome2_src_configure \
- $(use_enable gtk gtkport) \
- $(use_enable ssl)
-}
-
-src_install() {
- gnome2_src_install
- dodoc docs/USERS-GUIDE
-}
diff --git a/net-ftp/gftp/metadata.xml b/net-ftp/gftp/metadata.xml
index f6b6cde5f785..df791650e113 100644
--- a/net-ftp/gftp/metadata.xml
+++ b/net-ftp/gftp/metadata.xml
@@ -2,6 +2,10 @@
<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
+ <email>dev@liguros.net</email>
+ <name>Development</name>
+ </maintainer>
+ <maintainer type="project">
<email>gnome@gentoo.org</email>
<name>Gentoo GNOME Desktop</name>
</maintainer>
diff --git a/net-ftp/proftpd/Manifest b/net-ftp/proftpd/Manifest
index 1ae42b349b45..f295dc0e8e04 100644
--- a/net-ftp/proftpd/Manifest
+++ b/net-ftp/proftpd/Manifest
@@ -3,7 +3,11 @@ DIST mod_diskuse-0.9.1.tar.gz 72314 BLAKE2B e80d196cd1d7ca2defed7baf9bc2d31ac85b
DIST mod_gss-1.3.9.tar.gz 117158 BLAKE2B f957fa465f9a9b06ceb9c190ab60c7f67fdeeef79dce7f51bcfed8dc726cb01a231232c65821ca3a240b77a5019fa22f31b45496c128a06627bd24dc960b566f SHA512 44615983b0f67939b110e54c4a83b3056263bad72ba78de1b16f9f8590f5504c60e679f55484708d49e694c528d4715d9abd0cb75cfe439982ea9e02e0c18891
DIST mod_msg-0.5.1.tar.gz 9689 BLAKE2B fc0cbcfa341c6339be4b064db9ea8860da91c22eeee91c77fd03581e49ebbce3fcd3a27a17da85d782286c6d329e12e7237ee7cbfb70ecc1d4d32bb21f0f74e2 SHA512 729261b151a98bc971c825e88131026725aa4f4fc161adc162af8c4c3c8a457bd981308aea20fe6a1b8711b26c63a17b8d40434ef00bc45504a7c9c2a9cbe4bf
DIST mod_vroot-0.9.12.tar.gz 112717 BLAKE2B 60a59539ff9db190432a807f88236e37ab42aea0510903586ff19a00ba9d2e118b58460bdef271f6de8f2b022411484d5fe6610d66552948a9ff459ddda45343 SHA512 a84c14b9d05c4890abe50c86f832c91fa4d0971bc2b1866a3a34d73ff85acd1e902fc0cae739e22ea46e530c73230fb005ea9edeb68fd6cfb963e0c5ca9655ec
+DIST mod_vroot-0.9.4.tar.gz 29461 BLAKE2B eb4d3f6425ab0a1a61ca607e4655b5f8ff6ea342ca49d49598e7a4c5596382aa2c1d4e8228a1cdcfff324feb92dac80fcc58e35bbb77155069749afdd7cc41fb SHA512 f5de392c9fe39f0a03b0783a7092bbfe17ea6db991f4b4e4a2d8f092f073d27ef2c64dd6484d5665b5abc808c0caba016d4fc3fab3da3810f5ebe5249bb4cbce
+DIST proftpd-1.3.8c.tar.gz 19751847 BLAKE2B 6a39eb50c921a68cdf73fae444e7d7850a22a76ce771702b617810e7ff6ae451f52521f5ff01fb9c2d91304e34c0e6dbb07fda6a07f0af477fe2ca0babb8bee7 SHA512 fccf8577afc748e8416feb3879616f0f829ef777b7a8effabc18a6810213241d370a0e64dfbc754728c21ddd07c072f7f3a05dcebc517a4ba6790638091007fb
DIST proftpd-1.3.9.tar.gz 19837398 BLAKE2B 30ad60148de79cd4198791ce89dc6c2204c75cb0966f7f17a0fefe25bf4678dd8ea7d373469fbf02f670ae0ca6879f4371ef97a65f4875ad131930d49d800b6f SHA512 5cc53d7909f8b45718509b547aeffaf027cec66b1c34ed9f3a7de1ba561f9ca3d51bb991edb24c8f833bb47e0131619850a4bfd4fec509505769d123e78dc8b3
DIST proftpd-1.3.9a.tar.gz 19850748 BLAKE2B f024e1f112f326ebe11d1d478af258e43e4d506a01a025b6f6fa4096a19ac44f1913154489c9cd203e906ac9091806e2f2b3869c0db6b094fb960b6e6d3b4092 SHA512 217780522a9366dd16c678ab4ca3de8a6079482a0d68d2f0ab7869d0f8aba4982d0cb0105821f52c8d2fca6f76b3156da70bdbb7d01ac96ad5c16f99f33fdd76
-DIST proftpd-1.3.9a.tar.gz.asc 195 BLAKE2B 8b3f7f2fe2cc906d2804247de0b33ace669f6e0d43a99de592aaf82358c322bd42db95c23ae9bb8096702916bc42e639b6a9e8a99f7a1652731889f5a8cb5927 SHA512 6c8c872dea409745b89c5e225a421c67c3f655629d4432d03e7a55c9d4ee7921e43e8cc982743a1b32b5f3ee5e2b04467ea01237005e95cdd7add18749a9c2e4
+DIST proftpd-mod-case-0.7.tar.gz 13184 BLAKE2B bf2118d9b8ed97a5b192b92b515d17ac7a0d75e154288e5afb3a1c3d686e635093df9501cc1c9b077f87c14326e31e8b9f751803dfca1eae9643f12333eb633f SHA512 c08d13ef82fec36ae75aa3213dd02e0ce4045904849f422e152f039a9da66a45e4423751074b8bcf8ce347a40ce0e7bde798a85cbadc962fd872aeaa898261fc
+DIST proftpd-mod-diskuse-0.9.tar.gz 18596 BLAKE2B 38c704c8607f0f93b080e77fe793cfe0125c88acc6f818ecb059c6c21a983e040ff5f2c1b91e34ef4ba2666a808d896018c364d1f12ea38f0c477e79bdaa2120 SHA512 d41976bf2810e4b783e775e8c767ca2030c3b5df116219fd31cbbac7feaf9922c315bf4ea092881b0d6cf43f2f4c5dbcae61be3c3a833058d12f962a3024b975
+DIST proftpd-mod-msg-0.4.1.tar.gz 8082 BLAKE2B 970b46b19d25bac22ecb01495270a523997a0b7d5b53b9470b4744b919adcf03d5bcee2df85ba88c4a4c20a9fc30dc01459ffb58c5dae8e78a52a7379bf36f11 SHA512 38ea63b1d355e1e10a6a4477596bf3fa28529a871c9fb8dbf093b5317f0743ef9cb59b986d0b8c1c7ed932dad5d5d571883d596fad2d3b793431824db4487012
DIST proftpd-mod_clamav-0.14rc2.tar.gz 19710 BLAKE2B 3435e198cf029337904d4666910414124a3b7e1529d4b12f7acd8a9be563009fff4d9a30eb132a2d7361d2c830e5601c4a00a8814282585b6915e991cc29bc13 SHA512 b8e56880fadf36513215fa4c20be6db7cdf1274337072a9b29c3c3477b3de4743ebcdb1179572ec4cb1501fac0064330c855b1f818bf0cc52f0e91170f059772
diff --git a/net-ftp/proftpd/files/contrib_mod_tlc_c.patch b/net-ftp/proftpd/files/contrib_mod_tlc_c.patch
new file mode 100644
index 000000000000..599bc4a30082
--- /dev/null
+++ b/net-ftp/proftpd/files/contrib_mod_tlc_c.patch
@@ -0,0 +1,13 @@
+diff '--color=auto' -urN proftpd-1.3.8b.orig/contrib/mod_tls.c proftpd-1.3.8b/contrib/mod_tls.c
+--- proftpd-1.3.8b.orig/contrib/mod_tls.c 2024-10-16 18:27:10.953120250 +0200
++++ proftpd-1.3.8b/contrib/mod_tls.c 2024-10-16 18:27:46.126564089 +0200
+@@ -1157,8 +1157,7 @@
+ !defined(HAVE_LIBRESSL)
+ if (ssl_state == TLS_ST_SR_CLNT_HELLO) {
+ #else
+- if (ssl_state == SSL3_ST_SR_CLNT_HELLO_A ||
+- ssl_state == SSL23_ST_SR_CLNT_HELLO_A) {
++ if (ssl_state == SSL3_ST_SR_CLNT_HELLO_A ) {
+ #endif /* OpenSSL-1.1.x and later */
+
+ if (tls_opts & TLS_OPT_ENABLE_DIAGS) {
diff --git a/net-ftp/proftpd/files/mod_tls-1.3.8.patch b/net-ftp/proftpd/files/mod_tls-1.3.8.patch
new file mode 100644
index 000000000000..4061d9a26d58
--- /dev/null
+++ b/net-ftp/proftpd/files/mod_tls-1.3.8.patch
@@ -0,0 +1,171 @@
+diff -urN proftpd-1.3.8.orig/contrib/mod_tls.c proftpd-1.3.8/contrib/mod_tls.c
+--- proftpd-1.3.8.orig/contrib/mod_tls.c 2023-06-26 19:07:39.590914202 +0200
++++ proftpd-1.3.8/contrib/mod_tls.c 2023-06-26 19:15:52.147881331 +0200
+@@ -45,6 +45,9 @@
+ /* Define if you have the LibreSSL library. */
+ #if defined(LIBRESSL_VERSION_NUMBER)
+ # define HAVE_LIBRESSL 1
++#define SSL_KEY_UPDATE_NONE -1
++#define SSL_KEY_UPDATE_NOT_REQUESTED 0
++#define SSL_KEY_UPDATE_REQUESTED 1
+ #endif
+
+ /* Note that the openssl/ssl.h header is already included in mod_tls.h, so
+@@ -100,8 +103,7 @@
+ return NULL;
+ }
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ if (DH_set0_pqg(dh, p, NULL, g) != 1) {
+ pr_trace_msg(trace_channel, 3, "error setting DH p/q parameters: %s",
+ ERR_error_string(ERR_get_error(), NULL));
+@@ -120,8 +122,7 @@
+ pem_password_cb *cb;
+ void *cb_data;
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ cb = SSL_CTX_get_default_passwd_cb(ctx);
+ cb_data = SSL_CTX_get_default_passwd_cb_userdata(ctx);
+ #else
+@@ -4030,7 +4031,7 @@
+ int ctrl_renegotiated = FALSE;
+
+ switch (SSL_version(ctrl_ssl)) {
+-# if defined(TLS1_3_VERSION)
++# if defined(TLS1_3_VERSION) && !defined(LIBRESSL_VERSION_NUMBER)
+ case TLS1_3_VERSION:
+ if (SSL_get_key_update_type(ctrl_ssl) == SSL_KEY_UPDATE_NONE) {
+ ctrl_renegotiated = TRUE;
+@@ -4066,7 +4067,7 @@
+
+ ssl = (SSL *) pr_table_get(tls_data_wr_nstrm->notes, TLS_NETIO_NOTE, NULL);
+ switch (SSL_version(ssl)) {
+-# if defined(TLS1_3_VERSION)
++# if defined(TLS1_3_VERSION) && !defined(LIBRESSL_VERSION_NUMBER)
+ case TLS1_3_VERSION:
+ if (SSL_get_key_update_type(ssl) == SSL_KEY_UPDATE_NONE) {
+ data_renegotiated = TRUE;
+@@ -4106,7 +4107,7 @@
+
+ if (tls_flags & TLS_SESS_ON_CTRL) {
+ switch (SSL_version(ctrl_ssl)) {
+-#if defined(TLS1_3_VERSION)
++#if defined(TLS1_3_VERSION) && !defined(LIBRESSL_VERSION_NUMBER)
+ /* If we're a TLSv1.3 session, use SSL_key_update() to request new
+ * session keys; TLSv1.3 does not support renegotiations.
+ */
+@@ -4533,8 +4534,7 @@
+ ctx = SSL_get_SSL_CTX(ssl);
+ ctx_options = SSL_CTX_get_options(ctx);
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ sess_version = SSL_SESSION_get_protocol_version(sess);
+ #else
+ sess_version = sess->ssl_version;
+@@ -5716,8 +5716,7 @@
+ return resp;
+ }
+
+-#if OPENSSL_VERSION_NUMBER < 0x10002000L || \
+- defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER < 0x10002000L
+ /* We need to provide our own backport of the ASN1_TIME_diff() function. */
+ static time_t ASN1_TIME_seconds(const ASN1_TIME *a) {
+ static const int min[9] = { 0, 0, 1, 1, 0, 0, 0, 0, 0 };
+@@ -6188,8 +6187,7 @@
+ register int i;
+ int ext_count = 0, must_staple = FALSE;
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ ext_count = X509_get_ext_count(cert);
+ #else
+ X509_CINF *ci;
+@@ -6209,8 +6207,7 @@
+ X509_EXTENSION *ext;
+ ASN1_OBJECT *obj;
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ ext = X509_get_ext(cert, i);
+ #else
+ ext = sk_X509_EXTENSION_value(exts, i);
+@@ -6225,8 +6222,7 @@
+ char status_request[] = TLS_X509V3_TLS_FEAT_STATUS_REQUEST;
+ ASN1_OCTET_STRING *value;
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ value = X509_EXTENSION_get_data(ext);
+ #else
+ value = ext->value;
+@@ -7893,7 +7889,11 @@
+ case SSL_R_VERSION_TOO_LOW: {
+ int client_version;
+
++#if defined(HAVE_LIBRESSL)
++ client_version = SSL_get_version(ssl);
++#else
+ client_version = SSL_client_version(ssl);
++#endif
+ switch (client_version) {
+ # if defined(SSL3_VERSION) && defined(OPENSSL_NO_SSL3)
+ case SSL3_VERSION:
+@@ -9305,8 +9305,7 @@
+
+ pr_signals_handle();
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ X509_get0_signature(&client_sig, NULL, client_cert);
+ X509_get0_signature(&file_sig, NULL, file_cert);
+ #else
+@@ -10019,8 +10018,7 @@
+ BIO_free(bio);
+
+ bio = BIO_new(BIO_s_mem());
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ X509_get0_signature(NULL, &algo, cert);
+ #else
+ algo = cert->cert_info->signature;
+@@ -10606,8 +10604,7 @@
+ if (revoked == NULL) {
+ continue;
+ }
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ sn = X509_REVOKED_get0_serialNumber(revoked);
+ #else
+ sn = revoked->serialNumber;
+@@ -10872,8 +10869,7 @@
+ return FALSE;
+ }
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ store = X509_STORE_CTX_get0_store(ctx);
+ #else
+ store = ctx->ctx;
+@@ -12345,7 +12341,7 @@
+ tls_data_renegotiate_current >= tls_data_renegotiate_limit) {
+
+ switch (SSL_version(ssl)) {
+-# if defined(TLS1_3_VERSION)
++# if defined(TLS1_3_VERSION) && !defined(LIBRESSL_VERSION_NUMBER)
+ /* If we're a TLSv1.3 session, use SSL_key_update() to request new
+ * session keys; TLSv1.3 does not support renegotiations.
+ */
diff --git a/net-ftp/proftpd/files/mod_tls.patch b/net-ftp/proftpd/files/mod_tls.patch
new file mode 100644
index 000000000000..e63858292df8
--- /dev/null
+++ b/net-ftp/proftpd/files/mod_tls.patch
@@ -0,0 +1,113 @@
+diff -urN proftpd-1.3.7c.orig/contrib/mod_tls.c proftpd-1.3.7c/contrib/mod_tls.c
+--- proftpd-1.3.7c.orig/contrib/mod_tls.c 2022-04-03 23:58:29.354937570 +0200
++++ proftpd-1.3.7c/contrib/mod_tls.c 2022-04-03 23:59:14.142934581 +0200
+@@ -97,8 +97,7 @@
+ return NULL;
+ }
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ if (DH_set0_pqg(dh, p, NULL, g) != 1) {
+ pr_trace_msg(trace_channel, 3, "error setting DH p/q parameters: %s",
+ ERR_error_string(ERR_get_error(), NULL));
+@@ -117,8 +116,7 @@
+ pem_password_cb *cb;
+ void *cb_data;
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ cb = SSL_CTX_get_default_passwd_cb(ctx);
+ cb_data = SSL_CTX_get_default_passwd_cb_userdata(ctx);
+ #else
+@@ -4308,8 +4306,7 @@
+ ctx = SSL_get_SSL_CTX(ssl);
+ ctx_options = SSL_CTX_get_options(ctx);
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ sess_version = SSL_SESSION_get_protocol_version(sess);
+ #else
+ sess_version = sess->ssl_version;
+@@ -5487,8 +5484,7 @@
+ return resp;
+ }
+
+-#if OPENSSL_VERSION_NUMBER < 0x10002000L || \
+- defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER < 0x10002000L
+ /* We need to provide our own backport of the ASN1_TIME_diff() function. */
+ static time_t ASN1_TIME_seconds(const ASN1_TIME *a) {
+ static const int min[9] = { 0, 0, 1, 1, 0, 0, 0, 0, 0 };
+@@ -5959,8 +5955,7 @@
+ register int i;
+ int ext_count = 0, must_staple = FALSE;
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ ext_count = X509_get_ext_count(cert);
+ #else
+ X509_CINF *ci;
+@@ -5980,8 +5975,7 @@
+ X509_EXTENSION *ext;
+ ASN1_OBJECT *obj;
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ ext = X509_get_ext(cert, i);
+ #else
+ ext = sk_X509_EXTENSION_value(exts, i);
+@@ -5996,8 +5990,7 @@
+ char status_request[] = TLS_X509V3_TLS_FEAT_STATUS_REQUEST;
+ ASN1_OCTET_STRING *value;
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ value = X509_EXTENSION_get_data(ext);
+ #else
+ value = ext->value;
+@@ -9065,8 +9058,7 @@
+
+ pr_signals_handle();
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ X509_get0_signature(&client_sig, NULL, client_cert);
+ X509_get0_signature(&file_sig, NULL, file_cert);
+ #else
+@@ -9722,8 +9714,7 @@
+ BIO_free(bio);
+
+ bio = BIO_new(BIO_s_mem());
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ X509_get0_signature(NULL, &algo, cert);
+ #else
+ algo = cert->cert_info->signature;
+@@ -10258,8 +10249,7 @@
+ if (revoked == NULL) {
+ continue;
+ }
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ sn = X509_REVOKED_get0_serialNumber(revoked);
+ #else
+ sn = revoked->serialNumber;
+@@ -10524,8 +10514,7 @@
+ return FALSE;
+ }
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+- !defined(HAVE_LIBRESSL)
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+ store = X509_STORE_CTX_get0_store(ctx);
+ #else
+ store = ctx->ctx;
diff --git a/net-ftp/proftpd/files/proftpd-1.3.6_rc4-gss-refresh-api.patch b/net-ftp/proftpd/files/proftpd-1.3.6_rc4-gss-refresh-api.patch
new file mode 100644
index 000000000000..43cc659e47dc
--- /dev/null
+++ b/net-ftp/proftpd/files/proftpd-1.3.6_rc4-gss-refresh-api.patch
@@ -0,0 +1,60 @@
+diff --git a/mod_auth_gss.c.in b/mod_auth_gss.c.in
+index 6228b4d..3569ebb 100644
+--- a/mod_auth_gss.c.in
++++ b/mod_auth_gss.c.in
+@@ -38,6 +38,10 @@
+ */
+
+ #include "mod_gss.h"
++
++#define DECLINED PR_DECLINED
++#define ERROR_INT PR_ERROR_INT
++
+ extern unsigned char gss_engine;
+ extern unsigned long gss_flags;
+ extern int gss_logfd;
+diff --git a/mod_gss.c.in b/mod_gss.c.in
+index 9d2d4c8..83a4019 100644
+--- a/mod_gss.c.in
++++ b/mod_gss.c.in
+@@ -57,6 +57,13 @@
+
+ #include "mod_gss.h"
+
++#define LOG_SYMLINK PR_LOG_SYMLINK
++#define LOG_WRITEABLE_DIR PR_LOG_WRITABLE_DIR
++#define HANDLED PR_HANDLED
++#define ERROR PR_ERROR
++#define DECLINED PR_DECLINED
++#define ERROR_INT PR_ERROR_INT
++
+ module gss_module;
+
+ /* Module variables maybe used externaly */
+@@ -1395,7 +1402,7 @@ MODRET gss_auth(cmd_rec *cmd) {
+
+ /* Convert the parameter to upper case */
+ for (i = 0; i < strlen(cmd->argv[1]); i++)
+- (cmd->argv[1])[i] = toupper((cmd->argv[1])[i]);
++ ((char*)cmd->argv[1])[i] = toupper(((char*)cmd->argv[1])[i]);
+
+ if (!strcmp(cmd->argv[1], "GSSAPI")) {
+ pr_response_send(R_334, "Using authentication type %s; ADAT must follow", cmd->argv[1]);
+@@ -2014,7 +2021,7 @@ MODRET gss_prot(cmd_rec *cmd) {
+
+ /* Convert the parameter to upper case */
+ for (i = 0; i < strlen(cmd->argv[1]); i++)
+- (cmd->argv[1])[i] = toupper((cmd->argv[1])[i]);
++ ((char*)cmd->argv[1])[i] = toupper(((char*)cmd->argv[1])[i]);
+
+ /* Only PROT S , PROT C or PROT P is valid with respect to GSS. */
+ if (!strcmp(cmd->argv[1], "C")) {
+@@ -2098,7 +2105,7 @@ MODRET set_gsskeytab(cmd_rec *cmd) {
+ if (!file_exists(cmd->argv[1]))
+ CONF_ERROR(cmd, "file does not exist");
+
+- if (*cmd->argv[1] != '/')
++ if (((char*)(*cmd->argv))[1] != '/')
+ CONF_ERROR(cmd, "parameter must be an absolute path");
+
+ add_config_param_str(cmd->argv[0], 1, cmd->argv[1]);
diff --git a/net-ftp/proftpd/files/proftpd-1.3.6_rc4-msg-refresh-api.patch b/net-ftp/proftpd/files/proftpd-1.3.6_rc4-msg-refresh-api.patch
new file mode 100644
index 000000000000..2e90be254cb6
--- /dev/null
+++ b/net-ftp/proftpd/files/proftpd-1.3.6_rc4-msg-refresh-api.patch
@@ -0,0 +1,29 @@
+diff --git a/mod_msg.c b/mod_msg.c
+index 70bce69..4ce6bd7 100644
+--- a/mod_msg.c
++++ b/mod_msg.c
+@@ -52,10 +52,14 @@ extern pid_t mpid;
+
+ module msg_module;
+
+-#ifndef USE_CTRLS
++#ifndef PR_USE_CTRLS
+ # error "mod_msg requires Controls support (--enable-ctrls)"
+ #endif /* USE_CTRLS */
+
++#define pr_scoreboard_read_entry pr_scoreboard_entry_read
++#define DECLINED PR_DECLINED
++#define HANDLED PR_HANDLED
++
+ static ctrls_acttab_t msg_acttab[];
+
+ static int msg_engine = FALSE;
+@@ -709,7 +713,7 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
+ if (msg_send_msg(score->sce_pid, msgstr) < 0) {
+ msg_errno = errno;
+ (void) pr_log_writefile(msg_logfd, MOD_MSG_VERSION,
+- "error sending message to all (pid %u): %s", reqargv[1],
++ "error sending message to all (pid %u): %s",
+ score->sce_pid, strerror(errno));
+
+ } else
diff --git a/net-ftp/proftpd/files/proftpd-1.3.6_rc4-vroot-refresh-api.patch b/net-ftp/proftpd/files/proftpd-1.3.6_rc4-vroot-refresh-api.patch
new file mode 100644
index 000000000000..59b96ce90027
--- /dev/null
+++ b/net-ftp/proftpd/files/proftpd-1.3.6_rc4-vroot-refresh-api.patch
@@ -0,0 +1,23 @@
+diff --git a/mod_vroot.c b/mod_vroot.c
+index b0ce59a..db0df35 100644
+--- a/mod_vroot.c
++++ b/mod_vroot.c
+@@ -1515,7 +1515,7 @@ MODRET set_vrootserverroot(cmd_rec *cmd) {
+ */
+
+ pathlen = strlen(cmd->argv[1]);
+- if (cmd->argv[1][pathlen - 1] != '/') {
++ if (((char*)cmd->argv[1])[pathlen - 1] != '/') {
+ c->argv[0] = pstrcat(c->pool, cmd->argv[1], "/", NULL);
+
+ } else {
+@@ -1648,7 +1648,9 @@ MODRET vroot_pre_pass(cmd_rec *cmd) {
+ fs->rename = vroot_rename;
+ fs->unlink = vroot_unlink;
+ fs->open = vroot_open;
++#if ! PROFTPD_VERSION_NUMBER >= 0x0001030604
+ fs->creat = vroot_creat;
++#endif /* before ProFTPD 1.3.6_rc4 */
+ fs->link = vroot_link;
+ fs->readlink = vroot_readlink;
+ fs->symlink = vroot_symlink;
diff --git a/net-ftp/proftpd/files/proftpd-1.3.7a-tinfow-segv.patch b/net-ftp/proftpd/files/proftpd-1.3.7a-tinfow-segv.patch
new file mode 100644
index 000000000000..b904c5dbe5ae
--- /dev/null
+++ b/net-ftp/proftpd/files/proftpd-1.3.7a-tinfow-segv.patch
@@ -0,0 +1,197 @@
+https://github.com/proftpd/proftpd/commit/ff413723328da726d1042c7d2067d088765eca57
+https://bugs.gentoo.org/777432
+
+From ff413723328da726d1042c7d2067d088765eca57 Mon Sep 17 00:00:00 2001
+From: TJ Saunders <tj@castaglia.org>
+Date: Sun, 14 Mar 2021 10:08:02 -0700
+Subject: [PATCH] Issue #1174: Check for the libtinfow library when ncursesw is
+ being used.
+
+On some systems, such as Gentoo, linking against libtinfo with libncursesw,
+rather than libtinfow, leads to segfaults.
+---
+ config.h.in | 3 ++
+ configure | 98 +++++++++++++++++++++++++++++++++++++++++++++++++---
+ configure.in | 24 +++++++++----
+ 3 files changed, 114 insertions(+), 11 deletions(-)
+
+diff --git a/config.h.in b/config.h.in
+index 1ba33caf9..775b7a294 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -966,6 +966,9 @@
+ /* Define if you have the libtinfo library (-ltinfo). */
+ #undef HAVE_LIBTINFO
+
++/* Define if you have the libtinfow library (-ltinfow). */
++#undef HAVE_LIBTINFOW
++
+ /* Define if you have the addrinfo struct. */
+ #undef HAVE_STRUCT_ADDRINFO
+
+diff --git a/configure b/configure
+index 64080483f..86cf1360e 100755
+--- a/configure
++++ b/configure
+@@ -23169,18 +23169,106 @@ $as_echo "#define PR_USE_CURSES 1" >>confdefs.h
+ fi
+
+ if test x"$enable_ncurses" != xno ; then
++
+ if test x"$pr_have_ncursesw" = xyes ; then
+
+ $as_echo "#define PR_USE_NCURSESW 1" >>confdefs.h
+
+- else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for halfdelay in -ltinfow" >&5
++$as_echo_n "checking for halfdelay in -ltinfow... " >&6; }
++if ${ac_cv_lib_tinfow_halfdelay+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ltinfow $LIBS"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
+
+-$as_echo "#define PR_USE_NCURSES 1" >>confdefs.h
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
++#ifdef __cplusplus
++extern "C"
++#endif
++char halfdelay ();
++int
++main ()
++{
++return halfdelay ();
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"; then :
++ ac_cv_lib_tinfow_halfdelay=yes
++else
++ ac_cv_lib_tinfow_halfdelay=no
++fi
++rm -f core conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfow_halfdelay" >&5
++$as_echo "$ac_cv_lib_tinfow_halfdelay" >&6; }
++if test "x$ac_cv_lib_tinfow_halfdelay" = xyes; then :
++ UTILS_LIBS="$UTILS_LIBS -ltinfow"
+
+- fi
++$as_echo "#define HAVE_LIBTINFOW 1" >>confdefs.h
++
++
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for halfdelay in -ltinfo" >&5
++$as_echo_n "checking for halfdelay in -ltinfo... " >&6; }
++if ${ac_cv_lib_tinfo_halfdelay+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-ltinfo $LIBS"
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
++#ifdef __cplusplus
++extern "C"
++#endif
++char halfdelay ();
++int
++main ()
++{
++return halfdelay ();
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"; then :
++ ac_cv_lib_tinfo_halfdelay=yes
++else
++ ac_cv_lib_tinfo_halfdelay=no
++fi
++rm -f core conftest.err conftest.$ac_objext \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
+ fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_halfdelay" >&5
++$as_echo "$ac_cv_lib_tinfo_halfdelay" >&6; }
++if test "x$ac_cv_lib_tinfo_halfdelay" = xyes; then :
++ UTILS_LIBS="$UTILS_LIBS -ltinfo"
++
++$as_echo "#define HAVE_LIBTINFO 1" >>confdefs.h
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for halfdelay in -ltinfo" >&5
++
++fi
++
++
++fi
++
++ else
++
++$as_echo "#define PR_USE_NCURSES 1" >>confdefs.h
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for halfdelay in -ltinfo" >&5
+ $as_echo_n "checking for halfdelay in -ltinfo... " >&6; }
+ if ${ac_cv_lib_tinfo_halfdelay+:} false; then :
+ $as_echo_n "(cached) " >&6
+@@ -23224,6 +23312,8 @@ $as_echo "#define HAVE_LIBTINFO 1" >>confdefs.h
+
+ fi
+
++ fi
++fi
+
+ if test x"$enable_nonblocking_log_open" != xno; then
+
+diff --git a/configure.in b/configure.in
+index 59793a00c..4bd0f7c19 100644
+--- a/configure.in
++++ b/configure.in
+@@ -2789,20 +2789,30 @@ if test x"$enable_curses" != xno ; then
+ fi
+
+ if test x"$enable_ncurses" != xno ; then
++ dnl Check for the libtinfo library, which contains the halfdelay() curses
++ dnl function on some systems (e.g. OpenSuSE); see Bug#3718. Note that on
++ dnl some systems, this may need to be libtinfow instead; see Issue #1174.
++
+ if test x"$pr_have_ncursesw" = xyes ; then
+ AC_DEFINE(PR_USE_NCURSESW, 1, [Define if using ncursesw support])
++ AC_CHECK_LIB(tinfow, halfdelay,
++ [ UTILS_LIBS="$UTILS_LIBS -ltinfow"
++ AC_DEFINE(HAVE_LIBTINFOW, 1, [Define if you have libtinfow])
++ ],
++ [ AC_CHECK_LIB(tinfo, halfdelay,
++ [ UTILS_LIBS="$UTILS_LIBS -ltinfo"
++ AC_DEFINE(HAVE_LIBTINFO, 1, [Define if you have libtinfo])
++ ])
++ ])
+ else
+ AC_DEFINE(PR_USE_NCURSES, 1, [Define if using ncurses support])
++ AC_CHECK_LIB(tinfo, halfdelay,
++ [ UTILS_LIBS="$UTILS_LIBS -ltinfo"
++ AC_DEFINE(HAVE_LIBTINFO, 1, [Define if you have libtinfo])
++ ])
+ fi
+ fi
+
+-dnl Check for the libtinfo library, which contains the halfdelay() curses
+-dnl function on some systems (e.g. OpenSuSE); see Bug#3718.
+-AC_CHECK_LIB(tinfo, halfdelay,
+- [ UTILS_LIBS="$UTILS_LIBS -ltinfo"
+- AC_DEFINE(HAVE_LIBTINFO, 1, [Define if you have libtinfo])
+- ])
+-
+ if test x"$enable_nonblocking_log_open" != xno; then
+ AC_DEFINE(PR_USE_NONBLOCKING_LOG_OPEN, 1, [Define if using nonblocking open of log files])
+ fi
diff --git a/net-ftp/proftpd/files/proftpd-1.3.8-configure-clang16.patch b/net-ftp/proftpd/files/proftpd-1.3.8-configure-clang16.patch
new file mode 100644
index 000000000000..c44fd72262d2
--- /dev/null
+++ b/net-ftp/proftpd/files/proftpd-1.3.8-configure-clang16.patch
@@ -0,0 +1,255 @@
+https://bugs.gentoo.org/881709 (and dupe https://bugs.gentoo.org/900066)
+https://github.com/proftpd/proftpd/pull/1667
+
+From 98e46de3093da71121362d5be4c445a3ef227010 Mon Sep 17 00:00:00 2001
+From: Arjun Shankar <arjun@redhat.com>
+Date: Fri, 5 May 2023 15:35:56 +0200
+Subject: [PATCH] configure: Remove several implicit function declarations
+
+During configure, some checks omit the corresponding include. A compiler
+defaulting to C99 mode could cause those checks to fail since C99 does
+not allow implicit function declarations. This commit fixes the same.
+The configure script is re-generated.
+
+Signed-off-by: Arjun Shankar <arjun@redhat.com>
+--- a/configure
++++ b/configure
+@@ -18305,6 +18305,20 @@ _ACEOF
+ fi
+
+
++for ac_header in stddef.h crypt.h netdb.h arpa/inet.h sys/socket.h
++do :
++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
++if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
++ cat >>confdefs.h <<_ACEOF
++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++
++done
++
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for standalone crypt" >&5
+ $as_echo_n "checking for standalone crypt... " >&6; }
+ if ${pr_cv_lib_standalone_crypt+:} false; then :
+@@ -18313,10 +18327,19 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
++ #if HAVE_STDDEF_H
++ # include <stddef.h>
++ #endif
++ #if HAVE_CRYPT_H
++ # include <crypt.h>
++ #endif
++
+ int
+ main ()
+ {
+-crypt();
++
++ crypt(NULL, NULL);
++
+ ;
+ return 0;
+ }
+@@ -18388,10 +18411,19 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
++ #if HAVE_STDDEF_H
++ # include <stddef.h>
++ #endif
++ #if HAVE_NETDB_H
++ # include <netdb.h>
++ #endif
++
+ int
+ main ()
+ {
+-gethostbyname();
++
++ gethostbyname(NULL);
++
+ ;
+ return 0;
+ }
+@@ -18508,10 +18540,19 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
++ #if HAVE_STDDEF_H
++ # include <stddef.h>
++ #endif
++ #if HAVE_ARPA_INET_H
++ # include <arpa/inet.h>
++ #endif
++
+ int
+ main ()
+ {
+-inet_aton();
++
++ inet_aton(NULL, NULL);
++
+ ;
+ return 0;
+ }
+@@ -18584,10 +18625,16 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
++ #if HAVE_NETDB_H
++ # include <netdb.h>
++ #endif
++
+ int
+ main ()
+ {
+-gethostent();
++
++ gethostent();
++
+ ;
+ return 0;
+ }
+@@ -18659,10 +18706,19 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
++ #if HAVE_STDDEF_H
++ # include <stddef.h>
++ #endif
++ #if HAVE_SYS_SOCKET_H
++ # include <sys/socket.h>
++ #endif
++
+ int
+ main ()
+ {
+-bind();
++
++ bind(0, NULL, 0);
++
+ ;
+ return 0;
+ }
+--- a/configure.in
++++ b/configure.in
+@@ -1476,18 +1476,42 @@ AC_ARG_ENABLE(transfer-buffer-size,
+ ])
+
+ dnl Checks for libraries. Yes, this is the hard way, but it's necessary.
++AC_CHECK_HEADERS(stddef.h crypt.h netdb.h arpa/inet.h sys/socket.h)
++
+ AC_CACHE_CHECK(for standalone crypt,pr_cv_lib_standalone_crypt,
+- AC_TRY_LINK(,[crypt();],
+- pr_cv_lib_standalone_crypt="yes", pr_cv_lib_standalone_crypt="no" ))
++ AC_TRY_LINK(
++ [
++ #if HAVE_STDDEF_H
++ # include <stddef.h>
++ #endif
++ #if HAVE_CRYPT_H
++ # include <crypt.h>
++ #endif
++ ],
++ [
++ crypt(NULL, NULL);
++ ],
++ pr_cv_lib_standalone_crypt="yes", pr_cv_lib_standalone_crypt="no" ))
+
+ if test "$pr_cv_lib_standalone_crypt" = "no"; then
+ AC_CHECK_LIB(crypt, crypt)
+ fi
+
+ AC_CACHE_CHECK(for standalone gethostbyname,pr_cv_lib_standalone_gethost,
+- AC_TRY_LINK(,[gethostbyname();],
+- pr_cv_lib_standalone_gethost="yes",
+- pr_cv_lib_standalone_gethost="no" ))
++ AC_TRY_LINK(
++ [
++ #if HAVE_STDDEF_H
++ # include <stddef.h>
++ #endif
++ #if HAVE_NETDB_H
++ # include <netdb.h>
++ #endif
++ ],
++ [
++ gethostbyname(NULL);
++ ],
++ pr_cv_lib_standalone_gethost="yes",
++ pr_cv_lib_standalone_gethost="no" ))
+
+ if test "$pr_cv_lib_standalone_gethost" = "no"; then
+ AC_CHECK_LIB(resolv, gethostbyname)
+@@ -1495,25 +1519,57 @@ if test "$pr_cv_lib_standalone_gethost" = "no"; then
+ fi
+
+ AC_CACHE_CHECK(for standalone inet_aton,pr_cv_lib_standalone_aton,
+- AC_TRY_LINK(,[inet_aton();],
+- pr_cv_lib_standalone_aton="yes",
+- pr_cv_lib_standalone_aton="no" ))
++ AC_TRY_LINK(
++ [
++ #if HAVE_STDDEF_H
++ # include <stddef.h>
++ #endif
++ #if HAVE_ARPA_INET_H
++ # include <arpa/inet.h>
++ #endif
++ ],
++ [
++ inet_aton(NULL, NULL);
++ ],
++ pr_cv_lib_standalone_aton="yes",
++ pr_cv_lib_standalone_aton="no" ))
+
+ if test "$pr_cv_lib_standalone_aton" = "no"; then
+ AC_CHECK_LIB(bind, inet_aton)
+ fi
+
+ AC_CACHE_CHECK(for standalone nsl functions,pr_cv_lib_standalone_nsl,[
+- AC_TRY_LINK(,[gethostent();],
+- pr_cv_lib_standalone_nsl="yes", pr_cv_lib_standalone_nsl="no") ])
++ AC_TRY_LINK(
++ [
++ #if HAVE_NETDB_H
++ # include <netdb.h>
++ #endif
++ ],
++ [
++ gethostent();
++ ],
++ pr_cv_lib_standalone_nsl="yes",
++ pr_cv_lib_standalone_nsl="no") ])
+
+ if test "$pr_cv_lib_standalone_nsl" = "no"; then
+ AC_CHECK_LIB(nsl, gethostent)
+ fi
+
+ AC_CACHE_CHECK(for standalone socket functions,pr_cv_lib_standalone_sockets,
+- AC_TRY_LINK(,[bind();],
+- pr_cv_lib_standalone_sockets="yes", pr_cv_lib_standalone_sockets="no"))
++ AC_TRY_LINK(
++ [
++ #if HAVE_STDDEF_H
++ # include <stddef.h>
++ #endif
++ #if HAVE_SYS_SOCKET_H
++ # include <sys/socket.h>
++ #endif
++ ],
++ [
++ bind(0, NULL, 0);
++ ],
++ pr_cv_lib_standalone_sockets="yes",
++ pr_cv_lib_standalone_sockets="no"))
+
+ if test "$pr_cv_lib_standalone_sockets" = "no"; then
+ AC_CHECK_LIB(socket, bind)
+
diff --git a/net-ftp/proftpd/files/proftpd-1.3.9-clamav-debool.patch b/net-ftp/proftpd/files/proftpd-1.3.9-clamav-debool.patch
deleted file mode 100644
index 3753d3ee937d..000000000000
--- a/net-ftp/proftpd/files/proftpd-1.3.9-clamav-debool.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-https://bugs.gentoo.org/953810
-https://github.com/jbenden/mod_clamav/pull/24/commits
-From ea822d6aa428b47aa9681d60af8d3c3d9eae0600 Mon Sep 17 00:00:00 2001
-From: TJ Saunders <tj@castaglia.org>
-Date: Sat, 12 Apr 2025 09:02:45 -0700
-Subject: [PATCH] Issue #23: Fix compilation with newer GCC versions, which
-complain of variables named `bool`.
-
----
- mod_clamav.c | 18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/mod_clamav.c b/mod_clamav.c
-index e25e99d..3be0ca6 100644
---- a/mod_clamav.c
-+++ b/mod_clamav.c
-@@ -667,18 +667,18 @@ static unsigned long parse_nbytes(char *nbytes_str, char *units_str) {
- * Configuration setter: ClamAV
- */
- MODRET set_clamav(cmd_rec *cmd) {
-- int bool = -1;
-+ int engine = -1;
- config_rec *c = NULL;
-
- CHECK_ARGS(cmd, 1);
- CHECK_CONF(cmd, CONF_ROOT|CONF_LIMIT|CONF_VIRTUAL|CONF_GLOBAL|CONF_DIR);
-
-- if ((bool = get_boolean(cmd,1)) == -1)
-+ if ((engine = get_boolean(cmd,1)) == -1)
- CONF_ERROR(cmd, "expected Boolean parameter");
-
- c = add_config_param(cmd->argv[0], 1, NULL);
- c->argv[0] = pcalloc(c->pool, sizeof(unsigned char));
-- *((unsigned char *) c->argv[0]) = bool;
-+ *((unsigned char *) c->argv[0]) = engine;
- c->flags |= CF_MERGEDOWN;
-
- return PR_HANDLED(cmd);
-@@ -688,18 +688,18 @@ MODRET set_clamav(cmd_rec *cmd) {
- * Configuration setter: ClamStream
- */
- MODRET set_clamstream(cmd_rec *cmd) {
-- int bool = -1;
-+ int use_stream = -1;
- config_rec *c = NULL;
-
- CHECK_ARGS(cmd, 1);
- CHECK_CONF(cmd, CONF_ROOT|CONF_LIMIT|CONF_VIRTUAL|CONF_GLOBAL|CONF_DIR);
-
-- if ((bool = get_boolean(cmd,1)) == -1)
-+ if ((use_stream = get_boolean(cmd,1)) == -1)
- CONF_ERROR(cmd, "expected Boolean parameter");
-
- c = add_config_param(cmd->argv[0], 1, NULL);
- c->argv[0] = pcalloc(c->pool, sizeof(unsigned char));
-- *((unsigned char *) c->argv[0]) = bool;
-+ *((unsigned char *) c->argv[0]) = use_stream;
- c->flags |= CF_MERGEDOWN;
-
- return PR_HANDLED(cmd);
-@@ -709,18 +709,18 @@ MODRET set_clamstream(cmd_rec *cmd) {
- * Configuration setter: ClamFailsafe
- */
- MODRET set_clamfailsafe(cmd_rec *cmd) {
-- int bool = -1;
-+ int use_failsafe = -1;
- config_rec *c = NULL;
-
- CHECK_ARGS(cmd, 1);
- CHECK_CONF(cmd, CONF_ROOT|CONF_LIMIT|CONF_VIRTUAL|CONF_GLOBAL|CONF_DIR);
-
-- if ((bool = get_boolean(cmd, 1)) == -1)
-+ if ((use_failsafe = get_boolean(cmd, 1)) == -1)
- CONF_ERROR(cmd, "expected Boolean parameter");
-
- c = add_config_param(cmd->argv[0], 1, NULL);
- c->argv[0] = pcalloc(c->pool, sizeof(unsigned char));
-- *((unsigned char *) c->argv[0]) = bool;
-+ *((unsigned char *) c->argv[0]) = use_failsafe;
- c->flags |= CF_MERGEDOWN;
-
- return PR_HANDLED(cmd);
diff --git a/net-ftp/proftpd/files/proftpd-1.3.9-clamav-refresh-api.patch b/net-ftp/proftpd/files/proftpd-1.3.9-clamav-refresh-api.patch
deleted file mode 100644
index f21cf4d49244..000000000000
--- a/net-ftp/proftpd/files/proftpd-1.3.9-clamav-refresh-api.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-https://github.com/jbenden/mod_clamav/commit/509be57280634453be338b52d1bd0af212356587
-From 509be57280634453be338b52d1bd0af212356587 Mon Sep 17 00:00:00 2001
-From: offsides <josh@honorablemenschen.com>
-Date: Tue, 2 Jan 2024 17:21:37 -0500
-Subject: [PATCH] Update mod_clamav.c (#19)
-
-end_login is no longer defined in compat.h as of 1.3.9rc2, so the call needs to be replaced with pr_session_end
----
- mod_clamav.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mod_clamav.c b/mod_clamav.c
-index dcc4929..d39e347 100644
---- a/mod_clamav.c
-+++ b/mod_clamav.c
-@@ -239,7 +239,7 @@ static int clamavd_scan_stream(int sockd, const char *abs_filename,
- buf = malloc(bufsz);
- if (!buf) {
- pr_log_pri(PR_LOG_CRIT, "Out of memory!");
-- end_login(1);
-+ pr_session_end(1);
- }
-
- /* send file contents using protocol defined by Clamd */
diff --git a/net-ftp/proftpd/files/proftpd-1.3.9-fix_heimdal.patch b/net-ftp/proftpd/files/proftpd-1.3.9-fix_heimdal.patch
deleted file mode 100644
index 8c20d075bf2b..000000000000
--- a/net-ftp/proftpd/files/proftpd-1.3.9-fix_heimdal.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-fix compatiblity with heimdal :
-* fix bashism '=='
-* test libkrb5 instead of krb5-private.h for _krb5_principal2principalname
-* include <gssapi/gssapi_krb5.h> even if HAVE_HEIMDAL_KERBEROS for krb5_gss_register_acceptor_identity
-* initialize PrincipalName *pn
---- a/configure
-+++ b/configure
-@@ -2963,7 +2963,7 @@
- fi
- ac_krb5_solaris="`$krb5confpath --version 2>/dev/null | grep -i solaris`"
- ac_krb5_heimdal="`$krb5confpath --version 2>/dev/null | grep -i heimdal`"
-- if test "x$ac_krb5_solaris" == x ; then
-+ if test "x$ac_krb5_solaris" = x ; then
- ac_krb5_cflags=`$krb5confpath --cflags krb5 2> /dev/null `
- if test $? != 0; then
- krb5fail=t
-@@ -3455,29 +3455,6 @@
-
- done
-
--
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _krb5_principal2principalname in krb5-private.h" >&5
--$as_echo_n "checking for _krb5_principal2principalname in krb5-private.h... " >&6; }
--cat confdefs.h - <<_ACEOF >conftest.$ac_ext
--/* end confdefs.h. */
--#include <krb5-private.h>
--
--_ACEOF
--if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-- $EGREP "_krb5_principal2principalname" >/dev/null 2>&1; then :
--
--$as_echo "#define HAVE_KRB5_PRINCIPAL2PRINCIPAL 1" >>confdefs.h
--
--{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
--$as_echo "yes" >&6; }
--else
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
--$as_echo "no" >&6; }
--fi
--rm -f conftest*
--
--
--ac_com_error_message=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
- #include <krb5.h>
-@@ -4118,6 +4095,57 @@
- fi
-
- fi
-+if test "x$ac_krb5_heimdal" != x ; then
-+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _krb5_principal2principalname in -lkrb5" >&5
-+printf %s "checking for _krb5_principal2principalname in -lkrb5... " >&6; }
-+if test ${ac_cv_lib_krb5__krb5_principal2principalname+y}
-+then :
-+ printf %s "(cached) " >&6
-+else case e in #(
-+ e) ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lkrb5 $LIBS"
-+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h. */
-+
-+/* Override any GCC internal prototype to avoid an error.
-+ Use char because int might match the return type of a GCC
-+ builtin and then its argument prototype would still apply.
-+ The 'extern "C"' is for builds by C++ compilers;
-+ although this is not generally supported in C code supporting it here
-+ has little cost and some practical benefit (sr 110532). */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+char _krb5_principal2principalname (void);
-+int
-+main (void)
-+{
-+return _krb5_principal2principalname ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+if ac_fn_c_try_link "$LINENO"
-+then :
-+ ac_cv_lib_krb5__krb5_principal2principalname=yes
-+else case e in #(
-+ e) ac_cv_lib_krb5__krb5_principal2principalname=no ;;
-+esac
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.beam \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS ;;
-+esac
-+fi
-+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5__krb5_principal2principalname" >&5
-+printf "%s\n" "$ac_cv_lib_krb5__krb5_principal2principalname" >&6; }
-+if test "x$ac_cv_lib_krb5__krb5_principal2principalname" = xyes
-+then :
-+
-+printf "%s\n" "#define HAVE_KRB5_PRINCIPAL2PRINCIPAL 1" >>confdefs.h
-+
-+fi
-+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_get_err_text in -lkrb5" >&5
- $as_echo_n "checking for krb5_get_err_text in -lkrb5... " >&6; }
- if ${ac_cv_lib_krb5_krb5_get_err_text+:} false; then :
---- a/mod_gss.h.in
-+++ b/mod_gss.h.in
-@@ -204,7 +204,6 @@
- #include <gssapi/gssapi.h>
- #endif /* HAVE_GSSAPI_H */
-
--#ifndef HAVE_HEIMDAL_KERBEROS
- #ifdef HAVE_GSSAPI_GSSAPI_EXT_H
- #include <gssapi/gssapi_ext.h>
- #endif /* HAVE_GSSAPI_GSSAPI_EXT_H */
-@@ -214,7 +213,6 @@
- #ifdef HAVE_GSSAPI_GSSAPI_GENERIC_H
- #include <gssapi/gssapi_generic.h>
- #endif /* HAVE_GSSAPI_GSSAPI_GENERIC_H */
--#endif /* HAVE_HEIMDAL_KERBEROS */
-
- #ifndef HAVE_GSS_INT32
- #define gss_int32 int32_t
---- a/mod_auth_gss.c.in
-+++ b/mod_auth_gss.c.in
-@@ -109,7 +109,7 @@
- krb5_principal p;
- krb5_error_code kerr;
- #ifdef HAVE_HEIMDAL_KERBEROS
-- PrincipalName *pn;
-+ PrincipalName *pn = NULL;
- #endif
- char *princ_name;
-
-@@ -179,7 +179,7 @@
- krb5_principal p;
- krb5_error_code kerr;
- #ifdef HAVE_HEIMDAL_KERBEROS
-- PrincipalName *pn;
-+ PrincipalName *pn = NULL;
- #endif
- char *princ_name;
-
-@@ -251,7 +251,7 @@
- krb5_principal p;
- krb5_error_code kerr;
- #ifdef HAVE_HEIMDAL_KERBEROS
-- PrincipalName *pn;
-+ PrincipalName *pn = NULL;
- #endif
- char *princ_name;
-
diff --git a/net-ftp/proftpd/files/proftpd-1.3.9-gss-refresh-api.patch b/net-ftp/proftpd/files/proftpd-1.3.9-gss-refresh-api.patch
deleted file mode 100644
index ac05bb5bc8fb..000000000000
--- a/net-ftp/proftpd/files/proftpd-1.3.9-gss-refresh-api.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-Fixes for old API, rename of bool for C23
-https://bugs.gentoo.org/953866
---- a/mod_gss.c.in
-+++ b/mod_gss.c.in
-@@ -1412,7 +1412,7 @@
- }
- /* If session.user is set, we had a valid login reinforce USER,PASS,ACCT*/
- if (session.user) {
-- end_login(0);
-+ pr_session_end(0);;
- }
-
- /* Convert the parameter to upper case */
-@@ -2126,18 +2126,18 @@
-
- /* usage: GSSEngine on|off */
- MODRET set_gssengine(cmd_rec *cmd) {
-- int bool = -1;
-+ int Bool = -1;
- config_rec *c = NULL;
-
- CHECK_ARGS(cmd, 1);
- CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
-
-- if ((bool = get_boolean(cmd, 1)) == -1)
-+ if ((Bool = get_boolean(cmd, 1)) == -1)
- CONF_ERROR(cmd, "expected Boolean parameter");
-
- c = add_config_param(cmd->argv[0], 1, NULL);
- c->argv[0] = pcalloc(c->pool, sizeof(unsigned char));
-- *((unsigned char *) c->argv[0]) = bool;
-+ *((unsigned char *) c->argv[0]) = Bool;
-
- return PR_HANDLED(cmd);
- }
-@@ -2217,14 +2217,14 @@
-
- /* usage: GSSRequired on|off|both|ctrl|control|data */
- MODRET set_gssrequired(cmd_rec *cmd) {
-- int bool = -1;
-+ int Bool = -1;
- unsigned char on_ctrl = FALSE, on_data = FALSE;
- config_rec *c = NULL;
-
- CHECK_ARGS(cmd, 1);
- CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
-
-- if ((bool = get_boolean(cmd, 1)) == -1) {
-+ if ((Bool = get_boolean(cmd, 1)) == -1) {
-
- if (!strcmp(cmd->argv[1], "control") || !strcmp(cmd->argv[1], "ctrl"))
- on_ctrl = TRUE;
-@@ -2240,7 +2240,7 @@
- CONF_ERROR(cmd, "bad parameter");
-
- } else {
-- if (bool == TRUE) {
-+ if (Bool == TRUE) {
- on_ctrl = TRUE;
- on_data = TRUE;
- }
-@@ -2259,14 +2259,14 @@
-
- /* usage: GSSInet6 on|off|yes|no*/
- MODRET set_gss_af_inet6(cmd_rec *cmd) {
-- int bool = -1;
-+ int Bool = -1;
- unsigned char on_inet6 = FALSE;
- config_rec *c = NULL;
-
- CHECK_ARGS(cmd, 1);
- CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
-
-- if ((bool = get_boolean(cmd, 1)) == -1) {
-+ if ((Bool = get_boolean(cmd, 1)) == -1) {
-
- if (!strcmp(cmd->argv[1], "on") || !strcmp(cmd->argv[1], "yes"))
- on_inet6 = TRUE;
-@@ -2278,7 +2278,7 @@
- CONF_ERROR(cmd, "bad parameter");
-
- } else {
-- if (bool == TRUE)
-+ if (Bool == TRUE)
- on_inet6 = TRUE;
- }
-
diff --git a/net-ftp/proftpd/files/proftpd-tmpfiles.d.conf b/net-ftp/proftpd/files/proftpd-tmpfiles.d.conf
new file mode 100644
index 000000000000..26ad04256b43
--- /dev/null
+++ b/net-ftp/proftpd/files/proftpd-tmpfiles.d.conf
@@ -0,0 +1 @@
+d /var/run/proftpd 0755 root root
diff --git a/net-ftp/proftpd/files/proftpd.initd b/net-ftp/proftpd/files/proftpd.initd
new file mode 100644
index 000000000000..a7ab650e1105
--- /dev/null
+++ b/net-ftp/proftpd/files/proftpd.initd
@@ -0,0 +1,51 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+extra_started_commands="reload"
+
+depend() {
+ need net
+ use logger dns mysql postgresql antivirus
+}
+
+check_configuration() {
+ if [ ! -e /etc/proftpd/proftpd.conf ] ; then
+ eerror "To execute the ProFTPD server you need a /etc/proftpd/proftpd.conf configuration"
+ eerror "file. In /etc/proftpd you can find a sample configuration."
+ return 1
+ fi
+ /usr/sbin/proftpd -t &>/dev/null
+ if [ $? -ne 0 ] ; then
+ eerror "The ProFTPD configuration file /etc/proftpd/proftpd.conf is invalid! You have to"
+ eerror "fix your configuration in order to run the ProFTPD server. For more information"
+ eerror "you may execute the ProFTPD configuration check '/usr/sbin/proftpd -t'."
+ return 2
+ fi
+}
+
+start() {
+ checkpath -d /var/run/proftpd
+ [ "${RC_CMD}" = "restart" ] || check_configuration || return 1
+ ebegin "Starting ProFTPD"
+ start-stop-daemon --start --quiet \
+ --exec /usr/sbin/proftpd \
+ --pidfile /var/run/proftpd/proftpd.pid
+ eend $?
+}
+
+stop() {
+ [ "${RC_CMD}" != "restart" ] || check_configuration || return 1
+ ebegin "Stopping ProFTPD"
+ start-stop-daemon --stop --quiet --retry 20 \
+ --pidfile /var/run/proftpd/proftpd.pid
+ eend $?
+}
+
+reload() {
+ check_configuration || return 1
+ ebegin "Reloading ProFTPD"
+ start-stop-daemon --quiet --signal HUP \
+ --pidfile /var/run/proftpd/proftpd.pid
+ eend $?
+}
diff --git a/net-ftp/proftpd/files/proftpd.initd-r1 b/net-ftp/proftpd/files/proftpd.initd-r1
index 0d59ec5762e8..dcd262bfcbd4 100644
--- a/net-ftp/proftpd/files/proftpd.initd-r1
+++ b/net-ftp/proftpd/files/proftpd.initd-r1
@@ -15,7 +15,7 @@ check_configuration() {
eerror "file. In /etc/proftpd you can find a sample configuration."
return 1
fi
- /usr/sbin/proftpd -t >/dev/null 2>&1
+ /usr/sbin/proftpd -t &>/dev/null
if [ $? -ne 0 ] ; then
eerror "The ProFTPD configuration file /etc/proftpd/proftpd.conf is invalid! You have to"
eerror "fix your configuration in order to run the ProFTPD server. For more information"
diff --git a/net-ftp/proftpd/metadata.xml b/net-ftp/proftpd/metadata.xml
index 57fdb65e93e2..493485804436 100644
--- a/net-ftp/proftpd/metadata.xml
+++ b/net-ftp/proftpd/metadata.xml
@@ -1,9 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
<pkgmetadata>
+ <maintainer type="project">
+ <email>dev@liguros.net</email>
+ <name>Development</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>slyfox@gentoo.org</email>
+ <name>Sergei Trofimovich</name>
+ <description>Mostly user.</description>
+ </maintainer>
<longdescription>ProFTPD grew out of the desire to have a secure and
configurable FTP server, and out of a significant admiration of the Apache web
server.</longdescription>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:proftpd:proftpd</remote-id>
+ </upstream>
<use>
<flag name="authfile">Enable support for the auth-file module</flag>
<flag name="ban">Enable support for the mod_ban module</flag>
diff --git a/net-ftp/proftpd/proftpd-1.3.8c.ebuild b/net-ftp/proftpd/proftpd-1.3.8c.ebuild
new file mode 100644
index 000000000000..ef4ab00acb69
--- /dev/null
+++ b/net-ftp/proftpd/proftpd-1.3.8c.ebuild
@@ -0,0 +1,298 @@
+# Copyright 2021-2023 Liguros Authors
+# Distributed under the terms of the GNU General Public License v2
+EAPI=8
+inherit multilib systemd tmpfiles toolchain-funcs
+
+MOD_CASE="0.7"
+MOD_CLAMAV="0.14rc2"
+MOD_DISKUSE="0.9"
+MOD_GSS="1.3.9"
+MOD_MSG="0.4.1"
+MOD_VROOT="0.9.4"
+
+DESCRIPTION="An advanced and very configurable FTP server"
+HOMEPAGE="
+ http://www.proftpd.org/
+ http://www.castaglia.org/proftpd/
+ https://github.com/jbenden/mod_clamav
+ http://gssmod.sourceforge.net/
+"
+SRC_URI="
+ ftp://ftp.proftpd.org/distrib/source/${P/_/}.tar.gz
+ case? ( http://www.castaglia.org/${PN}/modules/${PN}-mod-case-${MOD_CASE}.tar.gz )
+ clamav? ( https://github.com/jbenden/mod_clamav/archive/v${MOD_CLAMAV}.tar.gz -> ${PN}-mod_clamav-${MOD_CLAMAV}.tar.gz )
+ diskuse? ( http://www.castaglia.org/${PN}/modules/${PN}-mod-diskuse-${MOD_DISKUSE}.tar.gz )
+ kerberos? ( mirror://sourceforge/gssmod/mod_gss-${MOD_GSS}.tar.gz )
+ msg? ( http://www.castaglia.org/${PN}/modules/${PN}-mod-msg-${MOD_MSG}.tar.gz )
+ vroot? ( https://github.com/Castaglia/${PN}-mod_vroot/archive/v${MOD_VROOT}.tar.gz -> mod_vroot-${MOD_VROOT}.tar.gz )
+"
+S="${WORKDIR}/${P/_/}"
+LICENSE="GPL-2"
+
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="acl authfile ban +caps case clamav copy ctrls deflate diskuse dso dynmasq exec ifsession ifversion ident ipv6
+ kerberos ldap log-forensic memcache msg mysql ncurses nls pam +pcre postgres qos radius
+ ratio readme rewrite selinux sftp shaper sitemisc snmp sodium softquota sqlite ssl tcpd test unique-id vroot"
+# Some tests are ran in chroot. Confuses sandbox.
+RESTRICT="test"
+# TODO: geoip
+REQUIRED_USE="
+ ban? ( ctrls )
+ msg? ( ctrls )
+ sftp? ( ssl )
+ shaper? ( ctrls )
+
+ mysql? ( ssl )
+ postgres? ( ssl )
+ sqlite? ( ssl )
+"
+
+COMMON_DEPEND="
+ virtual/libcrypt:=
+ acl? ( virtual/acl )
+ caps? ( sys-libs/libcap )
+ clamav? ( app-antivirus/clamav )
+ kerberos? ( virtual/krb5 )
+ ldap? ( net-nds/openldap:= )
+ memcache? ( >=dev-libs/libmemcached-0.41 )
+ mysql? ( dev-db/mysql-connector-c:0= )
+ nls? ( virtual/libiconv )
+ ncurses? ( sys-libs/ncurses:0= )
+ ssl? (
+ dev-libs/openssl:0=
+
+ )
+ pam? ( sys-libs/pam )
+ pcre? ( dev-libs/libpcre )
+ postgres? ( dev-db/postgresql:= )
+ sodium? ( dev-libs/libsodium:0= )
+ sqlite? ( dev-db/sqlite:3 )
+"
+DEPEND="
+ ${COMMON_DEPEND}
+ test? ( dev-libs/check )
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ net-ftp/ftpbase
+ selinux? ( sec-policy/selinux-ftp )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.3.6-use-trace.patch
+ "${FILESDIR}"/${PN}-1.3.8-configure-clang16.patch
+)
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ # AIX only
+ authenticate
+ loginfailed
+ loginsuccess
+
+ # Deprecated/removed functions, not actually checking for this anyway
+ SSLeay_add_all_algorithms
+ # Test isn't actually checking for BIO_f_zlib
+ BIO_f_zlib
+)
+
+in_dir() {
+ pushd "${WORKDIR}/${1}" || die
+ shift
+ "$@"
+ popd
+}
+
+src_prepare() {
+ # Skip 'install-conf' / Support LINGUAS
+ sed -i -e "/install-all/s/ install-conf//" Makefile.in || die
+ sed -i -e "s/^LANGS=.*$/LANGS=${LINGUAS}/" locale/Makefile.in || die
+
+ # Prepare external modules
+ if use case; then
+ cp -v "${WORKDIR}"/mod_case/mod_case.c contrib || die
+ cp -v "${WORKDIR}"/mod_case/mod_case.html doc/contrib || die
+ fi
+
+
+ if use clamav ; then
+ cp -v "${WORKDIR}"/mod_clamav-${MOD_CLAMAV}/mod_clamav.{c,h} contrib || die
+ eapply -p0 "${WORKDIR}"/mod_clamav-${MOD_CLAMAV}/001-add-mod_clamav-to-tests.patch
+ fi
+
+ if use diskuse; then
+ in_dir mod_diskuse eapply "${FILESDIR}"/${PN}-1.3.6_rc4-diskuse-refresh-api.patch
+
+ # ./configure will modify files. Symlink them instead of copying
+ ln -sv "${WORKDIR}"/mod_diskuse/mod_diskuse.h "${S}"/contrib || die
+
+ cp -v "${WORKDIR}"/mod_diskuse/mod_diskuse.c "${S}"/contrib || die
+ cp -v "${WORKDIR}"/mod_diskuse/mod_diskuse.html "${S}"/doc/contrib || die
+ fi
+
+ if use msg; then
+ in_dir mod_msg eapply "${FILESDIR}"/${PN}-1.3.6_rc4-msg-refresh-api.patch
+
+ cp -v "${WORKDIR}"/mod_msg/mod_msg.c contrib || die
+ cp -v "${WORKDIR}"/mod_msg/mod_msg.html doc/contrib || die
+ fi
+
+ if use vroot; then
+ in_dir ${PN}-mod_vroot-${MOD_VROOT} eapply "${FILESDIR}"/${PN}-1.3.6_rc4-vroot-refresh-api.patch
+
+ cp -v "${WORKDIR}"/${PN}-mod_vroot-${MOD_VROOT}/mod_vroot.c contrib || die
+ cp -v "${WORKDIR}"/${PN}-mod_vroot-${MOD_VROOT}/mod_vroot.html doc/contrib || die
+ fi
+
+ if use kerberos ; then
+ # in_dir mod_gss-${MOD_GSS} eapply "${FILESDIR}"/${PN}-1.3.6_rc4-gss-refresh-api.patch
+
+ # Support app-crypt/heimdal / Gentoo Bug #284853
+ sed -i -e "s/krb5_principal2principalname/_\0/" "${WORKDIR}"/mod_gss-${MOD_GSS}/mod_auth_gss.c.in || die
+
+ # Remove obsolete DES / Gentoo Bug #324903
+ # Replace 'rpm' lookups / Gentoo Bug #391021
+ sed -i -e "/ac_gss_libs/s/ -ldes425//" \
+ -e "s/ac_libdir=\`rpm -q -l.*$/ac_libdir=\/usr\/$(get_libdir)\//" \
+ -e "s/ac_includedir=\`rpm -q -l.*$/ac_includedir=\/usr\/include\//" "${WORKDIR}"/mod_gss-${MOD_GSS}/configure{,.ac} || die
+
+ # ./configure will modify files. Symlink them instead of copying
+ ln -sv "${WORKDIR}"/mod_gss-${MOD_GSS}/mod_auth_gss.c "${S}"/contrib || die
+ ln -sv "${WORKDIR}"/mod_gss-${MOD_GSS}/mod_gss.c "${S}"/contrib || die
+ ln -sv "${WORKDIR}"/mod_gss-${MOD_GSS}/mod_gss.h "${S}"/include || die
+
+ cp -v "${WORKDIR}"/mod_gss-${MOD_GSS}/README.mod_{auth_gss,gss} "${S}" || die
+ cp -v "${WORKDIR}"/mod_gss-${MOD_GSS}/mod_gss.html "${S}"/doc/contrib || die
+ cp -v "${WORKDIR}"/mod_gss-${MOD_GSS}/rfc{1509,2228}.txt "${S}"/doc/rfc || die
+ fi
+
+ default
+
+ tc-export CC
+}
+
+src_configure() {
+ local c m
+
+ use acl && m="${m}:mod_facl"
+ use ban && m="${m}:mod_ban"
+ use case && m="${m}:mod_case"
+ use clamav && m="${m}:mod_clamav"
+ use copy && m="${m}:mod_copy"
+ use ctrls && m="${m}:mod_ctrls_admin"
+ use deflate && m="${m}:mod_deflate"
+ if use diskuse ; then
+ in_dir mod_diskuse econf
+ m="${m}:mod_diskuse"
+ fi
+ use dynmasq && m="${m}:mod_dynmasq"
+ use exec && m="${m}:mod_exec"
+ use ifsession && m="${m}:mod_ifsession"
+ use ifversion && m="${m}:mod_ifversion"
+ if use kerberos ; then
+ in_dir mod_gss-${MOD_GSS} econf
+ m="${m}:mod_gss:mod_auth_gss"
+ fi
+ use ldap && m="${m}:mod_ldap"
+ use log-forensic && m="${m}:mod_log_forensic"
+ use msg && m="${m}:mod_msg"
+ if use mysql || use postgres || use sqlite ; then
+ m="${m}:mod_sql:mod_sql_passwd"
+ use mysql && m="${m}:mod_sql_mysql"
+ use postgres && m="${m}:mod_sql_postgres"
+ use sqlite && m="${m}:mod_sql_sqlite"
+ fi
+ use qos && m="${m}:mod_qos"
+ use radius && m="${m}:mod_radius"
+ use ratio && m="${m}:mod_ratio"
+ use readme && m="${m}:mod_readme"
+ use rewrite && m="${m}:mod_rewrite"
+ if use sftp ; then
+ m="${m}:mod_sftp"
+ use pam && m="${m}:mod_sftp_pam"
+ use mysql || use postgres || use sqlite && m="${m}:mod_sftp_sql"
+ fi
+ use shaper && m="${m}:mod_shaper"
+ use sitemisc && m="${m}:mod_site_misc"
+ use snmp && m="${m}:mod_snmp"
+ if use softquota ; then
+ m="${m}:mod_quotatab:mod_quotatab_file"
+ use ldap && m="${m}:mod_quotatab_ldap"
+ use radius && m="${m}:mod_quotatab_radius"
+ use mysql || use postgres || use sqlite && m="${m}:mod_quotatab_sql"
+ fi
+ if use ssl ; then
+ m="${m}:mod_tls:mod_tls_shmcache"
+ use memcache && m="${m}:mod_tls_memcache"
+ fi
+ if use tcpd ; then
+ m="${m}:mod_wrap2:mod_wrap2_file"
+ use mysql || use postgres || use sqlite && m="${m}:mod_wrap2_sql"
+ fi
+ use unique-id && m="${m}:mod_unique_id"
+ use vroot && m="${m}:mod_vroot"
+
+ if [[ -n ${PROFTP_CUSTOM_MODULES} ]]; then
+ einfo "Adding user-specified extra modules: '${PROFTP_CUSTOM_MODULES}'"
+ m="${m}:${PROFTP_CUSTOM_MODULES}"
+ fi
+
+ [[ -z ${m} ]] || c="${c} --with-modules=${m:1}"
+
+ econf --localstatedir=/run/proftpd --sysconfdir=/etc/proftpd --disable-strip \
+ $(use_enable acl facl) \
+ $(use_enable authfile auth-file) \
+ $(use_enable caps cap) \
+ $(use_enable ctrls) \
+ $(use_enable dso) \
+ $(use_enable ident) \
+ $(use_enable ipv6) \
+ $(use_enable memcache) \
+ $(use_enable ncurses) \
+ $(use_enable nls) \
+ $(use_enable ssl openssl) \
+ $(use_enable pam auth-pam) \
+ $(use_enable pcre) \
+ $(use_enable sodium) \
+ $(use_enable test tests) \
+ --enable-trace \
+ --enable-shadow \
+ --enable-autoshadow \
+ ${c:1}
+}
+
+src_test() {
+ emake api-tests -C tests
+}
+
+src_install() {
+ default
+ [[ -z ${LINGUAS-set} ]] && rm -r "${ED}"/usr/share/locale
+ rm -rf "${ED}"/run "${ED}"/var/run
+
+ newinitd "${FILESDIR}"/proftpd.initd-r1 proftpd
+ insinto /etc/proftpd
+ doins "${FILESDIR}"/proftpd.conf.sample
+
+ insinto /etc/xinetd.d
+ newins "${FILESDIR}"/proftpd.xinetd proftpd
+
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}"/${PN}.logrotate ${PN}
+
+ dodoc ChangeLog CREDITS INSTALL NEWS README* RELEASE_NOTES
+
+ docinto html
+ dodoc doc/*.html doc/contrib/*.html doc/howto/*.html doc/modules/*.html
+
+ docinto rfc
+ dodoc doc/rfc/*.txt
+
+ systemd_dounit "${FILESDIR}"/${PN}.service
+ newtmpfiles "${FILESDIR}"/${PN}-tmpfiles.d.conf-r1 ${PN}.conf
+}
+
+pkg_postinst() {
+ # Create /var/run files at package merge time: bug #650000
+ tmpfiles_process ${PN}.conf
+}
diff --git a/net-ftp/proftpd/proftpd-1.3.9-r3.ebuild b/net-ftp/proftpd/proftpd-1.3.9-r3.ebuild
index fa8add9b89d8..7a134f665e1c 100644
--- a/net-ftp/proftpd/proftpd-1.3.9-r3.ebuild
+++ b/net-ftp/proftpd/proftpd-1.3.9-r3.ebuild
@@ -1,6 +1,5 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 2021-2025 Liguros Authors
# Distributed under the terms of the GNU General Public License v2
-
EAPI=8
inherit systemd tmpfiles toolchain-funcs
@@ -39,7 +38,7 @@ LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ppc ppc64 ~riscv ~sparc x86"
IUSE="acl authfile ban +caps case clamav copy ctrls deflate diskuse dso dynmasq exec ifsession ifversion ident
- kerberos ldap log-forensic memcache msg mysql ncurses nls pam +pcre postgres qos radius
+ kerberos ldap log-forensic memcache msg mysql ncurses nls pam +pcre postgres qos radius
ratio readme rewrite selinux sftp shaper sitemisc snmp sodium softquota sqlite ssl tcpd test unique-id vroot"
# Some tests are ran in chroot. Confuses sandbox.
RESTRICT="test"
@@ -78,7 +77,10 @@ COMMON_DEPEND="
)
nls? ( virtual/libiconv )
ncurses? ( sys-libs/ncurses:0= )
- ssl? ( dev-libs/openssl:0= )
+ ssl? (
+ dev-libs/openssl:0=
+
+ )
pam? ( sys-libs/pam )
pcre? ( dev-libs/libpcre )
postgres? (
@@ -147,6 +149,7 @@ src_prepare() {
cp -v "${WORKDIR}"/${PN}-mod_case-${MOD_CASE}/mod_case.html doc/contrib || die
fi
+
if use clamav ; then
in_dir mod_clamav-${MOD_CLAMAV} eapply "${FILESDIR}"/"${PN}"-1.3.9-clamav-refresh-api.patch
in_dir mod_clamav-${MOD_CLAMAV} eapply "${FILESDIR}"/"${PN}"-1.3.9-clamav-debool.patch
diff --git a/net-ftp/proftpd/proftpd-1.3.9a.ebuild b/net-ftp/proftpd/proftpd-1.3.9a.ebuild
index 052e754461f6..7a134f665e1c 100644
--- a/net-ftp/proftpd/proftpd-1.3.9a.ebuild
+++ b/net-ftp/proftpd/proftpd-1.3.9a.ebuild
@@ -1,10 +1,8 @@
-# Copyright 1999-2026 Gentoo Authors
+# Copyright 2021-2025 Liguros Authors
# Distributed under the terms of the GNU General Public License v2
-
EAPI=8
-VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/proftpd.asc
-inherit flag-o-matic systemd tmpfiles toolchain-funcs verify-sig
+inherit systemd tmpfiles toolchain-funcs
MOD_CASE="0.9.1"
MOD_CLAMAV="0.14rc2"
@@ -33,7 +31,6 @@ SRC_URI="
-> mod_msg-${MOD_MSG}.tar.gz )
vroot? ( https://github.com/Castaglia/${PN}-mod_vroot/archive/v${MOD_VROOT}.tar.gz
-> mod_vroot-${MOD_VROOT}.tar.gz )
- verify-sig? ( ftp://ftp.proftpd.org/distrib/source/${P/_/}.tar.gz.asc )
"
S="${WORKDIR}/${P/_/}"
@@ -41,7 +38,7 @@ LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ppc ppc64 ~riscv ~sparc x86"
IUSE="acl authfile ban +caps case clamav copy ctrls deflate diskuse dso dynmasq exec ifsession ifversion ident
- kerberos ldap log-forensic memcache msg mysql ncurses nls pam +pcre postgres qos radius
+ kerberos ldap log-forensic memcache msg mysql ncurses nls pam +pcre postgres qos radius
ratio readme rewrite selinux sftp shaper sitemisc snmp sodium softquota sqlite ssl tcpd test unique-id vroot"
# Some tests are ran in chroot. Confuses sandbox.
RESTRICT="test"
@@ -80,14 +77,22 @@ COMMON_DEPEND="
)
nls? ( virtual/libiconv )
ncurses? ( sys-libs/ncurses:0= )
- ssl? ( dev-libs/openssl:0= )
+ ssl? (
+ dev-libs/openssl:0=
+
+ )
pam? ( sys-libs/pam )
- pcre? ( dev-libs/libpcre2:= )
+ pcre? ( dev-libs/libpcre )
postgres? (
dev-db/postgresql:=
sodium? ( dev-libs/libsodium:0= )
)
- rewrite? ( net-dns/libidn2:= )
+ rewrite? (
+ || (
+ net-dns/libidn2
+ net-dns/libidn
+ )
+ )
sftp? ( virtual/zlib:= )
sqlite? (
dev-db/sqlite:3
@@ -104,17 +109,14 @@ RDEPEND="
clamav? ( app-antivirus/clamav )
selinux? ( sec-policy/selinux-ftp )
"
-BDEPEND="
- verify-sig? ( sec-keys/openpgp-keys-proftpd )
-"
PATCHES=(
"${FILESDIR}"/${PN}-1.3.6-use-trace.patch
- "${FILESDIR}"/${PN}-1.3.9-sftp_ssl-3.0.patch
-
- # merged in 1.3.10
# https://bugs.gentoo.org/953968
"${FILESDIR}"/${PN}-1.3.9-slibtool.patch
+ "${FILESDIR}"/${PN}-1.3.9-sftp_ssl-3.0.patch
+ # PR 1979 merged
+ "${FILESDIR}"/${PN}-1.3.9-fix_c23.patch
)
QA_CONFIG_IMPL_DECL_SKIP=(
@@ -136,11 +138,6 @@ in_dir() {
popd
}
-src_unpack() {
- use verify-sig && verify-sig_verify_detached "${DISTDIR}"/${P/_/}.tar.gz{,.asc}
- default
-}
-
src_prepare() {
# Skip 'install-conf' / Support LINGUAS
sed -i -e "/install-all/s/ install-conf//" Makefile.in || die
@@ -152,6 +149,7 @@ src_prepare() {
cp -v "${WORKDIR}"/${PN}-mod_case-${MOD_CASE}/mod_case.html doc/contrib || die
fi
+
if use clamav ; then
in_dir mod_clamav-${MOD_CLAMAV} eapply "${FILESDIR}"/"${PN}"-1.3.9-clamav-refresh-api.patch
in_dir mod_clamav-${MOD_CLAMAV} eapply "${FILESDIR}"/"${PN}"-1.3.9-clamav-debool.patch
@@ -198,10 +196,6 @@ src_prepare() {
}
src_configure() {
- # -Werror=lto-type-mismatch #969611
- # https://github.com/proftpd/proftpd/issues/2032
- use dso && filter-lto
-
local c m
use acl && m="${m}:mod_facl"
@@ -285,7 +279,7 @@ src_configure() {
$(use_enable nls)
$(use_enable ssl openssl)
$(use_enable pam auth-pam)
- $(use_enable pcre pcre2)
+ $(use_enable pcre)
$(use_enable sodium)
$(use_enable test tests)
--enable-trace
diff --git a/net-ftp/pure-ftpd/files/pure-ftpd.conf_d-3 b/net-ftp/pure-ftpd/files/pure-ftpd.conf_d-3
new file mode 100644
index 000000000000..29b15a5a8928
--- /dev/null
+++ b/net-ftp/pure-ftpd/files/pure-ftpd.conf_d-3
@@ -0,0 +1,90 @@
+# Config file for /etc/init.d/pure-ftpd
+##Comment variables out to disable its features, or change the values in it... ##
+
+## This variable must be uncommented in order for the server to start ##
+#IS_CONFIGURED="yes"
+
+## FTP Server,Port (separated by comma) ##
+## If you prefer host names over IP addresses, it's your choice:
+## SERVER="-S ftp.rtchat.com,21"
+## IPv6 addresses are supported.
+## !!! WARNING !!!
+## Using an invalid IP will result in the server not starting,
+## but reporting a correct start!
+## SERVER="-S 192.168.0.1,21"
+## By default binds to all available IPs.
+SERVER="-S 21"
+
+## Number of simultaneous connections in total, and per IP ##
+MAX_CONN="-c 30"
+MAX_CONN_IP="-C 10"
+
+## Don't allow uploads if the partition is more full then this var ##
+DISK_FULL="-k 90%"
+
+## If your FTP server is behind a NAT box, uncomment this ##
+#USE_NAT="-N"
+
+## Authentication mechanisms (others are 'pam', ...) ##
+## Further infos can be found in the README file.
+AUTH="-l unix"
+
+## Change the maximum idle time (in minutes) ##
+## If this variable is not defined, it will default to 15 minutes.
+#TIMEOUT="-I <timeout>'"
+
+## Facility used for syslog logging ##
+## If this variable is not defined, it will default to the 'ftp' facility.
+## Logging can be disabled with '-f none'.
+#LOG="-f <facility>"
+
+## Charset conversion support *experimental* ##
+## Only works if USE "charconv" is enabled (only Pure-FTPd >=1.0.21).
+## Set the charset of the filesystem.
+# CHARCONV="--fscharset <charset>"
+
+## If you want to process each file uploaded through Pure-FTPd, enter the name
+## of the script that should process the files below.
+## man pure-uploadscript to learn more about how to write this script.
+# UPLOADSCRIPT="/path/to/uploadscript"
+
+## Misc. Others ##
+MISC_OTHER="-A -x -j -R -Z"
+
+#
+# Use these inside $MISC_OTHER
+# More can be found on "http://download.pureftpd.org/pub/pure-ftpd/doc/README"
+#
+# -A [ chroot() everyone, but root ]
+# -e [ Only allow anonymous users ]
+# -E [ Only allow authenticated users. Anonymous logins are prohibited. ]
+# -i [ Disallow upload for anonymous users, whatever directory perms are ]
+# -j [ If the home directory of a user doesn't exist, auto-create it ]
+# -M [ Allow anonymous users to create directories. ]
+# -R [ Disallow users (even non-anonymous ones) usage of the CHMOD command ]
+# -x [ In normal operation mode, authenticated users can read/write
+# files beginning with a dot ('.'). Anonymous users can't, for security reasons
+# (like changing banners or a forgotten .rhosts). When '-x' is used, authenticated
+# users can download dot-files, but not overwrite/create them, even if they own
+# them. ]
+# -X [ This flag is identical to the previous one (writing
+# dot-files is prohibited), but in addition, users can't even *read* files and
+# directories beginning with a dot (like "cd .ssh"). ]
+# -D [ List files beginning with a dot ('.') even when the client doesn't
+# append the '-a' option to the list command. A workaround for badly
+# configured FTP clients. ]
+# -G [ Disallow renaming. ]
+# -d [ Send various debugging messages to the syslog. ONLY for DEBUG ]
+# -F <fortune file> [ Display a fortune cookie on login. Check the README file ]
+# -H [ By default, fully-qualified host names are logged. The '-H' flag avoids host names resolution. ]
+
+
+# Some filesystems don't like accesses being memory mapped. This happens for
+# example with ftpwho on JFFS2 filesystems (bug #330563). If you happen to
+# have such a filesystem on /var set TMPFS_MOUNT to "true".
+TMPFS_MOUNT="false"
+
+# Special mount options (like nosuid or nodev) for the tmpfs mount can be added
+# here. Several options must be separated by comma: "nodev,nosuid"
+#TMPFS_OPTS=""
+
diff --git a/net-ftp/pure-ftpd/files/pure-ftpd.rc11 b/net-ftp/pure-ftpd/files/pure-ftpd.rc11
new file mode 100644
index 000000000000..35270ff33507
--- /dev/null
+++ b/net-ftp/pure-ftpd/files/pure-ftpd.rc11
@@ -0,0 +1,75 @@
+#!/sbin/openrc-run
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+ftpd_pidfile="/var/run/pure-ftpd.pid"
+script_pidfile="/var/run/pure-uploadscript.pid"
+ftpd_rundir="/var/lib/run/pure-ftpd"
+daemon="/usr/sbin/pure-ftpd"
+script_daemon="/usr/sbin/pure-uploadscript"
+
+depend() {
+ need localmount
+ use netmount
+}
+
+start_pre() {
+ if [ -z "${IS_CONFIGURED}" ] ; then
+ eerror "You need to setup /etc/conf.d/pure-ftpd first!"
+ return 1
+ fi
+}
+
+start() {
+ UPSCRIPT=""
+ if [ -n "${UPLOADSCRIPT}" ] ; then
+ UPSCRIPT="--uploadscript"
+ fi
+
+ FTPD_CONFIG="$SERVER $MAX_CONN $MAX_CONN_IP $DISK_FULL $USE_NAT $AUTH
+ $LOG $TIMEOUT $CHARCONV $MISC_OTHER $UPSCRIPT"
+
+ WAIT="--wait 100"
+
+ if ${TMPFS_MOUNT:-false} && grep -q tmpfs /proc/filesystems ; then
+ [ -n "${TMPFS_OPTS}" ] && MOUNT_OPTS="-o ${TMPFS_OPTS}"
+ einfo "Mounting tmpfs on ${ftpd_rundir}"
+ mount ${MOUNT_OPTS} -t tmpfs tmpfs ${ftpd_rundir} \
+ || eerror "Unable to mount tmpfs"
+ fi
+
+ ebegin "Starting Pure-FTPd"
+ start-stop-daemon --start --quiet --pidfile ${ftpd_pidfile} \
+ --make-pidfile --background --exec /usr/sbin/pure-ftpd ${WAIT} \
+ -- $(echo ${FTPD_CONFIG} | sed 's@\([[:space:]]\+\|^\)-B\([[:space:]]\+\|$\)@\1@g')
+ result=$?
+ if [ ${result} -ne 0 ] ; then
+ eend 1 "Could not launch Pure-FTPd"
+ else
+ eend $result
+ if [ -n "${UPLOADSCRIPT}" ] ; then
+ ebegin "Starting Pure-FTPd upload script"
+ start-stop-daemon --start --quiet --make-pidfile \
+ --pidfile ${script_pidfile} \
+ --exec ${script_daemon} --background ${WAIT} \
+ -- -r $UPLOADSCRIPT
+ eend $?
+ fi
+ fi
+}
+
+stop() {
+ if [ -n "${UPLOADSCRIPT}" ] ; then
+ ebegin "Stopping Pure-FTPd upload script"
+ start-stop-daemon --stop --retry 20 --quiet \
+ --pidfile ${script_pidfile}
+ eend $?
+ fi
+ ebegin "Stopping Pure-FTPd"
+ start-stop-daemon --stop --retry 20 --quiet --pidfile ${ftpd_pidfile}
+ eend $?
+
+ if ${TMPFS_MOUNT:-false} && mount | grep -q ${ftpd_rundir} ; then
+ umount ${ftpd_rundir} >/dev/null 2>&1
+ fi
+}
diff --git a/net-ftp/pure-ftpd/metadata.xml b/net-ftp/pure-ftpd/metadata.xml
index 9dc464a49e89..29fa6d6ee239 100644
--- a/net-ftp/pure-ftpd/metadata.xml
+++ b/net-ftp/pure-ftpd/metadata.xml
@@ -1,15 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
<pkgmetadata>
+ <maintainer type="project">
+ <email>dev@liguros.net</email>
+ <name>Development</name>
+ </maintainer>
<maintainer type="person">
- <email>conikost@gentoo.org</email>
- <name>Conrad Kostecki</name>
+ <email>polynomial-c@gentoo.org</email>
+ <name>Lars Wendler</name>
</maintainer>
- <longdescription>
- Free (BSD), secure, production-quality and standard-conformant FTP server
- based upon Troll-FTPd. It doesn't provide useless bells and whistles,
- but focuses on efficiency and ease of use.
- </longdescription>
+ <longdescription>Free (BSD), secure, production-quality and standard-conformant FTP server based upon Troll-FTPd. It doesn't provide useless bells and whistles, but focuses on efficiency and ease of use.</longdescription>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:pureftpd:pure-ftpd</remote-id>
+ </upstream>
<use>
<flag name="anondel">Permit anonymous to delete files</flag>
<flag name="anonperm">Permit anonymous to change file permissions</flag>
@@ -19,7 +22,7 @@
<flag name="noiplog">Disables logging of IP addresses</flag>
<flag name="paranoidmsg">Display paranoid messages instead of normal ones</flag>
<flag name="resolveids">Resolve UIDs/GIDs</flag>
- <flag name="sysquota">Enables system quota support (needs <pkg>sys-fs/quota</pkg>)</flag>
+ <flag name="sysquota">Enables system quota support (needs sys-fs/quota)</flag>
<flag name="vchroot">Enable support for virtual chroot (possible security risk)</flag>
</use>
<origin>baldeagleos-repo</origin>
diff --git a/net-ftp/pure-ftpd/pure-ftpd-1.0.53.ebuild b/net-ftp/pure-ftpd/pure-ftpd-1.0.53.ebuild
index 4d4f2610f997..05599f035af8 100644
--- a/net-ftp/pure-ftpd/pure-ftpd-1.0.53.ebuild
+++ b/net-ftp/pure-ftpd/pure-ftpd-1.0.53.ebuild
@@ -1,23 +1,21 @@
-# Copyright 1999-2026 Gentoo Authors
+# Copyright 2021-2026 Liguros Authors
# Distributed under the terms of the GNU General Public License v2
-
EAPI=8
-inherit eapi9-ver flag-o-matic
+inherit flag-o-matic
DESCRIPTION="Fast, production-quality, standard-conformant FTP server"
HOMEPAGE="https://www.pureftpd.org/project/pure-ftpd/"
-if [[ "${PV}" == 9999 ]] ; then
- inherit autotools git-r3
- EGIT_REPO_URI="https://github.com/jedisct1/pure-ftpd.git"
-else
- SRC_URI="https://download.pureftpd.org/pub/${PN}/releases/${P}.tar.bz2"
- KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ppc ppc64 ~riscv ~sparc x86"
-fi
-
+SRC_URI="
+ ftp://ftp.pureftpd.org/pub/${PN}/releases/${P}.tar.bz2
+ https://download.pureftpd.org/pub/${PN}/releases/${P}.tar.bz2
+"
+KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ppc ppc64 sparc x86"
LICENSE="BSD GPL-2"
SLOT="0"
+
IUSE="anondel anonperm anonren anonres caps implicittls ldap mysql noiplog pam paranoidmsg postgres resolveids selinux ssl sysquota vchroot xinetd"
+
REQUIRED_USE="implicittls? ( ssl )"
DEPEND="
@@ -32,7 +30,10 @@ DEPEND="
)
pam? ( sys-libs/pam )
postgres? ( dev-db/postgresql:= )
- ssl? ( dev-libs/openssl:0=[-bindist(-)] )
+ ssl? (
+ dev-libs/openssl:0=[-bindist(-)]
+
+ )
sysquota? ( sys-fs/quota[-rpc] )
xinetd? ( virtual/inetd )
"
@@ -45,20 +46,12 @@ RDEPEND="
BDEPEND="dev-build/autoconf-archive"
-QA_CONFIG_IMPL_DECL_SKIP=(
- # FP noise (bug #900068)
- sendfile sendfilev
+PATCHES=(
+ "${FILESDIR}/${PN}-1.0.28-pam.patch"
)
-PATCHES=( "${FILESDIR}/${PN}-1.0.28-pam.patch" )
-
src_prepare() {
default
-
- # Don't hardcode FORTIFY_SOURCE
- sed -e '/-D_FORTIFY_SOURCE=2/d' -i configure || die
-
- [[ "${PV}" == 9999 ]] && eautoreconf
}
src_configure() {
@@ -154,9 +147,13 @@ pkg_postinst() {
ewarn "Check out http://download.pureftpd.org/pub/pure-ftpd/doc/README for general info"
ewarn "and http://download.pureftpd.org/pub/pure-ftpd/doc/README.TLS for SSL/TLS info."
ewarn
- elif ver_replacing -le "1.0.50" ; then
- einfo "Configuration through /etc/conf.d/pure-ftpd is now deprecated!"
- einfo "Please migrate your settings to the new configuration file."
- einfo "Use /etc/pure-ftpd.conf to adjust your settings."
+ else
+ for v in ${REPLACING_VERSIONS} ; do
+ if ver_test "${v}" -le "1.0.50" ; then
+ einfo "Configuration through /etc/conf.d/pure-ftpd is now deprecated!"
+ einfo "Please migrate your settings to the new configuration file."
+ einfo "Use /etc/pure-ftpd.conf to adjust your settings."
+ fi
+ done
fi
}
diff --git a/net-ftp/pure-ftpd/pure-ftpd-1.0.54.ebuild b/net-ftp/pure-ftpd/pure-ftpd-1.0.54.ebuild
index 2a2915282e73..05599f035af8 100644
--- a/net-ftp/pure-ftpd/pure-ftpd-1.0.54.ebuild
+++ b/net-ftp/pure-ftpd/pure-ftpd-1.0.54.ebuild
@@ -1,23 +1,21 @@
-# Copyright 1999-2026 Gentoo Authors
+# Copyright 2021-2026 Liguros Authors
# Distributed under the terms of the GNU General Public License v2
-
EAPI=8
-inherit eapi9-ver flag-o-matic
+inherit flag-o-matic
DESCRIPTION="Fast, production-quality, standard-conformant FTP server"
HOMEPAGE="https://www.pureftpd.org/project/pure-ftpd/"
-if [[ "${PV}" == 9999 ]] ; then
- inherit autotools git-r3
- EGIT_REPO_URI="https://github.com/jedisct1/pure-ftpd.git"
-else
- SRC_URI="https://download.pureftpd.org/pub/${PN}/releases/${P}.tar.bz2"
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
-fi
-
+SRC_URI="
+ ftp://ftp.pureftpd.org/pub/${PN}/releases/${P}.tar.bz2
+ https://download.pureftpd.org/pub/${PN}/releases/${P}.tar.bz2
+"
+KEYWORDS="~alpha amd64 arm ~arm64 ~hppa ~ia64 ppc ppc64 sparc x86"
LICENSE="BSD GPL-2"
SLOT="0"
+
IUSE="anondel anonperm anonren anonres caps implicittls ldap mysql noiplog pam paranoidmsg postgres resolveids selinux ssl sysquota vchroot xinetd"
+
REQUIRED_USE="implicittls? ( ssl )"
DEPEND="
@@ -32,7 +30,10 @@ DEPEND="
)
pam? ( sys-libs/pam )
postgres? ( dev-db/postgresql:= )
- ssl? ( dev-libs/openssl:0=[-bindist(-)] )
+ ssl? (
+ dev-libs/openssl:0=[-bindist(-)]
+
+ )
sysquota? ( sys-fs/quota[-rpc] )
xinetd? ( virtual/inetd )
"
@@ -45,20 +46,12 @@ RDEPEND="
BDEPEND="dev-build/autoconf-archive"
-QA_CONFIG_IMPL_DECL_SKIP=(
- # FP noise (bug #900068)
- sendfile sendfilev
+PATCHES=(
+ "${FILESDIR}/${PN}-1.0.28-pam.patch"
)
-PATCHES=( "${FILESDIR}/${PN}-1.0.28-pam.patch" )
-
src_prepare() {
default
-
- # Don't hardcode FORTIFY_SOURCE
- sed -e '/-D_FORTIFY_SOURCE=2/d' -i configure || die
-
- [[ "${PV}" == 9999 ]] && eautoreconf
}
src_configure() {
@@ -154,9 +147,13 @@ pkg_postinst() {
ewarn "Check out http://download.pureftpd.org/pub/pure-ftpd/doc/README for general info"
ewarn "and http://download.pureftpd.org/pub/pure-ftpd/doc/README.TLS for SSL/TLS info."
ewarn
- elif ver_replacing -le "1.0.50" ; then
- einfo "Configuration through /etc/conf.d/pure-ftpd is now deprecated!"
- einfo "Please migrate your settings to the new configuration file."
- einfo "Use /etc/pure-ftpd.conf to adjust your settings."
+ else
+ for v in ${REPLACING_VERSIONS} ; do
+ if ver_test "${v}" -le "1.0.50" ; then
+ einfo "Configuration through /etc/conf.d/pure-ftpd is now deprecated!"
+ einfo "Please migrate your settings to the new configuration file."
+ einfo "Use /etc/pure-ftpd.conf to adjust your settings."
+ fi
+ done
fi
}
diff --git a/net-ftp/pure-ftpd/pure-ftpd-9999.ebuild b/net-ftp/pure-ftpd/pure-ftpd-9999.ebuild
deleted file mode 100644
index bdada3101f81..000000000000
--- a/net-ftp/pure-ftpd/pure-ftpd-9999.ebuild
+++ /dev/null
@@ -1,162 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-inherit eapi9-ver flag-o-matic
-
-DESCRIPTION="Fast, production-quality, standard-conformant FTP server"
-HOMEPAGE="https://www.pureftpd.org/project/pure-ftpd/"
-if [[ "${PV}" == 9999 ]] ; then
- inherit autotools git-r3
- EGIT_REPO_URI="https://github.com/jedisct1/pure-ftpd.git"
-else
- SRC_URI="https://download.pureftpd.org/pub/${PN}/releases/${P}.tar.bz2"
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
-fi
-
-LICENSE="BSD GPL-2"
-SLOT="0"
-IUSE="anondel anonperm anonren anonres caps implicittls ldap mysql noiplog pam paranoidmsg postgres resolveids selinux ssl sysquota vchroot xinetd"
-REQUIRED_USE="implicittls? ( ssl )"
-
-DEPEND="
- dev-libs/libsodium:=
- virtual/libcrypt:=
- caps? ( sys-libs/libcap )
- ldap? ( >=net-nds/openldap-2.0.25:= )
- mysql? ( || (
- dev-db/mariadb-connector-c
- dev-db/mysql-connector-c
- )
- )
- pam? ( sys-libs/pam )
- postgres? ( dev-db/postgresql:= )
- ssl? ( dev-libs/openssl:0=[-bindist(-)] )
- sysquota? ( sys-fs/quota[-rpc] )
- xinetd? ( virtual/inetd )
-"
-
-RDEPEND="
- ${DEPEND}
- net-ftp/ftpbase
- selinux? ( sec-policy/selinux-ftp )
-"
-
-BDEPEND="dev-build/autoconf-archive"
-
-QA_CONFIG_IMPL_DECL_SKIP=(
- # FP noise (bug #900068)
- sendfile sendfilev
-)
-
-PATCHES=( "${FILESDIR}/${PN}-1.0.28-pam.patch" )
-
-src_prepare() {
- default
-
- # Don't hardcode FORTIFY_SOURCE
- sed -e '/-D_FORTIFY_SOURCE=2/d' -i configure.ac || die
-
- [[ "${PV}" == 9999 ]] && eautoreconf
-}
-
-src_configure() {
- # Those features are only configurable like this, see bug #179375.
- use anondel && append-cppflags -DANON_CAN_DELETE
- use anonperm && append-cppflags -DANON_CAN_CHANGE_PERMS
- use anonren && append-cppflags -DANON_CAN_RENAME
- use anonres && append-cppflags -DANON_CAN_RESUME
- use resolveids && append-cppflags -DALWAYS_RESOLVE_IDS
-
- # Do not auto-use SSP -- let the user select this.
- export ax_cv_check_cflags___fstack_protector_all=no
-
- local myeconfargs=(
- --enable-largefile
- # Required for correct pid file location.
- # Pure-FTPd appends "/run/pure-ftpd.pid" to the localstatedir
- # path, and tries to write to that file even when being
- # started in foreground. So we need to pin this to /
- --localstatedir="${EPREFIX}"/
- --with-altlog
- --with-cookie
- --with-diraliases
- --with-extauth
- --with-ftpwho
- --with-language=${PUREFTPD_LANG:=english}
- --with-peruserlimits
- --with-privsep
- --with-puredb
- --with-quotas
- --with-ratios
- --with-throttling
- --with-uploadscript
- --with-virtualhosts
- $(use_with implicittls)
- $(use_with ldap)
- $(use_with mysql)
- $(use_with pam)
- $(use_with paranoidmsg)
- $(use_with postgres pgsql)
- $(use_with ssl tls)
- $(use_with sysquota sysquotas)
- $(use_with vchroot virtualchroot)
- $(usex caps '' '--without-capabilities')
- $(usex noiplog '--without-iplogging' '')
- $(usex xinetd '' '--without-inetd')
- )
-
- econf "${myeconfargs[@]}"
-}
-
-src_install() {
- default
-
- newinitd "${FILESDIR}/pure-ftpd.initd-r12" pure-ftpd
- newconfd "${FILESDIR}/pure-ftpd.confd-r4" pure-ftpd
-
- newinitd "${FILESDIR}/pure-uploadscript.initd-r1" pure-uploadscript
- newconfd "${FILESDIR}/pure-uploadscript.confd" pure-uploadscript
-
- if use implicittls ; then
- sed -e '/^# Bind/s@21@990@' -i "${ED}"/etc/pure-ftpd.conf || die
- fi
-
- if use ssl ; then
- newinitd "${FILESDIR}/pure-certd.initd" pure-certd
-
- exeinto /etc
- newexe "${FILESDIR}/pure-certd.script" pure-certd.sh
- fi
-
- if use ldap ; then
- insinto /etc/openldap/schema
- doins pureftpd.schema
- insinto /etc/openldap
- insopts -m 0600
- doins pureftpd-ldap.conf
- fi
-
- if use xinetd ; then
- insinto /etc/xinetd.d
- newins "${FILESDIR}/pure-ftpd.xinetd" pure-ftpd
- fi
-}
-
-pkg_postinst() {
- if [[ -z "${REPLACING_VERSIONS}" ]] ; then
- # This is a new installation
- elog
- elog "Before starting Pure-FTPd, you have to edit the /etc/pure-ftpd.conf file!"
- elog
- ewarn "It's *really* important to read the README provided with Pure-FTPd!"
- ewarn "Check out http://download.pureftpd.org/pub/pure-ftpd/doc/README for general info"
- ewarn "and http://download.pureftpd.org/pub/pure-ftpd/doc/README.TLS for SSL/TLS info."
- ewarn
- elif ver_replacing -le "1.0.50" ; then
- einfo "Configuration through /etc/conf.d/pure-ftpd is now deprecated!"
- einfo "Please migrate your settings to the new configuration file."
- einfo "Use /etc/pure-ftpd.conf to adjust your settings."
- fi
-}