On Thu, Dec 16, 1999 at 11:09:33AM -0700, John and Jennifer Reynolds wrote:

 > but upon trying to ssh from work to my box I get this error message:
 >   Local: Corrupted check bytes on input.
 
tn-gw isn't 8-bit-clean;  you'll need to patch it.  Try something like
this:  it creates a new tn-gw-> prompt command called "rawopen" which 
gives you an 8-bit-clean link to whatever host/port you specify.

... and check with your IT security folks before running nos-tun
over it, won't you? :-)

   - mark



*** tn-gw.c.orig        Fri Jul  4 10:05:22 1997
--- tn-gw.c     Mon Jul  7 10:48:15 1997
***************
*** 61,66 ****
--- 61,67 ----
  static        unsigned char           prebuf[BUFSIZ];
  static        int                     prebufc;
  static        int                     kludgeraw = 0;
+ static  int                     gimme8bit = 0;
  
  static        time_t                  ontime;
  static        time_t                  offtime;
***************
*** 78,83 ****
--- 79,85 ----
  static        int     cmd_connect();
  static        int     cmd_passwd();
  static        int     cmd_xforward();
+ static  int     cmd_rawconn();
  
  typedef       struct  {
        char    *name;
***************
*** 88,93 ****
--- 90,96 ----
        "connect",      "   connect hostname [serv/port]",      cmd_connect,
        "telnet",       "   telnet hostname [serv/port]",       cmd_connect,
        "open",         0,                                      cmd_connect,
+       "rawopen",      "   rawopen hostname [serv/port]",      cmd_rawconn,
        "x-gw",         "   x-gw [hostname/display]",           cmd_xforward,
        "help",         "   help/?",                            cmd_help,
        "quit",         "   quit/exit",                         cmd_quit,
***************
*** 316,322 ****
  
                if(!kludgeraw && FD_ISSET(0,&rdy)) {
                        if(rfd == -1) {
!                               say(0,"Remote server has closed connection");
                                goto leave;
                        }
                        x = read(0,xuf,sizeof(xuf));
--- 319,325 ----
  
                if(!kludgeraw && FD_ISSET(0,&rdy)) {
                        if(rfd == -1) {
!                               if (!gimme8bit) say(0,"Remote server has closed 
connection");
                                goto leave;
                        }
                        x = read(0,xuf,sizeof(xuf));
***************
*** 342,348 ****
                        }
  
                        if(write(rfd,clientnull,x) != x) {
!                               say(0,"Remote server has closed connection");
                                goto leave;
                        }
                        outbytcnt += x;
--- 345,351 ----
                        }
  
                        if(write(rfd,clientnull,x) != x) {
!                               if (!gimme8bit) say(0,"Remote server has closed 
connection");
                                goto leave;
                        }
                        outbytcnt += x;
***************
*** 356,362 ****
                if(rfd != -1 && FD_ISSET(rfd,&rdy)) {
                        x = read(rfd,xuf,sizeof(xuf));
                        if(x <= 0) {
!                               say(0,"Remote server has closed connection");
                                goto leave;
                        }
                        if(write(0,xuf,x) != x)
--- 359,365 ----
                if(rfd != -1 && FD_ISSET(rfd,&rdy)) {
                        x = read(rfd,xuf,sizeof(xuf));
                        if(x <= 0) {
!                               if (!gimme8bit) say(0,"Remote server has closed 
connection");
                                goto leave;
                        }
                        if(write(0,xuf,x) != x)
***************
*** 738,744 ****
        } else
                syslog(LLEV,"permit host=%s/%s destination=%s",rladdr,riaddr,av[1]);
  
!       if(port != TNPORT) {
                unsigned char   xuf[9];
  
                xuf[0] = IAC;
--- 741,753 ----
        } else
                syslog(LLEV,"permit host=%s/%s destination=%s",rladdr,riaddr,av[1]);
  
!       /* 19970704 [EMAIL PROTECTED]
!        * "gimme8bit" flag used to determine whether this actually happens.
!          * Normally, if the proxy isn't connecting to port 23 it will 
!          * intercept telnet IAC sequences, meaning that we can't get an
!          * 8-bit clean connection.  If gimme8bit is true, this behaviour
!          * will be suppressed. */
!       if((port != TNPORT) && (!gimme8bit)) {
                unsigned char   xuf[9];
  
                xuf[0] = IAC;
***************
*** 753,758 ****
--- 762,769 ----
                if(write(0,xuf,9) != 9)
                        return(1);
                kludgeraw = 1;
+       } else if (gimme8bit) {
+                 syslog(LLEV, "RAW connection requested");
        }
  
        if((rfd = conn_server(av[1],port,0,buf)) < 0) {
***************
*** 768,774 ****
        return(2);
  }
  
! 
  
  baddest(fd,dest)
  int   fd;
--- 779,793 ----
        return(2);
  }
  
! static  int
! cmd_rawconn(ac, av, cbuf)
! int     ac;
! char    *av[];
! char    *cbuf;
! {
!         gimme8bit = 1;
!         return(cmd_connect(ac, av, cbuf));
! }
  
  baddest(fd,dest)
  int   fd;



-- 
Mark Newton                               Email:  [EMAIL PROTECTED] (W)
Network Engineer                          Email:  [EMAIL PROTECTED]  (H)
Internode Systems Pty Ltd                 Desk:   +61-8-82232999
"Network Man" - Anagram of "Mark Newton"  Mobile: +61-416-202-223


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to