Implemented export of area rules in the bbs
This commit is contained in:
parent
0ff5071414
commit
17c46104de
13
ChangeLog
13
ChangeLog
@ -6,7 +6,8 @@ v0.37.01 14-Jan-2003.
|
||||
upgrade:
|
||||
After installing the binaries, start mbsetup, enter menu 1 and
|
||||
leave that and save it. This will set the default rules
|
||||
directory, will be used later.
|
||||
directory, here we will store the area rules of all echomail
|
||||
areas.
|
||||
After upgrade you may remove ~/etc/maptabs and it's contents.
|
||||
After upgrade you may remove ~/etc/bank.data.
|
||||
|
||||
@ -58,7 +59,7 @@ v0.37.01 14-Jan-2003.
|
||||
global settings.
|
||||
When moving a message area to area zero mbsetup doesn't crash
|
||||
anymore.
|
||||
Added new menu item 319, remove menu items 22 and 23.
|
||||
Added new menu item 319, removed menu items 22 and 23.
|
||||
Added setup for rules directory.
|
||||
|
||||
mbsebbs:
|
||||
@ -71,13 +72,19 @@ v0.37.01 14-Jan-2003.
|
||||
as from name.
|
||||
Removed timebank and nextuser doors.
|
||||
Added editing of user's signature file. New menu item 319.
|
||||
If the sysop is exporting a echomail message he will have the
|
||||
option to save to his private directory or to the rules
|
||||
directory. If saved to the rules directory the message will
|
||||
have the filename of the area tag. Normal users can only export
|
||||
to their private directory. Sysops: now you can start
|
||||
collecting area rules!
|
||||
|
||||
examples:
|
||||
The English and Dutch templates are updated to show the new
|
||||
nodes flow counters (html.nodes).
|
||||
|
||||
lang:
|
||||
Changed english and dutch language prompts 107.
|
||||
Changed english and dutch language prompts 11, 12 and 107.
|
||||
|
||||
|
||||
v0.37.00 26-Dec-2002 - 14-Jan-2003
|
||||
|
2
Makefile
2
Makefile
@ -151,8 +151,8 @@ install:
|
||||
@if [ ! -d ${PREFIX}/var/rules ]; then \
|
||||
mkdir ${PREFIX}/var/rules ; \
|
||||
${CHOWN} ${OWNER}:${GROUP} ${PREFIX}/var/rules ; \
|
||||
chmod 0750 ${PREFIX}/var/rules ; \
|
||||
fi
|
||||
chmod 0770 ${PREFIX}/var/rules
|
||||
@if [ ! -d ${PREFIX}/var/unknown ] ; then \
|
||||
mkdir ${PREFIX}/var/unknown ; \
|
||||
mkdir ${PREFIX}/var/inbound ; \
|
||||
|
2
TODO
2
TODO
@ -111,6 +111,8 @@ mbfile:
|
||||
|
||||
N: Override timeout during virus scan when files are imported.
|
||||
|
||||
N: Add area sorting
|
||||
|
||||
mbmsg:
|
||||
N: With the post command if a netmail area is used the netmail area
|
||||
will cause trouble later, should be blocked to be used on netmail
|
||||
|
@ -9,8 +9,8 @@
|
||||
8 user.c filesub.c |Password:
|
||||
9 user.c |Maximum login attempts have been exceeded ...
|
||||
10 user.c |Either your NAME or PASSWORD is incorrect
|
||||
11 .c |
|
||||
12 .c |
|
||||
11 mail.c email.c HR|Export to (H)ome or (R)ules directory:
|
||||
12 mail.c email.c |Message exported to rules directory as
|
||||
13 .c |
|
||||
14 .c |
|
||||
15 .c |
|
||||
|
@ -9,8 +9,8 @@ JN|Is Uw naam juist gespeld? [J/n]
|
||||
|Wachtwoord:
|
||||
|Maximum aantal inlog pogingen overschreden ...
|
||||
|Of Uw NAAM of Uw WACHTWOORD is fout
|
||||
| MBSE BBS Systeem Bank
|
||||
|Bank Rekening:
|
||||
HR|Exporteer naar (H)ome of (R)egels directory:
|
||||
|Bericht geexporteerd naar rules directory als
|
||||
|Tijd op de rekening
|
||||
|Bytes op de rekening
|
||||
|Tijd gestort vandaag
|
||||
|
@ -9,8 +9,8 @@ YN|Did you spell your name correctly? [Y/n]
|
||||
|Password:
|
||||
|Maximum login attempts have been exceeded ...
|
||||
|Either your NAME or PASSWORD is incorrect
|
||||
| MBSE BBS System Bank
|
||||
|Bank Account:
|
||||
HR|Export to (H)ome or (R)ules directory:
|
||||
|Message exported to rules directory as
|
||||
|Time in account
|
||||
|Bytes in account
|
||||
|Time deposited today
|
||||
|
@ -9,8 +9,8 @@ SN|
|
||||
|Password:
|
||||
|Sobrepasouse o n£mero m ximo de erros permitido...
|
||||
|O teu nome ou a tua PASSWORD son incorrectos
|
||||
| Banco de MBSE BBS
|
||||
|Conta:
|
||||
HR|Export to (H)ome or (R)ules directory:
|
||||
|Message exported to rules directory as
|
||||
|Tempo na conta :
|
||||
|Bytes na cuenta :
|
||||
|Tempo depositado hoxe :
|
||||
|
@ -9,8 +9,8 @@ JN|Haben Sie Ihren Namen korrekt eingegeben? [J/n]
|
||||
|Passwort:
|
||||
|Die maximale Anzahl von Login-Versuchen wurde ueberschritten ...
|
||||
|Entweder Ihr NAME oder Ihr PASSWORT wurden falsch eingegeben
|
||||
| MBSE BBS System Bank
|
||||
|Zeitbank Konto fuer:
|
||||
HR|Export to (H)ome or (R)ules directory:
|
||||
|Message exported to rules directory as
|
||||
|Kontostand Zeit (min) . . . . . . :
|
||||
|Kontostand Daten (KBytes) . . . . :
|
||||
|Heute gesparte Zeit . . . . . . . :
|
||||
|
@ -9,8 +9,8 @@ SN|Hai scritto il tuo nome e cognome correttamente? [S/n]
|
||||
|Password:
|
||||
|Numero massimo di tentativi per il login raggiunto ...
|
||||
|Hai inserito un NOME o una PASSWORD errata
|
||||
| MBSE BBS Banca di Sistema
|
||||
|Account bancario di :
|
||||
HR|Export to (H)ome or (R)ules directory:
|
||||
|Message exported to rules directory as
|
||||
|Tempo disponibile :
|
||||
|Byte disponibili :
|
||||
|Tempo depositato oggi:
|
||||
|
@ -9,8 +9,8 @@ SN|
|
||||
|Password:
|
||||
|El n£mero de errores permitidos se ha sobrepasado ...
|
||||
|Tu nombre o tu PASSWORD son incorrectos
|
||||
| Banco de mbsebbs
|
||||
|Cuenta:
|
||||
HR|Export to (H)ome or (R)ules directory:
|
||||
|Message exported to rules directory as
|
||||
|Tiempo en la cuenta :
|
||||
|Bytes en la cuenta :
|
||||
|Tiempo depositado hoy :
|
||||
|
206
mbsebbs/mail.c
206
mbsebbs/mail.c
@ -807,98 +807,148 @@ void ShowMsgHdr()
|
||||
|
||||
|
||||
/*
|
||||
* Export a message to file in the users home directory.
|
||||
* Export a message to file in the users home directory or to the rules directory.
|
||||
*/
|
||||
int Export_a_Msg(unsigned long Num)
|
||||
{
|
||||
char *p;
|
||||
int ShowMsg = TRUE;
|
||||
char *p;
|
||||
int ShowMsg = TRUE, z, homedir = TRUE;
|
||||
|
||||
LastNum = Num;
|
||||
iLineCount = 7;
|
||||
WhosDoingWhat(READ_POST);
|
||||
Syslog('+', "Export msg %d in area #%d (%s)", Num, iMsgAreaNumber + 1, sMsgAreaDesc);
|
||||
LastNum = Num;
|
||||
iLineCount = 7;
|
||||
WhosDoingWhat(READ_POST);
|
||||
|
||||
/*
|
||||
* The area data is already set, so we can do the next things
|
||||
*/
|
||||
if (MsgBase.Total == 0) {
|
||||
colour(WHITE, BLACK);
|
||||
/* There are no messages in this area */
|
||||
printf("\n%s\n\n", (char *) Language(205));
|
||||
sleep(3);
|
||||
return FALSE;
|
||||
/*
|
||||
* The sysop has a choice to export to the rules directory.
|
||||
*/
|
||||
if ((exitinfo.Security.level >= CFG.sysop_access) && strlen(msgs.Tag)) {
|
||||
while (TRUE) {
|
||||
Enter(2);
|
||||
/* Export to (H)ome or (R)ules directory: */
|
||||
pout(WHITE, RED, (char *) Language(11));
|
||||
colour(CFG.MsgInputColourF, CFG.MsgInputColourB);
|
||||
fflush(stdout);
|
||||
alarm_on();
|
||||
z = toupper(Getone());
|
||||
if (z == Keystroke(11, 0)) {
|
||||
printf("%c", Keystroke(478, 0));
|
||||
break;
|
||||
}
|
||||
if (z == Keystroke(11, 1)) {
|
||||
printf("%c", Keystroke(478, 1));
|
||||
homedir = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Syslog('+', "Export msg %d in area #%d (%s) to %s directory", Num, iMsgAreaNumber + 1, sMsgAreaDesc, homedir?"Home":"Rules");
|
||||
|
||||
if (!Msg_Open(sMsgAreaBase)) {
|
||||
WriteError("Error open JAM base %s", sMsgAreaBase);
|
||||
return FALSE;
|
||||
}
|
||||
/*
|
||||
* The area data is already set, so we can do the next things
|
||||
*/
|
||||
if (MsgBase.Total == 0) {
|
||||
colour(WHITE, BLACK);
|
||||
/* There are no messages in this area */
|
||||
printf("\n%s\n\n", (char *) Language(205));
|
||||
Syslog('+', "No messages in area");
|
||||
sleep(3);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!Msg_ReadHeader(Num)) {
|
||||
perror("");
|
||||
colour(WHITE, BLACK);
|
||||
printf("\n%s\n\n", (char *)Language(77));
|
||||
Msg_Close();
|
||||
sleep(3);
|
||||
return FALSE;
|
||||
}
|
||||
if (!Msg_Open(sMsgAreaBase)) {
|
||||
WriteError("Error open JAM base %s", sMsgAreaBase);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (Msg.Private) {
|
||||
ShowMsg = FALSE;
|
||||
if ((strcasecmp(exitinfo.sUserName, Msg.From) == 0) || (strcasecmp(exitinfo.sUserName, Msg.To) == 0))
|
||||
ShowMsg = TRUE;
|
||||
if (exitinfo.Security.level >= msgs.SYSec.level)
|
||||
ShowMsg = TRUE;
|
||||
}
|
||||
|
||||
if (!ShowMsg) {
|
||||
printf("\n%s\n\n", (char *) Language(82));
|
||||
Msg_Close();
|
||||
sleep(3);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Export the message text to the file in the users home/wrk directory.
|
||||
* Create the filename as <areanum>_<msgnum>.msg The message is
|
||||
* written in M$DOS <cr/lf> format.
|
||||
*/
|
||||
p = calloc(128, sizeof(char));
|
||||
sprintf(p, "%s/%s/wrk/%d_%lu.msg", CFG.bbs_usersdir, exitinfo.Name, iMsgAreaNumber + 1, Num);
|
||||
if ((qf = fopen(p, "w")) != NULL) {
|
||||
free(p);
|
||||
p = NULL;
|
||||
if (Msg_Read(Num, 80)) {
|
||||
if ((p = (char *)MsgText_First()) != NULL)
|
||||
do {
|
||||
if ((p[0] == '\001') || (!strncmp(p, "SEEN-BY:", 8)) || (!strncmp(p, "AREA:", 5))) {
|
||||
if (Kludges) {
|
||||
if (p[0] == '\001') {
|
||||
p[0] = 'a';
|
||||
fprintf(qf, "^%s\r\n", p);
|
||||
} else
|
||||
fprintf(qf, "%s\r\n", p);
|
||||
}
|
||||
} else
|
||||
fprintf(qf, "%s\r\n", p);
|
||||
} while ((p = (char *)MsgText_Next()) != NULL);
|
||||
}
|
||||
fclose(qf);
|
||||
} else {
|
||||
WriteError("$Can't open %s", p);
|
||||
}
|
||||
if (!Msg_ReadHeader(Num)) {
|
||||
perror("");
|
||||
colour(WHITE, BLACK);
|
||||
/* Message doesn't exist */
|
||||
printf("\n%s\n\n", (char *)Language(77));
|
||||
Msg_Close();
|
||||
sleep(3);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Report the result.
|
||||
*/
|
||||
colour(CFG.TextColourF, CFG.TextColourB);
|
||||
if (Msg.Private) {
|
||||
ShowMsg = FALSE;
|
||||
if ((strcasecmp(exitinfo.sUserName, Msg.From) == 0) || (strcasecmp(exitinfo.sUserName, Msg.To) == 0))
|
||||
ShowMsg = TRUE;
|
||||
if (exitinfo.Security.level >= msgs.SYSec.level)
|
||||
ShowMsg = TRUE;
|
||||
}
|
||||
|
||||
if (!ShowMsg) {
|
||||
/* Private message, not owner */
|
||||
printf("\n%s\n\n", (char *) Language(82));
|
||||
Msg_Close();
|
||||
sleep(3);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Export the message text to the file in the users home/wrk directory
|
||||
* or to the rules directory.
|
||||
* Create the filename as <areanum>_<msgnum>.msg if exported to the
|
||||
* home directory, if exported to a rule directory the name is the area tag.
|
||||
* The message is written in M$DOS <cr/lf> format.
|
||||
*/
|
||||
p = calloc(PATH_MAX, sizeof(char));
|
||||
if (homedir)
|
||||
sprintf(p, "%s/%s/wrk/%d_%lu.msg", CFG.bbs_usersdir, exitinfo.Name, iMsgAreaNumber + 1, Num);
|
||||
else
|
||||
sprintf(p, "%s/%s", CFG.rulesdir, msgs.Tag);
|
||||
|
||||
if ((qf = fopen(p, "w")) != NULL) {
|
||||
free(p);
|
||||
p = NULL;
|
||||
if (Msg_Read(Num, 80)) {
|
||||
if ((p = (char *)MsgText_First()) != NULL) {
|
||||
do {
|
||||
if ((p[0] == '\001') || (!strncmp(p, "SEEN-BY:", 8)) || (!strncmp(p, "AREA:", 5))) {
|
||||
if (Kludges && homedir) {
|
||||
if (p[0] == '\001') {
|
||||
p[0] = 'a';
|
||||
fprintf(qf, "^%s\r\n", p);
|
||||
} else {
|
||||
fprintf(qf, "%s\r\n", p);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (homedir || (strncmp(p, "--- ", 4) && strncmp(p, " * Origin", 9))) {
|
||||
/*
|
||||
* In rules directory, don't write tearline and Origin line.
|
||||
*/
|
||||
fprintf(qf, "%s\r\n", p);
|
||||
}
|
||||
}
|
||||
} while ((p = (char *)MsgText_Next()) != NULL);
|
||||
}
|
||||
}
|
||||
fclose(qf);
|
||||
} else {
|
||||
WriteError("$Can't open %s", p);
|
||||
}
|
||||
Msg_Close();
|
||||
|
||||
/*
|
||||
* Report the result.
|
||||
*/
|
||||
colour(CFG.TextColourF, CFG.TextColourB);
|
||||
if (homedir) {
|
||||
/* Message exported to your private directory as: */
|
||||
printf("\n\n%s", (char *) Language(46));
|
||||
colour(CFG.HiliteF, CFG.HiliteB);
|
||||
printf("%d_%lu.msg\n\n", iMsgAreaNumber + 1, Num);
|
||||
Pause();
|
||||
return TRUE;
|
||||
} else {
|
||||
/* Message exported to rules directory as */
|
||||
printf("\n\n%s", (char *) Language(12));
|
||||
colour(CFG.HiliteF, CFG.HiliteB);
|
||||
printf("%s\n\n", msgs.Tag);
|
||||
}
|
||||
Pause();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user