1 简介

ftplite 是一个简单的 ftp 服务器,只需要一个可执行文件与一个配置文件就可以执行,无需安装。虽然功能非常简单,只有最基本的文件传输功能,甚至不支持虚拟路径,不支持为不同路径设置不同权限,但对于一些简单的应用场合,如临时传递文件等还是可以胜任的。虽然滇狐现在已经不再维护这个程序,但还是希望能够给大家带来一些方便。

2 配置文件格式

该程序是一个控制台程序,没有配置界面,对该服务器的所有配置都是通过使用文本编辑器修改配置文件进行的。ftplite 的配置文件采用类似 ini 的文件格式,与 ini 文件不同的是该配置文件大小写敏感,也就是说,“server”和“Server”是不同的配置项。配置文件由以下 4 部分组成:服务器设置、帐号设置、路径设置和提示信息语言设置。

“[Server]”块之下是服务器设置,只有两项设置:Port 项表示服务器监听的端口号,默认值为 21。IdleTimeout 表示服务器与客户端多长时间没有任何数据传输时,认为客户端已断线,将客户端踢下,单位为秒,默认值为 120,也就是两分钟。

“[Account]”块之下是帐号设置,帐号设置的格式是:“用户名=密码”。例如,如果我们创建一个用户,用户名是“edward”,密码是“test”,则在“[Account]”块下写:“edward=test”。

“[Path]”块之下是路径设置,路径设置的格式是:“用户名=路径”,即客户端使用该用户名登录后,该路径即成为该用户名的根目录。如果这里出现的用户名在“[Account]”块下没有相应的帐号,则认为该用户为匿名用户。匿名用户仅能下载,不能上传。正常情况下,如果一个 ftp 允许匿名访问的话,应该提供 anonymous 和 ftp 这两个默认匿名用户,让这两个匿名用户的路径指向同一目录。

最后一部分是“[Language]”块,这里定义了 ftp 服务器返回给客户端的提示信息。这部分内容比较多,详细信息请参看下面给出的示范配置文件,并根据示范配置文件的格式进行修改。如果“[Language]”块不存在的话,系统会默认使用英文提示信息,不会出现运行错误。

下面是一个简单的 ftplite 示范配置文件,你可以在该配置文件的基础上修改,用作你自己的配置文件。

3 ftplite For Linux

由于 Linux 版本的 C 运行库版本较多,而且大部分情况下都是使用动态链接,因此滇狐不再提供 Linux 版的可执行文件,而是以源代码的形式提供。

ftplite 的源代码使用 Kittie.Concept 编译,如果你没有安装 Kittie.Concept 的话,请先安装一份,安装方式参看说明书。另外,ftplite 还依赖 etseqeuc,请下载相应的库并解压到同一目录下。

以上依赖关系都满足后,点击这里下载 ftplite 的源代码,将 ftplite 源代码解压到与 etseq 和 euc 相同的目录下,然后到 ftplite 所在目录下执行:

kittiemake CFG=Release

即可完成 ftplite 的编译。

ftplite 运行时默认会读取用户主目录($HOME)下的 .ftplite,如果你使用其它文件名作为配置文件的话,也可以通过:“ftplite <配置文件名>”的形式加载指定配置文件。

程序运行后可以通过按 Ctrl-C 的形式结束。如果使用“&”符号或运行后通过 Ctrl-Z 后“bg”使该程序后台运行,则可以通过向程序发送 INT 或 TERM 信号,使该程序结束运行:

killall -s INT ftplite

修改了配置文件后,向该程序发送 HUP 信号,即可通知程序重新加载配置文件,而无需杀死正在运行的服务器再重新开启:

killall -s HUP ftplite

4 ftplite For Windows

ftplite for Windows 下载后只需要直接解压,然后局部修改 ftplite.ini,然后双击 ftplite.exe 运行即可。ftplite 运行时默认会读取自身所在路径之下的 ftplite.ini,如果你使用其它文件名作为配置文件的话,可以将你的配置文件用鼠标拖放到 ftplite.exe 上放开,ftplite.exe 就会启动并加载你指定的配置文件。你也可以通过命令行的形式,使用:“ftplite.exe <配置文件名>”的形式加载指定配置文件。

如果在运行过程中修改了配置文件,可以在 ftplite 窗口中输入“reload”,回车后 ftplite 就会重新读入新的配置文件。当不需要再使用该程序时,输入“quit”按回车即可关闭。

点击这里可下载 ftplite for Windows 的可执行文件与示范配置文件。由于版权等多种原因所限,这里提供的可执行文件是使用 MinGW 编译的。如果你愿意的话,可以参看上一节的编译说明,下载 ftplite 的源代码后使用 Kittie.Concept 将 ftplite.kmk 转换为 vcproj 格式,在 ftplite 所在目录执行以下命令:

kittie ftplite.kmk ftplite.vcproj

即可得到 VC7 格式的工程文件,然后你可以用 VC7 重新编译一份新的 ftplite。据测试,VC7 版的可执行文件体积远小于 MinGW 版,即使是静态链接也不足 200 KB,而且执行速度也比 MinGW 版快得多。