Added nodelist override settings

This commit is contained in:
Michiel Broek 2002-07-13 12:58:35 +00:00
parent 4982b8bd2b
commit e9562655ae
8 changed files with 839 additions and 721 deletions

View File

@ -4,11 +4,18 @@ $Id$
v0.35.03 06-Jul-2002 v0.35.03 06-Jul-2002
common.a:
Added nodelist override to the nodelist lookup function.
lang: lang:
Corrected a spelling error in the Dutch language file. Corrected a spelling error in the Dutch language file.
mbcico: mbcico:
Changed IsDoing information. Changed IsDoing information.
Makes use of the node nodelist override settings.
mbout:
Makes use of the node nodelist override settings.
newuser: newuser:
Check for Unix accounts is now case sensitive. Check for Unix accounts is now case sensitive.
@ -26,6 +33,10 @@ v0.35.03 06-Jul-2002
Now forces callmode to None if the callflag was cleared. Now forces callmode to None if the callflag was cleared.
The test to add a node to the calllist now also checks the The test to add a node to the calllist now also checks the
internal call flag. internal call flag.
Makes use of the node nodelist override settings.
mbsetup:
Enabled setting of nodelist override settings in menu 7.x.3
script: script:
The bbsdoor.sh and rundoor.sh scripts are now only installed The bbsdoor.sh and rundoor.sh scripts are now only installed

View File

