Article delegate-en/3378 of [1-5169] on the server localhost:119
  upper oldest olders older1 this newer1 newers latest
search
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
[Reference:<_A3377@delegate-en.ML_>]
Newsgroups: mail-lists.delegate-en

[DeleGate-En] Re: Constructing a virtual origin FTP server fails on symlinks crossing "MOUNT=" points
11 Jul 2006 10:49:29 GMT feedback@delegate.org (Yutaka Sato)
The DeleGate Project


Hi,

In message <_A3377@delegate-en.ML_> on 07/10/06(17:03:03)
you Steffen Kaiser <p44eqbdyi-t7hpjilh6bxr.ml@ml.delegate.org> wrote:
 |Then I have some problems accessing the remote site via the FTP gateway.
...
 |on master/ftp server:
 |        $demon -P21 SERVER=ftp \
 |                MOUNT="/pub/* /mnt/mirror/pub/*" \
 |                MOUNT="/ /var/ftp/*" \
...
 |When I use the command:
 |
 |$ ftp ftp
 |<<login>>
 |> dir /pub
 |I do not get no listing,
 |> dir /pub
 |I do get the listing.

Your case might include multiple problems.  At least I found that
a problem can be reproduced as this:

  % delegated -v -P9999 SERVER=ftp MOUNT="/x/y/pub/* /*"

and inputs to this DeleGate:

  USER ftp
  PASS test
  MLST x/y/pub
  CWD x

  MLST y/pub
  CWD y
  MLST pub
  CWD pub
  MLST
  QUIT

All of these MLST commands are to be responded with the status of
"/x/y/pub", but not.  The reason is that I fogot to care the command with
a relative path argument where the CWD is on the virtual directory.
It is fixed as the patch enclosed.

Cheers,
Yutaka
--
  9 9   Yutaka Sato <y.sato@delegate.org> http://delegate.org/y.sato/
 ( ~ )  National Institute of Advanced Industrial Science and Technology
_<   >_ 1-1-4 Umezono, Tsukuba, Ibaraki, 305-8568 Japan
Do the more with the less -- B. Fuller


*** ../arc/delegate9.2.3-pre10/src/ftp.c	Sun Jul  9 17:05:10 2006
--- src/ftp.c	Tue Jul 11 19:35:20 2006
***************
*** 920,925 ****
--- 920,935 ----
  	if( !FS->fs_islocal )
  		return 0;
  
+ 	if( rpath[0] != '/' && FS->fs_islocal ){
+ 		CStr(xrpath,1024);
+ 		getVUpath(FS,FS->fs_CWD,AVStr(xrpath));
+ 		if( xrpath[0] != '/' )
+ 			Strins(AVStr(xrpath),"/");
+ 		chdir_cwd(AVStr(xrpath),rpath,1);
+ 		sv1log("isLocal? [%s][%s] => %s\n",FS->fs_CWD,rpath,xrpath);
+ 		rpath = xrpath;
+ 	}
+ 
  	if( rpath[0] == '/' ){
  		strcpy(vurl,rpath);
  		if( opts = CTX_mount_url_to(FS->fs_Conn,NULL,method,AVStr(vurl)) ){

  admin search upper oldest olders older1 this newer1 newers latest
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
@_@V