]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/m_kline.c
kline: Fix oper reasons.
[irc/rqf/shadowircd.git] / modules / m_kline.c
index 44012edc26699aa264026fca73dc89def7e73f00..2056e4d2fd381defba0df8431b46d33060014eba 100644 (file)
@@ -44,6 +44,7 @@
 #include "modules.h"
 #include "reject.h"
 #include "bandbi.h"
+#include "operhash.h"
 
 static int mo_kline(struct Client *, struct Client *, int, const char **);
 static int ms_kline(struct Client *, struct Client *, int, const char **);
@@ -75,9 +76,9 @@ static int valid_wild_card(struct Client *source_p, const char *user, const char
 static void handle_remote_kline(struct Client *source_p, int tkline_time,
                                const char *user, const char *host, const char *reason);
 static void apply_kline(struct Client *source_p, struct ConfItem *aconf,
-                       const char *reason, const char *oper_reason, const char *current_date);
+                       const char *reason, const char *oper_reason);
 static void apply_tkline(struct Client *source_p, struct ConfItem *aconf,
-                        const char *, const char *, const char *, int);
+                        const char *, const char *, int);
 static int already_placed_kline(struct Client *, const char *, const char *, int);
 
 static void handle_remote_unkline(struct Client *source_p, const char *user, const char *host);
@@ -98,10 +99,8 @@ mo_kline(struct Client *client_p, struct Client *source_p, int parc, const char
        char def[] = "No Reason";
        char user[USERLEN + 2];
        char host[HOSTLEN + 2];
-       char buffer[IRCD_BUFSIZE];
        char *reason = def;
        char *oper_reason;
-       const char *current_date;
        const char *target_server = NULL;
        struct ConfItem *aconf;
        int tkline_time = 0;
@@ -169,12 +168,13 @@ mo_kline(struct Client *client_p, struct Client *source_p, int parc, const char
                return 0;
 
        rb_set_time();
-       current_date = smalldate();
        aconf = make_conf();
        aconf->status = CONF_KILL;
+       aconf->created = rb_current_time();
        aconf->host = rb_strdup(host);
        aconf->user = rb_strdup(user);
        aconf->port = 0;
+       aconf->info.oper = operhash_add(get_oper_name(source_p));
 
        /* Look for an oper reason */
        if((oper_reason = strchr(reason, '|')) != NULL)
@@ -185,21 +185,12 @@ mo_kline(struct Client *client_p, struct Client *source_p, int parc, const char
                if(!EmptyString(oper_reason))
                        aconf->spasswd = rb_strdup(oper_reason);
        }
+       aconf->passwd = rb_strdup(reason);
 
        if(tkline_time > 0)
-       {
-               rb_snprintf(buffer, sizeof(buffer),
-                           "Temporary K-line %d min. - %s (%s)",
-                           (int) (tkline_time / 60), reason, current_date);
-               aconf->passwd = rb_strdup(buffer);
-               apply_tkline(source_p, aconf, reason, oper_reason, current_date, tkline_time);
-       }
+               apply_tkline(source_p, aconf, reason, oper_reason, tkline_time);
        else
-       {
-               rb_snprintf(buffer, sizeof(buffer), "%s (%s)", reason, current_date);
-               aconf->passwd = rb_strdup(buffer);
-               apply_kline(source_p, aconf, reason, oper_reason, current_date);
-       }
+               apply_kline(source_p, aconf, reason, oper_reason);
 
        if(ConfigFileEntry.kline_delay)
        {
@@ -264,8 +255,6 @@ static void
 handle_remote_kline(struct Client *source_p, int tkline_time,
                    const char *user, const char *host, const char *kreason)
 {
-       char buffer[BUFSIZE];
-       const char *current_date;
        char *reason = LOCAL_COPY(kreason);
        struct ConfItem *aconf = NULL;
        char *oper_reason;
@@ -285,8 +274,10 @@ handle_remote_kline(struct Client *source_p, int tkline_time,
        aconf = make_conf();
 
        aconf->status = CONF_KILL;
+       aconf->created = rb_current_time();
        aconf->user = rb_strdup(user);
        aconf->host = rb_strdup(host);
+       aconf->info.oper = operhash_add(get_oper_name(source_p));
 
        /* Look for an oper reason */
        if((oper_reason = strchr(reason, '|')) != NULL)
@@ -297,23 +288,12 @@ handle_remote_kline(struct Client *source_p, int tkline_time,
                if(!EmptyString(oper_reason))
                        aconf->spasswd = rb_strdup(oper_reason);
        }
-
-       current_date = smalldate();
+       aconf->passwd = rb_strdup(reason);
 
        if(tkline_time > 0)
-       {
-               rb_snprintf(buffer, sizeof(buffer),
-                           "Temporary K-line %d min. - %s (%s)",
-                           (int) (tkline_time / 60), reason, current_date);
-               aconf->passwd = rb_strdup(buffer);
-               apply_tkline(source_p, aconf, reason, oper_reason, current_date, tkline_time);
-       }
+               apply_tkline(source_p, aconf, reason, oper_reason, tkline_time);
        else
-       {
-               rb_snprintf(buffer, sizeof(buffer), "%s (%s)", reason, current_date);
-               aconf->passwd = rb_strdup(buffer);
-               apply_kline(source_p, aconf, reason, oper_reason, current_date);
-       }
+               apply_kline(source_p, aconf, reason, oper_reason);
 
        if(ConfigFileEntry.kline_delay)
        {
@@ -480,7 +460,7 @@ handle_remote_unkline(struct Client *source_p, const char *user, const char *hos
  */
 static void
 apply_kline(struct Client *source_p, struct ConfItem *aconf,
-           const char *reason, const char *oper_reason, const char *current_date)
+           const char *reason, const char *oper_reason)
 {
        add_conf_by_address(aconf->host, CONF_KILL, aconf->user, NULL, aconf);
        bandb_add(BANDB_KLINE, source_p, aconf->user, aconf->host,
@@ -517,7 +497,7 @@ apply_kline(struct Client *source_p, struct ConfItem *aconf,
  */
 static void
 apply_tkline(struct Client *source_p, struct ConfItem *aconf,
-            const char *reason, const char *oper_reason, const char *current_date, int tkline_time)
+            const char *reason, const char *oper_reason, int tkline_time)
 {
        aconf->hold = rb_current_time() + tkline_time;
        add_temp_kline(aconf);