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. Changed the address of the FSF in all sources.
Removed memwatch debugger. Removed memwatch debugger.
Changed all gif and jpg images to png images. 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: mbcico:
Completly changed the files inbound receive, all files are now Completly changed the files inbound receive, all files are now
@ -35,7 +40,8 @@ v0.37.6 10-Aug-2003
resync problems. resync problems.
The other goodie is that this is more safe on busy multiline The other goodie is that this is more safe on busy multiline
systems. 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. A light improvement in session handshake setup timers.
Added EMSI handshake timers, this gives a more relaxed EMSI Added EMSI handshake timers, this gives a more relaxed EMSI
handshake. handshake.
@ -43,6 +49,10 @@ v0.37.6 10-Aug-2003
now even accept buggy maindoor sessions and still display a now even accept buggy maindoor sessions and still display a
banner. 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 v0.37.5 12-Jul-2003 - 10-Aug-2003

View File

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

View File

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

View File

@ -245,7 +245,11 @@ char *unix2binkp(char *fn)
*q++ = *p; *q++ = *p;
*q = '\0'; *q = '\0';
} else { } else {
sprintf(q, "\\x%2x", p[0]); if (nodes.WrongEscape) {
sprintf(q, "\\%2x", p[0]);
} else {
sprintf(q, "\\x%2x", p[0]);
}
} }
while (*q) while (*q)
q++; q++;
@ -283,7 +287,7 @@ char *binkp2unix(char *fn)
} else { } else {
/* /*
* If remote sends \x0a method instead of \0a, eat the x character. * 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')) if ((*p == 'x') || (*p == 'X'))
p++; p++;

View File

@ -796,11 +796,12 @@ void SessionScreen(void)
mvprintw(17, 6, "11. No Filerequest"); mvprintw(17, 6, "11. No Filerequest");
mvprintw(18, 6, "12. Don't call"); mvprintw(18, 6, "12. Don't call");
mvprintw(14,41, "13. 8.3 names"); mvprintw(13,41, "13. 8.3 names");
mvprintw(15,41, "14. No Zmodem"); mvprintw(14,41, "14. No Zmodem");
mvprintw(16,41, "15. No Zedzap"); mvprintw(15,41, "15. No Zedzap");
mvprintw(17,41, "16. No Hydra"); mvprintw(16,41, "16. No Hydra");
mvprintw(18,41, "17. binkp CRC32"); 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(17,26, nodes.NoFreqs);
show_bool(18,26, nodes.NoCall); show_bool(18,26, nodes.NoCall);
show_bool(14,61, nodes.FNC); show_bool(13,61, nodes.FNC);
show_bool(15,61, nodes.NoZmodem); show_bool(14,61, nodes.NoZmodem);
show_bool(16,61, nodes.NoZedzap); show_bool(15,61, nodes.NoZedzap);
show_bool(17,61, nodes.NoHydra); show_bool(16,61, nodes.NoHydra);
show_bool(18,61, nodes.CRC32); show_bool(17,61, nodes.CRC32);
show_bool(18,61, nodes.WrongEscape);
switch(select_menu(17)) { switch(select_menu(18)) {
case 0: return; case 0: return;
case 1: E_STR( 7,26,15, nodes.Spasswd, "The ^Session password^ for this node") 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") 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 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 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 13:E_BOOL(13,61, nodes.FNC, "Node needs ^DOS 8.3^ filenames")
case 14:E_BOOL(15,61, nodes.NoZmodem, "Disable ^Zmodem^ protocol with this node") case 14:E_BOOL(14,61, nodes.NoZmodem, "Disable ^Zmodem^ protocol with this node")
case 15:E_BOOL(16,61, nodes.NoZedzap, "Disable ^Zedzap^ protocol with this node") case 15:E_BOOL(15,61, nodes.NoZedzap, "Disable ^Zedzap^ protocol with this node")
case 16:E_BOOL(17,61, nodes.NoHydra, "Disable ^Hydra^ protocol with this node") case 16:E_BOOL(16,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 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 Zedzap %s", getboolean(nodes.NoZedzap));
fprintf(fp, " No Hydra %s", getboolean(nodes.NoHydra)); fprintf(fp, " No Hydra %s", getboolean(nodes.NoHydra));
fprintf(fp, " binkp CRC32 %s\n", getboolean(nodes.CRC32)); 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, " Mail forward %s", getboolean(nodes.MailFwd));
fprintf(fp, " Check mailpwd %s", getboolean(nodes.MailPwdCheck)); fprintf(fp, " Check mailpwd %s\n", getboolean(nodes.MailPwdCheck));
fprintf(fp, " ARCmail comp. %s\n", getboolean(nodes.ARCmailCompat)); fprintf(fp, " ARCmail comp. %s", getboolean(nodes.ARCmailCompat));
fprintf(fp, " ACRmail a..z %s", getboolean(nodes.ARCmailAlpha)); fprintf(fp, " ACRmail a..z %s", getboolean(nodes.ARCmailAlpha));
fprintf(fp, " Send message %s", getboolean(nodes.Message)); fprintf(fp, " Send message %s\n", getboolean(nodes.Message));
fprintf(fp, " Send .TIC %s\n", getboolean(nodes.Tic)); fprintf(fp, " Send .TIC %s", getboolean(nodes.Tic));
fprintf(fp, " File forward %s", getboolean(nodes.FileFwd)); fprintf(fp, " File forward %s", getboolean(nodes.FileFwd));
fprintf(fp, " Advanced TIC %s", getboolean(nodes.AdvTic)); fprintf(fp, " Advanced TIC %s\n", getboolean(nodes.AdvTic));
fprintf(fp, " Advanded SB %s\n", getboolean(nodes.TIC_AdvSB)); fprintf(fp, " Advanded SB %s", getboolean(nodes.TIC_AdvSB));
fprintf(fp, " Sent To lines %s", getboolean(nodes.TIC_To)); fprintf(fp, " Sent To lines %s", getboolean(nodes.TIC_To));
fprintf(fp, " Billing %s", getboolean(nodes.Billing)); fprintf(fp, " Billing %s\n", getboolean(nodes.Billing));
fprintf(fp, " Bill direct %s\n", getboolean(nodes.BillDirect)); fprintf(fp, " Bill direct %s", getboolean(nodes.BillDirect));
fprintf(fp, " Uplink add + %s\n", getboolean(nodes.AddPlus)); fprintf(fp, " Uplink add + %s\n", getboolean(nodes.AddPlus));
fprintf(fp, " Security flags %s\n\n", getflag(nodes.Security.flags, nodes.Security.notflags)); fprintf(fp, " Security flags %s\n\n", getflag(nodes.Security.flags, nodes.Security.notflags));