Skip to content

Commit f31364d

Browse files
committed
添加FTP lib
1 parent 20929bc commit f31364d

File tree

7 files changed

+153
-0
lines changed

7 files changed

+153
-0
lines changed

libraries/Kconfig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,5 +337,12 @@ menu "External Libraries"
337337
select BSP_USING_LCD
338338
select RT_USING_CPLUSPLUS
339339
default n
340+
341+
config ART_PI_USING_FTP_LIB
342+
bool "Using FTP Library"
343+
select RT_USING_SAL
344+
select SAL_USING_POSIX
345+
select RT_USING_DFS
346+
default n
340347

341348
endmenu

libraries/ftp_lib/README.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# 如何使用
2+
3+
## 注意事项
4+
5+
- 目前只提供了gcc的静态库
6+
- 推荐使用RT-Thread Studio开发
7+
8+
## 快速上手
9+
10+
1. `#include "ftp.h"`
11+
2. `ftp_init(2048, 27, 100);`
12+
3. 默认端口21,默认用户名和密码都为 loogg
13+
14+
## API介绍
15+
16+
1. `ftp_get_max_session_num`
17+
获取最大客户端数量
18+
19+
2. `ftp_set_max_session_num`
20+
设置最大客户端数量
21+
22+
3. `ftp_get_session_username`
23+
获取客户端用户名
24+
25+
4. `ftp_set_session_username`
26+
设置客户端用户名
27+
28+
5. `ftp_get_session_password`
29+
获取客户端密码
30+
31+
6. `ftp_set_session_password`
32+
设置客户端密码
33+
34+
7. `ftp_get_session_welcome_msg`
35+
获取客户端欢迎词
36+
37+
8. `ftp_set_session_welcome_msg`
38+
设置客户端欢迎词
39+
40+
9. `ftp_session_force_quit`
41+
强制关闭所有客户端连接(异步)
42+
43+
10. `ftp_force_restart`
44+
强制重启服务器(异步)
45+
46+
11. `ftp_get_port`
47+
获取服务器监听端口
48+
49+
12. `ftp_set_port`
50+
设置服务器监听端口
51+
52+
13. `ftp_init`
53+
初始化ftp服务
54+
55+
## 动态设置参数
56+
57+
- 使用 `ftp_force_restart``ftp_session_force_quit`
58+
59+
## 联系方式 & 感谢
60+
61+
- 维护:malongwei
62+
- 主页:<https://github.com/loogg/ftp>
63+
- 邮箱:<[email protected]>

libraries/ftp_lib/SConscript

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
Import('rtconfig')
2+
from building import *
3+
4+
cwd = GetCurrentDir()
5+
src = []
6+
path = [cwd + '/inc']
7+
libs = []
8+
libpath = [cwd + '/libs']
9+
10+
if rtconfig.CROSS_TOOL == 'gcc':
11+
libs += ['FTP_gcc']
12+
13+
group = DefineGroup('FTP', src, depend = ['ART_PI_USING_FTP_LIB'], CPPPATH = path, LIBS = libs, LIBPATH = libpath)
14+
15+
Return('group')

libraries/ftp_lib/inc/ftp.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#ifndef __FTP_H
2+
#define __FTP_H
3+
#include <rtthread.h>
4+
5+
int ftp_get_max_session_num(void);
6+
int ftp_set_max_session_num(int num);
7+
const char *ftp_get_session_username(void);
8+
int ftp_set_session_username(const char *username);
9+
const char *ftp_get_session_password(void);
10+
int ftp_set_session_password(const char *password);
11+
const char *ftp_get_session_welcome_msg(void);
12+
int ftp_set_session_welcome_msg(const char *welcome_msg);
13+
int ftp_session_force_quit(void);
14+
15+
int ftp_force_restart(void);
16+
int ftp_get_port(void);
17+
int ftp_set_port(int port);
18+
int ftp_init(rt_uint32_t stack_size, rt_uint8_t priority, rt_uint32_t tick);
19+
20+
#endif
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#ifndef __FTP_SESSION_H
2+
#define __FTP_SESSION_H
3+
#include <rtthread.h>
4+
#include <rtdevice.h>
5+
#include <rthw.h>
6+
7+
enum ftp_session_state
8+
{
9+
FTP_SESSION_STATE_USER = 0,
10+
FTP_SESSION_STATE_PASSWD,
11+
FTP_SESSION_STATE_PROCESS
12+
};
13+
14+
struct ftp_session
15+
{
16+
int fd;
17+
int port_pasv_fd;
18+
int is_anonymous;
19+
int offset;
20+
struct sockaddr_in remote;
21+
enum ftp_session_state state;
22+
char currentdir[256];
23+
rt_uint8_t force_quit;
24+
rt_tick_t tick_timeout;
25+
rt_slist_t slist;
26+
};
27+
28+
29+
int ftp_session_create(int fd, struct sockaddr_in *addr, socklen_t addr_len);
30+
int ftp_session_force_quit(void);
31+
32+
#endif
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#ifndef __FTP_SESSION_CMD_H
2+
#define __FTP_SESSION_CMD_H
3+
#include <rtthread.h>
4+
#include <rtdevice.h>
5+
#include <rthw.h>
6+
#include "ftp_session.h"
7+
8+
struct ftp_session_cmd
9+
{
10+
char *cmd;
11+
int (*cmd_fn)(struct ftp_session *session, char *cmd, char *cmd_param);
12+
};
13+
14+
int ftp_session_cmd_process(struct ftp_session *session, char *cmd, char *cmd_param);
15+
16+
#endif
73.8 KB
Binary file not shown.

0 commit comments

Comments
 (0)