X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/987ef7eb1f6c6e6bfb79fc0e7759702ff372ac7a..0f18c084bb0d06c2dd1c26698b49a53fb528d933:/modules/m_invite.c diff --git a/modules/m_invite.c b/modules/m_invite.c index cf475f9..e7fe218 100644 --- a/modules/m_invite.c +++ b/modules/m_invite.c @@ -39,6 +39,7 @@ #include "parse.h" #include "modules.h" #include "packet.h" +#include "tgchange.h" static int m_invite(struct Client *, struct Client *, int, const char **); @@ -58,7 +59,6 @@ static void add_invite(struct Channel *, struct Client *); static int m_invite(struct Client *client_p, struct Client *source_p, int parc, const char *parv[]) { - const char *awaymsg; struct Client *target_p; struct Channel *chptr; struct membership *msptr; @@ -163,12 +163,20 @@ m_invite(struct Client *client_p, struct Client *source_p, int parc, const char if(MyConnect(source_p)) { + if (ConfigFileEntry.target_change && !IsOper(source_p) && + !find_allowing_channel(source_p, target_p) && + !add_target(source_p, target_p)) + { + sendto_one(source_p, form_str(ERR_TARGCHANGE), + me.name, source_p->name, target_p->name); + return 0; + } sendto_one(source_p, form_str(RPL_INVITING), me.name, source_p->name, target_p->name, parv[2]); - if((awaymsg = get_metadata(target_p, "away")) != NULL) + if(target_p->user->away) sendto_one_numeric(source_p, RPL_AWAY, form_str(RPL_AWAY), - target_p->name, awaymsg); + target_p->name, target_p->user->away); } /* invite timestamp */ else if(parc > 3 && !EmptyString(parv[3])) @@ -180,6 +188,7 @@ m_invite(struct Client *client_p, struct Client *source_p, int parc, const char if(MyConnect(target_p)) { + add_reply_target(target_p, source_p); sendto_one(target_p, ":%s!%s@%s INVITE %s :%s", source_p->name, source_p->username, source_p->host, target_p->name, chptr->chname);