Added binkp escape switch

This commit is contained in:
Michiel Broek 2003-08-24 12:26:34 +00:00
parent 008604d8d6
commit 1442a4babc
5 changed files with 69 additions and 58 deletions

View File

@ -26,6 +26,11 @@ v0.37.6 10-Aug-2003
Changed the address of the FSF in all sources.
Removed memwatch debugger.
Changed all gif and jpg images to png images.
Added a setup switch for the nodes for selecting the wrong
binkp long filenames escape method for Argus and Irex nodes.
nodelist.a:
Removed some of the debug logging.
mbcico:
Completly changed the files inbound receive, all files are now
@ -35,7 +40,8 @@ v0.37.6 10-Aug-2003
resync problems.
The other goodie is that this is more safe on busy multiline
systems.
Fixed the binkp escape sequence which is wrong in the FSP.
Fixed the binkp escape sequence which is wrong in the FSP, this
is selectable in the nodes setup.
A light improvement in session handshake setup timers.
Added EMSI handshake timers, this gives a more relaxed EMSI
handshake.
@ -43,6 +49,10 @@ v0.37.6 10-Aug-2003
now even accept buggy maindoor sessions and still display a
banner.
mbsetup:
In the nodes setup a switch is added to fallback to the wrong
binkp escape method.
v0.37.5 12-Jul-2003 - 10-Aug-2003

View File

