]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - extensions/hurt.c
Add description for LOCOPS message.
[irc/rqf/shadowircd.git] / extensions / hurt.c
index 0708fab03196547213a58a919fc1b285e00197ed..047eff2d086a2c4cec5b0ade5dfbd923091acff2 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (C) 2006 charybdis development team
  * All rights reserved
  *
- * $Id: hurt.c 1905 2006-08-29 14:51:31Z jilles $
+ * $Id: hurt.c 3161 2007-01-25 07:23:01Z nenolod $
  */
 #include "stdinc.h"
 #include "modules.h"
@@ -14,7 +14,6 @@
 #include "send.h"
 #include "numeric.h"
 #include "hostmask.h"
-#include "event.h"
 #include "s_conf.h"
 #include "s_newconf.h"
 #include "hash.h"
@@ -32,17 +31,17 @@ enum {
 typedef struct _hurt_state {
         time_t start_time;
         uint32_t n_hurts;
-        dlink_list hurt_clients;
+        rb_dlink_list hurt_clients;
         uint16_t cutoff;
         time_t default_expire;
         const char *exit_reason;
 } hurt_state_t;
 
 typedef struct _hurt {
-        const char *ip;
+        char *ip;
         struct sockaddr *saddr;
         int saddr_bits;
-        const char *reason;
+        char *reason;
         time_t expire;
 } hurt_t;
 /* }}} */
@@ -78,7 +77,7 @@ static int nick_is_valid(const char *);
 
 /* {{{ State containers */
 
-dlink_list hurt_confs = { NULL, NULL, 0 };
+rb_dlink_list hurt_confs = { NULL, NULL, 0 };
 
 /* }}} */
 
@@ -115,7 +114,7 @@ DECLARE_MODULE_AV1(
        hurt_clist,
        NULL,
        hurt_hfnlist,
-       "$Revision: 1905 $"
+       "$Revision: 3161 $"
 );
 /* }}} */
 
@@ -130,15 +129,19 @@ hurt_state_t hurt_state = {
  */
 
 /* {{{ static int modinit() */
+
+struct ev_entry *hurt_expire_ev = NULL;
+struct ev_entry *hurt_check_ev = NULL;
+
 static int
 modinit(void)
 {
        /* set-up hurt_state. */
-       hurt_state.start_time = CurrentTime;
+       hurt_state.start_time = rb_current_time();
 
        /* add our event handlers. */
-       eventAdd("hurt_expire", hurt_expire_event, NULL, 60);
-       eventAdd("hurt_check", hurt_check_event, NULL, 5);
+       hurt_expire_ev = rb_event_add("hurt_expire", hurt_expire_event, NULL, 60);
+       hurt_check_ev = rb_event_add("hurt_check", hurt_check_event, NULL, 5);
 
        return 0;
 }
@@ -148,15 +151,15 @@ modinit(void)
 static void
 modfini(void)
 {
-       dlink_node      *ptr, *next_ptr;
+       rb_dlink_node   *ptr, *next_ptr;
 
        /* and delete our events. */
-       eventDelete(hurt_expire_event, NULL);
-       eventDelete(hurt_check_event, NULL);
+       rb_event_delete(hurt_expire_ev);
+       rb_event_delete(hurt_check_ev);
 
-       DLINK_FOREACH_SAFE (ptr, next_ptr, hurt_state.hurt_clients.head)
+       RB_DLINK_FOREACH_SAFE (ptr, next_ptr, hurt_state.hurt_clients.head)
        {
-               dlinkDestroy(ptr, &hurt_state.hurt_clients);
+               rb_dlinkDestroy(ptr, &hurt_state.hurt_clients);
        }
 }
 /* }}} */
@@ -196,15 +199,11 @@ mo_hurt(struct Client *client_p, struct Client *source_p,
        if (!expire)
                expire_time = HURT_DEFAULT_EXPIRE;
        if (expire && (expire_time = valid_temp_time(expire)) < 1) {
-               sendto_one(source_p,
-                               ":%s NOTICE %s :Permanent HURTs are not supported",
-                               me.name, source_p->name);
+               sendto_one_notice(source_p, ":Permanent HURTs are not supported");
                return 0;
        }
        if (EmptyString(reason)) {
-               sendto_one(source_p,
-                               ":%s NOTICE %s :Empty HURT reasons are bad for business",
-                               me.name, source_p->name);
+               sendto_one_notice(source_p, ":Empty HURT reasons are bad for business");
                return 0;
        }
 
@@ -233,9 +232,7 @@ mo_hurt(struct Client *client_p, struct Client *source_p,
        }
 
        if (hurt_find(ip) != NULL) {
-               sendto_one(source_p,
-                               ":%s NOTICE %s :[%s] already HURT",
-                               me.name, source_p->name, ip);
+               sendto_one(source_p, ":[%s] already HURT", ip);
                return 0;
        }
 
@@ -334,8 +331,7 @@ mo_heal(struct Client *client_p, struct Client *source_p,
        {
                if (hurt_find_exact(parv[1]) == NULL)
                {
-                       sendto_one(source_p, ":%s NOTICE %s :Mask [%s] is not HURT",
-                                       me.name, source_p->name, parv[1]);
+                       sendto_one_notice(source_p, ":Mask [%s] is not HURT", parv[1]);
                        return 0;
                }
                hurt_remove(parv[1]);
@@ -346,9 +342,7 @@ mo_heal(struct Client *client_p, struct Client *source_p,
        }
        else
        {
-               sendto_one(source_p,
-                               ":%s NOTICE %s :[%s] is not a valid IP address/nick",
-                               me.name, source_p->name, parv[1]);
+               sendto_one(source_p, ":[%s] is not a valid IP address/nick", parv[1]);
                return 0;
        }
 
@@ -397,17 +391,17 @@ me_heal(struct Client *client_p, struct Client *source_p,
 static void
 hurt_check_event(void *arg)
 {
-       dlink_node      *ptr, *next_ptr;
+       rb_dlink_node   *ptr, *next_ptr;
        struct Client   *client_p;
 
-       DLINK_FOREACH_SAFE (ptr, next_ptr, hurt_state.hurt_clients.head) {
+       RB_DLINK_FOREACH_SAFE (ptr, next_ptr, hurt_state.hurt_clients.head) {
                client_p = ptr->data;
                if (!EmptyString(client_p->user->suser))
                {
-                       dlinkDestroy(ptr, &hurt_state.hurt_clients);
+                       rb_dlinkDestroy(ptr, &hurt_state.hurt_clients);
                        sendto_one_notice(client_p, ":HURT restriction removed for this session");
                        USED_TARGETS(client_p) = 0;
-                       client_p->localClient->target_last = CurrentTime;               /* don't ask --nenolod */
+                       client_p->localClient->target_last = rb_current_time();         /* don't ask --nenolod */
                }
                else if (client_p->localClient->receiveM > hurt_state.cutoff)
                        exit_client(NULL, client_p, &me, hurt_state.exit_reason);
@@ -419,16 +413,16 @@ hurt_check_event(void *arg)
 static void
 hurt_expire_event(void *unused)
 {
-       dlink_node      *ptr, *next_ptr;
+       rb_dlink_node   *ptr, *next_ptr;
        hurt_t          *hurt;
 
-       DLINK_FOREACH_SAFE (ptr, next_ptr, hurt_confs.head)
+       RB_DLINK_FOREACH_SAFE (ptr, next_ptr, hurt_confs.head)
        {
                hurt = (hurt_t *) ptr->data;
 
-               if (hurt->expire <= CurrentTime)
+               if (hurt->expire <= rb_current_time())
                {
-                       dlinkFindDestroy(hurt, &hurt_confs);
+                       rb_dlinkFindDestroy(hurt, &hurt_confs);
                        hurt_destroy(hurt);
                }
        }
@@ -446,7 +440,7 @@ client_exit_hook(hook_data_client_exit *data)
        s_assert(data != NULL);
        s_assert(data->target != NULL);
 
-       dlinkFindDestroy(data->target, &hurt_state.hurt_clients);
+       rb_dlinkFindDestroy(data->target, &hurt_state.hurt_clients);
 }
 /* }}} */
 
@@ -461,9 +455,9 @@ new_local_user_hook(struct Client *source_p)
        if (hurt_find(source_p->sockhost) || hurt_find(source_p->orighost))
        {
                USED_TARGETS(source_p) = 10;
-               source_p->localClient->target_last = CurrentTime + 600;         /* don't ask --nenolod */
+               source_p->localClient->target_last = rb_current_time() + 600;           /* don't ask --nenolod */
                SetTGChange(source_p);
-               dlinkAddAlloc(source_p, &hurt_state.hurt_clients);
+               rb_dlinkAddAlloc(source_p, &hurt_state.hurt_clients);
                sendto_one_notice(source_p, ":You are hurt. Please identify to services immediately, or use /stats p for assistance.");
        }       
 }
@@ -473,7 +467,7 @@ new_local_user_hook(struct Client *source_p)
 static void
 doing_stats_hook(hook_data_int *hdata)
 {
-       dlink_node      *ptr;
+       rb_dlink_node   *ptr;
        hurt_t          *hurt;
        struct Client   *source_p;
 
@@ -507,7 +501,7 @@ doing_stats_hook(hook_data_int *hdata)
                return;
        }
 
-       DLINK_FOREACH(ptr, hurt_confs.head)
+       RB_DLINK_FOREACH(ptr, hurt_confs.head)
        {
                hurt = (hurt_t *) ptr->data;
                sendto_one_numeric(source_p, RPL_STATSKLINE,
@@ -531,13 +525,13 @@ hurt_propagate(struct Client *client_p, struct Client *source_p, hurt_t *hurt)
                sendto_one(client_p,
                                ":%s ENCAP %s HURT %ld %s :%s",
                                source_p->name, client_p->name,
-                               (long)(hurt->expire - CurrentTime),
+                               (long)(hurt->expire - rb_current_time()),
                                hurt->ip, hurt->reason);
        else
                sendto_server(&me, NULL, NOCAPS, NOCAPS,
                                ":%s ENCAP * HURT %ld %s :%s",
                                source_p->name,
-                               (long)(hurt->expire - CurrentTime),
+                               (long)(hurt->expire - rb_current_time()),
                                hurt->ip, hurt->reason);
 }
 /* }}} */
@@ -548,11 +542,11 @@ hurt_new(time_t expire, const char *ip, const char *reason)
 {
        hurt_t *hurt;
 
-       hurt = MyMalloc(sizeof(hurt_t));
+       hurt = rb_malloc(sizeof(hurt_t));
 
-       DupString(hurt->ip, ip);
-       DupString(hurt->reason, reason);
-       hurt->expire = CurrentTime + expire;
+       hurt->ip = rb_strdup(ip);
+       hurt->reason = rb_strdup(reason);
+       hurt->expire = rb_current_time() + expire;
 
        return hurt;
 }
@@ -568,25 +562,25 @@ hurt_destroy(void *hurt)
                return;
 
        h = (hurt_t *) hurt;
-       MyFree((char *) h->ip);
-       MyFree((char *) h->reason);
-       MyFree(h);
+       rb_free(h->ip);
+       rb_free(h->reason);
+       rb_free(h);
 }
 /* }}} */
 
 static void
 hurt_add(hurt_t *hurt)
 {
-       dlinkAddAlloc(hurt, &hurt_confs);
+       rb_dlinkAddAlloc(hurt, &hurt_confs);
 }
 
 static hurt_t *
 hurt_find_exact(const char *ip)
 {
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
        hurt_t *hurt;
 
-       DLINK_FOREACH(ptr, hurt_confs.head)
+       RB_DLINK_FOREACH(ptr, hurt_confs.head)
        {
                hurt = (hurt_t *) ptr->data;
 
@@ -600,10 +594,10 @@ hurt_find_exact(const char *ip)
 static hurt_t *
 hurt_find(const char *ip)
 {
-       dlink_node *ptr;
+       rb_dlink_node *ptr;
        hurt_t *hurt;
 
-       DLINK_FOREACH(ptr, hurt_confs.head)
+       RB_DLINK_FOREACH(ptr, hurt_confs.head)
        {
                hurt = (hurt_t *) ptr->data;
 
@@ -619,7 +613,7 @@ hurt_remove(const char *ip)
 {
        hurt_t *hurt = hurt_find_exact(ip);
 
-       dlinkFindDestroy(hurt, &hurt_confs);
+       rb_dlinkFindDestroy(hurt, &hurt_confs);
        hurt_destroy(hurt);
 }
 
@@ -627,14 +621,14 @@ hurt_remove(const char *ip)
 static int
 heal_nick(struct Client *source_p, struct Client *target_p)
 {
-       if (dlinkFindDestroy(target_p, &hurt_state.hurt_clients))
+       if (rb_dlinkFindDestroy(target_p, &hurt_state.hurt_clients))
        {
                sendto_realops_snomask(SNO_GENERAL, L_ALL, "%s used HEAL on %s",
                                get_oper_name(source_p), get_client_name(target_p, HIDE_IP));
                sendto_one_notice(target_p, ":HURT restriction temporarily removed by operator");
                sendto_one_notice(source_p, ":HURT restriction on %s temporarily removed", target_p->name);
                USED_TARGETS(target_p) = 0;
-               target_p->localClient->target_last = CurrentTime;               /* don't ask --nenolod */
+               target_p->localClient->target_last = rb_current_time();         /* don't ask --nenolod */
                return 1;
        }
        else