如何让ICS的FTPSRV控件实现隐藏真实路径(200分)

  • 主题发起人 主题发起人 hellfish
  • 开始时间 开始时间
H

hellfish

Unregistered / Unconfirmed
GUEST, unregistred user!
正在做一个FTP服务器端,始终有个问题没解决:

请问各位大侠如何修改ICS的FTPSRV控件实现隐藏真实路径
比如用户 TEST 的根目录是 D:/TEST
请问要如何才可以让客户端显示为 /

这个服务器端下载:
http://61.143.241.227/fishftp.rar
 
我以前修改过,很简单的,不过忘了修改什么地方了。
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
//add by zhong wan 2004-1-5

function TFtpServer.BuildListBuf(Client: TFtpCtrlSocket;
Detailed: Boolean): string;
var
F: TSearchRec;
Path: string;
Status: Integer;
Buf: string;
begin
DecodeDate(Now, ThisYear, ThisMonth, ThisDay);

Path := Client.Directory;
if Path[Length(Path)] = '/' then
Path := Path + '*.*';

Status := FindFirst(Path, faAnyFile, F);
while Status = 0 do
begin
if Detailed then
Buf := Buf + FormatUnixDirEntry(F) + #13#10
else
Buf := Buf + F.Name + #13#10;
Status := FindNext(F);
end;
FindClose(F);

if Length(Buf) = 0 then
begin
Buf := Path + ' not found' + #13#10;
end else
begin
Result := Buf;
end;
end;

你重点看看他的代码的ChangeDir部分
if Allowed then
Answer := Format(msgCWDSuccess,
[BackSlashesToSlashes(Client.Directory)])
就是Answer返回去掉前面的路经就是。
 
上面是我回答的,登陆用户错了,加分给我哈:~)
 
在具体一点就是返回 replacestring(Client.Directory,'e:/xxxx/','')
 
我按您的方法修改了
我把
Answer:= Format(msgCWDSuccess,[BackSlashesToSlashes(Client.Directory)])
改为
Answer:= Format(msgCWDSuccess,[BackSlashesToSlashes(StringReplace(client.Directory,Client.HomeDir,'/',[rfReplaceAll]))])

问题依然存在

另外,您给的BuildListBuf请问用在那里?
是用来替换BuildDirectory的吗?

PS: 只要解决,马上给分
 
是我的错,呵呵。

在修改了 pwd 以及 xpwd 命令后成功了,多谢回答。

200 分已送上
 
后退
顶部