]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - extensions/m_oaccept.c
Add OPERHOST to the help for SET.
[irc/rqf/shadowircd.git] / extensions / m_oaccept.c
index 036f1c581e289faf2c4bfe87496f0cd6920860f0..f0b38edf426f91920573d1e93226d56a49ede575 100644 (file)
@@ -6,7 +6,7 @@
 #include "numeric.h"
 #include "hash.h"
 
-void mo_oaccept(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]);
+static int mo_oaccept(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]);
 
 struct Message oaccept_msgtab = {
        "OACCEPT", 0, 0, 0, MFLG_SLOW,
@@ -15,33 +15,44 @@ struct Message oaccept_msgtab = {
 
 mapi_clist_av1 oaccept_clist[] = { &oaccept_msgtab, NULL };
 
-DECLARE_MODULE_AV1(omode, NULL, NULL, oaccept_clist, NULL, NULL, "$Id $");
+DECLARE_MODULE_AV1(oaccept, NULL, NULL, oaccept_clist, NULL, NULL, "$Id $");
 
-void
+static int
 mo_oaccept(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
 {
        struct Metadata *md;
+       struct DictionaryIter iter;
        struct Client *target_p;
+       char *text = rb_strdup("");
 
        if(!(target_p = find_client(parv[1])))
        {
                sendto_one(source_p, form_str(ERR_NOSUCHNICK), parv[1]);
-               return;
+               return 0;
        }
 
+       rb_sprintf(text, "O%s", source_p->id);
+
        /* Don't allow someone to pointlessly fill up someone's metadata
         * with identical OACCEPT entries. */
-       if((md = user_metadata_find(target_p, "OACCEPT")))
-               if(!strcmp(source_p->id, md->value))
+       DICTIONARY_FOREACH(md, &iter, target_p->user->metadata)
+       {
+               if(!strcmp(md->value, "OACCEPT") && !strcmp(md->name, text))
                {
                        sendto_one_notice(source_p, ":You're already on %s's OACCEPT list", target_p->name);
-                       return;
+                       return 0;
                }
+       }
 
-       user_metadata_add(target_p, "OACCEPT", source_p->id, 1);
+       user_metadata_add(target_p, text, "OACCEPT", 1);
 
        sendto_wallops_flags(UMODE_WALLOP, &me,
                             "OACCEPT called for %s by %s!%s@%s",
                             target_p->name,
                             source_p->name, source_p->username, source_p->host);
+               sendto_server(NULL, NULL, NOCAPS, NOCAPS, 
+                             ":%s WALLOPS :OACCEPT called for %s by %s!%s@%s",
+                             me.name, target_p->name, source_p->name, source_p->username,
+                             source_p->host);
+       return 0;
 }