/* * me_forcejoin * parv[1] = forcejoin victim * parv[2] = forcejoin channel list */ static int me_forcejoin(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { struct Client *target_p; const char *user, *chanlist; user = parv[1]; if(EmptyString(parv[2])) return 0; else chanlist = parv[2]; /* Find the user */ if((target_p = find_person(user)) == NULL) return 0; if(IsServer(target_p) || IsMe(target_p)) return 0; ilog(L_MAIN, "FORCEJOIN called for [%s] by %s!%s@%s", target_p->name, source_p->name, source_p->username, source_p->host); if(!MyClient(target_p)) { struct Client *cptr = target_p->servptr; sendto_one(cptr, ":%s ENCAP %s FORCEJOIN %s :%s", get_id(source_p, cptr), cptr->name, get_id(target_p, cptr), chanlist); return 0; } user_join_override(client_p, source_p, target_p, chanlist); return 0; }
/* ** mo_forcejoin ** parv[1] = forcejoin victim ** parv[2] = forcejoin channel list */ static int mo_forcejoin(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { struct Client *target_p; const char *user, *chanlist; int chasing = 0; user = parv[1]; if(!IsOperForce(source_p)) { sendto_one(source_p, form_str(ERR_NOPRIVS), me.name, source_p->name, "force"); return 0; } if(EmptyString(parv[2])) { sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS), me.name, source_p->name, "FORCEJOIN"); return 0; } else chanlist = parv[2]; if((target_p = find_chasing(source_p, user, &chasing)) == NULL) return 0; sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "Received FORCEJOIN message for %s!%s@%s. From %s (Channels: %s)", target_p->name, target_p->username, target_p->orighost, source_p->name, chanlist); ilog(L_MAIN, "FORCEJOIN called for [%s] by %s!%s@%s", target_p->name, source_p->name, source_p->username, source_p->host); if(!MyClient(target_p)) { struct Client *cptr = target_p->servptr; sendto_one(cptr, ":%s ENCAP %s FORCEJOIN %s :%s", get_id(source_p, cptr), cptr->name, get_id(target_p, cptr), chanlist); return 0; } user_join_override(client_p, source_p, target_p, chanlist); return 0; }
/* ** mo_forcejoin ** parv[1] = forcejoin victim ** parv[2] = forcejoin channel list */ static int mo_forcejoin(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { struct Client *target_p; const char *user, *chanlist; user = parv[1]; if(!IsOperLocalForce(source_p)) { sendto_one(source_p, form_str(ERR_NOPRIVS), me.name, source_p->name, "local_force"); return 0; } if(EmptyString(parv[2])) { sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS), me.name, source_p->name, "FORCEJOIN"); return 0; } else chanlist = parv[2]; if((target_p = find_named_person(user)) == NULL) { sendto_one_numeric(source_p, ERR_NOSUCHNICK, form_str(ERR_NOSUCHNICK), user); return 0; } if(!IsPerson(target_p)) return 0; if(!MyClient(target_p) && !IsOperGlobalForce(source_p)) { sendto_one_notice(source_p, ":Nick %s is not on your server and you do not have the global_force flag", target_p->name); return 0; } sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "Received FORCEJOIN message for %s!%s@%s. From %s (Channels: %s)", target_p->name, target_p->username, target_p->orighost, source_p->name, chanlist); ilog(L_MAIN, "FORCEJOIN called for [%s] by %s!%s@%s", target_p->name, source_p->name, source_p->username, source_p->host); sendto_one_notice(target_p, ":You have been forcejoined to %s by %s", chanlist, source_p->name); if(!MyClient(target_p)) { struct Client *cptr = target_p->servptr; sendto_one(cptr, ":%s ENCAP %s FORCEJOIN %s :%s", get_id(source_p, cptr), cptr->name, get_id(target_p, cptr), chanlist); return 0; } user_join_override(client_p, source_p, target_p, chanlist); return 0; }