Yep.  Remember, you aren't talking through a pty
(as you would be if you telnetted to, say, port 23 :-)
you are talking on a RAW socket, so what telnet sends
(which, on most UNIX boxen is CR) on an ENTER is what
the cvs server gets, which is not what it wants.

I did this, from a windows box running both the native
windows telnet and teraterm pro:

BEGIN VERIFICATION REQUEST^J/cvs/repos^Jpvogel^J<my passwd>^JEND
VERIFICATION REQUEST

I got back:

I LOVE YOU

Voila!

Interestingly, from my linux box, I don't have as much luck.  I'll
have to look at how to make telnet get out of my way on Linux...
THAT'S A FIRST, windows behaves as I expect, but Linux doesn't!

Hmmmm.

-Peter

> -----Original Message-----
> From: Cheng, John [mailto:[EMAIL PROTECTED]]
> Sent: Monday, January 29, 2001 4:45 PM
> To: '[EMAIL PROTECTED]'
> Subject: RE: CVS and Ant build tool
> 
> 
> I've tried using CTRL-J to generate the "\n" newline 
> character, and it still didn't work. I don't think the
> CR/LF would be a problem since I was telnetting from
> a unix box to itself. Were you able to connect to CVS
> through this method? 
> 
> 
> 
> -----Original Message-----
> From: Peter Vogel [mailto:[EMAIL PROTECTED]]
> Sent: Monday, January 29, 2001 4:35 PM
> To: '[EMAIL PROTECTED]'
> Subject: RE: CVS and Ant build tool
> 
> 
> The end of each line that the CVS is looking for is a 
> LF, not a CR, make sure your telnet understands that,
> or use CTRL-J to make a newline and keep your hands off
> the enter key :-)
> 
> Also, note that the password as transmitted over the line
> is trivially encrypted via a rotation scheme, so you'll
> have to do the same rotation.
> 
> -Peter
> --
> Peter A. Vogel
> Manager, Configuration Management
> Arsin Corporation
> 4800 Great America Parkway Suite 425, Santa Clara, CA 95054
> 
> 
> 
> 
> > -----Original Message-----
> > From: Cheng, John [mailto:[EMAIL PROTECTED]]
> > Sent: Monday, January 29, 2001 4:23 PM
> > To: '[EMAIL PROTECTED]'
> > Subject: RE: CVS and Ant build tool
> > 
> > 
> > I am running a pserver. And I've been able to connect and log 
> > in using the
> > standard CVS tools. I am now trying to login into the pserver 
> > CVS using Ant.
> > Since there is no command in Ant for doing so, I am trying to 
> > resort to
> > logging in via telnet (manually) first, then continue with 
> my project.
> > 
> > I would try doing this:
> > 
> > telnet localhost 2401
> > Trying 127.0.0.1...
> > Connected to localhost.
> > Escape character is '^]'.
> > BEGIN AUTH VERIFICATION
> > cvs [pserver aborted]: bad auth protocol start: BEGIN AUTH 
> > VERIFICATION
> > 
> > It seems that I'm missing a step here. 
> > 
> > 
> > Connection closed by foreign host.
> > 
> > -----Original Message-----
> > From: Peter Vogel [mailto:[EMAIL PROTECTED]]
> > Sent: Monday, January 29, 2001 4:21 PM
> > To: '[EMAIL PROTECTED]'
> > Subject: RE: CVS and Ant build tool
> > 
> > 
> > You must connect to port 2401, or whatever port you set up your
> > CVS pserver to service.
> > 
> > The authentication protocol shown below is for a running pserver,
> > if you are not running with pserver, the protocol is different.
> > 
> > -Peter
> > 
> > > -----Original Message-----
> > > From: Cheng, John [mailto:[EMAIL PROTECTED]]
> > > Sent: Monday, January 29, 2001 4:16 PM
> > > To: '[EMAIL PROTECTED]'
> > > Subject: CVS and Ant build tool
> > > 
> > > 
> > > This is an extract from the CVS src code, server.c
> > > 
> > > It seems to indicate a method of communicating with CVS and 
> > > loggin in via
> > > telnet.
> > > Yet I cannot duplicate this manually, can anyone help?
> > > 
> > >     /* The Authentication Protocol.  Client sends:
> > >      *
> > >      *   BEGIN AUTH REQUEST\n
> > >      *   <REPOSITORY>\n
> > >      *   <USERNAME>\n
> > >      *   <PASSWORD>\n
> > >      *   END AUTH REQUEST\n
> > >      *
> > >      * Server uses above information to authenticate, then sends
> > >      *
> > >      *   I LOVE YOU\n
> > >      *
> > >      * if it grants access, else
> > >      *
> > >      *   I HATE YOU\n
> > >      *
> > >      * if it denies access (and it exits if denying).
> > >      *
> > >      * When the client is "cvs login", the user does not 
> > desire actual
> > >      * repository access, but would like to confirm the 
> > password with
> > >      * the server.  In this case, the start and stop strings are
> > >      *
> > >      *   BEGIN VERIFICATION REQUEST\n
> > >      *
> > >      *            and
> > >      *
> > >      *   END VERIFICATION REQUEST\n
> > >      *
> > >      * On a verification request, the server's responses 
> > are the same
> > >      * (with the obvious semantics), but it exits 
> immediately after
> > >      * sending the response in both cases.
> > >      *
> > >      * Why is the repository sent?  Well, note that the actual
> > >      * client/server protocol can't start up until 
> authentication is
> > >      * successful.  But in order to perform authentication, 
> > the server
> > >      * needs to look up the password in the special CVS 
> passwd file,
> > >      * before trying /etc/passwd.  So the client transmits the
> > >      * repository as part of the "authentication protocol".  The
> > >      * repository will be redundantly retransmitted later, 
> > > but that's no
> > >      * big deal.
> > >      */
> > > 
> > > #ifdef SO_KEEPALIVE
> > >     /* Set SO_KEEPALIVE on the socket, so that we don't 
> hang forever
> > >        if the client dies while we are waiting for input.  */
> > >     {
> > >   int on = 1;
> > > 
> > >   (void) setsockopt (STDIN_FILENO, SOL_SOCKET, SO_KEEPALIVE,
> > >                      (char *) &on, sizeof on);
> > >     }
> > > #endif
> > > 
> > >     /* Make sure the protocol starts off on the right foot... */
> > >     if (getline_safe (&tmp, &tmp_allocated, stdin, PATH_MAX) < 0)
> > >   /* FIXME: what?  We could try writing error/eof, but chances
> > >      are the network connection is dead bidirectionally.  log it
> > >      somewhere?  */
> > >   ;
> > > 
> > >     if (strcmp (tmp, "BEGIN VERIFICATION REQUEST\n") == 0)
> > >   verify_and_exit = 1;
> > >     else if (strcmp (tmp, "BEGIN AUTH REQUEST\n") == 0)
> > >   ;
> > >     else if (strcmp (tmp, "BEGIN GSSAPI REQUEST\n") == 0)
> > >     {
> > > #ifdef HAVE_GSSAPI
> > >   free (tmp);
> > >   gserver_authenticate_connection ();
> > >   return;
> > > #else
> > >   error (1, 0, "GSSAPI authentication not supported by 
> > > this server");
> > > #endif
> > >     }
> > >     else
> > >   error (1, 0, "bad auth protocol start: %s", tmp);
> > > 
> > > #ifndef AUTH_SERVER_SUPPORT
> > > 
> > >     error (1, 0, "Password authentication not supported by 
> > > this server");
> > > 
> > > 
> > 
> 

Reply via email to