]> git.pld-linux.org Git - packages/proftpd.git/commitdiff
44c14a1d1d1a49468baf76b54392d99b inn-2.3.1-v6-20010203.patch.gz
authorJan Rękorajski <baggins@pld-linux.org>
Mon, 5 Feb 2001 17:05:35 +0000 (17:05 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
7d6e6d2c891807844410df7ed76955aa  iptables-ip6libdir.patch
12b8256421848ae05bf4a3b83cabab37  proftpd-1.2.0rc2cvs-ipv6-20010203.patch.gz
d2b641ca88cace4b482fc5d522746ffe  proftpd-CVS-20010203.patch.gz
fe87b2fa0e807a80453f8b7e2dd3e005  proftpd-mod_tcpd.c
4345acebd0bccacaf779c4bee48e3dcd  proftpd-ratio.patch
90e125a6bfd8537068f4a0e11a3158d3  proftpd.init
e60a25b4950b67d6a37a25bb4e9ae5f8  proftpd.sysconfig

Changed files:
    proftpd-mod_tcpd.c -> 1.1
    proftpd-ratio.patch -> 1.1
    proftpd.init -> 1.1
    proftpd.sysconfig -> 1.1

proftpd-mod_tcpd.c [new file with mode: 0644]
proftpd-ratio.patch [new file with mode: 0644]
proftpd.init [new file with mode: 0644]
proftpd.sysconfig [new file with mode: 0644]

diff --git a/proftpd-mod_tcpd.c b/proftpd-mod_tcpd.c
new file mode 100644 (file)
index 0000000..3e57de1
--- /dev/null
@@ -0,0 +1,242 @@
+/*
+ * ProFTPD: mod_tcpd -- use TCPD library for access control
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * -- DO NOT MODIFY THE TWO LINES BELOW --
+ * $Libraries: -lwrap$
+ * $Id$
+ *
+ */
+
+#include "conf.h"
+#include "privs.h"
+#include "tcpd.h"
+
+/*
+ * -------------------------------------------------------------------------
+ *   Configuration Handlers
+ * -------------------------------------------------------------------------
+ */
+
+MODRET set_tcpd(cmd_rec * cmd)
+{
+       int b;
+
+       CHECK_ARGS(cmd, 1);
+       CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
+
+       if ((b = get_boolean(cmd, 1)) == -1)
+               CONF_ERROR(cmd, "expected boolean argument.");
+
+       add_config_param("UseTCPD", 1, (void *) b);
+
+       return HANDLED(cmd);
+}
+
+MODRET set_tcpd_service(cmd_rec * cmd)
+{
+       char *service_name;
+
+       CHECK_ARGS(cmd, 1);
+       CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
+
+       service_name = cmd->argv[1];
+
+       add_config_param_str("TCPDServiceName", 1, (void *) service_name);
+
+       return HANDLED(cmd);
+}
+
+/*
+ * These two functions are copied, almost verbatim, from the set_sysloglevel()
+ * function in modules/mod_core.c.  I hereby cite the source for this code
+ * as MacGuyver <macguyver@tos.net>. =)
+ */
+
+MODRET set_allow_syslog_level(cmd_rec * cmd)
+{
+       CHECK_ARGS(cmd, 1);
+       CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_ANON);
+
+       if (!strcasecmp(cmd->argv[1], "emerg")) {
+               add_config_param("HostsAllowSyslogLevel", 1,
+                                (void *) PR_LOG_EMERG);
+
+       } else if (!strcasecmp(cmd->argv[1], "alert")) {
+               add_config_param("HostsAllowSyslogLevel", 1,
+                                (void *) PR_LOG_ALERT);
+
+       } else if (!strcasecmp(cmd->argv[1], "crit")) {
+               add_config_param("HostsAllowSyslogLevel", 1,
+                                (void *) PR_LOG_CRIT);
+
+       } else if (!strcasecmp(cmd->argv[1], "error")) {
+               add_config_param("HostsAllowSyslogLevel", 1,
+                                (void *) PR_LOG_ERR);
+
+       } else if (!strcasecmp(cmd->argv[1], "warn")) {
+               add_config_param("HostsAllowSyslogLevel", 1,
+                                (void *) PR_LOG_WARNING);
+
+       } else if (!strcasecmp(cmd->argv[1], "notice")) {
+               add_config_param("HostsAllowSyslogLevel", 1,
+                                (void *) PR_LOG_NOTICE);
+
+       } else if (!strcasecmp(cmd->argv[1], "info")) {
+               add_config_param("HostsAllowSyslogLevel", 1,
+                                (void *) PR_LOG_INFO);
+
+       } else if (!strcasecmp(cmd->argv[1], "debug")) {
+               add_config_param("HostsAllowSyslogLevel", 1,
+                                (void *) PR_LOG_DEBUG);
+
+       } else {
+               CONF_ERROR(cmd, "HostsAllowSyslogLevel requires level keyword: "
+                               "one of emerg/alert/crit/error/warn/notice/info/debug");
+       }
+
+       return HANDLED(cmd);
+}
+
+MODRET set_deny_syslog_level(cmd_rec * cmd)
+{
+       CHECK_ARGS(cmd, 1);
+       CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_ANON);
+
+       if (!strcasecmp(cmd->argv[1], "emerg")) {
+               add_config_param("HostsDenySyslogLevel", 1,
+                                (void *) PR_LOG_EMERG);
+
+       } else if (!strcasecmp(cmd->argv[1], "alert")) {
+               add_config_param("HostsDenySyslogLevel", 1,
+                                (void *) PR_LOG_ALERT);
+
+       } else if (!strcasecmp(cmd->argv[1], "crit")) {
+               add_config_param("HostsDenySyslogLevel", 1,
+                                (void *) PR_LOG_CRIT);
+
+       } else if (!strcasecmp(cmd->argv[1], "error")) {
+               add_config_param("HostsDenySyslogLevel", 1,
+                                (void *) PR_LOG_ERR);
+
+       } else if (!strcasecmp(cmd->argv[1], "warn")) {
+               add_config_param("HostsDenySyslogLevel", 1,
+                                (void *) PR_LOG_WARNING);
+
+       } else if (!strcasecmp(cmd->argv[1], "notice")) {
+               add_config_param("HostsDenySyslogLevel", 1,
+                                (void *) PR_LOG_NOTICE);
+
+       } else if (!strcasecmp(cmd->argv[1], "info")) {
+               add_config_param("HostsDenySyslogLevel", 1,
+                                (void *) PR_LOG_INFO);
+
+       } else if (!strcasecmp(cmd->argv[1], "debug")) {
+               add_config_param("HostsDenySyslogLevel", 1,
+                                (void *) PR_LOG_DEBUG);
+
+       } else {
+               CONF_ERROR(cmd, "HostsDenySyslogLevel requires level keyword: "
+                               "one of emerg/alert/crit/error/warn/notice/info/debug");
+       }
+
+       return HANDLED(cmd);
+}
+
+/*
+ * -------------------------------------------------------------------------
+ *  Command Handlers
+ * -------------------------------------------------------------------------
+ */
+
+MODRET handle_request(cmd_rec * cmd)
+{
+       struct request_info request;
+       char *service_name;
+
+       /*
+        * If we haven't been explicitly disabled, enable us by default.
+        */
+       if(get_param_int(TOPLEVEL_CONF, "UseTCPD", FALSE) == 0)
+               return DECLINED(cmd);
+
+       if ((allow_severity = get_param_int(CURRENT_CONF, "HostsAllowSyslogLevel",
+                                       FALSE)) == -1)
+               allow_severity = LOG_INFO;
+
+       if ((deny_severity = get_param_int(CURRENT_CONF, "HostsDenySyslogLevel",
+                                       FALSE)) == -1)
+               deny_severity = LOG_WARNING;
+
+       if ((service_name = (char *)get_param_ptr(CURRENT_CONF, "TCPDServiceName",
+                                       FALSE)) == NULL)
+               service_name = "proftpd";
+
+       request_init(&request, RQ_DAEMON, service_name,
+                       RQ_FILE, session.c->rfd,
+                       RQ_CLIENT_SIN, session.c->remote_ipaddr,
+                       NULL);
+
+       fromhost(&request);
+
+       if (hosts_access(&request) != TCPD_ALLOW) {
+               add_response_err(R_550,
+                                "Unable to connect to %s: connection refused",
+                                cmd->server->ServerFQDN);
+               add_response_err(R_DUP,
+                                "Please contact %s for more information",
+                                cmd->server->ServerAdmin);
+               refuse(&request);
+
+               return ERROR(cmd);
+       }
+
+       /*
+        * if request is allowable, return DECLINED (for engine to act as if this
+        * handler was never called, else ERROR (for engine to abort processing and
+        * deny request.
+        */
+
+       /* log the accepted connection */
+       tcpd_allowlog(&request);
+
+       return HANDLED(cmd);
+}
+
+static conftable tcpd_conftab[] = {
+       {"HostsAllowSyslogLevel", set_allow_syslog_level, NULL},
+       {"HostsDenySyslogLevel", set_deny_syslog_level, NULL},
+       {"UseTCPD", set_tcpd, NULL},
+       {"TCPDServiceName", set_tcpd_service, NULL},
+       {NULL}
+};
+
+static cmdtable tcpd_cmdtab[] = {
+       {PRE_CMD, C_PASS, G_NONE, handle_request, FALSE, FALSE},
+       {0, NULL}
+};
+
+module tcpd_module = {
+       NULL,
+       NULL,
+       0x20,
+       "tcpd",
+       tcpd_conftab,
+       tcpd_cmdtab,
+       NULL,
+       NULL,
+       NULL
+};
diff --git a/proftpd-ratio.patch b/proftpd-ratio.patch
new file mode 100644 (file)
index 0000000..e2547a5
--- /dev/null
@@ -0,0 +1,11 @@
+--- proftpd-1.2.0rc2/contrib/mod_ratio.c~      Sat Feb  3 19:33:21 2001
++++ proftpd-1.2.0rc2/contrib/mod_ratio.c       Sat Feb  3 19:35:45 2001
+@@ -382,7 +380,7 @@
+     {
+       path = dir_realpath (cmd->tmp_pool, cmd->arg);
+       if (path
+-        && dir_check (cmd->tmp_pool, cmd->argv[0], cmd->group, path, NULL)
++        && dir_check (cmd->tmp_pool, cmd->argv[0], cmd->group, path)
+         && fs_stat (path, &sbuf) > -1)
+       fsize = sbuf.st_size;
diff --git a/proftpd.init b/proftpd.init
new file mode 100644 (file)
index 0000000..78c06df
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/sh
+#
+# proftpd      ProFTPD ftp server
+#
+# chkconfig:   345 85 15
+# description: ProFTPD is a highly configurable ftp daemon for unix and unix-like
+#              operating systems.
+# processname: proftpd
+# pidfile:     /var/run/proftpd.pid
+# config:      /etc/ftpd/proftpd.conf
+
+
+# Source function library
+. /etc/rc.d/init.d/functions
+
+# Get network config
+. /etc/sysconfig/network
+
+# Get service config
+[ -f /etc/sysconfig/proftpd ] && . /etc/sysconfig/proftpd
+
+# Check that networking is up.
+if is_no "${NETWORKING}"; then
+        # nls "ERROR: Networking is down. %s can't be run." <service>
+        msg_Network_Down proftpd
+        exit 1
+fi
+
+# See how we were called.
+case "$1" in
+  start)
+       # Check if the service is already running?
+        if [ ! -f /var/lock/subsys/proftpd ]; then
+               msg_starting ProFTPD
+               daemon proftpd $PROFTPD_OPTS
+               RETVAL=$?
+               [ $RETVAL -eq 0 ] && touch /var/lock/subsys/proftpd
+       else
+               msg_Already_Running ProFTPD
+               exit 1
+       fi
+       ;;
+  stop)
+        # Stop daemons.
+       if [ -f /var/lock/subsys/proftpd ]; then
+                msg_stopping ProFTPD
+                killproc proftpd
+                rm -f /var/lock/subsys/proftpd /var/run/proftpd.pid >/dev/null 2>&1
+        else
+               msg_Not_Running ProFTPD
+               exit 1
+       fi
+       ;;
+  status)
+       status proftpd
+       exit $?
+       ;;
+  restart|reload)
+       $0 stop
+       $0 start
+       ;;
+  *)
+       msg_Usage "$0 {start|stop|restart|status}"
+       exit 1
+       ;;
+esac
+
+exit $RETVAL
diff --git a/proftpd.sysconfig b/proftpd.sysconfig
new file mode 100644 (file)
index 0000000..910baa4
--- /dev/null
@@ -0,0 +1,8 @@
+# Customized setings for proftpd
+
+# Nice level for apache
+SERVICE_RUN_NICE_LEVEL="+5"
+
+# Cmdline options 
+PROFTPD_OPTS=""
+
This page took 0.042262 seconds and 4 git commands to generate.