# jlftp-server **Repository Path**: F_Jyang/jlftp-server ## Basic Information - **Project Name**: jlftp-server - **Description**: 一个基于libevent的FTPs服务器 - **Primary Language**: Unknown - **License**: Unlicense - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-07-17 - **Last Updated**: 2025-09-05 ## Categories & Tags **Categories**: web-service **Tags**: None ## README # jlftp-server ## Introduce 这是一个使用基于libevent的TCPServer实现的简单FTPs服务器项目。 ## Features 版本2.0,支持的功能: - 传输参数:支持**被动模式**、二进制类型、stream模式传输、UTF8编码 - PASV - TYPE I - MODE STREAM - OPTS UTF8 ON - 用户管理:支持登录、退出、**显式加密**的功能 - USER username - PASS password - QUIT - PROT P - AUTH SSL - PBSZ 0 - 数据传输:支持**被动模式**下文件上传、下载、获取文件列表的功能 - STOR filename - RETR filename - LIST dirname - 文件操作:支持获取文件大小、文件删除、对文件进行重命名 - SIZE filename - DELE filename - REFR oldFilename - RETO newFilename - 目录操作:支持打印当前文件夹、文件夹的创建、删除,支持切换文件夹 - PWD - MKD dirname - RMD dirname - CWD dirname - CDUP ## Components ### src 包含以下文件: - `reply.h`:ftp响应码 - `util目录`:包含工具类 - `user目录`:用户管理、认证及权限管理 - `ftp_file`:处理文件操作,例如打开、读取、写入等 - `ftp_session`:ftp会话,处理具体的FTP指令 - `ftp_server`:处理客户端连接和消息,封装TCPServer,管理ftp会话 ### 3rd 包含第三方依赖库: - `fmt`:fmt库,用于格式化输出 - `inifile-cpp`:用于读取ini配置文件 - `tcpserver`:基于libevent封装的tcpserver,用于处理客户端连接和消息 ### resource 包含资源文件: - `user.ini`:用户配置文件,用于配置用户的根目录、权限等信息 - `server.ini`:服务器配置文件,用于配置服务器的监听地址、端口等信息 - `其他`:测试ssl的密钥等 ## How to build 1.拉取仓库、更新子模块 ```shell git clone git@gitee.com:F_Jyang/jlftp-server.git cd jlftp-server git submodule update --init ``` 2.CMake project ```shell cmake -B build cd build & cmake --build . ``` 如果支持OpenSSL加密,可以在cmake时添加以下参数 ```shell cmake -B build -DTCPSERVER_ENABLE_OPENSSL=ON -DJLFTP_ENABLE_OPENSSL=ON cd build & cmake --build . ``` 3.构建 project - Windows: open `build/jlftp` with vs - Linux: `make` 4.Run `jlftp/jlftp.exe`