* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
- *
- * $Id: m_error.c 494 2006-01-15 16:08:28Z jilles $
*/
#include "stdinc.h"
#include "client.h"
-#include "common.h" /* FALSE */
#include "ircd.h"
#include "numeric.h"
#include "send.h"
#include "logger.h"
#include "s_conf.h"
-static int m_error(struct Client *, struct Client *, int, const char **);
-static int ms_error(struct Client *, struct Client *, int, const char **);
+static const char error_desc[] =
+ "Provides the ERROR command for clients and servers";
+
+static void m_error(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
+static void ms_error(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
struct Message error_msgtab = {
- "ERROR", 0, 0, 0, MFLG_SLOW | MFLG_UNREG,
+ "ERROR", 0, 0, 0, 0,
{{m_error, 0}, mg_ignore, mg_ignore, {ms_error, 0}, mg_ignore, mg_ignore}
};
&error_msgtab, NULL
};
-DECLARE_MODULE_AV1(error, NULL, NULL, error_clist, NULL, NULL, "$Revision: 494 $");
+DECLARE_MODULE_AV2(error, NULL, NULL, error_clist, NULL, NULL, NULL, NULL, error_desc);
/* Determine whether an ERROR message is safe to show (no IP address in it) */
-static int
+static bool
is_safe_error(const char *message)
{
char prefix2[100];
const char *p;
if (!strncmp(message, "Closing Link: 127.0.0.1 (", 25))
- return 1;
- rb_snprintf(prefix2, sizeof prefix2,
+ return true;
+ snprintf(prefix2, sizeof prefix2,
"Closing Link: 127.0.0.1 %s (", me.name);
if (!strncmp(message, prefix2, strlen(prefix2)))
- return 1;
+ return true;
if (!strncmp(message, "Restart by ", 11))
- return 1;
+ return true;
if (!strncmp(message, "Terminated by ", 14))
- return 1;
+ return true;
- if (!ircncmp(message, "Closing Link", 12))
- return 0;
+ if (!rb_strncasecmp(message, "Closing Link", 12))
+ return false;
if (strchr(message, '['))
- return 0;
+ return false;
p = strchr(message, '.');
if (p != NULL && p[1] != '\0')
- return 0;
+ return false;
if (strchr(message, ':'))
- return 0;
+ return false;
- return 1;
+ return true;
}
/*
* although this is called internally from other functions
* --msa
*
- * parv[0] = sender prefix
* parv[*] = parameters
*/
-int
-m_error(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
+static void
+m_error(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
const char *para;
int hideit = ConfigFileEntry.hide_error_messages;
para = (parc > 1 && *parv[1] != '\0') ? parv[1] : "<>";
- ilog(L_SERVER, "Received ERROR message from %s: %s",
- log_client_name(source_p, SHOW_IP), para);
+ if (IsAnyServer(client_p))
+ {
+ ilog(L_SERVER, "Received ERROR message from %s: %s",
+ log_client_name(source_p, SHOW_IP), para);
+ }
if(is_safe_error(para))
hideit = 0;
if(IsAnyServer(client_p))
{
if (hideit < 2)
- sendto_realops_snomask(SNO_GENERAL, hideit ? L_ADMIN : (is_remote_connect(client_p) ? L_NETWIDE : L_ALL),
+ sendto_realops_snomask(SNO_GENERAL, hideit ? L_ADMIN : L_NETWIDE,
"ERROR :from %s -- %s",
client_p->name, para);
if (hideit > 0)
- sendto_realops_snomask(SNO_GENERAL, (hideit == 1 ? L_OPER : L_ALL) | (is_remote_connect(client_p) ? L_NETWIDE : L_ALL),
+ sendto_realops_snomask(SNO_GENERAL, hideit == 1 ? L_OPER | L_NETWIDE : L_NETWIDE,
"ERROR :from %s -- <hidden>",
client_p->name);
}
exit_client(client_p, source_p, source_p, "ERROR");
-
- return 0;
}
-static int
-ms_error(struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
+static void
+ms_error(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
{
const char *para;
int hideit = ConfigFileEntry.hide_error_messages;
if(is_safe_error(para))
hideit = 0;
if(hideit == 2)
- return 0;
+ return;
if(client_p == source_p)
{
- sendto_realops_snomask(SNO_GENERAL, hideit ? L_ADMIN : L_ALL, "ERROR :from %s -- %s",
+ sendto_realops_snomask(SNO_GENERAL, hideit ? L_ADMIN : L_NETWIDE, "ERROR :from %s -- %s",
client_p->name, para);
}
else
{
- sendto_realops_snomask(SNO_GENERAL, hideit ? L_ADMIN : L_ALL, "ERROR :from %s via %s -- %s",
+ sendto_realops_snomask(SNO_GENERAL, hideit ? L_ADMIN : L_NETWIDE, "ERROR :from %s via %s -- %s",
source_p->name, client_p->name, para);
}
-
- return 0;
}