读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

1.前言

         FileZilla Server 是 Windows 下的一个开源 FTP 服务器,最近想要重温一下该开源 FTP 服务器的整体设计流程,因此重新下载了较新的源码版本。

        通常随着开源代码的不断更新,会添加越来越多的功能,代码也就越来越复杂。因此,为了快速上手并了解某个开源项目,应该从最低版本看起。但是,由于之前我已看过最低版本,大概已了解项目整体设计。所以,本次分析的代码版本选为 FileZilla_Server-0_9_60_2.exe 。可以到官网下载安装,在安装的时候选择安装源码。

        在安装 FileZilla Server 的过程中,可以将 FTP 服务器作为 Windows 服务运行在后台。

        安装完之后,可以看到服务器所在的文件夹包含以下文件,source 就包含了源码。

读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

        使用 Visual Studio 打开 source\FileZilla server.sln ,发现该解决方案包含两个项目,分别是:

            FileZilla Server:该项目具有 FTP 服务器功能,还有 Windows 服务安装功能;

            FileZilla Server Interface:该项目用于管理 FTP 服务器,包括 FTP 用户管理;

        本文主要分析 FileZilla Server 项目。


2.编译

        为了更好研究源代码,首先要保证源码能通过编译,尝试构建 FileZilla Server 项目,发现该项目依赖其他开源项目:

            libfilezilla

            openssl

            zlib

        下载这些项目,并配置好 FileZilla Server 项目的路径。头文件包含路径添加:

        读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

  库文件路径:

读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

此外还有某个文件,empty 函数漏了一对括号。加上之后通过编译,就可以开启服务器,并开始探索之旅。


3.总结

无论任何开源项目,都可以用这种方式去阅读。

首先,了解项目用途。本项目需要储备 FTP 协议,MFC,Windows 服务程序的知识。

然后,下载,编译源码。编译过程中要学会根据出错信息自主解决问题,而不是一味地“百度”。例如,以下出错信息,提示我们缺少头文件。

读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

经查,其实 libfilezilla 和 openssl 是另外的开源项目。下载并配置好项目路径即可。

读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

同理,以下出错提示缺少 zlib 项目:

读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

读懂源码系列-FileZilla Server 设计原则分析-编译篇(1)

根据出错信息自主解决问题,是区分小白和入门的重要依据。如果只会根据别人编译源码的教程,始终走不远,毕竟每个人的开发环境并不一样

最后,开始带着目的探究源代码。本次源码阅读任务,主要是探究 FTP 服务器的总体设计。