From ab8aabed95ded977f74ba8098940397df876d568 Mon Sep 17 00:00:00 2001 From: Michiel Broek Date: Sat, 23 Aug 2003 15:55:45 +0000 Subject: [PATCH] Updates for new inbound structures --- mbcico/binkp.c | 2 - mbcico/emsi.c | 3 - mbcico/ftsc.c | 13 +-- mbcico/openfile.c | 15 +++- mbcico/session.c | 209 +++++++++++++++++++++++----------------------- mbcico/yoohoo.c | 4 - 6 files changed, 121 insertions(+), 125 deletions(-) diff --git a/mbcico/binkp.c b/mbcico/binkp.c index 60af14ba..29245e16 100644 --- a/mbcico/binkp.c +++ b/mbcico/binkp.c @@ -123,12 +123,10 @@ int binkp(int role) char *nonhold_mail; if (role == 1) { - Syslog('+', "Binkp: start outbound session"); if (orgbinkp()) { rc = MBERR_SESSION_ERROR; } } else { - Syslog('+', "Binkp: start inbound session"); if (ansbinkp()) { rc = MBERR_SESSION_ERROR; } diff --git a/mbcico/emsi.c b/mbcico/emsi.c index 5d882a67..5b1626ac 100644 --- a/mbcico/emsi.c +++ b/mbcico/emsi.c @@ -79,8 +79,6 @@ int rx_emsi(char *data) fa_list *tmr; int denypw=0; - Syslog('+', "Start inbound EMSI session"); - emsi_local_lcodes = LCODE_RH1; emsi_remote_lcodes=0; @@ -207,7 +205,6 @@ int tx_emsi(char *data) { int rc; - Syslog('+', "Start outbound EMSI session"); emsi_local_lcodes = LCODE_PUA | LCODE_RH1; emsi_remote_lcodes = 0; diff --git a/mbcico/ftsc.c b/mbcico/ftsc.c index a9c8a957..e8dbd504 100644 --- a/mbcico/ftsc.c +++ b/mbcico/ftsc.c @@ -67,7 +67,6 @@ int rx_ftsc(void) { int rc; - Syslog('+', "Start inbound FTS-0001 session"); IsDoing("FTS-0001 inbound"); session_flags |= SESSION_BARK; @@ -94,7 +93,6 @@ int tx_ftsc(void) { int rc; - Syslog('+', "Start outbound FTS-0001 session with %s", ascfnode(remote->addr,0x1f)); IsDoing("FTS-0001 to %s", ascfnode(remote->addr, 0x0f)); if ((rc = txftsc())) { @@ -131,10 +129,7 @@ SM_EDECL char *nonhold_mail; int mailsent = FALSE, mailrcvd = FALSE; -// if (localoptions & NOHOLD) - nonhold_mail = (char *)ALL_MAIL; -// else -// nonhold_mail = (char *)NONHOLD_MAIL; + nonhold_mail = (char *)ALL_MAIL; tosend = create_filelist(remote,nonhold_mail,2); Syslog('s', "txftsc SEND_MAIL"); @@ -157,7 +152,7 @@ SM_STATE(wait_command) * Some systems hangup after sending mail, so if we did * send and receive mail we consider the session OK. */ - Syslog('+', "Lost carrier, FTSC session looks complete"); + Syslog('+', "Lost carrier, FTS-0001 session looks complete"); SM_SUCCESS; } else { Syslog('+', "got error waiting for TSYNC: received %d",c); @@ -407,8 +402,8 @@ SM_STATE(scan_packet) * handshake by sending us a .pkt file, we store this in the old * style ../tmp/ dir in the unprotected inbound. */ - fpath = xstrcpy(inbound); - fpath = xstrcat(fpath,(char *)"/"); + fpath = xstrcpy(CFG.inbound); + fpath = xstrcat(fpath,(char *)"/tmp/"); fpath = xstrcat(fpath,recvpktname); mkdirs(fpath, 0700); fp = fopen(fpath,"r"); diff --git a/mbcico/openfile.c b/mbcico/openfile.c index 6e09b119..e156240c 100644 --- a/mbcico/openfile.c +++ b/mbcico/openfile.c @@ -33,6 +33,8 @@ #include "../lib/structs.h" #include "../lib/clcomm.h" #include "../lib/common.h" +#include "../lib/users.h" +#include "../lib/records.h" #include "config.h" #include "lutil.h" #include "openfile.h" @@ -82,8 +84,17 @@ FILE *openfile(char *fname, time_t remtime, off_t remsize, off_t *resofs, int(*r * If it's there, resoffs will be set equal to remsize to signal the * receiving protocol to skip the file. */ - infpath = xstrcpy(tempinbound); - infpath = xstrcat(infpath, (char *)"/"); + if (tempinbound == NULL) { + /* + * This is when we get a FTS-0001 handshake packet + */ + infpath = xstrcpy(CFG.inbound); + infpath = xstrcat(infpath, (char *)"/tmp/"); + mkdirs(infpath, 0700); + } else { + infpath = xstrcpy(tempinbound); + infpath = xstrcat(infpath, (char *)"/"); + } infpath = xstrcat(infpath, fname); if (stat(infpath, &st) == 0) { /* FIXME: temp normal logging now! */ diff --git a/mbcico/session.c b/mbcico/session.c index 411d422d..4506b0bf 100644 --- a/mbcico/session.c +++ b/mbcico/session.c @@ -69,132 +69,131 @@ struct sockaddr_in peeraddr; char *typestr(int); char *typestr(int tp) { - switch (tp) { - case SESSION_FTSC: return (char *)"FTSC"; - case SESSION_YOOHOO: return (char *)"YooHoo/2U2"; - case SESSION_EMSI: return (char *)"EMSI"; - case SESSION_BINKP: return (char *)"Binkp"; - default: return (char *)"Unknown"; - } + switch (tp) { + case SESSION_FTSC: return (char *)"FTS-0001"; + case SESSION_YOOHOO: return (char *)"YooHoo/2U2"; + case SESSION_EMSI: return (char *)"EMSI"; + case SESSION_BINKP: return (char *)"Binkp"; + default: return (char *)"Unknown"; + } } int session(faddr *a, node *nl, int role, int tp, char *dt) { - int rc = MBERR_OK; - fa_list *tmpl; - int addrlen = sizeof(struct sockaddr_in); + int rc = MBERR_OK, addrlen = sizeof(struct sockaddr_in); + fa_list *tmpl; - session_flags = 0; - type = tp; - nlent = nl; + session_flags = 0; + type = tp; + nlent = nl; - if (role) { - Syslog('s', "Start outbound session type %s with %s", typestr(type), ascfnode(a,0x1f)); - } else - Syslog('s', "Start inbound session type %s", typestr(type)); + if (role) + Syslog('+', "Start outbound %s session with %s", typestr(type), ascfnode(a,0x1f)); + else + Syslog('+', "Start inbound %s session", typestr(type)); - if (getpeername(0,(struct sockaddr*)&peeraddr,&addrlen) == 0) { - Syslog('s', "TCP connection: len=%d, family=%hd, port=%hu, addr=%s", + if (getpeername(0,(struct sockaddr*)&peeraddr,&addrlen) == 0) { + Syslog('s', "TCP connection: len=%d, family=%hd, port=%hu, addr=%s", addrlen,peeraddr.sin_family, peeraddr.sin_port, inet_ntoa(peeraddr.sin_addr)); - if (role == 0) { - if (tcp_mode == TCPMODE_IBN) { - Syslog('+', "Incoming IBN/TCP connection from %s", inet_ntoa(peeraddr.sin_addr)); - IsDoing("Incoming IBN/TCP"); - } else if (tcp_mode == TCPMODE_ITN) { - Syslog('+', "Incoming ITN/TCP connection from %s", inet_ntoa(peeraddr.sin_addr)); - IsDoing("Incoming ITN/TCP"); - } else if (tcp_mode == TCPMODE_IFC) { - Syslog('+', "Incoming IFC/TCP connection from %s", inet_ntoa(peeraddr.sin_addr)); - IsDoing("Incoming IFC/TCP"); - } else if (tcp_mode == TCPMODE_NONE) { - WriteError("Unknown TCP connection, parameter missing"); - die(MBERR_COMMANDLINE); - } - } - session_flags |= SESSION_TCP; + if (role == 0) { + if (tcp_mode == TCPMODE_IBN) { + Syslog('+', "Incoming IBN/TCP connection from %s", inet_ntoa(peeraddr.sin_addr)); + IsDoing("Incoming IBN/TCP"); + } else if (tcp_mode == TCPMODE_ITN) { + Syslog('+', "Incoming ITN/TCP connection from %s", inet_ntoa(peeraddr.sin_addr)); + IsDoing("Incoming ITN/TCP"); + } else if (tcp_mode == TCPMODE_IFC) { + Syslog('+', "Incoming IFC/TCP connection from %s", inet_ntoa(peeraddr.sin_addr)); + IsDoing("Incoming IFC/TCP"); + } else if (tcp_mode == TCPMODE_NONE) { + WriteError("Unknown TCP connection, parameter missing"); + die(MBERR_COMMANDLINE); + } } + session_flags |= SESSION_TCP; + } - if (data) - free(data); - data=NULL; + if (data) + free(data); + data=NULL; - if (dt) - data=xstrcpy(dt); + if (dt) + data=xstrcpy(dt); - emsi_local_protos=0; - emsi_local_opts=0; - emsi_local_lcodes=0; + emsi_local_protos=0; + emsi_local_opts=0; + emsi_local_lcodes=0; - tidy_falist(&remote); + tidy_falist(&remote); + remote=NULL; + if (a) { + remote=(fa_list*)malloc(sizeof(fa_list)); + remote->next=NULL; + remote->addr=(faddr*)malloc(sizeof(faddr)); + remote->addr->zone=a->zone; + remote->addr->net=a->net; + remote->addr->node=a->node; + remote->addr->point=a->point; + remote->addr->domain=xstrcpy(a->domain); + remote->addr->name=NULL; + } else { remote=NULL; - if (a) { - remote=(fa_list*)malloc(sizeof(fa_list)); - remote->next=NULL; - remote->addr=(faddr*)malloc(sizeof(faddr)); - remote->addr->zone=a->zone; - remote->addr->net=a->net; - remote->addr->node=a->node; - remote->addr->point=a->point; - remote->addr->domain=xstrcpy(a->domain); - remote->addr->name=NULL; - } else { - remote=NULL; + } + + remote_flags=SESSION_FNC; + + if (role) { + if (type == SESSION_UNKNOWN) + (void)tx_define_type(); + switch(type) { + case SESSION_UNKNOWN: rc = MBERR_UNKNOWN_SESSION; break; + case SESSION_FTSC: rc = tx_ftsc(); break; + case SESSION_YOOHOO: rc = tx_yoohoo(); break; + case SESSION_EMSI: rc = tx_emsi(data); break; + case SESSION_BINKP: rc = binkp(role); break; } - - remote_flags=SESSION_FNC; - - if (role) { - if (type == SESSION_UNKNOWN) - (void)tx_define_type(); - switch(type) { - case SESSION_UNKNOWN: rc = MBERR_UNKNOWN_SESSION; break; - case SESSION_FTSC: rc = tx_ftsc(); break; - case SESSION_YOOHOO: rc = tx_yoohoo(); break; - case SESSION_EMSI: rc = tx_emsi(data); break; - case SESSION_BINKP: rc = binkp(role); break; - } - } else { - if (type == SESSION_FTSC) - session_flags |= FTSC_XMODEM_CRC; - if (type == SESSION_UNKNOWN) - (void)rx_define_type(); - switch(type) { - case SESSION_UNKNOWN: rc = MBERR_UNKNOWN_SESSION; break; - case SESSION_FTSC: rc = rx_ftsc(); break; - case SESSION_YOOHOO: rc = rx_yoohoo(); break; - case SESSION_EMSI: rc = rx_emsi(data); break; - case SESSION_BINKP: rc = binkp(role); break; - } + } else { + if (type == SESSION_FTSC) + session_flags |= FTSC_XMODEM_CRC; + if (type == SESSION_UNKNOWN) + (void)rx_define_type(); + switch(type) { + case SESSION_UNKNOWN: rc = MBERR_UNKNOWN_SESSION; break; + case SESSION_FTSC: rc = rx_ftsc(); break; + case SESSION_YOOHOO: rc = rx_yoohoo(); break; + case SESSION_EMSI: rc = rx_emsi(data); break; + case SESSION_BINKP: rc = binkp(role); break; } - sleep(2); - for (tmpl = remote; tmpl; tmpl = tmpl->next) { - /* - * Unlock all nodes, locks not owned by us are untouched. - */ - (void)nodeulock(tmpl->addr); - /* - * If successfull session, reset all status records. - */ - if (rc == 0) - putstatus(tmpl->addr, 0, 0); - } - tidy_falist(&remote); - if (data) - free(data); - data = NULL; + } + sleep(2); + for (tmpl = remote; tmpl; tmpl = tmpl->next) { + /* + * Unlock all nodes, locks not owned by us are untouched. + */ + (void)nodeulock(tmpl->addr); + /* + * If successfull session, reset all status records. + */ + if (rc == 0) + putstatus(tmpl->addr, 0, 0); + } + tidy_falist(&remote); + if (data) + free(data); + data = NULL; - if (emsi_local_password) - free(emsi_local_password); - if (emsi_remote_password) - free(emsi_remote_password); + if (emsi_local_password) + free(emsi_local_password); + if (emsi_remote_password) + free(emsi_remote_password); - if (nlent->addr.domain) - free(nlent->addr.domain); + if (nlent->addr.domain) + free(nlent->addr.domain); - inbound_close(rc == 0); - return rc; + inbound_close(rc == 0); + return rc; } diff --git a/mbcico/yoohoo.c b/mbcico/yoohoo.c index 12accd4c..4dd75013 100644 --- a/mbcico/yoohoo.c +++ b/mbcico/yoohoo.c @@ -128,8 +128,6 @@ int rx_yoohoo(void) unsigned short capabilities,localcaps; char *pwd = NULL; - Syslog('+', "Start inbound YooHoo session"); - pwd = NULL; localcaps = LOCALCAPS; if (localoptions & NOZMODEM) localcaps &= ~(ZED_ZAPPER|ZED_ZIPPER); @@ -228,8 +226,6 @@ int tx_yoohoo(void) unsigned short capabilities; char *pwd; - Syslog('+', "Start outbound YooHoo session"); - if (strlen(nodes.Spasswd)) pwd = xstrcpy(nodes.Spasswd); else