add patch for HUP crash, see also https://bugs.gentoo.org/678490
Hanno

Hanno commited on 2019-02-21 11:53:27
Zeige 13 geänderte Dateien mit 641 Einfügungen und 0 Löschungen.

... ...
@@ -0,0 +1,19 @@
1
+AUX proftpd-1.3.6-use-trace.patch 477 BLAKE2B f69adc68327f467b44dd19d0da66388945c0d1c35ce734ab8fa5e618ca7dbf1164e785e37a6dcb0e9f8ab671ece0b4e711b6614947f39b55310ffd4522df5e07 SHA512 90164f799d1f6c3768a30161a40d5c369e576c3b1a875047ef65c1224d3e18cf1f4dd5145c5ff6f7aeda80135134df58a1d57046129b922514cb56d1de97f13e
2
+AUX proftpd-1.3.6_rc4-diskuse-refresh-api.patch 576 BLAKE2B ce4522896a81fed326ae234810491005c5165fa1bbcd0b64d785c6d070f2ac80c763e75f813655696a9405284cf27c82293026e2d8c68936d7794c20e886dacb SHA512 08a0674600944ff5d13033651a1dea1647c9d22f18efe6505e051b36566bf357bc41439d2dd7c2900e873ef8d600ba7f16332680dda1abb2529808fbe5a4e573
3
+AUX proftpd-1.3.6_rc4-gss-refresh-api.patch 1868 BLAKE2B ff50d3834d6cc0970256dcada8a14db6681440494abc24ccbf53ea5baef2362a9174de3bf7e3e07d562f30a55492735137efa91a9dd09676dbb95e624f3ae77f SHA512 4cc235bdb60ea4c84794d4347826b040057067d8283dcfcb795d5d25a156de480df7d897078ab8ab4faf12d4fc9e714a55f723ce27c9397bc2223550597df674
4
+AUX proftpd-1.3.6_rc4-msg-refresh-api.patch 903 BLAKE2B e335f81685552b0b9a05af3700ce4a09d7f31ca9b24c66e1a1306bbe26c243b553c1cb81c13cc9593ae36e93b03f28faeb64fe2ae2f834575e9dee402f73ee55 SHA512 d0dcc467289b4107aecee66edf122667b2fbb9b1f1a6a6ecea517f286090d22682200b9d11f503465cb9b5387e8fb749cc09c3033825282450fe1d6c0a4bb11d
5
+AUX proftpd-1.3.6_rc4-vroot-refresh-api.patch 736 BLAKE2B 9f3c4a1f80a27ce7e6f9348153584bc1134e63ad4c839927b7680439966003c76c7a25821be0f3431c472092ef5c8386166b372645f498fb655559fd683c3e6e SHA512 9cd98e2fb8c17d2ca38f5f7a20f5c6ffb03da7f51e53542237992bd2b98b2ef5b5fc0634cd7f5eef24fba8a601703b70ff7d0404e1c5103394e9fda260b815cd
6
+AUX proftpd-fix-hup-crashes.patch 2101 BLAKE2B 5d92b5be88193262c317fa5f9a735a544b67e27a686f2c52572c3b5d00ff8352e750fdc14cca770faa13214030f2b21aa0f0d5643cec0ffb0a5b7973d3f80d25 SHA512 33042d5c239d3b4e7cc5bbd5b96e823c0dd56f1f073e535a1b70694fdeec6842985f6f9bddabfa1df1284570a23a9d90ca5e2c27230ec30f288bc3c3da5296f7
7
+AUX proftpd-tmpfiles.d.conf 34 BLAKE2B 03da2e04c7e0d4c6e889e4414a205942f0762a1ae856d16f95abb1d2e927d68f583ad5bbdbf142b32b141cd82e9288f2ef1faf459cbe8433e2e1127d3b30d686 SHA512 aa6ffbf15e4275941837306259fb426608e82e45a2da4b99c5d7778d11b8c9341e3a12ae9b751d0e173635239b6f1b20f0431be17296c005a83525a48327fa52
8
+AUX proftpd.conf.sample 1275 BLAKE2B db10306f79544b344856e065946e9ae0fa37d43507185f7d2407f23a962750a05bb2682e7c97e3979ca42dfe35921c3db7e98c095431796d82144869df0e324e SHA512 1c26f3e98ed07d89192c640f7823af168c045abee6ab076791aee9d50be5446be870a189979df4b828e7ae907dd40a346f1b92998fa39195195bfada4061c5df
9
+AUX proftpd.initd 1434 BLAKE2B a5d4b8c085925d08d7d0962ccd6a3eaad1a3a9227ea6cf553a217f9ef60c88841b5ab8fa8d249e68182a68ebae5940a421b220af4d2f30cf5c2af8ee4b6678dd SHA512 24875a5034813a12f1d24e1fa2c7a71330ffded96112d50dbe4fea6ea127f735eae48134e2f4c3faad168706eb9ff4e15f93dbbe7d6cb6ed0e0768e47aa1100b
10
+AUX proftpd.service 196 BLAKE2B 89ef578220f97095a5ffd6b4f6d1880dfc26f54e1ac8667009f65da298fb6634f271a64e6593d78b5735069b4de8f8be73484fd97269c67f89573e8f7d434d5e SHA512 12ee7893d37a9d06140b5b6492be74308fe1165a741d4c1b6b690ab4b973f074cad8517fd36af54f2aa452494759d1534c11e70f7212cd55a37cfa439b953062
11
+AUX proftpd.xinetd 295 BLAKE2B 4863cea66df5c32efba61647bbc854953dff28e154fab284c7e9f84efe3279a49c660ae37ef5b1410decdf32bb3061713e371fa3b529098848cae71f3e66d40d SHA512 a13d29ca2289f8bd58b4eb317683d57dfb7d608c53f163844349bbf0b896790f5e9f47a27eafda3b8fc78e60f4a0d6859da7c7ced7df852166cf0b8bcad876d4
12
+DIST mod_clamav-0.11rc.tar.gz 5115 BLAKE2B 1ae03873e263552d9d5b49eb8a3f348eeee165d52c055b5420b6a152c3ca204532436cdaa74d474187c49bb3e647e2e86086a9c59acf7f99108bbbe185e44511 SHA512 6d33ee7b1c9c8e3fb0a0014dde90cfb1d37daa0f4914f147bb800a8318bcf0e03c7c6748d84cda36c5e5c7cd11ee8114bad9978362f581f367db54d3563f4636
13
+DIST mod_gss-1.3.6.tar.gz 117294 BLAKE2B ceaf088e15bbb308d9eff3c139de2e14e5525c6300f4feef957da8eb7e23946735c9c5491db33433162b3c1a14e190f53a00b131fc25f31e803212601f166ad9 SHA512 a7e2f201bc7706f47f583317899bf4bc6a75d5e284b20a4cd9019020d3427334ada92fa3bbb4e153a2cd68e04f76185472b46ed3d3d168bf52a4c200e70ed8e4
14
+DIST mod_vroot-0.9.4.tar.gz 29461 BLAKE2B eb4d3f6425ab0a1a61ca607e4655b5f8ff6ea342ca49d49598e7a4c5596382aa2c1d4e8228a1cdcfff324feb92dac80fcc58e35bbb77155069749afdd7cc41fb SHA512 f5de392c9fe39f0a03b0783a7092bbfe17ea6db991f4b4e4a2d8f092f073d27ef2c64dd6484d5665b5abc808c0caba016d4fc3fab3da3810f5ebe5249bb4cbce
15
+DIST proftpd-1.3.6.tar.gz 20251898 BLAKE2B b68bd8bfb6cc970974b7a67cf13d1a543ffbcb3833552ac52e821fb6e901b3996770a31a4059f2c8512ebfc53672dba69491db69cf484133ea28becb82639d8e SHA512 2a3ca76a0c35ba31e9d79f7f652f4f35768262f5039c5dc04ef83ac9218f624645ac6cee445af4ec6a8c59a9bdad1e7b48e0e90cd13934cbe7c3e77a2f6013c0
16
+DIST proftpd-mod-case-0.7.tar.gz 13184 BLAKE2B bf2118d9b8ed97a5b192b92b515d17ac7a0d75e154288e5afb3a1c3d686e635093df9501cc1c9b077f87c14326e31e8b9f751803dfca1eae9643f12333eb633f SHA512 c08d13ef82fec36ae75aa3213dd02e0ce4045904849f422e152f039a9da66a45e4423751074b8bcf8ce347a40ce0e7bde798a85cbadc962fd872aeaa898261fc
17
+DIST proftpd-mod-diskuse-0.9.tar.gz 18596 BLAKE2B 38c704c8607f0f93b080e77fe793cfe0125c88acc6f818ecb059c6c21a983e040ff5f2c1b91e34ef4ba2666a808d896018c364d1f12ea38f0c477e79bdaa2120 SHA512 d41976bf2810e4b783e775e8c767ca2030c3b5df116219fd31cbbac7feaf9922c315bf4ea092881b0d6cf43f2f4c5dbcae61be3c3a833058d12f962a3024b975
18
+DIST proftpd-mod-msg-0.4.1.tar.gz 8082 BLAKE2B 970b46b19d25bac22ecb01495270a523997a0b7d5b53b9470b4744b919adcf03d5bcee2df85ba88c4a4c20a9fc30dc01459ffb58c5dae8e78a52a7379bf36f11 SHA512 38ea63b1d355e1e10a6a4477596bf3fa28529a871c9fb8dbf093b5317f0743ef9cb59b986d0b8c1c7ed932dad5d5d571883d596fad2d3b793431824db4487012
19
+EBUILD proftpd-1.3.6-r2.ebuild 8582 BLAKE2B ba161cc25acbd8ee46845bae4f1fd209edc546f9726f69d556304a4ec2e22afaa3344cf98797fc4495222a52fb9477644aa3d37acc3e61fc53a370e6b7cc8516 SHA512 646cf0d0c192ab8c979782ff5df4419db13f2c64b91edaf7a33532be2c651deef73e5ce8d476958465dc209c18411adefcd2757181e75305e694225005fe3adb
... ...
@@ -0,0 +1,18 @@
1
+Make --disable-trace a build-time failure instead of link-time one.
2
+
3
+Reported-by: Toralf Förster
4
+Bug: https://bugs.gentoo.org/624570
5
+diff --git a/include/trace.h b/include/trace.h
6
+index f05dd0e..398e939 100644
7
+--- a/include/trace.h
8
++++ b/include/trace.h
9
+@@ -29,2 +29,4 @@
10
+ 
11
++#ifdef PR_USE_TRACE
12
++
13
+ #define PR_TRACE_DEFAULT_CHANNEL	"DEFAULT"
14
+@@ -64,2 +66,4 @@ int pr_trace_vmsg(const char *, int, const char *, va_list);
15
+ 
16
++#endif /* PR_USE_TRACE */
17
++
18
+ #endif /* PR_TRACE_H */
... ...
@@ -0,0 +1,17 @@
1
+diff --git a/mod_diskuse.c b/mod_diskuse.c
2
+index 0e0a0d0..7eb5edf 100644
3
+--- a/mod_diskuse.c
4
++++ b/mod_diskuse.c
5
+@@ -53,6 +53,12 @@
6
+ 
7
+ #define MOD_DISKUSE_VERSION		"mod_diskuse/0.9"
8
+ 
9
++#define pr_parse_expression     pr_expr_create
10
++#define pr_class_or_expression  pr_expr_eval_class_or
11
++#define pr_group_and_expression pr_expr_eval_group_and
12
++#define pr_group_or_expression  pr_expr_eval_group_or
13
++#define pr_user_or_expression   pr_expr_eval_user_or
14
++
15
+ static unsigned char have_max_diskuse = FALSE;
16
+ static double min_diskfree = 0.0;
17
+ static double current_diskfree = 0.0;
... ...
@@ -0,0 +1,60 @@
1
+diff --git a/mod_auth_gss.c.in b/mod_auth_gss.c.in
2
+index 6228b4d..3569ebb 100644
3
+--- a/mod_auth_gss.c.in
4
++++ b/mod_auth_gss.c.in
5
+@@ -38,6 +38,10 @@
6
+  */
7
+ 
8
+ #include "mod_gss.h"
9
++
10
++#define DECLINED PR_DECLINED
11
++#define ERROR_INT PR_ERROR_INT
12
++
13
+ extern unsigned char gss_engine;
14
+ extern unsigned long gss_flags;
15
+ extern int gss_logfd;
16
+diff --git a/mod_gss.c.in b/mod_gss.c.in
17
+index 9d2d4c8..83a4019 100644
18
+--- a/mod_gss.c.in
19
++++ b/mod_gss.c.in
20
+@@ -57,6 +57,13 @@
21
+ 
22
+ #include "mod_gss.h"
23
+ 
24
++#define LOG_SYMLINK PR_LOG_SYMLINK
25
++#define LOG_WRITEABLE_DIR PR_LOG_WRITABLE_DIR
26
++#define HANDLED PR_HANDLED
27
++#define ERROR PR_ERROR
28
++#define DECLINED PR_DECLINED
29
++#define ERROR_INT PR_ERROR_INT
30
++
31
+ module gss_module;
32
+ 
33
+ /* Module variables maybe used externaly */
34
+@@ -1395,7 +1402,7 @@ MODRET gss_auth(cmd_rec *cmd) {
35
+     
36
+     /* Convert the parameter to upper case */
37
+     for (i = 0; i < strlen(cmd->argv[1]); i++)
38
+-	(cmd->argv[1])[i] = toupper((cmd->argv[1])[i]);
39
++	((char*)cmd->argv[1])[i] = toupper(((char*)cmd->argv[1])[i]);
40
+ 
41
+     if (!strcmp(cmd->argv[1], "GSSAPI")) { 
42
+ 	pr_response_send(R_334, "Using authentication type %s; ADAT must follow", cmd->argv[1]);
43
+@@ -2014,7 +2021,7 @@ MODRET gss_prot(cmd_rec *cmd) {
44
+ 
45
+     /* Convert the parameter to upper case */
46
+     for (i = 0; i < strlen(cmd->argv[1]); i++)
47
+-	(cmd->argv[1])[i] = toupper((cmd->argv[1])[i]);
48
++	((char*)cmd->argv[1])[i] = toupper(((char*)cmd->argv[1])[i]);
49
+ 
50
+     /* Only PROT S , PROT C or PROT P is valid with respect to GSS. */
51
+     if (!strcmp(cmd->argv[1], "C")) {
52
+@@ -2098,7 +2105,7 @@ MODRET set_gsskeytab(cmd_rec *cmd) {
53
+     if (!file_exists(cmd->argv[1]))
54
+ 	CONF_ERROR(cmd, "file does not exist");
55
+ 
56
+-    if (*cmd->argv[1] != '/')
57
++    if (((char*)(*cmd->argv))[1] != '/')
58
+ 	CONF_ERROR(cmd, "parameter must be an absolute path");
59
+ 
60
+     add_config_param_str(cmd->argv[0], 1, cmd->argv[1]);
... ...
@@ -0,0 +1,29 @@
1
+diff --git a/mod_msg.c b/mod_msg.c
2
+index 70bce69..4ce6bd7 100644
3
+--- a/mod_msg.c
4
++++ b/mod_msg.c
5
+@@ -52,10 +52,14 @@ extern pid_t mpid;
6
+ 
7
+ module msg_module;
8
+ 
9
+-#ifndef USE_CTRLS
10
++#ifndef PR_USE_CTRLS
11
+ # error "mod_msg requires Controls support (--enable-ctrls)"
12
+ #endif /* USE_CTRLS */
13
+ 
14
++#define pr_scoreboard_read_entry pr_scoreboard_entry_read
15
++#define DECLINED PR_DECLINED
16
++#define HANDLED PR_HANDLED
17
++
18
+ static ctrls_acttab_t msg_acttab[];
19
+ 
20
+ static int msg_engine = FALSE;
21
+@@ -709,7 +713,7 @@ static int msg_handle_msg(pr_ctrls_t *ctrl, int reqargc, char **reqargv) {
22
+       if (msg_send_msg(score->sce_pid, msgstr) < 0) {
23
+         msg_errno = errno;
24
+         (void) pr_log_writefile(msg_logfd, MOD_MSG_VERSION,
25
+-          "error sending message to all (pid %u): %s", reqargv[1],
26
++          "error sending message to all (pid %u): %s",
27
+           score->sce_pid, strerror(errno));
28
+ 
29
+       } else
... ...
@@ -0,0 +1,23 @@
1
+diff --git a/mod_vroot.c b/mod_vroot.c
2
+index b0ce59a..db0df35 100644
3
+--- a/mod_vroot.c
4
++++ b/mod_vroot.c
5
+@@ -1515,7 +1515,7 @@ MODRET set_vrootserverroot(cmd_rec *cmd) {
6
+    */
7
+  
8
+   pathlen = strlen(cmd->argv[1]);
9
+-  if (cmd->argv[1][pathlen - 1] != '/') {
10
++  if (((char*)cmd->argv[1])[pathlen - 1] != '/') {
11
+     c->argv[0] = pstrcat(c->pool, cmd->argv[1], "/", NULL);
12
+ 
13
+   } else {
14
+@@ -1648,7 +1648,9 @@ MODRET vroot_pre_pass(cmd_rec *cmd) {
15
+   fs->rename = vroot_rename;
16
+   fs->unlink = vroot_unlink;
17
+   fs->open = vroot_open;
18
++#if ! PROFTPD_VERSION_NUMBER >= 0x0001030604
19
+   fs->creat = vroot_creat;
20
++#endif /* before ProFTPD 1.3.6_rc4 */
21
+   fs->link = vroot_link;
22
+   fs->readlink = vroot_readlink;
23
+   fs->symlink = vroot_symlink;
... ...
@@ -0,0 +1,76 @@
1
+From 345aa19ee2a98a3612d9b64a49107461455031a0 Mon Sep 17 00:00:00 2001
2
+From: TJ Saunders <tj@castaglia.org>
3
+Date: Tue, 18 Jul 2017 23:00:22 -0700
4
+Subject: [PATCH] Bug#4310: Use of mod_facl as static module causes ProFTPD to
5
+ die on SIGHUP/restart.
6
+
7
+---
8
+ modules/mod_facl.c | 35 +++++++++++++++++++++++++++++++----
9
+ 1 file changed, 31 insertions(+), 4 deletions(-)
10
+
11
+diff --git a/modules/mod_facl.c b/modules/mod_facl.c
12
+index b3ac42b7b..258708cf5 100644
13
+--- a/modules/mod_facl.c
14
++++ b/modules/mod_facl.c
15
+@@ -1260,16 +1260,34 @@ MODRET set_faclengine(cmd_rec *cmd) {
16
+   return PR_HANDLED(cmd);
17
+ }
18
+ 
19
++/* Event listeners
20
++ */
21
++
22
++static void unmount_facl(void) {
23
++  pr_fs_t *fs;
24
++
25
++  fs = pr_unmount_fs("/", "facl");
26
++  if (fs != NULL) {
27
++    destroy_pool(fs->fs_pool);
28
++    fs->fs_pool = NULL;
29
++    return;
30
++  }
31
++
32
++  if (errno != ENOENT) {
33
++    pr_log_debug(DEBUG0, MOD_FACL_VERSION
34
++      ": error unmounting 'facl' FS: %s", strerror(errno));
35
++  }
36
++}
37
++
38
+ #if defined(PR_SHARED_MODULE) && \
39
+     defined(PR_USE_FACL) && \
40
+     defined(HAVE_POSIX_ACL)
41
+ static void facl_mod_unload_ev(const void *event_data, void *user_data) {
42
+   if (strcmp("mod_facl.c", (const char *) event_data) == 0) {
43
++    pr_fs_t *fs;
44
++
45
+     pr_event_unregister(&facl_module, NULL, NULL);
46
+-    if (pr_unregister_fs("/") < 0) {
47
+-      pr_log_debug(DEBUG0, MOD_FACL_VERSION
48
+-        ": error unregistering 'facl' FS: %s", strerror(errno));
49
+-    }
50
++    unmount_facl();
51
+   }
52
+ }
53
+ #endif /* !PR_SHARED_MODULE */
54
+@@ -1303,6 +1321,14 @@ static void facl_postparse_ev(const void *event_data, void *user_data) {
55
+ #endif /* PR_USE_FACL and HAVE_POSIX_ACL */
56
+ }
57
+ 
58
++static void facl_restart_ev(const void *event_data, void *user_data) {
59
++  if (facl_engine == FALSE) {
60
++    return;
61
++  }
62
++
63
++  unmount_facl();
64
++}
65
++
66
+ /* Initialization routines
67
+  */
68
+ 
69
+@@ -1315,6 +1341,7 @@ static int facl_init(void) {
70
+ # endif /* !PR_SHARED_MODULE */
71
+ #endif /* PR_USE_FACL and HAVE_POSIX_ACL */
72
+   pr_event_register(&facl_module, "core.postparse", facl_postparse_ev, NULL);
73
++  pr_event_register(&facl_module, "core.restart", facl_restart_ev, NULL);
74
+ 
75
+   return 0;
76
+ }
... ...
@@ -0,0 +1 @@
1
+d /var/run/proftpd 0755 root root
... ...
@@ -0,0 +1,53 @@
1
+# This is a sample ProFTPD configuration file for Gentoo Linux (rename
2
+# it to 'proftpd.conf' for actual use). It establishes a single server
3
+# and a single anonymous login.
4
+
5
+ServerName "ProFTPD Default Server"
6
+ServerType standalone
7
+DefaultServer on
8
+RequireValidShell off
9
+AuthPAM off
10
+AuthPAMConfig ftp
11
+
12
+# Listen on the standard FTP port 21.
13
+Port 21
14
+
15
+# New directories and files should not be group or world writable.
16
+Umask 022
17
+
18
+# To prevent DoS attacks set the maximum number of child processes
19
+# to 30. If you need to allow more than 30 concurrent connections
20
+# at once simply increase this value.
21
+MaxInstances 30
22
+
23
+# The server will run under ftp/ftp.
24
+User ftp
25
+Group ftp
26
+
27
+# Every FTP sessions is "jailed" into the user's home directory.
28
+DefaultRoot ~
29
+
30
+# Generally files are overwritable.
31
+AllowOverwrite on
32
+
33
+# Disallow the use of the SITE CHMOD command.
34
+<Limit SITE_CHMOD>
35
+  DenyAll
36
+</Limit>
37
+
38
+# A basic anonymous FTP account without an upload directory.
39
+<Anonymous ~ftp>
40
+  User ftp
41
+  Group ftp
42
+
43
+  # Clients can login with the username "anonymous" and "ftp".
44
+  UserAlias anonymous ftp
45
+
46
+  # Limit the maximum number of parallel anonymous logins to 10.
47
+  MaxClients 10
48
+
49
+  # Prohibit the WRITE command for the anonymous users.
50
+  <Limit WRITE>
51
+    DenyAll
52
+  </Limit>
53
+</Anonymous>
... ...
@@ -0,0 +1,51 @@
1
+#!/sbin/openrc-run
2
+# Copyright 1999-2013 Gentoo Foundation
3
+# Distributed under the terms of the GNU General Public License v2
4
+
5
+extra_started_commands="reload"
6
+
7
+depend() {
8
+	need net
9
+	use logger dns mysql postgresql antivirus
10
+}
11
+
12
+check_configuration() {
13
+	if [ ! -e /etc/proftpd/proftpd.conf ] ; then
14
+		eerror "To execute the ProFTPD server you need a /etc/proftpd/proftpd.conf configuration"
15
+		eerror "file. In /etc/proftpd you can find a sample configuration."
16
+		return 1
17
+	fi
18
+	/usr/sbin/proftpd -t &>/dev/null
19
+	if [ $? -ne 0 ] ; then
20
+		eerror "The ProFTPD configuration file /etc/proftpd/proftpd.conf is invalid! You have to"
21
+		eerror "fix your configuration in order to run the ProFTPD server. For more information"
22
+		eerror "you may execute the ProFTPD configuration check '/usr/sbin/proftpd -t'."
23
+		return 2
24
+	fi
25
+}
26
+
27
+start() {
28
+	checkpath -d /var/run/proftpd
29
+	[ "${RC_CMD}" = "restart" ] || check_configuration || return 1
30
+	ebegin "Starting ProFTPD"
31
+	start-stop-daemon --start --quiet \
32
+		--exec /usr/sbin/proftpd \
33
+		--pidfile /var/run/proftpd/proftpd.pid
34
+	eend $?
35
+}
36
+
37
+stop() {
38
+	[ "${RC_CMD}" != "restart" ] || check_configuration || return 1
39
+	ebegin "Stopping ProFTPD"
40
+	start-stop-daemon --stop --quiet --retry 20 \
41
+		--pidfile /var/run/proftpd/proftpd.pid
42
+	eend $?
43
+}
44
+
45
+reload() {
46
+	check_configuration || return 1
47
+	ebegin "Reloading ProFTPD"
48
+	start-stop-daemon --quiet --signal HUP \
49
+		--pidfile /var/run/proftpd/proftpd.pid
50
+	eend $?
51
+}
... ...
@@ -0,0 +1,12 @@
1
+[Unit]
2
+Description=ProFTPd FTP daemon
3
+
4
+[Service]
5
+Type=simple
6
+ExecStart=/usr/sbin/proftpd --nodaemon
7
+StandardOutput=syslog
8
+StandardError=syslog
9
+Restart=always
10
+
11
+[Install]
12
+WantedBy=multi-user.target
... ...
@@ -0,0 +1,15 @@
1
+#
2
+# ProFTPd FTP daemon - http://www.proftpd.org
3
+#
4
+service ftp
5
+{
6
+       flags		= REUSE
7
+       socket_type	= stream
8
+       instances	= 30
9
+       wait		= no
10
+       user		= root
11
+       server		= /usr/sbin/proftpd
12
+       log_on_success	= HOST PID
13
+       log_on_failure	= HOST
14
+       disable		= yes
15
+}
... ...
@@ -0,0 +1,267 @@
1
+# Copyright 1999-2019 Gentoo Authors
2
+# Distributed under the terms of the GNU General Public License v2
3
+
4
+EAPI=6
5
+inherit multilib systemd tmpfiles
6
+
7
+MOD_CASE="0.7"
8
+MOD_CLAMAV="0.11rc"
9
+MOD_DISKUSE="0.9"
10
+MOD_GSS="1.3.6"
11
+MOD_MSG="0.4.1"
12
+MOD_VROOT="0.9.4"
13
+
14
+DESCRIPTION="An advanced and very configurable FTP server"
15
+HOMEPAGE="http://www.proftpd.org/
16
+	http://www.castaglia.org/proftpd/
17
+	http://www.thrallingpenguin.com/resources/mod_clamav.htm
18
+	http://gssmod.sourceforge.net/"
19
+SRC_URI="ftp://ftp.proftpd.org/distrib/source/${P/_/}.tar.gz
20
+	case? ( http://www.castaglia.org/${PN}/modules/${PN}-mod-case-${MOD_CASE}.tar.gz )
21
+	clamav? ( https://secure.thrallingpenguin.com/redmine/attachments/download/1/mod_clamav-${MOD_CLAMAV}.tar.gz )
22
+	diskuse? ( http://www.castaglia.org/${PN}/modules/${PN}-mod-diskuse-${MOD_DISKUSE}.tar.gz )
23
+	kerberos? ( mirror://sourceforge/gssmod/mod_gss-${MOD_GSS}.tar.gz )
24
+	msg? ( http://www.castaglia.org/${PN}/modules/${PN}-mod-msg-${MOD_MSG}.tar.gz )
25
+	vroot? ( https://github.com/Castaglia/${PN}-mod_vroot/archive/v${MOD_VROOT}.tar.gz -> mod_vroot-${MOD_VROOT}.tar.gz )"
26
+LICENSE="GPL-2"
27
+
28
+SLOT="0"
29
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
30
+IUSE="acl authfile ban +caps case clamav copy ctrls deflate diskuse doc dso dynmasq exec ifsession ifversion ident ipv6
31
+	kerberos ldap libressl log_forensic memcache msg mysql ncurses nls pam +pcre postgres qos radius
32
+	ratio readme rewrite selinux sftp shaper sitemisc snmp sodium softquota sqlite ssl tcpd test unique_id vroot xinetd"
33
+# TODO: geoip
34
+REQUIRED_USE="ban? ( ctrls )
35
+	msg? ( ctrls )
36
+	sftp? ( ssl )
37
+	shaper? ( ctrls )"
38
+
39
+CDEPEND="acl? ( virtual/acl )
40
+	caps? ( sys-libs/libcap )
41
+	clamav? ( app-antivirus/clamav )
42
+	kerberos? ( virtual/krb5 )
43
+	ldap? ( net-nds/openldap )
44
+	memcache? ( >=dev-libs/libmemcached-0.41 )
45
+	mysql? ( dev-db/mysql-connector-c:0= )
46
+	nls? ( virtual/libiconv )
47
+	ncurses? ( sys-libs/ncurses:0= )
48
+	ssl? (
49
+		!libressl? ( dev-libs/openssl:0= )
50
+		libressl? ( dev-libs/libressl:= )
51
+	)
52
+	pam? ( virtual/pam )
53
+	pcre? ( dev-libs/libpcre )
54
+	postgres? ( dev-db/postgresql:= )
55
+	sodium? ( dev-libs/libsodium:0= )
56
+	sqlite? ( dev-db/sqlite:3 )
57
+	xinetd? ( virtual/inetd )"
58
+DEPEND="${CDEPEND}
59
+	test? ( dev-libs/check )"
60
+RDEPEND="${CDEPEND}
61
+	net-ftp/ftpbase
62
+	selinux? ( sec-policy/selinux-ftp )"
63
+
64
+S="${WORKDIR}/${P/_/}"
65
+
66
+PATCHES=(
67
+	"${FILESDIR}"/${PN}-1.3.6-use-trace.patch
68
+	"${FILESDIR}/proftpd-fix-hup-crashes.patch"
69
+	)
70
+
71
+RESTRICT=test # tests corrupt memory. need to be fixed upstream first
72
+
73
+in_dir() {
74
+	pushd "${WORKDIR}/${1}" || die
75
+	shift
76
+	"$@"
77
+	popd
78
+}
79
+
80
+src_prepare() {
81
+	# Skip 'install-conf' / Support LINGUAS
82
+	sed -i -e "/install-all/s/ install-conf//" Makefile.in || die
83
+	sed -i -e "s/^LANGS=.*$/LANGS=${LINGUAS}/" locale/Makefile.in || die
84
+
85
+	# Prepare external modules
86
+	if use case; then
87
+		cp -v "${WORKDIR}"/mod_case/mod_case.c contrib || die
88
+		cp -v "${WORKDIR}"/mod_case/mod_case.html doc/contrib || die
89
+	fi
90
+
91
+	if use clamav ; then
92
+		cp -v "${WORKDIR}"/mod_clamav-${MOD_CLAMAV}/mod_clamav.{c,h} contrib || die
93
+		eapply "${WORKDIR}"/mod_clamav-${MOD_CLAMAV}/${PN}.patch
94
+	fi
95
+
96
+	if use diskuse; then
97
+		in_dir mod_diskuse eapply "${FILESDIR}"/${PN}-1.3.6_rc4-diskuse-refresh-api.patch
98
+
99
+		# ./configure will modify files. Symlink them instead of copying
100
+		ln -sv "${WORKDIR}"/mod_diskuse/mod_diskuse.h "${S}"/contrib || die
101
+
102
+		cp -v "${WORKDIR}"/mod_diskuse/mod_diskuse.c "${S}"/contrib || die
103
+		cp -v "${WORKDIR}"/mod_diskuse/mod_diskuse.html "${S}"/doc/contrib || die
104
+	fi
105
+
106
+	if use msg; then
107
+		in_dir mod_msg eapply "${FILESDIR}"/${PN}-1.3.6_rc4-msg-refresh-api.patch
108
+
109
+		cp -v "${WORKDIR}"/mod_msg/mod_msg.c contrib || die
110
+		cp -v "${WORKDIR}"/mod_msg/mod_msg.html doc/contrib || die
111
+	fi
112
+
113
+	if use vroot; then
114
+		in_dir ${PN}-mod_vroot-${MOD_VROOT} eapply "${FILESDIR}"/${PN}-1.3.6_rc4-vroot-refresh-api.patch
115
+
116
+		cp -v "${WORKDIR}"/${PN}-mod_vroot-${MOD_VROOT}/mod_vroot.c contrib || die
117
+		cp -v "${WORKDIR}"/${PN}-mod_vroot-${MOD_VROOT}/mod_vroot.html doc/contrib || die
118
+	fi
119
+
120
+	if use kerberos ; then
121
+		in_dir mod_gss-${MOD_GSS} eapply "${FILESDIR}"/${PN}-1.3.6_rc4-gss-refresh-api.patch
122
+
123
+		# Support app-crypt/heimdal / Gentoo Bug #284853
124
+		sed -i -e "s/krb5_principal2principalname/_\0/" "${WORKDIR}"/mod_gss-${MOD_GSS}/mod_auth_gss.c.in || die
125
+
126
+		# Remove obsolete DES / Gentoo Bug #324903
127
+		# Replace 'rpm' lookups / Gentoo Bug #391021
128
+		sed -i -e "/ac_gss_libs/s/ -ldes425//" \
129
+			-e "s/ac_libdir=\`rpm -q -l.*$/ac_libdir=\/usr\/$(get_libdir)\//" \
130
+			-e "s/ac_includedir=\`rpm -q -l.*$/ac_includedir=\/usr\/include\//" "${WORKDIR}"/mod_gss-${MOD_GSS}/configure{,.in}  || die
131
+
132
+		# ./configure will modify files. Symlink them instead of copying
133
+		ln -sv "${WORKDIR}"/mod_gss-${MOD_GSS}/mod_auth_gss.c "${S}"/contrib || die
134
+		ln -sv "${WORKDIR}"/mod_gss-${MOD_GSS}/mod_gss.c "${S}"/contrib || die
135
+		ln -sv "${WORKDIR}"/mod_gss-${MOD_GSS}/mod_gss.h "${S}"/include || die
136
+
137
+		cp -v "${WORKDIR}"/mod_gss-${MOD_GSS}/README.mod_{auth_gss,gss} "${S}" || die
138
+		cp -v "${WORKDIR}"/mod_gss-${MOD_GSS}/mod_gss.html "${S}"/doc/contrib || die
139
+		cp -v "${WORKDIR}"/mod_gss-${MOD_GSS}/rfc{1509,2228}.txt "${S}"/doc/rfc || die
140
+	fi
141
+
142
+	default
143
+}
144
+
145
+src_configure() {
146
+	local c m
147
+
148
+	use acl && m="${m}:mod_facl"
149
+	use ban && m="${m}:mod_ban"
150
+	use case && m="${m}:mod_case"
151
+	use clamav && m="${m}:mod_clamav"
152
+	use copy && m="${m}:mod_copy"
153
+	use ctrls && m="${m}:mod_ctrls_admin"
154
+	use deflate && m="${m}:mod_deflate"
155
+	if use diskuse ; then
156
+		in_dir mod_diskuse econf
157
+		m="${m}:mod_diskuse"
158
+	fi
159
+	use dynmasq && m="${m}:mod_dynmasq"
160
+	use exec && m="${m}:mod_exec"
161
+	use ifsession && m="${m}:mod_ifsession"
162
+	use ifversion && m="${m}:mod_ifversion"
163
+	if use kerberos ; then
164
+		in_dir mod_gss-${MOD_GSS} econf
165
+		m="${m}:mod_gss:mod_auth_gss"
166
+	fi
167
+	use ldap && m="${m}:mod_ldap"
168
+	use log_forensic && m="${m}:mod_log_forensic"
169
+	use msg && m="${m}:mod_msg"
170
+	if use mysql || use postgres || use sqlite ; then
171
+		m="${m}:mod_sql:mod_sql_passwd"
172
+		use mysql && m="${m}:mod_sql_mysql"
173
+		use postgres && m="${m}:mod_sql_postgres"
174
+		use sqlite && m="${m}:mod_sql_sqlite"
175
+	fi
176
+	use qos && m="${m}:mod_qos"
177
+	use radius && m="${m}:mod_radius"
178
+	use ratio && m="${m}:mod_ratio"
179
+	use readme && m="${m}:mod_readme"
180
+	use rewrite && m="${m}:mod_rewrite"
181
+	if use sftp ; then
182
+		m="${m}:mod_sftp"
183
+		use pam && m="${m}:mod_sftp_pam"
184
+		use mysql || use postgres || use sqlite && m="${m}:mod_sftp_sql"
185
+	fi
186
+	use shaper && m="${m}:mod_shaper"
187
+	use sitemisc && m="${m}:mod_site_misc"
188
+	use snmp && m="${m}:mod_snmp"
189
+	if use softquota ; then
190
+		m="${m}:mod_quotatab:mod_quotatab_file"
191
+		use ldap && m="${m}:mod_quotatab_ldap"
192
+		use radius && m="${m}:mod_quotatab_radius"
193
+		use mysql || use postgres || use sqlite && m="${m}:mod_quotatab_sql"
194
+	fi
195
+	if use ssl ; then
196
+		m="${m}:mod_tls:mod_tls_shmcache"
197
+		use memcache && m="${m}:mod_tls_memcache"
198
+	fi
199
+	if use tcpd ; then
200
+		m="${m}:mod_wrap2:mod_wrap2_file"
201
+		use mysql || use postgres || use sqlite && m="${m}:mod_wrap2_sql"
202
+	fi
203
+	use unique_id && m="${m}:mod_unique_id"
204
+	use vroot && m="${m}:mod_vroot"
205
+
206
+	if [[ -n ${PROFTP_CUSTOM_MODULES} ]]; then
207
+		einfo "Adding user-specified extra modules: '${PROFTP_CUSTOM_MODULES}'"
208
+		m="${m}:${PROFTP_CUSTOM_MODULES}"
209
+	fi
210
+
211
+	[[ -z ${m} ]] || c="${c} --with-modules=${m:1}"
212
+
213
+	econf --localstatedir=/var/run/proftpd --sysconfdir=/etc/proftpd --disable-strip \
214
+		$(use_enable acl facl) \
215
+		$(use_enable authfile auth-file) \
216
+		$(use_enable caps cap) \
217
+		$(use_enable ctrls) \
218
+		$(use_enable dso) \
219
+		$(use_enable ident) \
220
+		$(use_enable ipv6) \
221
+		$(use_enable memcache) \
222
+		$(use_enable ncurses) \
223
+		$(use_enable nls) \
224
+		$(use_enable ssl openssl) \
225
+		$(use_enable pam auth-pam) \
226
+		$(use_enable pcre) \
227
+		$(use_enable sodium) \
228
+		$(use_enable test tests) \
229
+		--enable-trace \
230
+		$(use_enable userland_GNU shadow) \
231
+		$(use_enable userland_GNU autoshadow) \
232
+		${c:1}
233
+}
234
+
235
+src_test() {
236
+	emake api-tests -C tests
237
+}
238
+
239
+src_install() {
240
+	default
241
+	[[ -z ${LINGUAS-set} ]] && rm -r "${ED}"/usr/share/locale
242
+	rm -rf "${ED}"/var/run
243
+
244
+	newinitd "${FILESDIR}"/proftpd.initd proftpd
245
+	insinto /etc/proftpd
246
+	doins "${FILESDIR}"/proftpd.conf.sample
247
+
248
+	if use xinetd ; then
249
+		insinto /etc/xinetd.d
250
+		newins "${FILESDIR}"/proftpd.xinetd proftpd
251
+	fi
252
+
253
+	dodoc ChangeLog CREDITS INSTALL NEWS README* RELEASE_NOTES
254
+	if use doc ; then
255
+		dohtml doc/*.html doc/contrib/*.html doc/howto/*.html doc/modules/*.html
256
+		docinto rfc
257
+		dodoc doc/rfc/*.txt
258
+	fi
259
+
260
+	systemd_dounit       "${FILESDIR}"/${PN}.service
261
+	systemd_newtmpfilesd "${FILESDIR}"/${PN}-tmpfiles.d.conf ${PN}.conf
262
+}
263
+
264
+pkg_postinst() {
265
+	# Create /var/run files at package merge time: bug #650000
266
+	tmpfiles_process ${PN}.conf
267
+}
0 268