@ -349,8 +349,6 @@ void deinitnl(void)
if (!nlinitdone)
return;
Syslog('n', "De-init nodelists");
tidy_nl_flag(&nl_online);
tidy_nl_flag(&nl_request);
tidy_nl_flag(&nl_reqbits);
@ -362,7 +360,7 @@ void deinitnl(void)
tidy_nl_domsuf(&nl_domsuffix);
tidy_nl_service(&nl_service);
Syslog('n', "De-init done");
Syslog('n', "De-init nodelists done");
nlinitdone = FALSE;
}
@ -526,8 +524,6 @@ int initnl(void)
}
free(nlpath);
Syslog('n', "mypots %08x myisdn %08x mytcpip %08x", mypots, myisdn, mytcpip);
Syslog('n', "Nodelists initialize complete, rc=%d", rc);
nlinitdone = TRUE;
return rc;
}
@ -912,15 +908,15 @@ node *getnlent(faddr *addr)
*/
if (nodebuf.iflags & mytcpip) {
memset(&tbuf, 0, sizeof(tbuf));
Syslog('n', "node iflags %08x, mytcpip %08x", nodebuf.iflags, mytcpip);
Syslog('n', "getnlent: node iflags %08x, mytcpip %08x", nodebuf.iflags, mytcpip);
for (tmpm = &nl_tcpip; *tmpm; tmpm=&((*tmpm)->next)) {
if ((*tmpm)->mask & nodebuf.iflags) {
Syslog('n', "Setting %s", (*tmpm)->name);
Syslog('n', "getnlent: best flag is %s", (*tmpm)->name);
for (tmps = &nl_service; *tmps; tmps=&((*tmps)->next)) {
if (strcmp((*tmps)->flag, (*tmpm)->name) == 0) {
sprintf(tbuf, "%s", (*tmps)->service);
tport = (*tmps)->port;
Syslog('n', "Setting %s %d", (*tmps)->service, (*tmps)->port);
Syslog('n', "getnlent: protocol %s at port %d", (*tmps)->service, (*tmps)->port);
}
}
}
@ -938,38 +934,36 @@ node *getnlent(faddr *addr)
*/
memset(&tbuf, 0, sizeof(tbuf));
if (ndrecord && strlen(nd.Nl_hostname)) {
Syslog('n', "Using override %s for FQDN", nd.Nl_hostname);
Syslog('n', "getnlent: using override %s for FQDN", nd.Nl_hostname);
sprintf(tbuf, nodebuf.name);
nodebuf.url = xstrcat(nodebuf.url, tbuf);
} else {
for (tmpa = &nl_search; *tmpa; tmpa=&((*tmpa)->next)) {
Syslog('n', "Search FQDN method %s", (*tmpa)->name);
Syslog('n', "getnlent: search FQDN method %s", (*tmpa)->name);
if (strcasecmp((*tmpa)->name, "field3") == 0) {
sprintf(tbuf, nodebuf.name);
if (strchr(tbuf, '.')) {
/*
* Okay, there are dots, this can be a FQDN or IP address.
*/
Syslog('n', "Using field3 \"%s\"", tbuf);
Syslog('n', "getnlent: using field3 \"%s\"", tbuf);
nodebuf.url = xstrcat(nodebuf.url, tbuf);
break;
} else {
memset(&tbuf, 0, sizeof(tbuf));
Syslog('n', "Field3 is not usable");
}
} else if (strcasecmp((*tmpa)->name, "field6") == 0) {
if (nodebuf.phone && strncmp(nodebuf.phone, "000-", 4) == 0) {
Syslog('n', "Found 000- prefix");
Syslog('n', "getnlent: found 000- prefix");
sprintf(tbuf, "%s", nodebuf.phone+4);
for (i = 0; i < strlen(tbuf); i++)
if (tbuf[i] == '-')
tbuf[i] = '.';
Syslog('n', "Using field6 \"%s\"", tbuf);
Syslog('n', "getnlent: using field6 \"%s\"", tbuf);
nodebuf.url = xstrcat(nodebuf.url, tbuf);
break;
} else {
memset(&tbuf, 0, sizeof(tbuf));
Syslog('n', "Field6 is not usable");
}
} else if (strcasecmp((*tmpa)->name, "field8") == 0) {
/*
@ -1017,7 +1011,7 @@ node *getnlent(faddr *addr)
r++;
}
if (*r == '*') {
Syslog('n', "Possible default domain marking \"%s\"", MBSE_SS(r));
Syslog('n', "getnlent: possible default domain marking \"%s\"", MBSE_SS(r));
for (tmpd = &nl_domsuffix; *tmpd; tmpd=&((*tmpd)->next)) {
if ((*tmpd)->zone == nodebuf.addr.zone) {
if (*r++ == '\0')
@ -1026,17 +1020,17 @@ node *getnlent(faddr *addr)
else
sprintf(tbuf, "f%d.n%d.z%d.%s.%s%s", nodebuf.addr.node, nodebuf.addr.net,
nodebuf.addr.zone, nodebuf.addr.domain, (*tmpd)->name, r);
Syslog('n', "Will try default domain \"%s\"", tbuf);
Syslog('n', "getnlent: will try default domain \"%s\"", tbuf);
nodebuf.url = xstrcat(nodebuf.url, tbuf);
break;
}
}
if (strlen(tbuf))
break;
Syslog('n', "No matching default domain found for zone %d", nodebuf.addr.zone);
Syslog('n', "getnlent: no matching default domain found for zone %d", nodebuf.addr.zone);
}
if (strchr(r, '.')) {
Syslog('n', "Found a FQDN \"%s\"", MBSE_SS(r));
Syslog('n', "getnlent: found a FQDN \"%s\"", MBSE_SS(r));
sprintf(tbuf, "%s", r);
nodebuf.url = xstrcat(nodebuf.url, tbuf);
break;
@ -1045,16 +1039,15 @@ node *getnlent(faddr *addr)
}
if (strlen(tbuf))
break;
Syslog('n', "Field8 is not usable");
memset(&tbuf, 0, sizeof(tbuf));
} else if (strcasecmp((*tmpa)->name, "defdomain") == 0) {
Syslog('n', "Trying default domain");
Syslog('n', "getnlent: trying default domain");
if (nodebuf.addr.domain) {
for (tmpd = &nl_domsuffix; *tmpd; tmpd=&((*tmpd)->next)) {
if ((*tmpd)->zone == nodebuf.addr.zone) {
sprintf(tbuf, "f%d.n%d.z%d.%s.%s", nodebuf.addr.node, nodebuf.addr.net,
nodebuf.addr.zone, nodebuf.addr.domain, (*tmpd)->name);
Syslog('n', "Will try default domain \"%s\"", tbuf);
Syslog('n', "getnlent: will try default domain \"%s\"", tbuf);
nodebuf.url = xstrcat(nodebuf.url, tbuf);
break;
}
@ -1064,14 +1057,14 @@ node *getnlent(faddr *addr)
}
if (strlen(tbuf))
break;
Syslog('n', "No matching default domain found for zone %d", nodebuf.addr.zone);
Syslog('n', "getnlent: no matching default domain found for zone %d", nodebuf.addr.zone);
memset(&tbuf, 0, sizeof(tbuf));
}
}
}
if (strlen(tbuf) == 0) {
Syslog('n', "No FQDN found, cannot call");
Syslog('+', "getnlent: no FQDN found, cannot call");
if (nodebuf.url)
free(nodebuf.url);
nodebuf.url = NULL;
@ -1081,7 +1074,7 @@ node *getnlent(faddr *addr)
* for this protocol.
*/
sprintf(tbuf, ":%lu", tport);
Syslog('n', "Adding default port %s", tbuf);
Syslog('n', "getnlent: adding default port %s", tbuf);
nodebuf.url = xstrcat(nodebuf.url, tbuf);
}
@ -1105,11 +1098,11 @@ node *getnlent(faddr *addr)
Syslog('n', "getnlent: system %s, %s", nodebuf.name, nodebuf.location);
Syslog('n', "getnlent: sysop %s, %s", nodebuf.sysop, nodebuf.phone);
Syslog('n', "getnlent: URL %s", printable(nodebuf.url, 0));
moflags(nodebuf.mflags);
diflags(nodebuf.dflags);
ipflags(nodebuf.iflags);
olflags(nodebuf.oflags);
rqflags(nodebuf.xflags);
// moflags(nodebuf.mflags);
// diflags(nodebuf.dflags);
// ipflags(nodebuf.iflags);
// olflags(nodebuf.oflags);
// rqflags(nodebuf.xflags);
free(mydomain);
return &nodebuf;

View File

@ -1188,7 +1188,7 @@ struct _nodes {
unsigned ARCmailCompat : 1; /* ARCmail Compatibility */
unsigned ARCmailAlpha : 1; /* Allow a..z ARCmail name */
unsigned FNC : 1; /* Node needs 8.3 filenames */
unsigned xNoITN : 1;
unsigned WrongEscape : 1; /* Binkp wrong escape */
unsigned xNoIFC : 1;
char xExtra[94];

View File

@ -244,9 +244,13 @@ char *unix2binkp(char *fn)
if (strspn(p, (char *)BNKCHARS)) {
*q++ = *p;
*q = '\0';
} else {
if (nodes.WrongEscape) {
sprintf(q, "\\%2x", p[0]);
} else {
sprintf(q, "\\x%2x", p[0]);
}
}
while (*q)
q++;
p++;
@ -283,7 +287,7 @@ char *binkp2unix(char *fn)
} else {
/*
* If remote sends \x0a method instead of \0a, eat the x character.
* Remotes should send the x character, But some (Argus) don't.
* Remotes should send the x character, But some (Argus and Irex) don't.
*/
if ((*p == 'x') || (*p == 'X'))
p++;

View File

@ -796,11 +796,12 @@ void SessionScreen(void)
mvprintw(17, 6, "11. No Filerequest");
mvprintw(18, 6, "12. Don't call");
mvprintw(14,41, "13. 8.3 names");
mvprintw(15,41, "14. No Zmodem");
mvprintw(16,41, "15. No Zedzap");
mvprintw(17,41, "16. No Hydra");
mvprintw(18,41, "17. binkp CRC32");
mvprintw(13,41, "13. 8.3 names");
mvprintw(14,41, "14. No Zmodem");
mvprintw(15,41, "15. No Zedzap");
mvprintw(16,41, "16. No Hydra");
mvprintw(17,41, "17. binkp CRC32");
mvprintw(18,41, "18. binkp old esc");
}
@ -825,13 +826,14 @@ void SessionEdit(void)
show_bool(17,26, nodes.NoFreqs);
show_bool(18,26, nodes.NoCall);
show_bool(14,61, nodes.FNC);
show_bool(15,61, nodes.NoZmodem);
show_bool(16,61, nodes.NoZedzap);
show_bool(17,61, nodes.NoHydra);
show_bool(18,61, nodes.CRC32);
show_bool(13,61, nodes.FNC);
show_bool(14,61, nodes.NoZmodem);
show_bool(15,61, nodes.NoZedzap);
show_bool(16,61, nodes.NoHydra);
show_bool(17,61, nodes.CRC32);
show_bool(18,61, nodes.WrongEscape);
switch(select_menu(17)) {
switch(select_menu(18)) {
case 0: return;
case 1: E_STR( 7,26,15, nodes.Spasswd, "The ^Session password^ for this node")
case 2: E_STR( 8,26,40, nodes.dial, "If needed, give a special modem ^dial command^ for this node")
@ -848,11 +850,12 @@ void SessionEdit(void)
case 11:E_BOOL(17,26, nodes.NoFreqs, "Disallow ^file requests^ from this node")
case 12:E_BOOL(18,26, nodes.NoCall, "Don't ^call^ this node")
case 13:E_BOOL(14,61, nodes.FNC, "Node needs ^DOS 8.3^ filenames")
case 14:E_BOOL(15,61, nodes.NoZmodem, "Disable ^Zmodem^ protocol with this node")
case 15:E_BOOL(16,61, nodes.NoZedzap, "Disable ^Zedzap^ protocol with this node")
case 16:E_BOOL(17,61, nodes.NoHydra, "Disable ^Hydra^ protocol with this node")
case 17:E_BOOL(18,61, nodes.CRC32, "Enable ^binkp CRC32^ file transfers with this node")
case 13:E_BOOL(13,61, nodes.FNC, "Node needs ^DOS 8.3^ filenames")
case 14:E_BOOL(14,61, nodes.NoZmodem, "Disable ^Zmodem^ protocol with this node")
case 15:E_BOOL(15,61, nodes.NoZedzap, "Disable ^Zedzap^ protocol with this node")
case 16:E_BOOL(16,61, nodes.NoHydra, "Disable ^Hydra^ protocol with this node")
case 17:E_BOOL(17,61, nodes.CRC32, "Enable ^binkp CRC32^ file transfers with this node")
case 18:E_BOOL(18,61, nodes.WrongEscape, "Use the ^old escape^ for long filenames (Argus, Irex)")
}
}
}
@ -1483,18 +1486,19 @@ int node_doc(FILE *fp, FILE *toc, int page)
fprintf(fp, " No Zedzap %s", getboolean(nodes.NoZedzap));
fprintf(fp, " No Hydra %s", getboolean(nodes.NoHydra));
fprintf(fp, " binkp CRC32 %s\n", getboolean(nodes.CRC32));
fprintf(fp, " binkp old esc %s", getboolean(nodes.WrongEscape));
fprintf(fp, " Mail forward %s", getboolean(nodes.MailFwd));
fprintf(fp, " Check mailpwd %s", getboolean(nodes.MailPwdCheck));
fprintf(fp, " ARCmail comp. %s\n", getboolean(nodes.ARCmailCompat));
fprintf(fp, " Check mailpwd %s\n", getboolean(nodes.MailPwdCheck));
fprintf(fp, " ARCmail comp. %s", getboolean(nodes.ARCmailCompat));
fprintf(fp, " ACRmail a..z %s", getboolean(nodes.ARCmailAlpha));
fprintf(fp, " Send message %s", getboolean(nodes.Message));
fprintf(fp, " Send .TIC %s\n", getboolean(nodes.Tic));
fprintf(fp, " Send message %s\n", getboolean(nodes.Message));
fprintf(fp, " Send .TIC %s", getboolean(nodes.Tic));
fprintf(fp, " File forward %s", getboolean(nodes.FileFwd));
fprintf(fp, " Advanced TIC %s", getboolean(nodes.AdvTic));
fprintf(fp, " Advanded SB %s\n", getboolean(nodes.TIC_AdvSB));
fprintf(fp, " Advanced TIC %s\n", getboolean(nodes.AdvTic));
fprintf(fp, " Advanded SB %s", getboolean(nodes.TIC_AdvSB));
fprintf(fp, " Sent To lines %s", getboolean(nodes.TIC_To));
fprintf(fp, " Billing %s", getboolean(nodes.Billing));
fprintf(fp, " Bill direct %s\n", getboolean(nodes.BillDirect));
fprintf(fp, " Billing %s\n", getboolean(nodes.Billing));
fprintf(fp, " Bill direct %s", getboolean(nodes.BillDirect));
fprintf(fp, " Uplink add + %s\n", getboolean(nodes.AddPlus));
fprintf(fp, " Security flags %s\n\n", getflag(nodes.Security.flags, nodes.Security.notflags));