Skip to content

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
Clone this wiki locally