Commit d0013bd7 authored by rswindell's avatar rswindell
Browse files

SBBS v3.03:

* AreaFix updates:
- No longer accepts AreaFix requests to "SBBSecho", since we send mail from
  that name, accepting mail to the same name can create a bot-loop
- Each linked node has a configurable "name" now, where to send notifications
  (not always "sysop")
- AreaFix support for a node can be toggled without clearing their AreaMgr
- Area listings now include the echo descriptions (when available)
- Fix: the badecho is not included in area lists returned via netmail
- Improved log output around AreaFix requests/operations
- %echostats [echo] command now supported to request most recents stats for
  an area
- Notifications can now be toggled by AreaFix sysops using %NOTIFY On/Off
- Notification mail to the local Area Manager (sysop) now have the correct date
  time/zone in the message header (not copied from the AreaFix request)

* Added support for auto-responding to PING NetMail requests
* When exporting EchoMail, if the date/time written or imported exceeds the
  configured maximum age for EchoMail, don't export it (rescan exempted)
* The -g (generate notification messages) works with a passed address now
* Better grunged packet detection (e.g. NULL-terminated header fields must be
* Avoid bot-loop by refusing to send netmail from "SBBSecho" to "SBBSecho"
  If you setup an echolist to forward areafix requests to your hub a loop could
  occur :-(
parent d18bd3bd
......@@ -41,6 +41,8 @@
#define FIDO_TLD ".fidonet" /* Fake TLD for gating netmail through SMTP */
#define FIDO_ORIGIN_PREFIX_FORM_1 "\r * Origin: "
#define FIDO_ORIGIN_PREFIX_FORM_2 "\n * Origin: "
#define FIDO_PING_NAME "PING" /* 'To' username for PING netmail (FTS-5001) */
#define FIDO_AREAMGR_NAME "AreaFix" /* Defacto psuedo-standard */
#define FIDO_NAME_LEN 36 /* Includes '\0' terminator */
#define FIDO_SUBJ_LEN 72 /* Includes '\0' terminator */
......@@ -339,6 +339,7 @@ bool sbbsecho_read_ini(sbbsecho_cfg_t* cfg)
SAFECOPY(ncfg->password , iniGetString(ini, node, "AreaFixPwd", "", value));
SAFECOPY(ncfg->pktpwd , iniGetString(ini, node, "PacketPwd", "", value));
SAFECOPY(ncfg->ticpwd , iniGetString(ini, node, "TicFilePwd", "", value));
SAFECOPY(ncfg->name , iniGetString(ini, node, "Name", "Sysop", value));
SAFECOPY(ncfg->comment , iniGetString(ini, node, "Comment", "", value));
if(!faddr_contains_wildcard(&ncfg->addr)) {
SAFECOPY(ncfg->inbox , iniGetString(ini, node, "inbox", "", value));
......@@ -361,6 +362,7 @@ bool sbbsecho_read_ini(sbbsecho_cfg_t* cfg)
ncfg->grphub = iniGetStringList(ini, node, "GroupHub", ",", "");
ncfg->keys = iniGetStringList(ini, node, "keys", ",", "");
ncfg->pkt_type = iniGetEnum(ini, node, "PacketType", pktTypeStringList, ncfg->pkt_type);
ncfg->areafix = iniGetBool(ini, node, "AreaFix", ncfg->password[0] ? true : false);
ncfg->send_notify = iniGetBool(ini, node, "notify", ncfg->send_notify);
ncfg->passive = iniGetBool(ini, node, "passive", ncfg->passive);
ncfg->direct = iniGetBool(ini, node, "direct", ncfg->direct);
......@@ -393,6 +395,7 @@ bool sbbsecho_read_ini(sbbsecho_cfg_t* cfg)
elist->hub = atofaddr(value);
elist->forward = iniGetBool(ini, echolist, "fwd", false);
SAFECOPY(elist->password, iniGetString(ini,echolist, "pwd", "", value));
SAFECOPY(elist->areamgr, iniGetString(ini, echolist, "AreaMgr", FIDO_AREAMGR_NAME, value));
......@@ -552,10 +555,12 @@ bool sbbsecho_write_ini(sbbsecho_cfg_t* cfg)
for(uint i=0; i<cfg->nodecfgs; i++) {
nodecfg_t* node = &cfg->nodecfg[i];
SAFEPRINTF(section,"node:%s", faddrtoa(&node->addr));
iniSetString(&ini ,section, "Name" ,node->name ,&style);
iniSetString(&ini ,section, "Comment" ,node->comment ,&style);
iniSetString(&ini ,section, "Archive" ,node->archive == SBBSECHO_ARCHIVE_NONE ? "None" : node->archive->name, &style);
iniSetEnum(&ini ,section, "PacketType" ,pktTypeStringList, node->pkt_type, &style);
iniSetString(&ini ,section, "PacketPwd" ,node->pktpwd ,&style);
iniSetBool(&ini ,section, "AreaFix" ,node->areafix ,&style);
iniSetString(&ini ,section, "AreaFixPwd" ,node->password ,&style);
iniSetString(&ini ,section, "TicFilePwd" ,node->ticpwd ,&style);
iniSetString(&ini ,section, "Inbox" ,node->inbox ,&style);
......@@ -582,6 +587,7 @@ bool sbbsecho_write_ini(sbbsecho_cfg_t* cfg)
SAFEPRINTF(section,"echolist:%s", elist->listpath);
iniSetString(&ini ,section, "Hub" ,faddrtoa(&elist->hub) ,&style);
iniSetString(&ini ,section, "AreaMgr" ,elist->areamgr ,&style);
iniSetString(&ini ,section, "Pwd" ,elist->password ,&style);
iniSetBool(&ini ,section, "Fwd" ,elist->forward ,&style);
iniSetStringList(&ini,section, "Keys", "," ,elist->keys ,&style);
This diff is collapsed.
......@@ -42,10 +42,12 @@
#include "fidodefs.h"
#define SBBSECHO_PRODUCT_CODE 0x12FF /* from */
#define DEFAULT_INBOUND "../fido/nonsecure"
#define DEFAULT_SECURE_INBOUND "../fido/inbound"
#define DEFAULT_OUTBOUND "../fido/outbound"
......@@ -107,9 +109,11 @@ typedef struct {
char pktpwd[FIDO_PASS_LEN+1]; /* Packet password for this node */
char ticpwd[FIDO_PASS_LEN+1]; /* TIC File password for this node */
char comment[64]; /* Comment for this node */
char name[FIDO_NAME_LEN];
char inbox[MAX_PATH+1];
char outbox[MAX_PATH+1];
str_list_t keys;
bool areafix;
bool send_notify;
bool passive;
bool direct;
......@@ -125,6 +129,7 @@ typedef struct {
fidoaddr_t hub; /* Where to forward requests */
bool forward;
char password[FIDO_SUBJ_LEN]; /* Password to use for forwarding req's */
char areamgr[FIDO_NAME_LEN]; /* Destination name for Area Manager req's */
} echolist_t;
typedef struct {
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment