From 1442a4babcd243cb5de6166f4e06d04172cf246e Mon Sep 17 00:00:00 2001 From: Michiel Broek Date: Sun, 24 Aug 2003 12:26:34 +0000 Subject: [PATCH] Added binkp escape switch --- ChangeLog | 12 ++++++++++- lib/nodelist.c | 53 +++++++++++++++++++++--------------------------- lib/structs.h | 2 +- mbcico/binkp.c | 8 ++++++-- mbsetup/m_node.c | 52 +++++++++++++++++++++++++---------------------- 5 files changed, 69 insertions(+), 58 deletions(-) diff --git a/ChangeLog b/ChangeLog index f4ad26c6..831aa380 100644 --- a/ChangeLog +++ b/ChangeLog @@ -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 diff --git a/lib/nodelist.c b/lib/nodelist.c index 565a80fa..5f61529b 100644 --- a/lib/nodelist.c +++ b/lib/nodelist.c @@ -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; diff --git a/lib/structs.h b/lib/structs.h index ecbb904f..51dbae6b 100644 --- a/lib/structs.h +++ b/lib/structs.h @@ -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]; diff --git a/mbcico/binkp.c b/mbcico/binkp.c index 29245e16..30064514 100644 --- a/mbcico/binkp.c +++ b/mbcico/binkp.c @@ -245,7 +245,11 @@ char *unix2binkp(char *fn) *q++ = *p; *q = '\0'; } else { - sprintf(q, "\\x%2x", p[0]); + if (nodes.WrongEscape) { + sprintf(q, "\\%2x", p[0]); + } else { + sprintf(q, "\\x%2x", p[0]); + } } while (*q) q++; @@ -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++; diff --git a/mbsetup/m_node.c b/mbsetup/m_node.c index 256b999d..d10ea40d 100644 --- a/mbsetup/m_node.c +++ b/mbsetup/m_node.c @@ -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));