X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/1e25cb1e0efd1af4db2d56457319cae1d002de43..24170ac312f9e042993a5377ed82769f4ae74e55:/modules/core/m_metadata.c diff --git a/modules/core/m_metadata.c b/modules/core/m_metadata.c index 889bd88..77fe0fe 100644 --- a/modules/core/m_metadata.c +++ b/modules/core/m_metadata.c @@ -17,7 +17,7 @@ #include "whowas.h" #include "monitor.h" -void me_metadata(struct Client *, struct Client *, int, const char **); +static int me_metadata(struct Client *, struct Client *, int, const char **); struct Message metadata_msgtab = { "METADATA", 0, 0, 0, MFLG_SLOW, @@ -30,19 +30,36 @@ mapi_clist_av1 metadata_clist[] = { DECLARE_MODULE_AV1(metadata, NULL, NULL, metadata_clist, NULL, NULL, "$Revision$"); -void +static int me_metadata(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { - struct Client *target_p; + if(parv[2][0] == '#') + { + struct Channel *chptr; - if((target_p = find_client(parv[2])) == NULL) - return; + if((chptr = find_channel(parv[2])) == NULL) + return 0; - if(!target_p->user) - return; + if(!strcmp(parv[1], "ADD") && parv[4] != NULL) + channel_metadata_add(chptr, parv[3], parv[4], 0); + if(!strcmp(parv[1], "DELETE") && parv[3] != NULL) + channel_metadata_delete(chptr, parv[3], 0); + } - if(!strcmp(parv[1], "ADD") && parv[4] != NULL) - user_metadata_add(target_p, parv[3], parv[4], 0); - if(!strcmp(parv[1], "DELETE") && parv[3] != NULL) - user_metadata_delete(target_p, parv[3], 0); -} \ No newline at end of file + else + { + struct Client *target_p; + + if((target_p = find_id(parv[2])) == NULL) + return 0; + + if(!target_p->user) + return 0; + + if(!strcmp(parv[1], "ADD") && parv[4] != NULL) + user_metadata_add(target_p, parv[3], parv[4], 0); + if(!strcmp(parv[1], "DELETE") && parv[3] != NULL) + user_metadata_delete(target_p, parv[3], 0); + } + return 0; +}