#include #include #include #include static const char identified_desc[] = "Provides the IDENTIFIED server-to-server command"; static void m_identified(struct MsgBuf *, struct Client *, struct Client *, int, const char *[]); static struct Message identified_msgtab = { "IDENTIFIED", 0, 0, 0, 0, {mg_ignore, mg_ignore, mg_ignore, mg_ignore, {m_identified, 3}, mg_ignore} }; static mapi_clist_av1 identified_clist[] = { &identified_msgtab, NULL }; static void identified_nick_change(void *); static void identified_burst_client(void *); static mapi_hfn_list_av1 identified_hfnlist[] = { { "local_nick_change", identified_nick_change, HOOK_MONITOR }, { "remote_nick_change", identified_nick_change, HOOK_MONITOR }, { "burst_client", identified_burst_client }, { NULL, NULL } }; static void m_identified(struct MsgBuf *msgbuf, struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { struct Client *target_p = find_person(parv[1]); const char *nick = parv[2]; if (target_p == NULL) return; if (irccmp(target_p->name, nick)) return; if (parc > 3 && irccmp(parv[3], "OFF") == 0) ClearIdentified(target_p); else SetIdentified(target_p); } static void identified_nick_change(void *data_) { hook_cdata *data = data_; const char *oldnick = data->arg1, *newnick = data->arg2; if (irccmp(oldnick, newnick) != 0) ClearIdentified(data->client); } static void identified_burst_client(void *data_) { hook_data_client *data = data_; if (IsIdentified(data->target)) sendto_one(data->client, ":%s ENCAP * IDENTIFIED %s :%s", me.id, use_id(data->target), data->target->name); } DECLARE_MODULE_AV2(identified, NULL, NULL, identified_clist, NULL, identified_hfnlist, NULL, NULL, identified_desc);