* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * InspIRCd: (C) 2002-2008 InspIRCd Development Team
* See: http://www.inspircd.org/wiki/index.php/Credits
*
* This program is free but copyrighted software; see
parameters[1] = temp.c_str();
// notice to server mask
const char* servermask = parameters[0] + 1;
+ FOREACH_MOD(I_OnText,OnText(user,(void*)parameters[0],TYPE_SERVER,parameters[1],0,exempt_list));
if (match(ServerInstance->Config->ServerName,servermask))
{
user->SendAll("NOTICE", "%s", parameters[1]);
return CMD_FAILURE;
}
+ FOREACH_MOD(I_OnText,OnText(user,chan,TYPE_CHANNEL,parameters[1],status,exempt_list));
+
if (status)
{
if (ServerInstance->Config->UndernetMsgPrefix)
return CMD_SUCCESS;
}
+ const char* destnick = parameters[0];
+
if (IS_LOCAL(user))
- dest = ServerInstance->FindNickOnly(parameters[0]);
+ {
+ const char* targetserver = strchr(destnick, '@');
+
+ if (targetserver)
+ {
+ char nickonly[NICKMAX+1];
+ strlcpy(nickonly, destnick, targetserver - destnick + 1);
+ dest = ServerInstance->FindNickOnly(nickonly);
+ if (dest && strcasecmp(dest->server, targetserver + 1))
+ {
+ /* Incorrect server for user */
+ user->WriteServ("401 %s %s :No such nick/channel",user->nick, parameters[0]);
+ return CMD_FAILURE;
+ }
+ }
+ else
+ dest = ServerInstance->FindNickOnly(destnick);
+ }
else
- dest = ServerInstance->FindNick(parameters[0]);
+ dest = ServerInstance->FindNick(destnick);
if (dest)
{
}
parameters[1] = (char*)temp.c_str();
+ FOREACH_MOD(I_OnText,OnText(user,dest,TYPE_USER,parameters[1],0,exempt_list));
+
if (IS_LOCAL(dest))
{
// direct write, same server