diff --git a/ChangeLog b/ChangeLog index e6a5c230..1f203508 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,14 @@ v0.39.5 24-Dec-2003 Added code for new binkp development, the code is disabled by default and can only be used with the right configure option. Upgraded to new released ftscprod.008 + Added setup option per node to disable the binkp/1.1 protocol. + + upgrade: + Check setting 7.x.3.18 for each node. If you know the node uses + Irex 2.29 or older then set this to Yes or you won't have good + sessions with these mailers. (For the default compile it doesn't + do anything yet, but it will as soon as the new binkp/1.1 + driver is ready). common.a: Allows node locking with zero bytes lockfiles created by some @@ -16,7 +24,7 @@ v0.39.5 24-Dec-2003 Binkp code cleanup. Allow m_file command in binkp during file transfer in progress. Fixed a segfault when a session failed. - New binkp driver, not compiled by default yet. + New binkp/1.1 driver, not compiled by default yet. mbout: Poll, remove poll and request failed to points which had no @@ -29,6 +37,8 @@ v0.39.5 24-Dec-2003 mbsetup: Added setting in menu 1.14 to allow zero bytes lockfiles created by another OS. + Added setting in menu 7.x.3.18 to disable the use of binkp/1.1 + protocol per node. script: Fixed NetBSD init script diff --git a/lib/structs.h b/lib/structs.h index bdcab7e7..fd31df4b 100644 --- a/lib/structs.h +++ b/lib/structs.h @@ -4,7 +4,7 @@ * Purpose ...............: MBSE BBS Global structure * ***************************************************************************** - * Copyright (C) 1997-2003 + * Copyright (C) 1997-2004 * * Michiel Broek FIDO: 2:280/2802 * Beekmansbos 10 @@ -1203,7 +1203,7 @@ struct _nodes { unsigned ARCmailAlpha : 1; /* Allow a..z ARCmail name */ unsigned FNC : 1; /* Node needs 8.3 filenames */ unsigned WrongEscape : 1; /* Binkp wrong escape */ - unsigned xNoIFC : 1; + unsigned NoBinkp11 : 1; /* No binkp/1.1 mode */ char xExtra[94]; time_t StartDate; /* Node start date */ diff --git a/mbcico/binkpnew.c b/mbcico/binkpnew.c index 5be2be20..387c6abb 100644 --- a/mbcico/binkpnew.c +++ b/mbcico/binkpnew.c @@ -238,6 +238,12 @@ int binkp(int role) } } + if (Loaded && nodes.NoBinkp11 && (bp.Major == 1) && (bp.Minor != 0)) { + Syslog('+', "Binkp: forcing downgrade to binkp/1.0 protocol"); + bp.Major = 1; + bp.Minor = 0; + } + bp.FtState = InitTransfer; rc = file_transfer(); @@ -1554,8 +1560,12 @@ int binkp_banner(void) t = time(NULL); if (!rc) rc = binkp_send_command(MM_NUL,"TIME %s", rfcdate(t)); - if (!rc) - rc = binkp_send_command(MM_NUL,"VER mbcico/%s/%s-%s %s/%s", VERSION, OsName(), OsCPU(), PRTCLNAME, PRTCLVER); + if (!rc) { + if (nodes.NoBinkp11) + rc = binkp_send_command(MM_NUL,"VER mbcico/%s/%s-%s %s/%s", VERSION, OsName(), OsCPU(), PRTCLNAME, PRTCLOLD); + else + rc = binkp_send_command(MM_NUL,"VER mbcico/%s/%s-%s %s/%s", VERSION, OsName(), OsCPU(), PRTCLNAME, PRTCLVER); + } if (strlen(CFG.Phone) && !rc) rc = binkp_send_command(MM_NUL,"PHN %s", CFG.Phone); if (strlen(CFG.comment) && !rc) @@ -1632,13 +1642,6 @@ void parse_m_nul(char *msg) bp.Major = atoi(p + 6); bp.Minor = atoi(q + 1); Syslog('b', "Remote protocol version %d.%d", bp.Major, bp.Minor); - /* - * Disable MB if protocol > 1.0 and MB was not yet active. - */ -// if ((bp.MBflag != Active) && (((bp.Major * 10) + bp.Minor) > 10)) { -// Syslog('b', "MBflag %s => No", opstate[bp.MBflag]); -// bp.MBflag = No; -// } } } else if (strncmp(msg, "PHN ", 4) == 0) { Syslog('+', "Phone : %s", msg+4); @@ -1651,24 +1654,6 @@ void parse_m_nul(char *msg) } else if (strncmp(msg, "OPT ", 4) == 0) { Syslog('+', "Options : %s", msg+4); - -// if (strstr(msg, (char *)"MB") != NULL) { -// Syslog('b', "Remote requests MB, current state = %s", opstate[bp.MBflag]); -// if ((bp.MBflag == WeCan) && (bp.Major == 1) && (bp.Minor == 0)) { /* Answering session and do binkp/1.0 */ -// bp.MBflag = TheyWant; -// Syslog('b', "MBflag WeCan => TheyWant"); -// binkp_send_control(MM_NUL,"OPT MB"); -// Syslog('b', "MBflag TheyWant => Active"); -// bp.MBflag = Active; -// } else if ((bp.MBflag == WeWant) && (bp.Major == 1) && (bp.Minor == 0)) { /* Originating session and do binkp/1.0 */ -// bp.MBflag = Active; -// Syslog('b', "MBflag WeWant => Active"); -// } else { -// Syslog('b', "MBflag is %s and received MB option", opstate[bp.MBflag]); -// -// } -// } - if (strstr(msg, (char *)"CRAM-MD5-") != NULL) { /* No SHA-1 support */ if (CFG.NoMD5) { Syslog('+', "Binkp: Remote supports MD5, but it's turned off here"); diff --git a/mbcico/binkpnew.h b/mbcico/binkpnew.h index 10f3d3ba..d9c638f5 100644 --- a/mbcico/binkpnew.h +++ b/mbcico/binkpnew.h @@ -24,6 +24,7 @@ /* protocol version */ #define PRTCLNAME "binkp" #define PRTCLVER "1.1" +#define PRTCLOLD "1.0" #define MAX_BLKSIZE 0x7fff /* Don't change! */ #define BLK_HDR_SIZE 2 /* 2 bytes header */ diff --git a/mbsetup/m_node.c b/mbsetup/m_node.c index f851a30f..f2347aad 100644 --- a/mbsetup/m_node.c +++ b/mbsetup/m_node.c @@ -4,7 +4,7 @@ * Purpose ...............: Nodes Setup Program * ***************************************************************************** - * Copyright (C) 1997-2003 + * Copyright (C) 1997-2004 * * Michiel Broek FIDO: 2:280/2802 * Beekmansbos 10 @@ -795,12 +795,13 @@ void SessionScreen(void) mvprintw(16, 6, "10. No YooHoo/2U2"); mvprintw(17, 6, "11. No Filerequest"); mvprintw(18, 6, "12. Don't call"); + mvprintw(19, 6, "13. 8.3 names"); - 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 old esc"); + mvprintw(18,41, "17. Binkp old esc"); + mvprintw(19,41, "18. No binkp/1.1"); } @@ -824,14 +825,15 @@ void SessionEdit(void) show_bool(16,26, nodes.NoWaZOO); show_bool(17,26, nodes.NoFreqs); show_bool(18,26, nodes.NoCall); - - show_bool(14,61, nodes.FNC); + show_bool(19,26, 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.WrongEscape); + show_bool(19,61, nodes.NoBinkp11); - 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") @@ -847,12 +849,13 @@ void SessionEdit(void) case 10:E_BOOL(16,26, nodes.NoWaZOO, "Disable ^YooHoo/2U2 handshake^ (FTSC-0006) with 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 13:E_BOOL(19,26, nodes.FNC, "Node needs ^DOS 8.3^ filenames") - 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.WrongEscape, "Use the ^old escape^ for long filenames (Argus, Irex)") + case 18:E_BOOL(19,61, nodes.NoBinkp11, "Disable ^binkp/1.1^ (fallback to binkp/1.0) mode for this node") } } } @@ -1483,19 +1486,20 @@ 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 old esc %s\n", getboolean(nodes.WrongEscape)); + fprintf(fp, " No binkp/1.1 %s", getboolean(nodes.NoBinkp11)); 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, " Uplink add + %s", getboolean(nodes.AddPlus)); + 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)); fprintf(fp, " Outb session %s\n", get_sessiontype(nodes.Session_out));