@ -478,7 +478,19 @@ MSN/EAZ the device should listen to. This should for an MSN be your telephone
number <b>with</b> the area code but <b>without</b> the leading 0. For an number <b>with</b> the area code but <b>without</b> the leading 0. For an
EAZ the last digit of your EAZ. EAZ the last digit of your EAZ.
<p> The ISDN ports </p> <p> The ISDN ports </p>
<pre>port ttyI0<br>modem-type data<br>init-chat "" ATZ OK AT&amp;E714015437&amp;W0 OK AT&amp;B512 OK<br><br>port ttyI1<br>modem-type data<br>init-chat "" ATZ OK AT&amp;E714017198&amp;W0 OK AT&amp;B512 OK<br><br></pre> <pre>
port ttyI0
modem-type data
init-chat "" ATZ OK
AT&amp;E714015437&amp;W0 OK
AT&amp;B512 OK
port ttyI1
modem-type data
init-chat "" ATZ OK
AT&amp;E714017198&amp;W0 OK
AT&amp;B512 OK
</pre>
From the mbsetup menu #5 "Edit Modem types" configure the ISDN modem type. From the mbsetup menu #5 "Edit Modem types" configure the ISDN modem type.
<pre> <pre>
Modem type ISDN Linux Modem type ISDN Linux

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -5,7 +5,7 @@
*/ */
BODY { background-color: white; font-family: Arial, Helvetica; } BODY { background-color: white; font-family: Arial, Helvetica; font-size=10pt; }
/* /*
* H1 is the page header, H3 the paragraph header, H5 is topright update date. * H1 is the page header, H3 the paragraph header, H5 is topright update date.
@ -19,6 +19,10 @@ A:link { color: blue }
A:visited { color: darkblue } A:visited { color: darkblue }
A:active { color: red } A:active { color: red }
TABLE { color: black; }
TH { font-family: Arial, Helvetica; font-size: 12pt; font-weight: bold; }
TD { font-family: Arial, Helvetica; font-size: 12pt; }
PRE { color: brown; font-family: fixed; } PRE { color: brown; font-family: fixed; }
CODE { color: brown; font-family: fixed; } CODE { color: brown; font-family: fixed; }
HR { border-top: solid medium navy } HR { border-top: solid medium navy }

View File

@ -12,10 +12,9 @@
</HEAD> </HEAD>
<BODY> <BODY>
<BLOCKQUOTE> <BLOCKQUOTE>
<h5>Last update 28-Jun-2002</h5> <div align=right><h5>Last update 13-Jul-2002</h5></div>
<P>&nbsp;<P>
<H1>MBSE BBS Setup - Fidonet nodes.</H1> <div align=center><H1>MBSE BBS Setup - Fidonet nodes.</H1></div>
<P> <P>
<h3>Introduction</H3> <h3>Introduction</H3>
@ -33,28 +32,44 @@ This screen has the general information for the node. The contact info fields ar
just for private use, these fields are only used in this screen. The Outbox dir is for just for private use, these fields are only used in this screen. The Outbox dir is for
files to sent to the node, all file you put in there will be sent to the remote if files to sent to the node, all file you put in there will be sent to the remote if
user mbse has read/write access to the file. Only real files are allowed, not symlinks etc. user mbse has read/write access to the file. Only real files are allowed, not symlinks etc.
<pre> <p><table>
<strong>Sysop name </strong>The name of the system operator. <tr><th nowrap align=left valign=top>Sysop name</th><td>The name of the system
<strong>Outbox dir </strong>Private extra outbound directory for this node. operator. The name entered here is used in Areamgr and Filemgr messages etc.</td></tr>
<strong>Pvt. phone </strong>Contact info, node private phone. <tr><th nowrap align=left valign=top>Outbox dir</th><td>Private extra outbound
<strong>Pvt. fax </strong>Contact info, node private fax. directory for this node. Any file dropped into this directory will be sent to
<strong>Pvt. cellphone </strong>Contact info, node cellphone (GSM). the node and removed after it is sent.</td></tr>
<strong>Pvt. e-mail </strong>Contact info, node e-mail address. <tr><th nowrap align=left valign=top>Pvt. phone</th><td>Contact info, node private
<strong>Pvt. remark </strong>Contact info, node remark. phone.</td></tr>
<strong>Route via </strong>A route via Fido address. All mail for this <tr><th nowrap align=left valign=top>Pvt. fax</th><td>Contact info, node private
node will be send via this Aka, even mail fax.</td></tr>
and files for other networks. This can be <tr><th nowrap align=left valign=top>Pvt. cellphone</th><td>Contact info, node
usefull if this node has internet access cellphone (GSM).</td></tr>
so you can send everything to this node <tr><th nowrap align=left valign=top>Pvt. e-mail</th><td>Contact info, node e-mail
over the internet. address.</td></tr>
<strong>Netmail direct </strong>Set "direct" flag in netmail to this node. <tr><th nowrap align=left valign=top>Pvt. remark</th><td>Contact info, node
<strong>Netmail crash </strong>Send netmail always "crash" to this node. remark.</td></tr>
<strong>Netmail hold </strong>Put mail on "hold" for this node. <tr><th nowrap align=left valign=top>Route via</th><td>A route via Fido address. All
<strong>Pack netmail </strong>Should netmail be packed in arcmail archives. mail for this node will be send via this Aka, even mail and files for other
<strong>Send notify </strong>Send automatic generated notify messages. networks. This can be usefull if this node has internet access so you can send
<strong>Language </strong>The language to use for areamgr msgs. everything to this node over the internet. Note that to force calling this node
<strong>Deleted </strong>If this node must be deleted. via internetr, ISDN or pots can also be done by using nodelist flags override. See
</pre> section 3. This setting is more usefull to force routing via another node or
aka.</td></tr>
<tr><th nowrap align=left valign=top>Netmail direct</th><td>Set "direct" flag in
netmail to this node.</td></tr>
<tr><th nowrap align=left valign=top>Netmail crash</th><td>Send netmail always "crash"
to this node.</td></tr>
<tr><th nowrap align=left valign=top>Netmail hold</th><td>Put mail on "hold" for this
node.</td></tr>
<tr><th nowrap align=left valign=top>Pack netmail</th><td>Should netmail be packed in
arcmail archives.</td></tr>
<tr><th nowrap align=left valign=top>Send notify</th><td>Send automatic generated
notify messages.</td></tr>
<tr><th nowrap align=left valign=top>Language</th><td>The language to use for areamgr
msgs.</td></tr>
<tr><th nowrap align=left valign=top>Deleted</th><td>If this node must be
deleted.</td></tr>
</table>
<P> <P>
<IMG SRC="../images/nodes1.png"> <IMG SRC="../images/nodes1.png">
<P>&nbsp;<p> <P>&nbsp;<p>
@ -68,32 +83,32 @@ In this screen you can setup 20 aka's for the node.
<H3>Edit node session</H3> <H3>Edit node session</H3>
<p> <p>
In this screen you can setup the session defaults. Items 5/8 will be added later. In this screen you can setup the session defaults. Items 7 and 8 will be added later.
<pre> <p><table>
<strong>Session passwd </strong>This is the mailer session password. <tr><th nowrap align=left valign=top>Session passwd</th><td>This is the mailer session password.
<strong>Dial command </strong>You can put an override here for the normal <tr><th nowrap align=left valign=top>Dial command</th><td>You can put an override here for the normal dial command. If you leave this empty the command from the modem setup is used.
dial command. If you leave this empty the <tr><th nowrap align=left valign=top>Phone number 1</th><td>An alternative phone number/ip address to dial.
command from the modem setup is used. <tr><th nowrap align=left valign=top>Phone number 2</th><td>An alternative phone number/ip address to dial. Use these above commands if the node has another phone number as mentioned in the nodelist.
<strong>Phone number 1 </strong>An alternative phone number/ip address to dial. <tr><th nowrap align=left valign=top>Nodelist flags</th><td>Override for the
<strong>Phone number 2 </strong>An alternative phone number/ip address to dial. nodelist flags, the nodelist flags are completly ignored if you enter something
Use these above commands if the node has here so make sure all flags you need are here. All aka's of this node will use
another phone number as mentioned in the the same flags. This can be usefull to force calling this node via the internet.
nodelist. If you call this node via TCP/IP <tr><th nowrap align=left valign=top>Inet hostname</th><td>The FQDN hostname or
and the IP address can't be resolved by IP address of this node. This replaces the original system name from the
the nodelist, you may enter an IP address nodelist and this is then used to make the internet TCP/IP connection. This can
or hostname here. be usefull if the FQDN is not present in the nodelist.
<strong>No EMSI </strong>Disable EMSI handshake. <tr><th nowrap align=left valign=top>No EMSI</th><td>Disable EMSI handshake.
<strong>No YooHoo/2U2 </strong>Disable FTSC-0006 handshake. <tr><th nowrap align=left valign=top>No YooHoo/2U2</th><td>Disable FTSC-0006 handshake.
<strong>No Filerequest </strong>Disable filerquest from this node. <tr><th nowrap align=left valign=top>No Filerequest</th><td>Disable filerequest from this node.
<strong>Don't call </strong>Do not call this node. <tr><th nowrap align=left valign=top>Don't call</th><td>Do not call this node.
<strong>8.3 names </strong>Set this if the node only accepts 8.3 filenames. <tr><th nowrap align=left valign=top>8.3 names</th><td>Set this if the node only accepts 8.3 filenames.
<strong>No Zmodem </strong>Disable Zmodem protocol. <tr><th nowrap align=left valign=top>No Zmodem</th><td>Disable Zmodem protocol.
<strong>No Zedzap </strong>Disable Zedzap protocol. <tr><th nowrap align=left valign=top>No Zedzap</th><td>Disable Zedzap protocol.
<strong>No Hydra </strong>Disable Hydra protocol. <tr><th nowrap align=left valign=top>No Hydra</th><td>Disable Hydra protocol.
<strong>No TCP/IP IBN </strong>Disbale TCP/IP IBN (binkp) protocol. <tr><th nowrap align=left valign=top>No TCP/IP IBN</th><td>Disbale TCP/IP IBN (binkp) protocol.
<strong>No TCP/IP IFC </strong>Disable TCP/IP IFC (ifcico) protocol. <tr><th nowrap align=left valign=top>No TCP/IP IFC</th><td>Disable TCP/IP IFC (ifcico) protocol.
<strong>No TCP/IP ITN </strong>Disable TCP/IP ITN (telnet) protocol. <tr><th nowrap align=left valign=top>No TCP/IP ITN</th><td>Disable TCP/IP ITN (telnet) protocol.
</pre> </table>
<p> <p>
<IMG SRC="../images/nodes3.png"> <IMG SRC="../images/nodes3.png">
<P>&nbsp;<p> <P>&nbsp;<p>
@ -101,19 +116,15 @@ In this screen you can setup the session defaults. Items 5/8 will be added later
<H3>Edit node - mail processing</H3> <H3>Edit node - mail processing</H3>
<P> <P>
<pre> <p><table>
<strong>PKT password </strong>The password to insert in .pkt files. <tr><th nowrap align=left valign=top>PKT password</th><td>The password to insert in .pkt files.
<strong>Check PKT pwd </strong>Check password in received .pkt files. If not, <tr><th nowrap align=left valign=top>Check PKT pwd</th><td>Check password in received .pkt files. If not, errors or missing passwords are only logged. If set, errors or missing password are refused and the .pkt files are renamed to .bad
errors or missing passwords are only logged. <tr><th nowrap align=left valign=top>UplMgr program</th><td>The name of the Areamgr program of this node. This could be AreaFix, AreaMgr etc.
If set, errors or missing password are refused <tr><th nowrap align=left valign=top>UplMgr passwd</th><td>The password for the Areamgr of this node.
and the .pkt files are renamed to .bad <tr><th nowrap align=left valign=top>Mail forward</th><td>Not in use yet.
<strong>UplMgr program </strong>The name of the Areamgr program of this node. <tr><th nowrap align=left valign=top>ARCmail comp.</th><td>Use ARCmail 0.60 file naming convention for out of zone mail.
This could be AreaFix, AreaMgr etc. <tr><th nowrap align=left valign=top>ARCmail a..z</th><td>Allow a..z last character for ARCmail filenames.
<strong>UplMgr passwd </strong>The password for the Areamgr of this node. </table>
<strong>Mail forward </strong>Not in use yet.
<strong>ARCmail comp. </strong>Use ARCmail 0.60 file naming convention for out of zone mail.
<strong>ARCmail a..z </strong>Allow a..z last character for ARCmail filenames.
</pre>
<P> <P>
<IMG SRC="../images/nodes4.gif"> <IMG SRC="../images/nodes4.gif">
<P>&nbsp;<p> <P>&nbsp;<p>
@ -129,25 +140,24 @@ carefull not to allow a node to connect areas from networks he has no aka in.
<H3>File setup</H3> <H3>File setup</H3>
<P> <P>
<pre> <p><table>
<strong>Files password </strong>The password for .tic files. <tr><th nowrap align=left valign=top>Files password</th><td>The password for .tic files.
<strong>Mgr password </strong>The password for the Areamgr and Filemgr. <tr><th nowrap align=left valign=top>Mgr password</th><td>The password for the Areamgr and Filemgr.
<strong>UplMgr program </strong>The name of the Filemgr progrom of this node. <tr><th nowrap align=left valign=top>UplMgr program</th><td>The name of the Filemgr progrom of this node. This could be FileMgr, Allfix, Raid etc.
This could be FileMgr, Allfix, Raid etc. <tr><th nowrap align=left valign=top>UplMgr passwd</th><td>The password of the Filemgr if this node.
<strong>UplMgr passwd </strong>The password of the Filemgr if this node. <tr><th nowrap align=left valign=top>UplMgr Add +</th><td>Add a "+" in the command to connect areas.
<strong>UplMgr Add + </strong>Add a "+" in the command to connect areas. <tr><th nowrap align=left valign=top>Incl. message</th><td>Send a netmail message for each file to send.
<strong>Incl. message </strong>Send a netmail message for each file to send. <tr><th nowrap align=left valign=top>Send TIC file</th><td>Send .tic file to this node.
<strong>Send TIC file </strong>Send .tic file to this node. <tr><th nowrap align=left valign=top>Advanced TIC</th><td>Send advanced or standard .tic files.
<strong>Advanced TIC </strong>Send advanced or standard .tic files. <tr><th nowrap align=left valign=top>File forward</th><td>Forward TIC files for this node (not yet).
<strong>File forward </strong>Forward TIC files for this node (not yet). <tr><th nowrap align=left valign=top>Billing</th><td>Is Costsharing active for this node.
<strong>Billing </strong>Is Costsharing active for this node. <tr><th nowrap align=left valign=top>Bill direct</th><td>Send the bill direct or on command.
<strong>Bill direct </strong>Send the bill direct or on command. <tr><th nowrap align=left valign=top>Credit</th><td>The credit this node has in units.
<strong>Credit </strong>The credit this node has in units. <tr><th nowrap align=left valign=top>Debet</th><td>The debet we have with this node (informational).
<strong>Debet </strong>The debet we have with this node (informational). <tr><th nowrap align=left valign=top>Add</th><td>Add (or substract) factor to the bill.
<strong>Add </strong>Add (or substract) factor to the bill. <tr><th nowrap align=left valign=top>Warn level</th><td>The debet level when to write a warning mesage.
<strong>Warn level </strong>The debet level when to write a warning mesage. <tr><th nowrap align=left valign=top>Stop level</th><td>The debet level when to stop sending files.
<strong>Stop level </strong>The debet level when to stop sending files. </table>
</pre>
<P> <P>
<IMG SRC="../images/nodes6.gif"> <IMG SRC="../images/nodes6.gif">
<P>&nbsp;<p> <P>&nbsp;<p>

View File

@ -178,12 +178,13 @@ node *getnlent(faddr *addr)
static node nodebuf; static node nodebuf;
static char buf[256], *p, *q; static char buf[256], *p, *q;
struct _ixentry xaddr; struct _ixentry xaddr;
int i, j, Found = FALSE; int i, j, Found = FALSE, ixflag, stdflag, ndrecord = FALSE;
int ixflag, stdflag;
char *mydomain, *path; char *mydomain, *path;
struct _nlfil fdx; struct _nlfil fdx;
struct _nlidx ndx; struct _nlidx ndx;
long lowest, highest, current; long lowest, highest, current;
struct _nodeshdr ndhdr;
static struct _nodes nd;
Syslog('s', "getnlent: %s", ascfnode(addr,0xff)); Syslog('s', "getnlent: %s", ascfnode(addr,0xff));
@ -298,7 +299,6 @@ node *getnlent(faddr *addr)
free(path); free(path);
goto retdummy; goto retdummy;
} }
free(path);
if (fseek(fp, ndx.offset, SEEK_SET) != 0) { if (fseek(fp, ndx.offset, SEEK_SET) != 0) {
WriteError("$Seek failed for nodelist entry"); WriteError("$Seek failed for nodelist entry");
@ -313,6 +313,33 @@ node *getnlent(faddr *addr)
} }
fclose(fp); fclose(fp);
/*
* Load noderecord if this node has one, if there is one then
* nodelist overrides in this record will be used instead of
* the nodelist entries.
*/
sprintf(path, "%s/etc/nodes.data", getenv("MBSE_ROOT"));
if ((fp = fopen(path, "r")) != NULL) {
fread(&ndhdr, sizeof(nodeshdr), 1, fp);
while (fread(&nd, ndhdr.recsize, 1, fp) == 1) {
fseek(fp, ndhdr.filegrp + ndhdr.mailgrp, SEEK_CUR);
for (i = 0; i < 20; i++) {
if ((addr->zone == nd.Aka[i].zone) && (addr->net == nd.Aka[i].net) &&
(addr->node == nd.Aka[i].node) && (addr->point == nd.Aka[i].point)) {
ndrecord = TRUE;
Syslog('s', "getnlent: node record is present");
break;
}
}
if (ndrecord)
break;
}
fclose(fp);
}
free(path);
nodebuf.type = ndx.type; nodebuf.type = ndx.type;
nodebuf.pflag = ndx.pflag; nodebuf.pflag = ndx.pflag;
@ -339,13 +366,23 @@ node *getnlent(faddr *addr)
if (p == NULL) if (p == NULL)
goto badsyntax; goto badsyntax;
/*
* Get system name
*/
if ((q=strchr(p,','))) if ((q=strchr(p,',')))
*q++ = '\0'; *q++ = '\0';
if (ndrecord && strlen(nd.Nl_hostname)) {
Syslog('s', "getnlent: system name override with %s", nd.Nl_hostname);
nodebuf.name = nd.Nl_hostname;
} else
nodebuf.name = p; nodebuf.name = p;
p = q; p = q;
if (p == NULL) if (p == NULL)
goto badsyntax; goto badsyntax;
/*
* Get location
*/
if ((q=strchr(p,','))) if ((q=strchr(p,',')))
*q++ = '\0'; *q++ = '\0';
nodebuf.location = p; nodebuf.location = p;
@ -353,6 +390,9 @@ node *getnlent(faddr *addr)
if (p == NULL) if (p == NULL)
goto badsyntax; goto badsyntax;
/*
* Get sysop name
*/
if ((q=strchr(p,','))) if ((q=strchr(p,',')))
*q++ = '\0'; *q++ = '\0';
nodebuf.sysop = p; nodebuf.sysop = p;
@ -360,6 +400,9 @@ node *getnlent(faddr *addr)
if (p == NULL) if (p == NULL)
goto badsyntax; goto badsyntax;
/*
* Get phone number
*/
if ((q=strchr(p,','))) if ((q=strchr(p,',')))
*q++ = '\0'; *q++ = '\0';
if (strcasecmp(p, "-Unpublished-") == 0) if (strcasecmp(p, "-Unpublished-") == 0)
@ -370,6 +413,9 @@ node *getnlent(faddr *addr)
if (p == NULL) if (p == NULL)
goto badsyntax; goto badsyntax;
/*
* Get modem speed
*/
if ((q=strchr(p,','))) if ((q=strchr(p,',')))
*q++ = '\0'; *q++ = '\0';
nodebuf.speed = atoi(p); nodebuf.speed = atoi(p);
@ -377,6 +423,10 @@ node *getnlent(faddr *addr)
/* /*
* Process the nodelist flags. * Process the nodelist flags.
*/ */
if (ndrecord && strlen(nd.Nl_flags)) {
Syslog('s', "getnlent: flags override %s", nd.Nl_flags);
q = nd.Nl_flags;
}
ixflag = 0; ixflag = 0;
stdflag = TRUE; stdflag = TRUE;
for (p = q; p; p = q) { for (p = q; p; p = q) {
@ -386,8 +436,7 @@ node *getnlent(faddr *addr)
stdflag = FALSE; stdflag = FALSE;
} else { } else {
/* /*
* Experimental: process authorized flags and * Process authorized flags and user flags both as authorized.
* User flags both as authorized.
*/ */
for (j = 0; fkey[j].key; j++) for (j = 0; fkey[j].key; j++)
if (strcasecmp(p, fkey[j].key) == 0) if (strcasecmp(p, fkey[j].key) == 0)
@ -431,19 +480,6 @@ node *getnlent(faddr *addr)
Syslog('s', "getnlent: system %s, %s", nodebuf.name, nodebuf.location); Syslog('s', "getnlent: system %s, %s", nodebuf.name, nodebuf.location);
Syslog('s', "getnlent: sysop %s, %s", nodebuf.sysop, nodebuf.phone); Syslog('s', "getnlent: sysop %s, %s", nodebuf.sysop, nodebuf.phone);
if (nodebuf.mflags)
Syslog('S', "getnlent: mflags 0x%08lx", nodebuf.mflags);
if (nodebuf.oflags)
Syslog('S', "getnlent: oflags 0x%08lx", nodebuf.oflags);
if (nodebuf.dflags)
Syslog('S', "getnlent: dflags 0x%08lx", nodebuf.dflags);
if (nodebuf.iflags)
Syslog('S', "getnlent: iflags 0x%08lx", nodebuf.iflags);
if (nodebuf.xflags)
Syslog('S', "getnlent: xflags 0x%08lx", nodebuf.xflags);
for (j = 0; nodebuf.uflags[j]; j++)
Syslog('S', "getnlent: uflag %s", nodebuf.uflags[j]);
moflags(nodebuf.mflags); moflags(nodebuf.mflags);
diflags(nodebuf.dflags); diflags(nodebuf.dflags);
ipflags(nodebuf.iflags); ipflags(nodebuf.iflags);
@ -454,8 +490,7 @@ node *getnlent(faddr *addr)
return &nodebuf; return &nodebuf;
badsyntax: badsyntax:
WriteError("nodelist %d offset +%lu: bad syntax in line \"%s\"", WriteError("nodelist %d offset +%lu: bad syntax in line \"%s\"", ndx.fileno, (unsigned long)ndx.offset, buf);
ndx.fileno, (unsigned long)ndx.offset, buf);
/* fallthrough */ /* fallthrough */
retdummy: retdummy:

View File

@ -752,8 +752,8 @@ void SessionScreen(void)
mvprintw( 8, 6, "2. Dial command"); mvprintw( 8, 6, "2. Dial command");
mvprintw( 9, 6, "3. Phone number 1"); mvprintw( 9, 6, "3. Phone number 1");
mvprintw(10, 6, "4. Phone number 2"); mvprintw(10, 6, "4. Phone number 2");
// mvprintw(11, 6, "5. Nodelist flags"); mvprintw(11, 6, "5. Nodelist flags");
// mvprintw(12, 6, "6. Inet hostname"); mvprintw(12, 6, "6. Inet hostname");
// mvprintw(13, 6, "7. Outbound sess."); // mvprintw(13, 6, "7. Outbound sess.");
// mvprintw(14, 6, "8. Inbound sess."); // mvprintw(14, 6, "8. Inbound sess.");
mvprintw(15, 6, "9. No EMSI"); mvprintw(15, 6, "9. No EMSI");
@ -805,8 +805,8 @@ void SessionEdit(void)
case 2: E_STR( 8,26,40, nodes.dial, "If needed, give a special modem ^dial command^ for this node") case 2: E_STR( 8,26,40, nodes.dial, "If needed, give a special modem ^dial command^ for this node")
case 3: E_STR( 9,26,20, nodes.phone[0], "Enter ^phone number^ to override the nodelist") case 3: E_STR( 9,26,20, nodes.phone[0], "Enter ^phone number^ to override the nodelist")
case 4: E_STR( 10,26,20, nodes.phone[1], "Enter ^phone number^ to override the nodelist") case 4: E_STR( 10,26,20, nodes.phone[1], "Enter ^phone number^ to override the nodelist")
// case 5: E_STR( 11,26,54, nodes.Nl_flags, "^Nodelist flags^ override") case 5: E_STR( 11,26,54, nodes.Nl_flags, "^Nodelist flags^ override")
// case 6: E_STR( 12,26,40, nodes.Nl_hostname, "Node internet ^hostname/IP address^ override") case 6: E_STR( 12,26,40, nodes.Nl_hostname, "Node internet ^hostname/IP address^ override")
case 9: E_BOOL(15,26, nodes.NoEMSI, "Disable ^EMSI handshake^ with this node") case 9: E_BOOL(15,26, nodes.NoEMSI, "Disable ^EMSI handshake^ with this node")
case 10:E_BOOL(16,26, nodes.NoWaZOO, "Disable ^YooHoo/2U2 handshake^ (FTSC-0006) with this node") case 10:E_BOOL(16,26, nodes.NoWaZOO, "Disable ^YooHoo/2U2 handshake^ (FTSC-0006) with this node")

View File

@ -176,12 +176,13 @@ node *getnlent(faddr *addr)
static node nodebuf; static node nodebuf;
static char buf[256], *p, *q; static char buf[256], *p, *q;
struct _ixentry xaddr; struct _ixentry xaddr;
int i, j, Found = FALSE; int i, j, Found = FALSE, ixflag, stdflag, ndrecord = FALSE;
int ixflag, stdflag;
char *mydomain, *path; char *mydomain, *path;
struct _nlfil fdx; struct _nlfil fdx;
struct _nlidx ndx; struct _nlidx ndx;
long lowest, highest, current; long lowest, highest, current;
struct _nodeshdr ndhdr;
static struct _nodes nd;
mydomain = xstrcpy(CFG.aka[0].domain); mydomain = xstrcpy(CFG.aka[0].domain);
if (mydomain == NULL) if (mydomain == NULL)
@ -294,7 +295,6 @@ node *getnlent(faddr *addr)
free(path); free(path);
goto retdummy; goto retdummy;
} }
free(path);
if (fseek(fp, ndx.offset, SEEK_SET) != 0) { if (fseek(fp, ndx.offset, SEEK_SET) != 0) {
tasklog('?', "$Seek failed for nodelist entry"); tasklog('?', "$Seek failed for nodelist entry");
@ -309,6 +309,32 @@ node *getnlent(faddr *addr)
} }
fclose(fp); fclose(fp);
/*
* Load noderecord if this node has one, if there is one then
* nodelist overrides in this record will be used instead of
* the nodelist entries.
*/
sprintf(path, "%s/etc/nodes.data", getenv("MBSE_ROOT"));
if ((fp = fopen(path, "r")) != NULL) {
fread(&ndhdr, sizeof(ndhdr), 1, fp);
while (fread(&nd, ndhdr.recsize, 1, fp) == 1) {
fseek(fp, ndhdr.filegrp + ndhdr.mailgrp, SEEK_CUR);
for (i = 0; i < 20; i++) {
if ((addr->zone == nd.Aka[i].zone) && (addr->net == nd.Aka[i].net) &&
(addr->node == nd.Aka[i].node) && (addr->point == nd.Aka[i].point)) {
ndrecord = TRUE;
break;
}
}
if (ndrecord)
break;
}
fclose(fp);
}
free(path);
nodebuf.type = ndx.type; nodebuf.type = ndx.type;
nodebuf.pflag = ndx.pflag; nodebuf.pflag = ndx.pflag;
@ -335,13 +361,22 @@ node *getnlent(faddr *addr)
if (p == NULL) if (p == NULL)
goto badsyntax; goto badsyntax;
/*
* Get system name
*/
if ((q=strchr(p,','))) if ((q=strchr(p,',')))
*q++ = '\0'; *q++ = '\0';
if (ndrecord && strlen(nd.Nl_hostname))
nodebuf.name = nd.Nl_hostname;
else
nodebuf.name = p; nodebuf.name = p;
p = q; p = q;
if (p == NULL) if (p == NULL)
goto badsyntax; goto badsyntax;
/*
* Get location
*/
if ((q=strchr(p,','))) if ((q=strchr(p,',')))
*q++ = '\0'; *q++ = '\0';
nodebuf.location = p; nodebuf.location = p;
@ -349,6 +384,9 @@ node *getnlent(faddr *addr)
if (p == NULL) if (p == NULL)
goto badsyntax; goto badsyntax;
/*
* Get sysop name
*/
if ((q=strchr(p,','))) if ((q=strchr(p,',')))
*q++ = '\0'; *q++ = '\0';
nodebuf.sysop = p; nodebuf.sysop = p;
@ -356,6 +394,9 @@ node *getnlent(faddr *addr)
if (p == NULL) if (p == NULL)
goto badsyntax; goto badsyntax;
/*
* Get phone number
*/
if ((q=strchr(p,','))) if ((q=strchr(p,',')))
*q++ = '\0'; *q++ = '\0';
if (strcasecmp(p, "-Unpublished-") == 0) if (strcasecmp(p, "-Unpublished-") == 0)
@ -366,13 +407,19 @@ node *getnlent(faddr *addr)
if (p == NULL) if (p == NULL)
goto badsyntax; goto badsyntax;
/*
* Get modem speed
*/
if ((q=strchr(p,','))) if ((q=strchr(p,',')))
*q++ = '\0'; *q++ = '\0';
nodebuf.speed = atoi(p); nodebuf.speed = atoi(p);
/* /*
* Process the nodelist flags. * Process the nodelist flags, get them from the node override
* field if this is present, else use the nodelist.
*/ */
if (ndrecord && strlen(nd.Nl_flags))
q = nd.Nl_flags;
ixflag = 0; ixflag = 0;
stdflag = TRUE; stdflag = TRUE;
for (p = q; p; p = q) { for (p = q; p; p = q) {
@ -429,8 +476,7 @@ node *getnlent(faddr *addr)
return &nodebuf; return &nodebuf;
badsyntax: badsyntax:
tasklog('?', "nodelist %d offset +%lu: bad syntax in line \"%s\"", tasklog('?', "nodelist %d offset +%lu: bad syntax in line \"%s\"", ndx.fileno, (unsigned long)ndx.offset, buf);
ndx.fileno, (unsigned long)ndx.offset, buf);
/* fallthrough */ /* fallthrough */
retdummy: retdummy: