2021SC@SDUSC
项目结构

- seafile-server:seafile的服务端核心。
- seahub:seafile的Web前台,使用Django框架开发。
- seafdav:seafile的WebDav服务。
- seafevents:用于处理周期事件(包括建索引、杀毒、自动删除等)。
- seafes:ElasticSearch与seafile结合,对文件内容建立全文索引。
- seafobj:用于访问seafile数据模型。
分工
我负责seafile-server的分析。以下是我对seafile-server项目的结构分析:
Seafile-Server结构

以下内容为编译相关
-
autogen.sh 用于自动生成makefile、configure的脚本。 完整的工具链详见Wiki - GNU Autotools,流程图如下:  -
configure.ac 编译配置。 可以从中看到编译该项目所需的全部Makefile.am,进而确认哪些目录中的源代码需要被编译。 -
Makefile.am 编译规则。 该文件与configure.ac结合生成Makefile.in。在随后的过程中通过一系列步骤生成Makefile。 可以从中看到编译某部分内容所需要的所有源代码,以及该部分源代码的类型(库文件、头文件、源文件等)。 -
与autoconf有关。
以下内容为开源相关
以下内容为客户端源代码
以下内容为C语言实现的服务端源代码
-
库文件。 -
头文件。 -
通用源文件。 -
C实现的用户空间文件系统(Filesystem in Userspace)。 -
C实现的服务端核心。分为Seaf API(RPC协议)和Http API(Http协议)。 其中Seaf API用于向Seahub提供文件访问服务,Http API用于向桌面客户端提供文件同步服务。
以下内容为Go实现的服务端源代码
以下内容为测试脚本
由上述结构分析可见,seafile-server的核心代码主要在服务端核心这一部分,即lib ,include ,common ,fuse ,server 以及fileserver 中。此后我将重点分析C语言实现的服务端源代码,即lib ,include ,common ,fuse ,server 中的内容。
|