Added binkp/1.1 downgrade option

This commit is contained in:
Michiel Broek 2004-01-04 16:18:44 +00:00
parent d00972b17a
commit a325fc5c29
5 changed files with 46 additions and 46 deletions

View File

@ -6,6 +6,14 @@ v0.39.5 24-Dec-2003
Added code for new binkp development, the code is disabled by Added code for new binkp development, the code is disabled by
default and can only be used with the right configure option. default and can only be used with the right configure option.
Upgraded to new released ftscprod.008 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: common.a:
Allows node locking with zero bytes lockfiles created by some Allows node locking with zero bytes lockfiles created by some
@ -16,7 +24,7 @@ v0.39.5 24-Dec-2003
Binkp code cleanup. Binkp code cleanup.
Allow m_file command in binkp during file transfer in progress. Allow m_file command in binkp during file transfer in progress.
Fixed a segfault when a session failed. 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: mbout:
Poll, remove poll and request failed to points which had no Poll, remove poll and request failed to points which had no
@ -29,6 +37,8 @@ v0.39.5 24-Dec-2003
mbsetup: mbsetup:
Added setting in menu 1.14 to allow zero bytes lockfiles Added setting in menu 1.14 to allow zero bytes lockfiles
created by another OS. created by another OS.
Added setting in menu 7.x.3.18 to disable the use of binkp/1.1
protocol per node.
script: script:
Fixed NetBSD init script Fixed NetBSD init script

View File

@ -4,7 +4,7 @@
* Purpose ...............: MBSE BBS Global structure * Purpose ...............: MBSE BBS Global structure
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2003 * Copyright (C) 1997-2004
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -1203,7 +1203,7 @@ struct _nodes {
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 WrongEscape : 1; /* Binkp wrong escape */ unsigned WrongEscape : 1; /* Binkp wrong escape */
unsigned xNoIFC : 1; unsigned NoBinkp11 : 1; /* No binkp/1.1 mode */
char xExtra[94]; char xExtra[94];
time_t StartDate; /* Node start date */ time_t StartDate; /* Node start date */

View File

@ -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; bp.FtState = InitTransfer;
rc = file_transfer(); rc = file_transfer();
@ -1554,8 +1560,12 @@ int binkp_banner(void)
t = time(NULL); t = time(NULL);
if (!rc) if (!rc)
rc = binkp_send_command(MM_NUL,"TIME %s", rfcdate(t)); rc = binkp_send_command(MM_NUL,"TIME %s", rfcdate(t));
if (!rc) if (!rc) {
rc = binkp_send_command(MM_NUL,"VER mbcico/%s/%s-%s %s/%s", VERSION, OsName(), OsCPU(), PRTCLNAME, PRTCLVER); 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) if (strlen(CFG.Phone) && !rc)
rc = binkp_send_command(MM_NUL,"PHN %s", CFG.Phone); rc = binkp_send_command(MM_NUL,"PHN %s", CFG.Phone);
if (strlen(CFG.comment) && !rc) if (strlen(CFG.comment) && !rc)
@ -1632,13 +1642,6 @@ void parse_m_nul(char *msg)
bp.Major = atoi(p + 6); bp.Major = atoi(p + 6);
bp.Minor = atoi(q + 1); bp.Minor = atoi(q + 1);
Syslog('b', "Remote protocol version %d.%d", bp.Major, bp.Minor); 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) { } else if (strncmp(msg, "PHN ", 4) == 0) {
Syslog('+', "Phone : %s", msg+4); Syslog('+', "Phone : %s", msg+4);
@ -1651,24 +1654,6 @@ void parse_m_nul(char *msg)
} else if (strncmp(msg, "OPT ", 4) == 0) { } else if (strncmp(msg, "OPT ", 4) == 0) {
Syslog('+', "Options : %s", msg+4); 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 (strstr(msg, (char *)"CRAM-MD5-") != NULL) { /* No SHA-1 support */
if (CFG.NoMD5) { if (CFG.NoMD5) {
Syslog('+', "Binkp: Remote supports MD5, but it's turned off here"); Syslog('+', "Binkp: Remote supports MD5, but it's turned off here");

View File

@ -24,6 +24,7 @@
/* protocol version */ /* protocol version */
#define PRTCLNAME "binkp" #define PRTCLNAME "binkp"
#define PRTCLVER "1.1" #define PRTCLVER "1.1"
#define PRTCLOLD "1.0"
#define MAX_BLKSIZE 0x7fff /* Don't change! */ #define MAX_BLKSIZE 0x7fff /* Don't change! */
#define BLK_HDR_SIZE 2 /* 2 bytes header */ #define BLK_HDR_SIZE 2 /* 2 bytes header */

View File

@ -4,7 +4,7 @@
* Purpose ...............: Nodes Setup Program * Purpose ...............: Nodes Setup Program
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2003 * Copyright (C) 1997-2004
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -795,12 +795,13 @@ void SessionScreen(void)
mvprintw(16, 6, "10. No YooHoo/2U2"); mvprintw(16, 6, "10. No YooHoo/2U2");
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(19, 6, "13. 8.3 names");
mvprintw(14,41, "13. 8.3 names");
mvprintw(15,41, "14. No Zmodem"); mvprintw(15,41, "14. No Zmodem");
mvprintw(16,41, "15. No Zedzap"); mvprintw(16,41, "15. No Zedzap");
mvprintw(17,41, "16. No Hydra"); 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(16,26, nodes.NoWaZOO);
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(19,26, nodes.FNC);
show_bool(14,61, nodes.FNC);
show_bool(15,61, nodes.NoZmodem); show_bool(15,61, nodes.NoZmodem);
show_bool(16,61, nodes.NoZedzap); show_bool(16,61, nodes.NoZedzap);
show_bool(17,61, nodes.NoHydra); show_bool(17,61, nodes.NoHydra);
show_bool(18,61, nodes.WrongEscape); show_bool(18,61, nodes.WrongEscape);
show_bool(19,61, nodes.NoBinkp11);
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")
@ -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 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 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(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 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 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 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 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 Zedzap %s", getboolean(nodes.NoZedzap));
fprintf(fp, " No Hydra %s", getboolean(nodes.NoHydra)); fprintf(fp, " No Hydra %s", getboolean(nodes.NoHydra));
fprintf(fp, " binkp old esc %s\n", getboolean(nodes.WrongEscape)); 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, " 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", 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));
fprintf(fp, " Outb session %s\n", get_sessiontype(nodes.Session_out)); fprintf(fp, " Outb session %s\n", get_sessiontype(nodes.Session_out));