-
Notifications
You must be signed in to change notification settings - Fork 4
2 概要&详细设计
mayicheng edited this page May 31, 2019
·
14 revisions
该文件管控系统分为3个部分,hook(劫持部分)-客户端-服务器。
hook:劫持open和close系统调用,并通过unix域套接字给客户端传递消息。
客户端:使用unix域和hook进行通信(这是为了统一事件源)
对于应该劫持的文件:客户端劫持此文件,向服务器发消息,备份此文件,备份成功后,将原文件改为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 客户端请求服务端写回备份
- Path为获取或请求文件的绝对路径
- Macaddr为客户端的mac地址
- filesize字段表示传输的文件大小
- Text为传输的文件内容
服务端响应码:
- 100 备份成功
- 200 备份出错
- 300 取备份成功
- 400 取备份出错
一次服务通常包含两次交互过程:
客户端请求:
SAVE Path Macaddr\r\n
filesize: size\r\n
\r\n
Text
服务端响应:
SAVE STATUS\r\n
\r\n
客户端请求:
GET Path Macaddr\r\n
\r\n
服务端响应
GET STATUS Path\r\n
filesize: size\r\n
\r\n
Text
版权所有 ©️ XiYouLinux Group