/* Return an error if this is not a local client */
if (Client_Conn(Client) <= NONE)
- return IRC_WriteStrClient(Client, ERR_UNKNOWNCOMMAND_MSG,
+ return IRC_WriteErrClient(Client, ERR_UNKNOWNCOMMAND_MSG,
Client_ID(Client), Req->command);
if (Client_Type(Client) == CLIENT_UNKNOWN && Req->argc == 1) {
} else if (Client_Type(Client) == CLIENT_UNKNOWN ||
Client_Type(Client) == CLIENT_UNKNOWNSERVER) {
/* Unregistered connection, but wrong number of arguments: */
- IRC_SetPenalty(Client, 2);
- return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
+ return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command);
} else {
/* Registered connection, PASS command is not allowed! */
- IRC_SetPenalty(Client, 2);
- return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG,
+ return IRC_WriteErrClient(Client, ERR_ALREADYREGISTRED_MSG,
Client_ID(Client));
}
if (Client_Type(Client) == CLIENT_SERVER) {
target = Client_Search(Req->prefix);
if (!target)
- return IRC_WriteStrClient( Client,
- ERR_NOSUCHNICK_MSG,
- Client_ID( Client ),
- Req->argv[0] );
+ return IRC_WriteErrClient(Client,
+ ERR_NOSUCHNICK_MSG,
+ Client_ID(Client),
+ Req->argv[0]);
} else {
/* Is this a restricted client? */
- if (Client_HasMode(Client, 'r')) {
- IRC_SetPenalty(Client, 2);
- return IRC_WriteStrClient( Client,
- ERR_RESTRICTED_MSG,
- Client_ID( Client ));
- }
+ if (Client_HasMode(Client, 'r'))
+ return IRC_WriteErrClient(Client,
+ ERR_RESTRICTED_MSG,
+ Client_ID(Client));
target = Client;
}
/* Bad number of parameters? */
if (Req->argc != 2 && Req->argc != 7)
- return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
+ return IRC_WriteErrClient(Client, ERR_NEEDMOREPARAMS_MSG,
Client_ID(Client), Req->command);
if (Req->argc >= 7) {
return CONNECTED;
}
else
- return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG,
+ return IRC_WriteErrClient(Client, ERR_ALREADYREGISTRED_MSG,
Client_ID(Client));
} /* IRC_NICK */
assert(Client != NULL);
assert(Req != NULL);
- _IRC_ARGC_EQ_OR_RETURN_(Client, Req, 2)
-
/* Search the originator */
from = Client_Search(Req->prefix);
if (!from)
/* Search the target */
target = Client_Search(Req->argv[0]);
if (!target || Client_Type(target) != CLIENT_USER) {
- return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOSUCHNICK_MSG,
Client_ID(Client), Req->argv[0]);
}
c = Client_Search(Req->prefix);
if (!c)
- return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOSUCHNICK_MSG,
Client_ID(Client),
Req->prefix);
return CONNECTED;
} else if (Client_Type(Client) == CLIENT_USER) {
/* Already registered connection */
- IRC_SetPenalty(Client, 2);
- return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG,
+ return IRC_WriteErrClient(Client, ERR_ALREADYREGISTRED_MSG,
Client_ID(Client));
} else {
/* Unexpected/invalid connection state? */
- IRC_SetPenalty(Client, 2);
- return IRC_WriteStrClient(Client, ERR_NOTREGISTERED_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOTREGISTERED_MSG,
Client_ID(Client));
}
} /* IRC_USER */
assert(Req != NULL);
if (Client_Type(Client) != CLIENT_GOTPASS &&
- Client_Type(Client) != CLIENT_SERVER) {
- IRC_SetPenalty(Client, 2);
- return IRC_WriteStrClient(Client, ERR_ALREADYREGISTRED_MSG,
+ Client_Type(Client) != CLIENT_SERVER)
+ return IRC_WriteErrClient(Client, ERR_ALREADYREGISTRED_MSG,
Client_ID(Client));
- }
-
- _IRC_ARGC_EQ_OR_RETURN_(Client, Req, 6)
if (Client_Type(Client) != CLIENT_SERVER)
- return IRC_WriteStrClient(Client, ERR_ERRONEUSNICKNAME_MSG,
+ return IRC_WriteErrClient(Client, ERR_ERRONEUSNICKNAME_MSG,
Client_ID(Client), Req->argv[0]);
nick = Req->argv[0];
GLOBAL bool
IRC_WEBIRC(CLIENT *Client, REQUEST *Req)
{
- _IRC_ARGC_EQ_OR_RETURN_(Client, Req, 4)
-
if (!Conf_WebircPwd[0] || strcmp(Req->argv[0], Conf_WebircPwd) != 0)
- return IRC_WriteStrClient(Client, ERR_PASSWDMISMATCH_MSG,
+ return IRC_WriteErrClient(Client, ERR_PASSWDMISMATCH_MSG,
Client_ID(Client));
LogDebug("Connection %d: got valid WEBIRC command: user=%s, host=%s, ip=%s",
Client_SetUser(Client, Req->argv[1], true);
Client_SetOrigUser(Client, Req->argv[1]);
Client_SetHostname(Client, Req->argv[2]);
+ Client_SetIPAText(Client, Req->argv[3]);
+
return CONNECTED;
} /* IRC_WEBIRC */
assert(Client != NULL);
assert(Req != NULL);
- _IRC_ARGC_LE_OR_RETURN_(Client, Req, 1)
-
if (Req->argc == 1)
strlcpy(quitmsg, Req->argv[0], sizeof quitmsg);
assert(Req != NULL);
if (Req->argc < 1)
- return IRC_WriteStrClient(Client, ERR_NOORIGIN_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOORIGIN_MSG,
Client_ID(Client));
#ifdef STRICT_RFC
/* Don't ignore additional arguments when in "strict" mode */
target = Client_Search(Req->argv[1]);
if (!target || Client_Type(target) != CLIENT_SERVER)
- return IRC_WriteStrClient(Client, ERR_NOSUCHSERVER_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOSUCHSERVER_MSG,
Client_ID(Client), Req->argv[1]);
if (target != Client_ThisServer()) {
else
from = Client;
if (!from)
- return IRC_WriteStrClient(Client,
+ return IRC_WriteErrClient(Client,
ERR_NOSUCHSERVER_MSG,
Client_ID(Client), Req->prefix);
} else
from = Client_ThisServer();
if (!from)
- return IRC_WriteStrClient(Client, ERR_NOSUCHSERVER_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOSUCHSERVER_MSG,
Client_ID(Client), Req->prefix);
Log(LOG_DEBUG, "Connection %d: got PING, sending PONG ...",
/* Wrong number of arguments? */
if (Req->argc < 1) {
if (Client_Type(Client) == CLIENT_USER)
- return IRC_WriteStrClient(Client, ERR_NOORIGIN_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOORIGIN_MSG,
Client_ID(Client));
else
return CONNECTED;
if (Req->argc == 2 && Client_Type(Client) == CLIENT_SERVER) {
target = Client_Search(Req->argv[0]);
if (!target)
- return IRC_WriteStrClient(Client, ERR_NOSUCHSERVER_MSG,
+ return IRC_WriteErrClient(Client, ERR_NOSUCHSERVER_MSG,
Client_ID(Client), Req->argv[0]);
from = Client_Search(Req->prefix);
if (target != Client_ThisServer() && target != from) {
/* Ok, we have to forward the message. */
if (!from)
- return IRC_WriteStrClient(Client,
+ return IRC_WriteErrClient(Client,
ERR_NOSUCHSERVER_MSG,
Client_ID(Client), Req->prefix);