Finished chatserver, bumped to version 0.37.3
This commit is contained in:
parent
03f3cb1c12
commit
cad87472f1
13
ChangeLog
13
ChangeLog
@ -5,7 +5,10 @@ $Id$
|
|||||||
All other users on Intel machines (99,9% I think) can use this version.
|
All other users on Intel machines (99,9% I think) can use this version.
|
||||||
|
|
||||||
|
|
||||||
v0.37.2 23-Feb-2003.
|
v0.37.3 09-Apr-2003.
|
||||||
|
|
||||||
|
|
||||||
|
v0.37.2 23-Feb-2003 - 09-Apr-2003
|
||||||
|
|
||||||
general:
|
general:
|
||||||
System prepared for setting the official FTSC product code,
|
System prepared for setting the official FTSC product code,
|
||||||
@ -14,6 +17,8 @@ v0.37.2 23-Feb-2003.
|
|||||||
chat stuff that is of no use anymore. The sysop shows his
|
chat stuff that is of no use anymore. The sysop shows his
|
||||||
presence by running mbmon. The mbchat program is obsolete.
|
presence by running mbmon. The mbchat program is obsolete.
|
||||||
Menu item 22 is added, this is user chat session.
|
Menu item 22 is added, this is user chat session.
|
||||||
|
For chat (and sysop/user paging chat) works now using the
|
||||||
|
mbtask daemon.
|
||||||
|
|
||||||
common.a:
|
common.a:
|
||||||
New function to get the real case of a filename.
|
New function to get the real case of a filename.
|
||||||
@ -83,9 +88,9 @@ v0.37.2 23-Feb-2003.
|
|||||||
Added CPAG command to page the sysop.
|
Added CPAG command to page the sysop.
|
||||||
Added CCAN command to cancel the sysop page.
|
Added CCAN command to cancel the sysop page.
|
||||||
Added CCKP command to check for a page.
|
Added CCKP command to check for a page.
|
||||||
Added CCON, CCLO, CPUT and CGET commands for chatserver. The
|
Added CCON, CCLO, CPUT and CGET commands for chatserver.
|
||||||
chatserver commands will be added and are in development.
|
Implemented a chatserver, this looks like a simple IRC server
|
||||||
Basic chatting now works.
|
to the users.
|
||||||
|
|
||||||
lang:
|
lang:
|
||||||
Changed language prompts 15, 16 and 152.
|
Changed language prompts 15, 16 and 152.
|
||||||
|
@ -11,7 +11,7 @@ dnl After changeing the version number, run autoconf!
|
|||||||
PACKAGE="mbsebbs"
|
PACKAGE="mbsebbs"
|
||||||
MAJOR="0"
|
MAJOR="0"
|
||||||
MINOR="37"
|
MINOR="37"
|
||||||
REVISION="2"
|
REVISION="3"
|
||||||
VERSION="$MAJOR.$MINOR.$REVISION"
|
VERSION="$MAJOR.$MINOR.$REVISION"
|
||||||
COPYRIGHT="Copyright (C) 1997-2003 Michiel Broek, All Rights Reserved"
|
COPYRIGHT="Copyright (C) 1997-2003 Michiel Broek, All Rights Reserved"
|
||||||
SHORTRIGHT="Copyright (C) 1997-2003 M. Broek"
|
SHORTRIGHT="Copyright (C) 1997-2003 M. Broek"
|
||||||
|
@ -183,17 +183,17 @@ void chat_help(pid_t pid)
|
|||||||
system_msg(pid, (char *)" Help topics available:");
|
system_msg(pid, (char *)" Help topics available:");
|
||||||
system_msg(pid, (char *)"");
|
system_msg(pid, (char *)"");
|
||||||
system_msg(pid, (char *)" /BYE - Exit from chatserver");
|
system_msg(pid, (char *)" /BYE - Exit from chatserver");
|
||||||
// system_msg(pid, (char *)" /ECHO <message> - Echo message to yourself");
|
system_msg(pid, (char *)" /ECHO <message> - Echo message to yourself");
|
||||||
system_msg(pid, (char *)" /EXIT - Exit from chatserver");
|
system_msg(pid, (char *)" /EXIT - Exit from chatserver");
|
||||||
system_msg(pid, (char *)" /JOIN #channel - Join or create a channel");
|
system_msg(pid, (char *)" /JOIN #channel - Join or create a channel");
|
||||||
system_msg(pid, (char *)" /J #channel - Join or create a channel");
|
system_msg(pid, (char *)" /J #channel - Join or create a channel");
|
||||||
// system_msg(pid, (char *)" /KICK <nick> - Kick nick out of the channel");
|
// system_msg(pid, (char *)" /KICK <nick> - Kick nick out of the channel");
|
||||||
system_msg(pid, (char *)" /LIST - List active channels");
|
system_msg(pid, (char *)" /LIST - List active channels");
|
||||||
// system_msg(pid, (char *)" /NAMES - List nicks in current channel");
|
system_msg(pid, (char *)" /NAMES - List nicks in current channel");
|
||||||
system_msg(pid, (char *)" /NICK <name> - Set new nickname");
|
system_msg(pid, (char *)" /NICK <name> - Set new nickname");
|
||||||
system_msg(pid, (char *)" /PART - Leave current channel");
|
system_msg(pid, (char *)" /PART - Leave current channel");
|
||||||
system_msg(pid, (char *)" /QUIT - Exit from chatserver");
|
system_msg(pid, (char *)" /QUIT - Exit from chatserver");
|
||||||
// system_msg(pid, (char *)" /TOPIC <topic> - Set topic for current channel");
|
system_msg(pid, (char *)" /TOPIC <topic> - Set topic for current channel");
|
||||||
system_msg(pid, (char *)"");
|
system_msg(pid, (char *)"");
|
||||||
system_msg(pid, (char *)" All other input (without a starting /) is sent to the channel.");
|
system_msg(pid, (char *)" All other input (without a starting /) is sent to the channel.");
|
||||||
}
|
}
|
||||||
@ -328,7 +328,11 @@ int part(pid_t pid, char *reason)
|
|||||||
|
|
||||||
void chat_init(void)
|
void chat_init(void)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
memset(&chat_users, 0, sizeof(chat_users));
|
memset(&chat_users, 0, sizeof(chat_users));
|
||||||
|
for (i = 0; i < MAXCLIENT; i++)
|
||||||
|
chat_users[i].channel = -1;
|
||||||
memset(&chat_messages, 0, sizeof(chat_messages));
|
memset(&chat_messages, 0, sizeof(chat_messages));
|
||||||
memset(&chat_channels, 0, sizeof(chat_channels));
|
memset(&chat_channels, 0, sizeof(chat_channels));
|
||||||
}
|
}
|
||||||
@ -453,6 +457,7 @@ char *chat_close(char *data)
|
|||||||
if (chat_users[i].pid == atoi(pid)) {
|
if (chat_users[i].pid == atoi(pid)) {
|
||||||
Syslog('-', "Closing chat for pid %s, slot %d", pid, i);
|
Syslog('-', "Closing chat for pid %s, slot %d", pid, i);
|
||||||
memset(&chat_users[i], 0, sizeof(_chat_users));
|
memset(&chat_users[i], 0, sizeof(_chat_users));
|
||||||
|
chat_users[i].channel = -1;
|
||||||
sprintf(buf, "100:0;");
|
sprintf(buf, "100:0;");
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
@ -468,7 +473,7 @@ char *chat_put(char *data)
|
|||||||
{
|
{
|
||||||
static char buf[200];
|
static char buf[200];
|
||||||
char *pid, *msg, *cmd;
|
char *pid, *msg, *cmd;
|
||||||
int i, j, first;
|
int i, j, first, count;
|
||||||
|
|
||||||
Syslog('-', "CPUT:%s", data);
|
Syslog('-', "CPUT:%s", data);
|
||||||
memset(&buf, 0, sizeof(buf));
|
memset(&buf, 0, sizeof(buf));
|
||||||
@ -497,6 +502,10 @@ char *chat_put(char *data)
|
|||||||
if (strncasecmp(msg, "/help", 5) == 0) {
|
if (strncasecmp(msg, "/help", 5) == 0) {
|
||||||
chat_help(atoi(pid));
|
chat_help(atoi(pid));
|
||||||
goto ack;
|
goto ack;
|
||||||
|
} else if (strncasecmp(msg, "/echo", 5) == 0) {
|
||||||
|
sprintf(buf, "%s", msg);
|
||||||
|
system_msg(chat_users[i].pid, buf);
|
||||||
|
goto ack;
|
||||||
} else if ((strncasecmp(msg, "/exit", 5) == 0) ||
|
} else if ((strncasecmp(msg, "/exit", 5) == 0) ||
|
||||||
(strncasecmp(msg, "/quit", 5) == 0) ||
|
(strncasecmp(msg, "/quit", 5) == 0) ||
|
||||||
(strncasecmp(msg, "/bye", 4) == 0)) {
|
(strncasecmp(msg, "/bye", 4) == 0)) {
|
||||||
@ -511,10 +520,10 @@ char *chat_put(char *data)
|
|||||||
cmd = strtok(NULL, "\0");
|
cmd = strtok(NULL, "\0");
|
||||||
Syslog('-', "\"%s\"", cmd);
|
Syslog('-', "\"%s\"", cmd);
|
||||||
if ((cmd == NULL) || (cmd[0] != '#') || (strcmp(cmd, "#") == 0)) {
|
if ((cmd == NULL) || (cmd[0] != '#') || (strcmp(cmd, "#") == 0)) {
|
||||||
sprintf(buf, "Try /join #channel");
|
sprintf(buf, "** Try /join #channel");
|
||||||
system_msg(chat_users[i].pid, buf);
|
system_msg(chat_users[i].pid, buf);
|
||||||
} else if (chat_users[i].channel != -1) {
|
} else if (chat_users[i].channel != -1) {
|
||||||
sprintf(buf, "Cannot join while in a channel");
|
sprintf(buf, "** Cannot join while in a channel");
|
||||||
system_msg(chat_users[i].pid, buf);
|
system_msg(chat_users[i].pid, buf);
|
||||||
} else {
|
} else {
|
||||||
Syslog('-', "Trying to join channel %s", cmd);
|
Syslog('-', "Trying to join channel %s", cmd);
|
||||||
@ -542,11 +551,31 @@ char *chat_put(char *data)
|
|||||||
system_msg(chat_users[i].pid, buf);
|
system_msg(chat_users[i].pid, buf);
|
||||||
}
|
}
|
||||||
goto ack;
|
goto ack;
|
||||||
|
} else if (strncasecmp(msg, "/names", 6) == 0) {
|
||||||
|
if (chat_users[i].channel != -1) {
|
||||||
|
sprintf(buf, "Present in this channel:");
|
||||||
|
system_msg(chat_users[i].pid, buf);
|
||||||
|
count = 0;
|
||||||
|
for (j = 0; j < MAXCLIENT; j++) {
|
||||||
|
if ((chat_users[j].channel == chat_users[i].channel) && chat_users[j].pid) {
|
||||||
|
sprintf(buf, "%s %s", chat_users[j].name,
|
||||||
|
chat_users[j].chanop ?"(chanop)": chat_users[j].sysop ?"(sysop)":"");
|
||||||
|
system_msg(chat_users[i].pid, buf);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sprintf(buf, "%d user%s in this channel", count, (count == 1) ?"":"s");
|
||||||
|
system_msg(chat_users[i].pid, buf);
|
||||||
|
} else {
|
||||||
|
sprintf(buf, "** Not in a channel");
|
||||||
|
system_msg(chat_users[i].pid, buf);
|
||||||
|
}
|
||||||
|
goto ack;
|
||||||
} else if (strncasecmp(msg, "/nick", 5) == 0) {
|
} else if (strncasecmp(msg, "/nick", 5) == 0) {
|
||||||
cmd = strtok(msg, " \0");
|
cmd = strtok(msg, " \0");
|
||||||
cmd = strtok(NULL, "\0");
|
cmd = strtok(NULL, "\0");
|
||||||
if ((cmd == NULL) || (strlen(cmd) == 0) || (strlen(cmd) > 36)) {
|
if ((cmd == NULL) || (strlen(cmd) == 0) || (strlen(cmd) > 36)) {
|
||||||
sprintf(buf, "Nickname must be between 1 and 36 characters");
|
sprintf(buf, "** Nickname must be between 1 and 36 characters");
|
||||||
} else {
|
} else {
|
||||||
strncpy(chat_users[i].name, cmd, 36);
|
strncpy(chat_users[i].name, cmd, 36);
|
||||||
sprintf(buf, "Nick set to \"%s\"", cmd);
|
sprintf(buf, "Nick set to \"%s\"", cmd);
|
||||||
@ -560,11 +589,31 @@ char *chat_put(char *data)
|
|||||||
cmd = strtok(NULL, "\0");
|
cmd = strtok(NULL, "\0");
|
||||||
Syslog('-', "\"%s\"", cmd);
|
Syslog('-', "\"%s\"", cmd);
|
||||||
if (part(chat_users[i].pid, cmd) == FALSE) {
|
if (part(chat_users[i].pid, cmd) == FALSE) {
|
||||||
sprintf(buf, "Not in a channel");
|
sprintf(buf, "** Not in a channel");
|
||||||
system_msg(chat_users[i].pid, buf);
|
system_msg(chat_users[i].pid, buf);
|
||||||
}
|
}
|
||||||
chat_dump();
|
chat_dump();
|
||||||
goto ack;
|
goto ack;
|
||||||
|
} else if (strncasecmp(msg, "/topic", 6) == 0) {
|
||||||
|
if (chat_users[i].channel != -1) {
|
||||||
|
if (chat_channels[chat_users[i].channel].owner == chat_users[i].pid) {
|
||||||
|
cmd = strtok(msg, " \0");
|
||||||
|
cmd = strtok(NULL, "\0");
|
||||||
|
if ((cmd == NULL) || (strlen(cmd) == 0) || (strlen(cmd) > 36)) {
|
||||||
|
sprintf(buf, "** Topic must be between 1 and 54 characters");
|
||||||
|
} else {
|
||||||
|
strncpy(chat_channels[chat_users[i].channel].topic, cmd, 54);
|
||||||
|
sprintf(buf, "Topic set to \"%s\"", cmd);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sprintf(buf, "** You are not the channel owner");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sprintf(buf, "** Not in a channel");
|
||||||
|
}
|
||||||
|
system_msg(chat_users[i].pid, buf);
|
||||||
|
chat_dump();
|
||||||
|
goto ack;
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* If still here, the command was not recognized.
|
* If still here, the command was not recognized.
|
||||||
@ -579,7 +628,7 @@ char *chat_put(char *data)
|
|||||||
/*
|
/*
|
||||||
* Trying messages while not in a channel
|
* Trying messages while not in a channel
|
||||||
*/
|
*/
|
||||||
sprintf(buf, "No channel joined. Try /join #channel");
|
sprintf(buf, "** No channel joined. Try /join #channel");
|
||||||
system_msg(chat_users[i].pid, buf);
|
system_msg(chat_users[i].pid, buf);
|
||||||
chat_dump();
|
chat_dump();
|
||||||
goto ack;
|
goto ack;
|
||||||
|
Reference in New Issue
Block a user