-
Notifications
You must be signed in to change notification settings - Fork 4
2 概要&详细设计
妖儿 edited this page May 7, 2019
·
14 revisions
系统分为3个部分,hook-客户端-服务器。
hook:劫持open和close,并通过消息队列去给客户端传递消息。
客户端:首先是消息队列,消息队列不是单方面的消息队列,如图:
每个hook都有一个私有的消息队列,cli通过ftok有一个公共的消息队列,这样传输消息更加稳定。 (但是因为一些原因,导致第一版的cli得轮询这个消息队列,在下一版应该改了)
对于应该劫持的文件:客户端劫持此文件,向服务器发消息,备份此文件,备份成功后,将原文件改为It is a secret,给hook发送继续操作。 对于不应该劫持的文件:客户端给hook发送继续操作。
服务器:备份和复原文件。
配置文件在:etc/file.conf
port表示客户端需要连接的服务器的端口。 addr表示服务器地址。 path表示你要监控的目录,目录请使用绝对路径。
我们以特殊的分隔符[\r\n]处理分包问题。 具体的包的格式:
- [Type] [Path] [Macaddr]\r\n
- [Filesize: size]\r\n
- \r\n
- Text
各个字段解释如下:
- Type字段有如下几种取值:
- SAVE 客户端请求备份
- GET 客户端请求服务端写回备份
- ERROR 服务端出错
- Path为相对当前监控目录的路径,以/开头
- Macaddr为客户端的mac地址
- Filesize字段表示传输的文件大小
- Text为传输的文件内容
一个包示例:
SAVE /foo.c 123.a.c\r\n
Filesize: 1024\r\n
\r\n
#include <stdio.h>
...
第一版只考虑了功能实现,还没有代码结构设计,之后完善。
版权所有 ©️ XiYouLinux Group
