Added unformatted logging
This commit is contained in:
parent
f71bd8113a
commit
49a8f5ed69
@ -38,6 +38,7 @@ v0.83.14 23-Feb-2006
|
|||||||
|
|
||||||
mbtask:
|
mbtask:
|
||||||
Safer code for chat.
|
Safer code for chat.
|
||||||
|
Added unformatted logging.
|
||||||
|
|
||||||
lang:
|
lang:
|
||||||
New prompts 86, 87, 88 and 89.
|
New prompts 86, 87, 88 and 89.
|
||||||
|
@ -270,7 +270,6 @@ int join(pid_t pid, char *channel, int sysop)
|
|||||||
*/
|
*/
|
||||||
snprintf(buf, 81, "*** Cannot create chat channel %s, no free channels", channel);
|
snprintf(buf, 81, "*** Cannot create chat channel %s, no free channels", channel);
|
||||||
system_msg(pid, buf);
|
system_msg(pid, buf);
|
||||||
Syslog('+', "%s", buf);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -800,7 +799,6 @@ void chat_get_r(char *data, char *buf)
|
|||||||
/*
|
/*
|
||||||
* Message is for us
|
* Message is for us
|
||||||
*/
|
*/
|
||||||
// snprintf(buf, 200, "100:2,0,%s;", clencode(chat_messages[tmpu->pointer].message));
|
|
||||||
p = xstrcpy((char *)"100:2,0,");
|
p = xstrcpy((char *)"100:2,0,");
|
||||||
p = xstrcat(p, clencode(chat_messages[tmpu->pointer].message));
|
p = xstrcat(p, clencode(chat_messages[tmpu->pointer].message));
|
||||||
p = xstrcat(p, (char *)";");
|
p = xstrcat(p, (char *)";");
|
||||||
|
178
mbtask/taskibc.c
178
mbtask/taskibc.c
@ -88,7 +88,7 @@ void tidy_servers(srv_list **);
|
|||||||
int add_server(srv_list **, char *, int, char *, char *, char *, char *);
|
int add_server(srv_list **, char *, int, char *, char *, char *, char *);
|
||||||
void del_server(srv_list **, char *);
|
void del_server(srv_list **, char *);
|
||||||
void del_router(srv_list **, char *);
|
void del_router(srv_list **, char *);
|
||||||
int send_msg(ncs_list *, const char *, ...);
|
int send_msg(ncs_list *, char *);
|
||||||
void broadcast(char *, char *);
|
void broadcast(char *, char *);
|
||||||
void check_servers(void);
|
void check_servers(void);
|
||||||
int command_pass(char *, char *);
|
int command_pass(char *, char *);
|
||||||
@ -620,21 +620,24 @@ void broadcast(char *origin, char *msg)
|
|||||||
/*
|
/*
|
||||||
* Send message to a server
|
* Send message to a server
|
||||||
*/
|
*/
|
||||||
int send_msg(ncs_list *tnsl, const char *format, ...)
|
int send_msg(ncs_list *tnsl, char *msg)
|
||||||
{
|
{
|
||||||
char buf[512];
|
char *p;
|
||||||
va_list va_ptr;
|
|
||||||
|
|
||||||
va_start(va_ptr, format);
|
|
||||||
vsnprintf(buf, 512, format, va_ptr);
|
|
||||||
va_end(va_ptr);
|
|
||||||
|
|
||||||
#ifndef PING_PONG_LOG
|
#ifndef PING_PONG_LOG
|
||||||
if (strcmp(buf, "PING\r\n") && strcmp(buf, "PONG\r\n"))
|
if (strcmp(msg, "PING\r\n") && strcmp(msg, "PONG\r\n")) {
|
||||||
|
#endif
|
||||||
|
p = xstrcpy((char *)"IBC: > ");
|
||||||
|
p = xstrcat(p, tnsl->server);
|
||||||
|
p = xstrcat(p, (char *)": ");
|
||||||
|
p = xstrcat(p, printable(msg, 0));
|
||||||
|
Syslogp('r', p);
|
||||||
|
free(p);
|
||||||
|
#ifndef PING_PONG_LOG
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
Syslog('r', "IBC: > %s: %s", tnsl->server, printable(buf, 0));
|
|
||||||
|
|
||||||
if (sendto(tnsl->socket, buf, strlen(buf), 0, (struct sockaddr *)&tnsl->servaddr_in, sizeof(struct sockaddr_in)) == -1) {
|
if (sendto(tnsl->socket, msg, strlen(msg), 0, (struct sockaddr *)&tnsl->servaddr_in, sizeof(struct sockaddr_in)) == -1) {
|
||||||
Syslog('!', "$IBC: can't send message");
|
Syslog('!', "$IBC: can't send message");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -908,9 +911,13 @@ void check_servers(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
tnsl->token = gettoken();
|
tnsl->token = gettoken();
|
||||||
send_msg(tnsl, "PASS %s 0100 %s\r\n", tnsl->passwd, tnsl->compress ? "Z":"");
|
p = calloc(512, sizeof(char));
|
||||||
send_msg(tnsl, "SERVER %s 0 %ld mbsebbs %s %s\r\n", tnsl->myname, tnsl->token,
|
snprintf(p, 512, "PASS %s 0100 %s\r\n", tnsl->passwd, tnsl->compress ? "Z":"");
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
snprintf(p, 512, "SERVER %s 0 %d mbsebbs %s %s\r\n", tnsl->myname, tnsl->token,
|
||||||
VERSION, CFG.bbs_name);
|
VERSION, CFG.bbs_name);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
tnsl->action = now + (time_t)10;
|
tnsl->action = now + (time_t)10;
|
||||||
tnsl->state = NCS_WAITPWD;
|
tnsl->state = NCS_WAITPWD;
|
||||||
callchg = TRUE;
|
callchg = TRUE;
|
||||||
@ -988,12 +995,12 @@ void check_servers(void)
|
|||||||
*/
|
*/
|
||||||
if (((int)now - (int)tnsl->last) > 120) {
|
if (((int)now - (int)tnsl->last) > 120) {
|
||||||
Syslog('r', "IBC: sending 3rd PING at 120 seconds");
|
Syslog('r', "IBC: sending 3rd PING at 120 seconds");
|
||||||
send_msg(tnsl, "PING\r\n");
|
send_msg(tnsl, (char *)"PING\r\n");
|
||||||
} else if (((int)now - (int)tnsl->last) > 90) {
|
} else if (((int)now - (int)tnsl->last) > 90) {
|
||||||
Syslog('r', "IBC: sending 2nd PING at 90 seconds");
|
Syslog('r', "IBC: sending 2nd PING at 90 seconds");
|
||||||
send_msg(tnsl, "PING\r\n");
|
send_msg(tnsl, (char *)"PING\r\n");
|
||||||
} else if (((int)now - (int)tnsl->last) > 60) {
|
} else if (((int)now - (int)tnsl->last) > 60) {
|
||||||
send_msg(tnsl, "PING\r\n");
|
send_msg(tnsl, (char *)"PING\r\n");
|
||||||
}
|
}
|
||||||
tnsl->action = now + (time_t)10;
|
tnsl->action = now + (time_t)10;
|
||||||
break;
|
break;
|
||||||
@ -1044,12 +1051,12 @@ int command_pass(char *hostname, char *parameters)
|
|||||||
lnk = strtok(NULL, " \0");
|
lnk = strtok(NULL, " \0");
|
||||||
|
|
||||||
if (strcmp(passwd, "0100") == 0) {
|
if (strcmp(passwd, "0100") == 0) {
|
||||||
send_msg(tnsl, "414 PASS: Got empty password\r\n");
|
send_msg(tnsl, (char *)"414 PASS: Got empty password\r\n");
|
||||||
return 414;
|
return 414;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version == NULL) {
|
if (version == NULL) {
|
||||||
send_msg(tnsl, "400 PASS: Not enough parameters\r\n");
|
send_msg(tnsl, (char *)"400 PASS: Not enough parameters\r\n");
|
||||||
return 400;
|
return 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1059,7 +1066,7 @@ int command_pass(char *hostname, char *parameters)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tnsl->state == NCS_CONNECT) {
|
if (tnsl->state == NCS_CONNECT) {
|
||||||
send_msg(tnsl, "401: PASS: Already registered\r\n");
|
send_msg(tnsl, (char *)"401: PASS: Already registered\r\n");
|
||||||
tnsl->halfdead++; /* Count them */
|
tnsl->halfdead++; /* Count them */
|
||||||
srvchg = TRUE;
|
srvchg = TRUE;
|
||||||
return 401;
|
return 401;
|
||||||
@ -1100,7 +1107,7 @@ int command_server(char *hostname, char *parameters)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (fullname == NULL) {
|
if (fullname == NULL) {
|
||||||
send_msg(tnsl, "400 SERVER: Not enough parameters\r\n");
|
send_msg(tnsl, (char *)"400 SERVER: Not enough parameters\r\n");
|
||||||
return 400;
|
return 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1129,25 +1136,42 @@ int command_server(char *hostname, char *parameters)
|
|||||||
*/
|
*/
|
||||||
for (ta = servers; ta; ta = ta->next) {
|
for (ta = servers; ta; ta = ta->next) {
|
||||||
if (ta->hops) {
|
if (ta->hops) {
|
||||||
send_msg(tnsl, "SERVER %s %d 0 %s %s %s\r\n", ta->server, ta->hops, ta->prod, ta->vers, ta->fullname);
|
p = calloc(512, sizeof(char));
|
||||||
|
snprintf(p, 512, "SERVER %s %d 0 %s %s %s\r\n", ta->server, ta->hops, ta->prod, ta->vers, ta->fullname);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Send all known users, nicknames and join channels
|
* Send all known users, nicknames and join channels
|
||||||
*/
|
*/
|
||||||
for (tmp = users; tmp; tmp = tmp->next) {
|
for (tmp = users; tmp; tmp = tmp->next) {
|
||||||
send_msg(tnsl, "USER %s@%s %s\r\n", tmp->name, tmp->server, tmp->realname);
|
p = calloc(512, sizeof(char));
|
||||||
if (strcmp(tmp->name, tmp->nick))
|
snprintf(p, 512, "USER %s@%s %s\r\n", tmp->name, tmp->server, tmp->realname);
|
||||||
send_msg(tnsl, "NICK %s %s %s %s\r\n", tmp->nick, tmp->name, tmp->server, tmp->realname);
|
send_msg(tnsl, p);
|
||||||
if (strlen(tmp->channel))
|
if (strcmp(tmp->name, tmp->nick)) {
|
||||||
send_msg(tnsl, "JOIN %s@%s %s\r\n", tmp->name, tmp->server, tmp->channel);
|
snprintf(p, 512, "NICK %s %s %s %s\r\n", tmp->nick, tmp->name, tmp->server, tmp->realname);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
}
|
||||||
|
if (strlen(tmp->channel)) {
|
||||||
|
snprintf(p, 512, "JOIN %s@%s %s\r\n", tmp->name, tmp->server, tmp->channel);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
}
|
||||||
|
free(p);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Send all known channel topics
|
* Send all known channel topics
|
||||||
*/
|
*/
|
||||||
for (tmpc = channels; tmpc; tmpc = tmpc->next) {
|
for (tmpc = channels; tmpc; tmpc = tmpc->next) {
|
||||||
if (strlen(tmpc->topic) && (strcmp(tmpc->server, CFG.myfqdn) == 0))
|
if (strlen(tmpc->topic) && (strcmp(tmpc->server, CFG.myfqdn) == 0)) {
|
||||||
send_msg(tnsl, "TOPIC %s %s\r\n", tmpc->name, tmpc->topic);
|
p = xstrcpy((char *)"TOPIC ");
|
||||||
|
p = xstrcat(p, tmpc->name);
|
||||||
|
p = xstrcat(p, (char *)" ");
|
||||||
|
p = xstrcat(p, tmpc->topic);
|
||||||
|
p = xstrcat(p, (char *)"\r\n");
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
add_server(&servers, tnsl->server, ihops, prod, vers, fullname, hostname);
|
add_server(&servers, tnsl->server, ihops, prod, vers, fullname, hostname);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1163,12 +1187,13 @@ int command_server(char *hostname, char *parameters)
|
|||||||
* valid PASS command.
|
* valid PASS command.
|
||||||
*/
|
*/
|
||||||
if (found && tnsl->gotpass) {
|
if (found && tnsl->gotpass) {
|
||||||
send_msg(tnsl, "PASS %s 0100 %s\r\n", tnsl->passwd, tnsl->compress ? "Z":"");
|
|
||||||
send_msg(tnsl, "SERVER %s 0 %ld mbsebbs %s %s\r\n", tnsl->myname, token, VERSION, CFG.bbs_name);
|
|
||||||
p = calloc(512, sizeof(char));
|
p = calloc(512, sizeof(char));
|
||||||
|
snprintf(p, 512, "PASS %s 0100 %s\r\n", tnsl->passwd, tnsl->compress ? "Z":"");
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
snprintf(p, 512, "SERVER %s 0 %d mbsebbs %s %s\r\n", tnsl->myname, token, VERSION, CFG.bbs_name);
|
||||||
|
send_msg(tnsl, p);
|
||||||
snprintf(p, 512, "SERVER %s %d %s %s %s %s\r\n", name, ihops, id, prod, vers, fullname);
|
snprintf(p, 512, "SERVER %s %d %s %s %s %s\r\n", name, ihops, id, prod, vers, fullname);
|
||||||
broadcast(tnsl->server, p);
|
broadcast(tnsl->server, p);
|
||||||
free(p);
|
|
||||||
system_shout("* New server: %s, %s", name, fullname);
|
system_shout("* New server: %s, %s", name, fullname);
|
||||||
tnsl->gotserver = TRUE;
|
tnsl->gotserver = TRUE;
|
||||||
tnsl->state = NCS_CONNECT;
|
tnsl->state = NCS_CONNECT;
|
||||||
@ -1179,7 +1204,8 @@ int command_server(char *hostname, char *parameters)
|
|||||||
*/
|
*/
|
||||||
for (ta = servers; ta; ta = ta->next) {
|
for (ta = servers; ta; ta = ta->next) {
|
||||||
if (ta->hops) {
|
if (ta->hops) {
|
||||||
send_msg(tnsl, "SERVER %s %d 0 %s %s %s\r\n", ta->server, ta->hops, ta->prod, ta->vers, ta->fullname);
|
snprintf(p, 512, "SERVER %s %d 0 %s %s %s\r\n", ta->server, ta->hops, ta->prod, ta->vers, ta->fullname);
|
||||||
|
send_msg(tnsl, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@ -1187,15 +1213,28 @@ int command_server(char *hostname, char *parameters)
|
|||||||
* If the user is one of our own and has set a channel topic, send it.
|
* If the user is one of our own and has set a channel topic, send it.
|
||||||
*/
|
*/
|
||||||
for (tmp = users; tmp; tmp = tmp->next) {
|
for (tmp = users; tmp; tmp = tmp->next) {
|
||||||
send_msg(tnsl, "USER %s@%s %s\r\n", tmp->name, tmp->server, tmp->realname);
|
snprintf(p, 512, "USER %s@%s %s\r\n", tmp->name, tmp->server, tmp->realname);
|
||||||
if (strcmp(tmp->name, tmp->nick))
|
send_msg(tnsl, p);
|
||||||
send_msg(tnsl, "NICK %s %s %s %s\r\n", tmp->nick, tmp->name, tmp->server, tmp->realname);
|
if (strcmp(tmp->name, tmp->nick)) {
|
||||||
if (strlen(tmp->channel))
|
snprintf(p, 512, "NICK %s %s %s %s\r\n", tmp->nick, tmp->name, tmp->server, tmp->realname);
|
||||||
send_msg(tnsl, "JOIN %s@%s %s\r\n", tmp->name, tmp->server, tmp->channel);
|
send_msg(tnsl, p);
|
||||||
|
}
|
||||||
|
if (strlen(tmp->channel)) {
|
||||||
|
snprintf(p, 512, "JOIN %s@%s %s\r\n", tmp->name, tmp->server, tmp->channel);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
free(p);
|
||||||
for (tmpc = channels; tmpc; tmpc = tmpc->next) {
|
for (tmpc = channels; tmpc; tmpc = tmpc->next) {
|
||||||
if (strlen(tmpc->topic) && (strcmp(tmpc->server, CFG.myfqdn) == 0))
|
if (strlen(tmpc->topic) && (strcmp(tmpc->server, CFG.myfqdn) == 0)) {
|
||||||
send_msg(tnsl, "TOPIC %s %s\r\n", tmpc->name, tmpc->topic);
|
p = xstrcpy((char *)"TOPIC ");
|
||||||
|
p = xstrcat(p, tmpc->name);
|
||||||
|
p = xstrcat(p, (char *)" ");
|
||||||
|
p = xstrcat(p, tmpc->topic);
|
||||||
|
p = xstrcat(p, (char *)"\r\n");
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
add_server(&servers, tnsl->server, ihops, prod, vers, fullname, hostname);
|
add_server(&servers, tnsl->server, ihops, prod, vers, fullname, hostname);
|
||||||
srvchg = TRUE;
|
srvchg = TRUE;
|
||||||
@ -1279,7 +1318,7 @@ int command_user(char *hostname, char *parameters)
|
|||||||
realname = strtok(NULL, "\0");
|
realname = strtok(NULL, "\0");
|
||||||
|
|
||||||
if (realname == NULL) {
|
if (realname == NULL) {
|
||||||
send_msg(tnsl, "400 USER: Not enough parameters\r\n");
|
send_msg(tnsl, (char *)"400 USER: Not enough parameters\r\n");
|
||||||
return 400;
|
return 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1311,7 +1350,7 @@ int command_quit(char *hostname, char *parameters)
|
|||||||
message = strtok(NULL, "\0");
|
message = strtok(NULL, "\0");
|
||||||
|
|
||||||
if (server == NULL) {
|
if (server == NULL) {
|
||||||
send_msg(tnsl, "400 QUIT: Not enough parameters\r\n");
|
send_msg(tnsl, (char *)"400 QUIT: Not enough parameters\r\n");
|
||||||
return 400;
|
return 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1349,12 +1388,15 @@ int command_nick(char *hostname, char *parameters)
|
|||||||
realname = strtok(NULL, "\0");
|
realname = strtok(NULL, "\0");
|
||||||
|
|
||||||
if (realname == NULL) {
|
if (realname == NULL) {
|
||||||
send_msg(tnsl, "400 NICK: Not enough parameters\r\n");
|
send_msg(tnsl, (char *)"400 NICK: Not enough parameters\r\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strlen(nick) > 9) {
|
if (strlen(nick) > 9) {
|
||||||
send_msg(tnsl, "402 %s: Erroneous nickname\r\n", nick);
|
p = calloc(81, sizeof(char));
|
||||||
|
snprintf(p, 81, "402 %s: Erroneous nickname\r\n", nick);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
return 402;
|
return 402;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1368,7 +1410,10 @@ int command_nick(char *hostname, char *parameters)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (found) {
|
if (found) {
|
||||||
send_msg(tnsl, "403 %s: Nickname is already in use\r\n", nick);
|
p = calloc(81, sizeof(char));
|
||||||
|
snprintf(p, 81, "403 %s: Nickname is already in use\r\n", nick);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
return 403;
|
return 403;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1381,7 +1426,10 @@ int command_nick(char *hostname, char *parameters)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found) {
|
if (!found) {
|
||||||
send_msg(tnsl, "404 %s@%s: Can't change nick\r\n", name, server);
|
p = calloc(81, sizeof(char));
|
||||||
|
snprintf(p, 81, "404 %s@%s: Can't change nick\r\n", name, server);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
return 404;
|
return 404;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1413,12 +1461,15 @@ int command_join(char *hostname, char *parameters)
|
|||||||
channel = strtok(NULL, "\0");
|
channel = strtok(NULL, "\0");
|
||||||
|
|
||||||
if (channel == NULL) {
|
if (channel == NULL) {
|
||||||
send_msg(tnsl, "400 JOIN: Not enough parameters\r\n");
|
send_msg(tnsl, (char *)"400 JOIN: Not enough parameters\r\n");
|
||||||
return 400;
|
return 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strlen(channel) > 20) {
|
if (strlen(channel) > 20) {
|
||||||
send_msg(tnsl, "402 %s: Erroneous channelname\r\n", nick);
|
p = calloc(81, sizeof(char));
|
||||||
|
snprintf(p, 81, "402 %s: Erroneous channelname\r\n", nick);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
return 402;
|
return 402;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1480,7 +1531,7 @@ int command_part(char *hostname, char *parameters)
|
|||||||
message = strtok(NULL, "\0");
|
message = strtok(NULL, "\0");
|
||||||
|
|
||||||
if (channel == NULL) {
|
if (channel == NULL) {
|
||||||
send_msg(tnsl, "400 PART: Not enough parameters\r\n");
|
send_msg(tnsl, (char *)"400 PART: Not enough parameters\r\n");
|
||||||
return 400;
|
return 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1550,7 +1601,7 @@ int command_topic(char *hostname, char *parameters)
|
|||||||
topic = strtok(NULL, "\0");
|
topic = strtok(NULL, "\0");
|
||||||
|
|
||||||
if (topic == NULL) {
|
if (topic == NULL) {
|
||||||
send_msg(tnsl, "400 TOPIC: Not enough parameters\r\n");
|
send_msg(tnsl, (char *)"400 TOPIC: Not enough parameters\r\n");
|
||||||
return 400;
|
return 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1593,12 +1644,12 @@ int command_privmsg(char *hostname, char *parameters)
|
|||||||
msg = strtok(NULL, "\0");
|
msg = strtok(NULL, "\0");
|
||||||
|
|
||||||
if (msg == NULL) {
|
if (msg == NULL) {
|
||||||
send_msg(tnsl, "412 PRIVMSG: No text to send\r\n");
|
send_msg(tnsl, (char *)"412 PRIVMSG: No text to send\r\n");
|
||||||
return 412;
|
return 412;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channel[0] != '#') {
|
if (channel[0] != '#') {
|
||||||
send_msg(tnsl, "499 PRIVMSG: Not for a channel\r\n"); // FIXME: also check users
|
send_msg(tnsl, (char *)"499 PRIVMSG: Not for a channel\r\n"); // FIXME: also check users
|
||||||
return 499;
|
return 499;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1617,7 +1668,10 @@ int command_privmsg(char *hostname, char *parameters)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
send_msg(tnsl, "409 %s: Cannot sent to channel\r\n", channel);
|
p = calloc(81, sizeof(char));
|
||||||
|
snprintf(p, 81, "409 %s: Cannot sent to channel\r\n", channel);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
return 409;
|
return 409;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1626,7 +1680,8 @@ int command_privmsg(char *hostname, char *parameters)
|
|||||||
int do_command(char *hostname, char *command, char *parameters)
|
int do_command(char *hostname, char *command, char *parameters)
|
||||||
{
|
{
|
||||||
ncs_list *tnsl;
|
ncs_list *tnsl;
|
||||||
|
char *p;
|
||||||
|
|
||||||
for (tnsl = ncsl; tnsl; tnsl = tnsl->next) {
|
for (tnsl = ncsl; tnsl; tnsl = tnsl->next) {
|
||||||
if (strcmp(tnsl->server, hostname) == 0) {
|
if (strcmp(tnsl->server, hostname) == 0) {
|
||||||
break;
|
break;
|
||||||
@ -1637,7 +1692,7 @@ int do_command(char *hostname, char *command, char *parameters)
|
|||||||
* First the commands that don't have parameters
|
* First the commands that don't have parameters
|
||||||
*/
|
*/
|
||||||
if (! strcmp(command, (char *)"PING")) {
|
if (! strcmp(command, (char *)"PING")) {
|
||||||
send_msg(tnsl, "PONG\r\n");
|
send_msg(tnsl, (char *)"PONG\r\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (! strcmp(command, (char *)"PONG")) {
|
if (! strcmp(command, (char *)"PONG")) {
|
||||||
@ -1656,7 +1711,10 @@ int do_command(char *hostname, char *command, char *parameters)
|
|||||||
* Commands with parameters
|
* Commands with parameters
|
||||||
*/
|
*/
|
||||||
if (parameters == NULL) {
|
if (parameters == NULL) {
|
||||||
send_msg(tnsl, "400 %s: Not enough parameters\r\n", command);
|
p = calloc(81, sizeof(char));
|
||||||
|
snprintf(p, 81, "400 %s: Not enough parameters\r\n", command);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
return 400;
|
return 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1691,7 +1749,10 @@ int do_command(char *hostname, char *command, char *parameters)
|
|||||||
return command_privmsg(hostname, parameters);
|
return command_privmsg(hostname, parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
send_msg(tnsl, "413 %s: Unknown command\r\n", command);
|
p = calloc(81, sizeof(char));
|
||||||
|
snprintf(p, 81, "413 %s: Unknown command\r\n", command);
|
||||||
|
send_msg(tnsl, p);
|
||||||
|
free(p);
|
||||||
return 413;
|
return 413;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1828,11 +1889,14 @@ void ibc_shutdown(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p = calloc(512, sizeof(char));
|
||||||
for (tnsl = ncsl; tnsl; tnsl = tnsl->next) {
|
for (tnsl = ncsl; tnsl; tnsl = tnsl->next) {
|
||||||
if (tnsl->state == NCS_CONNECT) {
|
if (tnsl->state == NCS_CONNECT) {
|
||||||
send_msg(tnsl, "SQUIT %s System shutdown\r\n", tnsl->myname);
|
snprintf(p, 512, "SQUIT %s System shutdown\r\n", tnsl->myname);
|
||||||
|
send_msg(tnsl, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
free(p);
|
||||||
|
|
||||||
tidy_servers(&servers);
|
tidy_servers(&servers);
|
||||||
}
|
}
|
||||||
|
@ -80,16 +80,28 @@ void WriteError(const char *format, ...)
|
|||||||
void Syslog(int grade, const char *format, ...)
|
void Syslog(int grade, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list va_ptr;
|
va_list va_ptr;
|
||||||
char outstr[1024], datestr[21], lname[PATH_MAX];
|
char outstr[1024];
|
||||||
int oldmask, debug;
|
|
||||||
|
va_start(va_ptr, format);
|
||||||
|
vsnprintf(outstr, 1024, format, va_ptr);
|
||||||
|
va_end(va_ptr);
|
||||||
|
Syslogp(grade, outstr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Logging without string formatting
|
||||||
|
*/
|
||||||
|
void Syslogp(int grade, char *outstr)
|
||||||
|
{
|
||||||
|
char datestr[21], lname[PATH_MAX];
|
||||||
|
int i, oldmask, debug;
|
||||||
FILE *logfile = NULL, *debugfile;
|
FILE *logfile = NULL, *debugfile;
|
||||||
time_t now;
|
time_t now;
|
||||||
struct tm ptm;
|
struct tm ptm;
|
||||||
|
|
||||||
debug = isalpha(grade);
|
debug = isalpha(grade);
|
||||||
va_start(va_ptr, format);
|
|
||||||
vsnprintf(outstr, 1024, format, va_ptr);
|
|
||||||
va_end(va_ptr);
|
|
||||||
|
|
||||||
tcrc = StringCRC32(outstr);
|
tcrc = StringCRC32(outstr);
|
||||||
if (tcrc == lcrc) {
|
if (tcrc == lcrc) {
|
||||||
@ -136,7 +148,14 @@ void Syslog(int grade, const char *format, ...)
|
|||||||
|
|
||||||
if (!debug) {
|
if (!debug) {
|
||||||
fprintf(logfile, "%c %s mbtask[%d] ", grade, datestr, mypid);
|
fprintf(logfile, "%c %s mbtask[%d] ", grade, datestr, mypid);
|
||||||
fprintf(logfile, *outstr == '$' ? outstr+1 : outstr);
|
for (i = *outstr == '$' ? 1 : 0; i < strlen(outstr); i++) {
|
||||||
|
if (iscntrl(outstr[i])) {
|
||||||
|
fputc('^', logfile);
|
||||||
|
fputc(outstr[i] + 64, logfile);
|
||||||
|
} else {
|
||||||
|
fputc(outstr[i], logfile);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (*outstr == '$')
|
if (*outstr == '$')
|
||||||
fprintf(logfile, ": %s\n", strerror(errno));
|
fprintf(logfile, ": %s\n", strerror(errno));
|
||||||
else
|
else
|
||||||
@ -148,7 +167,14 @@ void Syslog(int grade, const char *format, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
fprintf(debugfile, "%c %s mbtask[%d] ", grade, datestr, mypid);
|
fprintf(debugfile, "%c %s mbtask[%d] ", grade, datestr, mypid);
|
||||||
fprintf(debugfile, *outstr == '$' ? outstr+1 : outstr);
|
for (i = *outstr == '$' ? 1 : 0; i < strlen(outstr); i++) {
|
||||||
|
if (iscntrl(outstr[i])) {
|
||||||
|
fputc('^', debugfile);
|
||||||
|
fputc(outstr[i] + 64, debugfile);
|
||||||
|
} else {
|
||||||
|
fputc(outstr[i], debugfile);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (*outstr == '$')
|
if (*outstr == '$')
|
||||||
fprintf(debugfile, ": %s\n", strerror(errno));
|
fprintf(debugfile, ": %s\n", strerror(errno));
|
||||||
else
|
else
|
||||||
|
@ -22,6 +22,7 @@ typedef struct _srv_auth {
|
|||||||
* Function prototypes
|
* Function prototypes
|
||||||
*/
|
*/
|
||||||
void WriteError(const char *, ...);
|
void WriteError(const char *, ...);
|
||||||
|
void Syslogp(int, char *);
|
||||||
void Syslog(int, const char *, ...);
|
void Syslog(int, const char *, ...);
|
||||||
int ulog(char *, char *, char *, char *, char*);
|
int ulog(char *, char *, char *, char *, char*);
|
||||||
char *xstrcpy(char *);
|
char *xstrcpy(char *);
|
||||||
|
Reference in New Issue
Block a user