deskvideosys 办公行为管理软件服务器端使用的是 B/S 架构,采用 golang+vue 框架来编程,agent 端直接使用的是 vc++编程框架,然后通过tcp协议连接服务器端,所以deskvideosys架构 可以作为终端安全管理,上网行为管理,数据防泄漏等产品的基本框架,目前开源代码己经打通了 agent 端与 服务器端的通信,可以在此架构上直接添加代码就可完成二次开发,下图是架构图:
从架构图上能看出,服务端端运行一个 web 服务与一个后端管理服务,Agent 端运行着 Agent 服务,后端管理服务可以接受多个agent服务的连接,
Agent 服务收集终端的数据并管控终端, web 服务主要提供前端展示功能和后端管理服务的通信,后端管理服务采用插件制,主要负责对收集过来数据的清洗与分析,把分析好的数据向 web 端展示,控制前端的命令信息分发给agent 端,
下面大家可以看下web服务的框架代码:
func main() {
flag.StringVar(&utils.FlagVarConfFile, "config", "", "configure file path")
flag.Parse()
tail := flag.Args()
log.SetPrefix("[DeskVideosys] ")
log.SetFlags(log.Lshortfile | log.LstdFlags)
log.Printf("git commit code:%s", gitCommitCode)
log.Printf("build date:%s", buildDateTime)
routers.BuildVersion = fmt.Sprintf("%s.%s", routers.BuildVersion, gitCommitCode)
routers.BuildDateTime = buildDateTime
sec := utils.Conf().Section("service")
svcConfig := &service.Config{
Name: sec.Key("name").MustString("DeskVideosys_Service"),
DisplayName: sec.Key("display_name").MustString("DeskVideosys_Service"),
Description: sec.Key("description").MustString("DeskVideosys_Service"),
}
httpPort := utils.Conf().Section("http").Key("port").MustInt(10008)
p := &program{
httpPort: httpPort,
}
s, err := service.New(p, svcConfig)
if err != nil {
log.Println(err)
utils.PauseExit()
}