]> jfr.im git - solanum.git/blobdiff - modules/m_xline.c
Add umode +I to allow users to hide their idle time (#220)
[solanum.git] / modules / m_xline.c
index 02c162af44019c79baaa1a51e38c1b07b5f8dd07..597f7618c244241873eccb7f0c6a46eb6838a5c9 100644 (file)
@@ -32,8 +32,7 @@
 #include "send.h"
 #include "channel.h"
 #include "client.h"
-#include "common.h"
-#include "config.h"
+#include "defaults.h"
 #include "class.h"
 #include "ircd.h"
 #include "numeric.h"
@@ -149,6 +148,13 @@ mo_xline(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source
 
        if(target_server != NULL)
        {
+               if (temp_time)
+                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s is adding a temporary %d min. X-Line for [%s] on %s [%s]",
+                                       get_oper_name(source_p), temp_time / 60, name, target_server, reason);
+               else
+                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s is adding a permanent X-Line for [%s] on %s [%s]",
+                                       get_oper_name(source_p), name, target_server, reason);
+
                propagate_xline(source_p, target_server, temp_time, name, "2", reason);
 
                if(!match(target_server, me.name))
@@ -216,11 +222,6 @@ handle_remote_xline(struct Client *source_p, int temp_time, const char *name, co
 {
        struct ConfItem *aconf;
 
-       if(!find_shared_conf(source_p->username, source_p->host,
-                            source_p->servptr->name,
-                            (temp_time > 0) ? SHARED_TXLINE : SHARED_PXLINE))
-               return;
-
        if(!valid_xline(source_p, name, reason))
                return;
 
@@ -284,7 +285,7 @@ apply_xline(struct Client *source_p, const char *name, const char *reason, int t
                aconf->lifetime = aconf->hold;
 
                replace_old_ban(aconf);
-               rb_dlinkAddAlloc(aconf, &prop_bans);
+               add_prop_ban(aconf);
 
                sendto_realops_snomask(SNO_GENERAL, L_ALL,
                                       "%s added global %d min. X-Line for [%s] [%s]",
@@ -402,6 +403,9 @@ mo_unxline(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sour
                        return;
                }
 
+               sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s is removing the X-Line for [%s] on %s.",
+                               get_oper_name(source_p), parv[1], parv[3]);
+
                propagate_generic(source_p, "UNXLINE", parv[3], CAP_CLUSTER, "%s", parv[1]);
 
                if(match(parv[3], me.name) == 0)
@@ -448,10 +452,6 @@ me_unxline(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sour
 static void
 handle_remote_unxline(struct Client *source_p, const char *name)
 {
-       if(!find_shared_conf(source_p->username, source_p->host,
-                            source_p->servptr->name, SHARED_UNXLINE))
-               return;
-
        remove_xline(source_p, name, false);
 }
 
@@ -475,8 +475,7 @@ remove_xline(struct Client *source_p, const char *name, bool propagated)
                                        sendto_one_notice(source_p, ":Cannot remove global X-Line %s on specific servers", name);
                                        return;
                                }
-                               ptr = rb_dlinkFind(aconf, &prop_bans);
-                               if(ptr == NULL)
+                               if (!lookup_prop_ban(aconf))
                                        return;
                                sendto_one_notice(source_p, ":X-Line for [%s] is removed", name);
                                sendto_realops_snomask(SNO_GENERAL, L_ALL,
@@ -499,7 +498,7 @@ remove_xline(struct Client *source_p, const char *name, bool propagated)
                                                0,
                                                (int)(aconf->lifetime - aconf->created));
                                remove_reject_mask(aconf->host, NULL);
-                               deactivate_conf(aconf, ptr, now);
+                               deactivate_conf(aconf, now);
                                return;
                        }
                        else if(propagated && rb_dlink_list_length(&cluster_conf_list))