[prev in list] [next in list] [prev in thread] [next in thread] 

List:       proftpd-committers
Subject:    [ProFTPD-committers] proftpd/contrib mod_ban.c,1.71,1.72
From:       TJ Saunders <castaglia () users ! sourceforge ! net>
Date:       2014-02-23 18:07:15
Message-ID: E1WHdSP-0002rJ-FT () sfs-ml-4 ! v29 ! ch3 ! sourceforge ! com
[Download RAW message or body]

Update of /cvsroot/proftp/proftpd/contrib
In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv13537/contrib

Modified Files:
	mod_ban.c 
Log Message:

Allow for custom, user-specified event names in the BanOnEvent directive.
This will make it easier to support rules for events other than the ones
that are specially handled, and ease the need to add special handling in the
future.


Index: mod_ban.c
===================================================================
RCS file: /cvsroot/proftp/proftpd/contrib/mod_ban.c,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -d -r1.71 -r1.72
--- mod_ban.c	23 Feb 2014 17:10:32 -0000	1.71
+++ mod_ban.c	23 Feb 2014 18:07:13 -0000	1.72
@@ -127,6 +127,7 @@
 #define BAN_EV_TYPE_UNHANDLED_CMD		14
 #define BAN_EV_TYPE_TLS_HANDSHAKE		15
 #define BAN_EV_TYPE_ROOT_LOGIN			16
+#define BAN_EV_TYPE_USER_DEFINED		17
 
 struct ban_event_list {
   struct ban_event_entry bel_entries[BAN_EVENT_LIST_MAXSZ];
@@ -217,6 +218,7 @@
 static void ban_timeoutnoxfer_ev(const void *, void *);
 static void ban_tlshandshake_ev(const void *, void *);
 static void ban_unhandledcmd_ev(const void *, void *);
+static void ban_userdefined_ev(const void *, void *);
 
 static void ban_handle_event(unsigned int, int, const char *,
   struct ban_event_entry *);
@@ -1169,6 +1171,9 @@
 
     case BAN_EV_TYPE_ROOT_LOGIN:
       return "RootLogin";
+
+    case BAN_EV_TYPE_USER_DEFINED:
+      return "[user-defined]";
   }
 
   return NULL;
@@ -1554,6 +1559,7 @@
           case BAN_EV_TYPE_UNHANDLED_CMD:
           case BAN_EV_TYPE_TLS_HANDSHAKE:
           case BAN_EV_TYPE_ROOT_LOGIN:
+          case BAN_EV_TYPE_USER_DEFINED:
             if (!have_banner) {
               pr_ctrls_add_response(ctrl, "Ban Events:");
               have_banner = TRUE;
@@ -2405,8 +2411,8 @@
       ban_unhandledcmd_ev, bee);
 
   } else {
-    CONF_ERROR(cmd, pstrcat(cmd->tmp_pool, "unknown ", cmd->argv[0], " name: '",
-      cmd->argv[1], "'", NULL));
+    bee->bee_type = BAN_EV_TYPE_USER_DEFINED;
+    pr_event_register(&ban_module, cmd->argv[1], ban_userdefined_ev, bee);
   }
 
   return PR_HANDLED(cmd);
@@ -3027,6 +3033,18 @@
   ban_handle_event(BAN_EV_TYPE_UNHANDLED_CMD, BAN_TYPE_HOST, ipstr, tmpl);
 }
 
+static void ban_userdefined_ev(const void *event_data, void *user_data) {
+  const char *ipstr = pr_netaddr_get_ipstr(session.c->remote_addr);
+
+  /* user_data is a template of the ban event entry. */
+  struct ban_event_entry *tmpl = user_data;
+
+  if (ban_engine != TRUE)
+    return;
+
+  ban_handle_event(BAN_EV_TYPE_USER_DEFINED, BAN_TYPE_HOST, ipstr, tmpl);
+}
+
 /* Initialization routines
  */
 


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
ProFTPD Committers Mailing List
proftpd-committers@proftpd.org
https://lists.sourceforge.net/lists/listinfo/proftp-committers
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic