麒麟开源堡垒机目前发布的代码共计分为五个模块,能够在码云下下载,这二天我看了应用发布部分的帐号同步代码,进行简单的分析以共参考。数据库
账号同步程序的作用是把数据库的帐户信息同步到发布机的本地帐户,它是一个后台的服务程序,监听一个端口,接收客户端的请求。
程序处理来自客户端的四种命令:函数
扫描全表,同步帐号;
添加指定的帐号;
禁用指定的帐号;
生成BHO配置文件;spa
其中扫描全表同步帐号最为复杂,须要同时考虑数据库中的帐号和本地的帐号;全部的同步基础以数据库中的帐号为准,若是数据库中有,可是本地没有,那就在本地自动新建帐号;若是数据库没有,可是本地没有,那就将本地的帐号禁用。具体的逻辑可参考代码。线程
代码主要分为AccounsSyncService、AccountManagement二部分,其中AccounsSyncService为监听服务部分,负责监听端口、接收命令和初始化数据库链接等,AccountManagement为后台操做命令,用于对本地账号的添加、删除等操做。图片
AccounsSyncService程序分析:
AccounsSyncService程序主要模块和函数列表以下:同步
Config文件夹,配置文件
AccountsSyncService.cs,帐号同步的主程序:
启动服务,开启一个线程,监听端口:StartService()、OnStart()、Listen()
接收帐号同步的命令,并执行帐号同步的四种操做:AccounsSync()
初始化数据库链接:InitializeTables()
建立BHO页面密码填充的配置文件:CreateBhoLoginXml()it
AccountManagement程序分析:
AccountManagement相对其它模块部分很是简单,只包括一个头文件和一个cpp程序,其中头文件为AccountManager.h,程序为件为AccountManager.cpp:包括添加帐号、删除帐号、添加组、删除组、禁用帐号、启用帐号、修改密码等操做class
根据上面的分析,能够将代码的模块分析图列出以下:后台