[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: RFC: server->pserver proxy?
From: |
Gary Funck |
Subject: |
Re: RFC: server->pserver proxy? |
Date: |
Sun, 27 Jan 2008 14:27:42 -0800 |
User-agent: |
Mutt/1.5.17 (2007-11-01) |
On 01/24/08 07:47:59, Gary Funck wrote:
>
> Doing a little research, I noticed that pserver and
> server share the same CVS transaction protocol, except
> for the "front end" of the protocol where pserver
> authenticates and :ext: server does not. It seemed
> to me that it might be possible to write a "server
> to pserver" protocol converter, that talks to an
> :ext:server client on side and that translates those
> requests to a pserver in a meaningful way.
>
> To demonstrate how this might be done, I've sketched
> out the basics as I understand them.
>
> ===
>
> cvspsproxy - a cvs server proxy that connects to a pserver
>
> cvspsproxy supports connections from CVS clients using
> the :ext: server protocol. cvspsproxy will in turn connect
> to a psercer, obtaining the pserver specification by
> reading the various :ext:server specifications from stdin,
> utilizing the server protocol. The pserver user, host,
> and password will be extracted from the ~/.cvspass file.
> This authentication information is then sent to the
> pserver. Once authenticated cvspsproxy simply passes
> data between the client and the pserver. This works
> because the pserver and server protocols are identical
> once the client has been authenticated.
>
> Cvspsproxy is intended for use via an ssh connection,
> but can be used in other contexts as well.
As a rainy day project (and we've had plenty of rain),
I developed an initial implementation of cvspsproxy,
described here:
http://intrepid.com/~gary/cvspsproxy/
(with a link to download the source code). Cvspspproxy
seems to work as expected on a limited set of test cases.
You may find the following extension to be of interest:
An extended repository syntax is supported, as illustrated
by this command:
CVS_SERVER=cvspsproxy CVS_RSH=ssh \
cvs -d ':ext:address@hidden/address@hidden/var/cvs' \
co module
Above, puser is a user known to the pserver executing
on cvs-host. This user need not have a user account on
that system. The CVS pserver will validate puser. This
extension makes it possible to define a single cvsuser
account on an outward-facing firewall system that serves
as a gateway for local pserver access.