Exemplo n.º 1
0
/*
 * 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;
}
Exemplo n.º 2
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;
}
Exemplo n.º 3
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;
}