int anope_event_mode (char *source, int ac, char **av) { if (ac < 2) return MOD_CONT; if (*av[0] == '#' || *av[0] == '&') { do_cmode (source, ac, av); } else { Server *s; s = findserver (servlist, source); if (s && *av[0]) { do_umode (av[0], ac, av); } else { do_umode (source, ac, av); } } return MOD_CONT; }
int denora_event_mode(char *source, int ac, char **av) { if (denora->protocoldebug) { protocol_debug(source, ac, av); } if (ac < 2) return MOD_CONT; if (*av[0] == '#' || *av[0] == '&') { do_cmode(source, ac, av); } else { Server *s; s = server_find(source); if (s && *av[0]) { do_umode(av[0], ac, av); } else { do_umode(source, ac, av); } } return MOD_CONT; }
/* ABAAA M #ircops +v ABAAB */ int denora_event_mode(char *source, int ac, char **av) { User *u; Server *s; char *sender; if (denora->protocoldebug) protocol_debug(source, ac, av); if (ac < 2) return MOD_CONT; u = find_byuid(source); if (!u) { sender = source; } else { sender = u->nick; } if (*av[0] == '#' || *av[0] == '&') { do_cmode(source, ac, av); } else { s = server_find(source); if (s) sender = av[0]; do_umode(sender, ac, av); } return MOD_CONT; }
bool OnMode(const Anope::string &source, const std::vector<Anope::string> ¶ms) { if (params.size() > 2 && (params[0][0] == '#' || params[0][0] == '&')) do_cmode(source, params[0], params[2], params[1]); else if (params.size() > 1) do_umode(params[0], params[1]); return true; }
int xanadu_event_mode(char *source, int ac, char **av) { if (ac < 2) return MOD_CONT; if (*av[0] == '#' || *av[0] == '&') { do_cmode(source, ac, av); } else { do_umode(source, ac, av); } return MOD_CONT; }
/* :%s MODE %s :%s parv[0] = sender parv[1] = target nick (==sender) parv[2] = mode change string */ int denora_event_mode(char *source, int ac, char **av) { if (denora->protocoldebug) { protocol_debug(source, ac, av); } if (*av[0] == '#' || *av[0] == '&') { do_cmode(source, ac, av); } else { do_umode(source, ac, av); } return MOD_CONT; }
/* * :irc.mynet.org FMODE #opers 115432135 +bb *[email protected] *[email protected] * :<source server or nickname> FMODE <target> <timestamp> <modes and parameters> */ int denora_event_fmode(char *source, int ac, char **av) { char *newav[127]; int i = 0; Channel *c; if (denora->protocoldebug) { protocol_debug(source, ac, av); } if (ac < 3) return MOD_CONT; /* Checking the TS for validity to avoid desyncs */ c = findchan(av[0]); if (c) { if (c->creation_time > strtol(av[1], NULL, 10)) { alog(LOG_DEBUG, "DEBUG: av[1] %d < c->creation_time %d, c->creation_time lowered to %d", av[1], c->creation_time, av[1]); c->creation_time = strtol(av[1], NULL, 10); } else if (c->creation_time < strtol(av[1], NULL, 10)) { alog(LOG_DEBUG, "DEBUG: av[1] %d > c->creation_time %d, FMODE ignored.", av[1], c->creation_time); return MOD_CONT; } } else { alog(LOG_DEBUG, "DEBUG: got FMODE for non-existing channel %s", av[0]); return MOD_CONT; } /* We need to remove the timestamp, which is av[1] */ newav[0] = av[0]; newav[1] = av[2]; for (i = 2; i < (ac - 1); i++) { newav[i] = av[i + 1]; } if (*newav[0] == '#' || *newav[0] == '&') { do_cmode(source, (ac - 1), newav); } else { do_umode(source, (ac - 1), newav); } return MOD_CONT; }
int denora_event_fakehost(char *source, int ac, char **av) { User *ud; char *parv[2]; ud = user_find(av[0]); if (ud) { parv[0] = (char *) ud->nick; parv[1] = (char *) "+f"; do_umode(ud->nick, 2, parv); } change_user_host(ud->nick, av[1]); return MOD_CONT; }
/* ABAAA M #ircops +v ABAAB */ int denora_event_mode(char *source, int ac, char **av) { User *u; User *v; Server *s; char *sender; char hhostbuf[255]; if (denora->protocoldebug) protocol_debug(source, ac, av); if (ac < 2) return MOD_CONT; u = find_byuid(source); if (!u) { sender = source; } else { sender = u->nick; } if (*av[0] == '#' || *av[0] == '&') { do_cmode(source, ac, av); } else { s = server_find(source); if (s) sender = av[0]; do_umode(sender, ac, av); if (strcmp(av[1], "x") != -1) { v = user_find(av[0]); if (v->account) { ircsnprintf(hhostbuf, sizeof(v->account) + sizeof(hhostbuf) + 2, "%s%s%s", HiddenPrefix, v->account, HiddenSuffix); change_user_host(v->nick, hhostbuf); } } } return MOD_CONT; }