Commit 8f00eec0 by 陶腾飞

2020/10/18 v1.9.0

parent e0c15c26
...@@ -4,3 +4,4 @@ exe/ ...@@ -4,3 +4,4 @@ exe/
*.bat *.bat
*.ps1 *.ps1
*.exe *.exe
.vscode/
\ No newline at end of file
...@@ -21,7 +21,7 @@ UI: ...@@ -21,7 +21,7 @@ UI:
3. 文件共享 3. 文件共享
### 2. 主控使用的Daemon.exe ### 2. 域控制器使用的Daemon.exe
运行方式: 运行方式:
`go run .\daemon.go` `go run .\daemon.go`
...@@ -38,6 +38,7 @@ UI: ...@@ -38,6 +38,7 @@ UI:
1. 定时操作 1. 定时操作
2. 汇报情况 2. 汇报情况
3. 强制备份 3. 强制备份
4. 主机唤醒
...@@ -52,8 +53,8 @@ UI: ...@@ -52,8 +53,8 @@ UI:
- 2020/06/17 v1.1.0 更新在注册表中用户状态记录和修正电源状态的记录 - 2020/06/17 v1.1.0 更新在注册表中用户状态记录和修正电源状态的记录
- 2020/06/19 v1.1.1 修复备的Bug - 2020/06/19 v1.1.1 修复备的Bug
- 2020/07/07 v1.1.2 优化备份策略 - 2020/07/07 v1.1.2 优化备份策略
- 2020/07/22 v1.3.1 修复文件共享打开失败问题,支持对非域用户的唤醒
- 2020/07/09 v1.2.0 更新批量打开工具 - 2020/07/09 v1.2.0 更新批量打开工具
- 2020/07/22 v1.3.1 修复文件共享打开失败问题,支持对非域用户的唤醒
- 2020/07/20 v1.3.0 升级备份,优化注册表值记录,启动企业微信知微运维平台 - 2020/07/20 v1.3.0 升级备份,优化注册表值记录,启动企业微信知微运维平台
- 2020/07/22 v1.3.1 修复文件共享打开失败问题,支持对非域用户的唤醒 - 2020/07/22 v1.3.1 修复文件共享打开失败问题,支持对非域用户的唤醒
- 2020/07/27 v1.4.0 更新图标显示/隐藏工具,优化exec消息处理逻辑,优化企业微信知微运维平台 - 2020/07/27 v1.4.0 更新图标显示/隐藏工具,优化exec消息处理逻辑,优化企业微信知微运维平台
...@@ -66,6 +67,8 @@ UI: ...@@ -66,6 +67,8 @@ UI:
- 2020/08/21 v1.8.0 合并企业微信推送,转型HTTP服务器,增加活动检测,用户备份升级 - 2020/08/21 v1.8.0 合并企业微信推送,转型HTTP服务器,增加活动检测,用户备份升级
- 2020/08/21 v1.8.1 解决无法处理收到的消息问题 - 2020/08/21 v1.8.1 解决无法处理收到的消息问题
- 2020/08/26 v1.8.2 解决因消息框未返回而出现的关机停止问题 - 2020/08/26 v1.8.2 解决因消息框未返回而出现的关机停止问题
- 2020/08/26 v1.8.4 解决个人共享读取失败的问题
- 2020/10/18 v1.9.0 修复双向备份文件Bug,针对704室主机唤醒做调整,增加远程唤醒功能
## 其他说明 ## 其他说明
......
...@@ -7,10 +7,6 @@ import ( ...@@ -7,10 +7,6 @@ import (
func initLog(){ func initLog(){
var logpath string var logpath string
// 作为主控启动
if pub.Adserver() {
logpath = pub.Dir_AD_log
} else {
// 作为PC启动 // 作为PC启动
if pub.RunAsPC(pub.User_computername){ if pub.RunAsPC(pub.User_computername){
logpath = `C:\windows\system32\` logpath = `C:\windows\system32\`
...@@ -18,7 +14,6 @@ func initLog(){ ...@@ -18,7 +14,6 @@ func initLog(){
}else{ }else{
logpath = pub.Dir_userprofile + `\` logpath = pub.Dir_userprofile + `\`
} }
}
pub.Loger = pub.NewLoger(logpath + "adct.log") pub.Loger = pub.NewLoger(logpath + "adct.log")
} }
...@@ -26,10 +21,9 @@ func main(){ ...@@ -26,10 +21,9 @@ func main(){
initLog() initLog()
var reportText = flag.String( pub.Msg_Report ,"" ,"report to AD") var reportText = flag.String( pub.Msg_Report ,"" ,"report to AD")
var execText = flag.String( pub.Msg_Exec ,"" ,"exec to LocalDaemon")
var passText = flag.String( "pass" ,"" ,"input passwork,but not need") var passText = flag.String( "pass" ,"" ,"input passwork,but not need")
var wolmacText = flag.String( "wolmac" ,"" ,"input mac address for wake pc") var wolmacText = flag.String( "wolmac" ,"" ,"input MACAddress for waking pc")
var woluserText = flag.String( "woluser" ,"" ,"input name for walk pc") var wolhostText = flag.String( "wolhost" ,"" ,"input hostname for waking pc")
var wolallText = flag.Bool( "wolall" ,false ,"wake all Domain Computer") var wolallText = flag.Bool( "wolall" ,false ,"wake all Domain Computer")
var hourText = flag.Bool( "hour" ,false ,"exec task at the time") var hourText = flag.Bool( "hour" ,false ,"exec task at the time")
...@@ -37,9 +31,8 @@ func main(){ ...@@ -37,9 +31,8 @@ func main(){
if *hourText { flag_hour( );return} if *hourText { flag_hour( );return}
if *reportText != "" { flag_report( reportText );return} if *reportText != "" { flag_report( reportText );return}
if *execText != "" { flag_exec( execText );return}
if *wolmacText != "" { flag_wolmac( wolmacText );return} if *wolmacText != "" { flag_wolmac( wolmacText );return}
if *woluserText != "" { flag_woluser( woluserText,passText);return} if *wolhostText != "" { flag_wolhost( wolhostText );return}
if *wolallText { flag_wolall( passText );return} if *wolallText { flag_wolall( passText );return}
return return
...@@ -49,9 +42,6 @@ func flag_report(s *string){ ...@@ -49,9 +42,6 @@ func flag_report(s *string){
pub.SendServerReport(*s) pub.SendServerReport(*s)
} }
func flag_exec(s * string){
pub.SendServerExec(*s)
}
func flag_hour(){ func flag_hour(){
nh := pub.GetHour() nh := pub.GetHour()
switch nh{ switch nh{
...@@ -62,51 +52,48 @@ func flag_hour(){ ...@@ -62,51 +52,48 @@ func flag_hour(){
} }
} }
func flag_wolmac(mac * string){ func flag_wolmac(mac * string){
if err := pub.Wol(*mac); err != nil{ //直接指定mac地址,不带主机名参数
pub.PntError(err) pub.Wol_enter("",mac)
} else {
pub.PntWol(*mac)
}
} }
func flag_woluser(user,pass * string){ func flag_wolhost(pc *string){
pcgroup := pub.Reg_query_item( mac := pub.Reg_query_key_one(
pub.Reg_Root_ac,
pub.Reg_Path_home_ac)
pub.PrintLog(pcgroup)
for _,pc := range pcgroup{
priuser:= pub.Reg_query_key_one(
pub.Reg_Root_ac, pub.Reg_Root_ac,
pub.Reg_Path_home_ac+pc, pub.Reg_Path_home_ac+*pc,
pub.Reg_Name_PrimaryUser)
if priuser == *user {
mac := pub.Reg_query_key_one(pub.Reg_Root_ac,
pub.Reg_Path_home_ac+pc,
pub.Reg_Name_MACaddress) pub.Reg_Name_MACaddress)
flag_wolmac(&mac) pub.PntInfof("pc:%s,mac:%s",*pc,mac)
pub.PntInfof("Primary User: %s,hostname:%s\n", *user,mac) pub.Wol_enter(*pc,&mac)
}
} //暂未开发
} }
func flag_wolall(pass * string){ func flag_wolall(pass * string){
pcgroup := pub.LDAP_Get_PCGroup(pass) pclist,err :=pub.Reg_query_list(pub.Reg_Root_ac,pub.Reg_Path_home_ac)
limit :=1 if err != nil{
for i,pc := range pcgroup{ pub.PntError(err)
}
//limit :=1
for _,pc := range pclist{
mac := pub.Reg_query_key_one( mac := pub.Reg_query_key_one(
pub.Reg_Root_ac, pub.Reg_Root_ac,
pub.Reg_Path_home_ac+pc, pub.Reg_Path_home_ac+pc,
pub.Reg_Name_MACaddress) pub.Reg_Name_MACaddress)
// 没有主机信息没有记录到注册表
if mac == ""{ if mac == ""{
pub.PntError(pc,"查找注册表失败") pub.PntError(pc,"查找注册表失败")
continue continue
}else{ }else{
if limit <= 10 { // 延时计数重置
pub.Delay(10) // if limit <= 10 {
limit=0 // pub.Delay(10)
} // limit=0
pub.PrintLog(i,pc,mac) // }
pub.RandDelay(10)
flag_wolmac(&mac) // 唤醒入口
limit +=1 pub.Wol_enter(pc,&mac)
// 随机延时
//pub.RandDelay(10)
//limit +=1
} }
} }
......
...@@ -7,8 +7,8 @@ import ( ...@@ -7,8 +7,8 @@ import (
func main() { func main() {
// 写入日志 // 在家目录中写入日志
pub.Loger = pub.NewLoger(pub.Dir_AD_log + `daemon.log`) pub.Loger = pub.NewLoger(pub.Dir_userprofile + `\daemon.log`)
pub.PrintLog("start daemon!") pub.PrintLog("start daemon!")
......
...@@ -3,10 +3,12 @@ package public ...@@ -3,10 +3,12 @@ package public
// AD-Control // // AD-Control //
const Host_adserver string = "ADSERVER" const Host_adserver string = "ADSERVER"
const ADServerDaemon string = Host_adserver + DaemonListen const Host_thserver string = "THSERVER"
const DaemonListen string = ":16823" const DaemonListen string = ":16823"
const Version string = "1.8.2" const ADServerDaemon string = Host_adserver + DaemonListen
const Bak_Version string = "0819" const THServerDaemon string = Host_thserver + DaemonListen
const Version string = "1.9.0"
const Bak_Version string = "1013"
var Active bool = true var Active bool = true
...@@ -18,7 +20,6 @@ var User_userdomain string = GetEnv("USERDOMAIN") ...@@ -18,7 +20,6 @@ var User_userdomain string = GetEnv("USERDOMAIN")
var User_name string = GetEnv("USERNAME") var User_name string = GetEnv("USERNAME")
var User_name_display string = GetEnvFqdn("CN") var User_name_display string = GetEnvFqdn("CN")
var User_dept string = GetEnv("DEPT") var User_dept string = GetEnv("DEPT")
var User_dept_desplay string = GetEnv("DEPTZH")
var User_sid string = Reg_query_key_one(HKCU,`Software\Microsoft\Windows\CurrentVersion\FileAssociations`,"UserSid") var User_sid string = Reg_query_key_one(HKCU,`Software\Microsoft\Windows\CurrentVersion\FileAssociations`,"UserSid")
var User_sessionID string = Reg_query_item_one(HKU,User_sid+`\Volatile Environment`) var User_sessionID string = Reg_query_item_one(HKU,User_sid+`\Volatile Environment`)
...@@ -48,8 +49,6 @@ const Dir_DCSave string = `D:\DomainUserBackupV2` ...@@ -48,8 +49,6 @@ const Dir_DCSave string = `D:\DomainUserBackupV2`
var Dir_WeDrive = [2] string {Dir_appdata + `\Tencent\WXWork\Data`,Dir_userprofile + `\Documents\WXWork`} var Dir_WeDrive = [2] string {Dir_appdata + `\Tencent\WXWork\Data`,Dir_userprofile + `\Documents\WXWork`}
var Dir_Be = []string {Dir_DocuBase} var Dir_Be = []string {Dir_DocuBase}
var Dir_Sync_Config string = Dir_appdata + `\Sync App Settings\_SYNCAPP\` var Dir_Sync_Config string = Dir_appdata + `\Sync App Settings\_SYNCAPP\`
var Dir_AD_log string = `H:\logs\`
// Local File // // Local File //
......
...@@ -14,6 +14,7 @@ var Error_Null_App_Sync = errors.New("Not Find Application AllWay Sync") ...@@ -14,6 +14,7 @@ var Error_Null_App_Sync = errors.New("Not Find Application AllWay Sync")
var Error_Null_File = errors.New("Not Find File") var Error_Null_File = errors.New("Not Find File")
var Error_Null_Folder = errors.New("Not File Folder") var Error_Null_Folder = errors.New("Not File Folder")
var Error_Null_Icon_File = errors.New("Not File Icon File") var Error_Null_Icon_File = errors.New("Not File Icon File")
var Error_Null_Reg_Query = errors.New("Not Found Reg Query Result")
var Error_Fail_File_Open = errors.New("Fail File Open") var Error_Fail_File_Open = errors.New("Fail File Open")
var Error_Fail_Token = errors.New("Get Token Fail") var Error_Fail_Token = errors.New("Get Token Fail")
......
...@@ -4,14 +4,13 @@ import ( ...@@ -4,14 +4,13 @@ import (
ldap "gopkg.in/ldap.v3" ldap "gopkg.in/ldap.v3"
) )
func LDAP_Get_PCGroup(pass * string) []string { func LDAP_Get_PCGroup() []string {
user := AD_User_zhiwei
l, err := ldap.DialURL("ldap://127.0.0.1:389") l, err := ldap.DialURL("ldap://127.0.0.1:389")
if err != nil { if err != nil {
PntError(err) PntError(err)
} }
defer l.Close() defer l.Close()
if err = l.Bind(user, *pass);err != nil { if err = l.Bind(AD_User_zhiwei, "1Q2W3e4r");err != nil {
PntError(err) PntError(err)
} }
searchRequest := ldap.NewSearchRequest( searchRequest := ldap.NewSearchRequest(
...@@ -35,3 +34,28 @@ func LDAP_Get_PCGroup(pass * string) []string { ...@@ -35,3 +34,28 @@ func LDAP_Get_PCGroup(pass * string) []string {
} }
return pcgroup return pcgroup
} }
func LDAP_nameTopinyin(name string) string{
l, err := ldap.DialURL("ldap://127.0.0.1:389")
if err != nil {
PntError(err)
}
defer l.Close()
if err = l.Bind(AD_User_zhiwei, "1Q2W3e4r");err != nil {
PntError(err)
}
searchRequest := ldap.NewSearchRequest(
//"ou=情报部门,dc=zhiweireach,dc=com",
"ou=情报部门,dc=zhiweireach,dc=com",
ldap.ScopeWholeSubtree,ldap.NeverDerefAliases, 0, 0, false,
"(cn="+name+")",
//"(&(objectClass=organizationalPerson))",
[]string{"sAMAccountName"},
nil,
)
sr, err := l.Search(searchRequest)
if err != nil {
PntError(err)
}
return sr.Entries[0].GetAttributeValue("sAMAccountName")
}
\ No newline at end of file
...@@ -51,6 +51,13 @@ func DealMsg(msgtype, url string, unmsg []byte) []byte { ...@@ -51,6 +51,13 @@ func DealMsg(msgtype, url string, unmsg []byte) []byte {
ice := pmsg.MsgDeal() ice := pmsg.MsgDeal()
ret = ReParseJson(&ice) ret = ReParseJson(&ice)
// 唤醒 消息
case Msg_Wake:
var pmsg MJwake
ParseJson(unmsg,&pmsg)
ice := pmsg.MsgDeal()
ret = ReParseJson(&ice)
// 错误 消息 // 错误 消息
case Msg_Error: case Msg_Error:
PntError(string(unmsg)) PntError(string(unmsg))
...@@ -105,7 +112,7 @@ func (rep *MJreport)MsgDeal() interface{} { ...@@ -105,7 +112,7 @@ func (rep *MJreport)MsgDeal() interface{} {
case Msg_Report_WillTurnOnPC: case Msg_Report_WillTurnOnPC:
// 如果是被开机唤醒o // 如果是被开机唤醒
id := rep.Reg_Query_ADDC(Reg_Name_BeWakedID) id := rep.Reg_Query_ADDC(Reg_Name_BeWakedID)
if id != ""{ if id != ""{
SendWxworkTextToAUser(id,"主机已启动,一切就绪~") SendWxworkTextToAUser(id,"主机已启动,一切就绪~")
...@@ -266,7 +273,7 @@ func (bak * MJbackup)MsgDeal() interface{}{ ...@@ -266,7 +273,7 @@ func (bak * MJbackup)MsgDeal() interface{}{
} }
SendMsg(bak.MsgType,bak) SendADMsg(bak.MsgType,bak)
return nil return nil
// 判断是否能进行备份 // 判断是否能进行备份
...@@ -287,6 +294,23 @@ func (bak * MJbackup)MsgDeal() interface{}{ ...@@ -287,6 +294,23 @@ func (bak * MJbackup)MsgDeal() interface{}{
// 关于 wake 唤醒 的 消息处理
func (wake * MJwake)MsgDeal() interface{}{
switch wake.Instruction {
case Msg_Wake_Status_Req:
wake.Instruction = Msg_Wake_Status_Over
go Wol_enter(wake.Computername,&wake.MACAddress)
return wake
case Msg_Wake_Status_Over:
return nil
}
return nil
}
// 关于 error 错误 的 消息处理 // 关于 error 错误 的 消息处理
func (err * MJerror)MsgDeal() interface{}{ func (err * MJerror)MsgDeal() interface{}{
...@@ -296,6 +320,7 @@ func (err * MJerror)MsgDeal() interface{}{ ...@@ -296,6 +320,7 @@ func (err * MJerror)MsgDeal() interface{}{
// 关于 wxwork 企业微信 的 消息处理 // 关于 wxwork 企业微信 的 消息处理
func (wxwork * MJwxwork)MsgDealSend() { func (wxwork * MJwxwork)MsgDealSend() {
...@@ -344,7 +369,7 @@ func (wxwork * MJwxwork)MsgDealSend() { ...@@ -344,7 +369,7 @@ func (wxwork * MJwxwork)MsgDealSend() {
} }
// 进行唤醒 // 进行唤醒
go Wol(mac) go Wol_enter(pc,&mac)
go func(userid string){ go func(userid string){
for i:=0;i<10;i++{ for i:=0;i<10;i++{
......
...@@ -15,7 +15,7 @@ const Msg_Exec string = "exec" ...@@ -15,7 +15,7 @@ const Msg_Exec string = "exec"
const Msg_Backup string = "backup" const Msg_Backup string = "backup"
const Msg_Error string = "error" const Msg_Error string = "error"
const Msg_Wxwork string = "wxwork" const Msg_Wxwork string = "wxwork"
const Msg_Wake string = "wake"
// base word //////////////////////////////////////////////////////////////// // base word ////////////////////////////////////////////////////////////////
...@@ -81,6 +81,9 @@ const Msg_Exec_OpenAdminEXE string = "OpenAdmin" ...@@ -81,6 +81,9 @@ const Msg_Exec_OpenAdminEXE string = "OpenAdmin"
// msg wkae type ////////////////////////////////////////////////////////////////
const Msg_Wake_Status_Req string = "WakeReq"
const Msg_Wake_Status_Over string = "WakeOver"
// wxwork event key //////////////////////////////////////////////////////////////// // wxwork event key ////////////////////////////////////////////////////////////////
const WXEK_zwDevopsPowerWake string = "zwdevops_power_wake" const WXEK_zwDevopsPowerWake string = "zwdevops_power_wake"
...@@ -109,7 +112,6 @@ type MJbase struct{ ...@@ -109,7 +112,6 @@ type MJbase struct{
Explain string `json:"explain"` Explain string `json:"explain"`
Username string `json:"username"` Username string `json:"username"`
Computername string `json:"computername"` Computername string `json:"computername"`
Dept string `json:"dept"`
Timestamp int64 `json:"timestamp"` Timestamp int64 `json:"timestamp"`
DataBool bool `json:"databool"` DataBool bool `json:"databool"`
DataStr string `json:"datastr"` DataStr string `json:"datastr"`
...@@ -134,10 +136,16 @@ type MJbackup struct{ ...@@ -134,10 +136,16 @@ type MJbackup struct{
MJbase MJbase
Version string `json:"version"` Version string `json:"version"`
} }
// wake Json Format /////////////////////////////////////////////////////
type MJwake struct {
MJbase
MACAddress string
}
// error Json Format ///////////////////////////////////////////////////// // error Json Format /////////////////////////////////////////////////////
type MJerror struct{ type MJerror struct{
MJbase MJbase
} }
// wxwork Json Format /////////////////////////////////////////////////////
type MJwxwork struct { type MJwxwork struct {
Instruction string Instruction string
UserID string UserID string
...@@ -214,7 +222,6 @@ func GJexecDIYFlag(flag,command string) MJexec{ ...@@ -214,7 +222,6 @@ func GJexecDIYFlag(flag,command string) MJexec{
} }
func (exec * MJexec)Init(s string){ func (exec * MJexec)Init(s string){
exec.Dept = User_dept
exec.Username = User_name exec.Username = User_name
exec.Computername = User_computername exec.Computername = User_computername
exec.Timestamp = NowTimestamp() exec.Timestamp = NowTimestamp()
...@@ -230,7 +237,6 @@ func (exec * MJexec)PsExec(){ ...@@ -230,7 +237,6 @@ func (exec * MJexec)PsExec(){
// Backup // Backup
func GJbackup()interface{}{ func GJbackup()interface{}{
...@@ -247,6 +253,20 @@ func (bak * MJbackup)init() { ...@@ -247,6 +253,20 @@ func (bak * MJbackup)init() {
// wake
func GJwake(host,mac string) interface{} {
var wake MJwake
wake.MsgType = Msg_Wake
wake.Instruction = Msg_Wake_Status_Req
wake.Computername = host
wake.MACAddress = mac
return wake
}
// error // error
func GJerror(e error)interface{}{ func GJerror(e error)interface{}{
...@@ -256,7 +276,6 @@ func GJerror(e error)interface{}{ ...@@ -256,7 +276,6 @@ func GJerror(e error)interface{}{
} }
func (err * MJerror)init (e error){ func (err * MJerror)init (e error){
err.Username = User_name err.Username = User_name
err.Dept = User_dept
err.Timestamp = NowTimestamp() err.Timestamp = NowTimestamp()
err.Computername = User_computername err.Computername = User_computername
err.MsgType = Msg_Error err.MsgType = Msg_Error
...@@ -264,6 +283,7 @@ func (err * MJerror)init (e error){ ...@@ -264,6 +283,7 @@ func (err * MJerror)init (e error){
} }
// wxwork // wxwork
func (wxwork * MJwxwork)SendText(text string) { func (wxwork * MJwxwork)SendText(text string) {
......
...@@ -72,6 +72,10 @@ func PntWol(v ...interface{}){ ...@@ -72,6 +72,10 @@ func PntWol(v ...interface{}){
Loger.SetPrefix("WOL ") Loger.SetPrefix("WOL ")
Loger.Println(v ...) Loger.Println(v ...)
} }
func PntWolRemote(v ...interface{}){
Loger.SetPrefix("WOLREMOTE ")
Loger.Println(v ...)
}
func PntSend(v ...interface{}){ func PntSend(v ...interface{}){
Loger.SetPrefix("Send ") Loger.SetPrefix("Send ")
Loger.Println(v ...) Loger.Println(v ...)
......
...@@ -27,7 +27,6 @@ func ReParseJson(v * interface{}) []byte{ ...@@ -27,7 +27,6 @@ func ReParseJson(v * interface{}) []byte{
textbyte,err := json.Marshal(*v) textbyte,err := json.Marshal(*v)
if err !=nil { if err !=nil {
PntError("Json to byte Error ",v,err) PntError("Json to byte Error ",v,err)
} }
return textbyte return textbyte
} }
......
...@@ -10,27 +10,31 @@ import ( ...@@ -10,27 +10,31 @@ import (
func SendServerReport(s string) { func SendServerReport(s string) {
SendMsg(Msg_Report,GJreport(s)) SendADMsg(Msg_Report,GJreport(s))
} }
func SendServerExec(s string) { func SendServerExec(v interface{}) {
SendMsg(Msg_Exec,GJexec(s)) SendADMsg(Msg_Exec,v)
}
func SendServerExecJ(v interface{}) {
SendMsg(Msg_Exec,v)
} }
func SendServerError(err error) { func SendServerError(err error) {
SendMsg(Msg_Error,GJerror(err)) SendADMsg(Msg_Error,GJerror(err))
} }
// base // base server msg
func SendMsg(msgtype string ,v interface{}) { func SendADMsg(msgtype string ,v interface{}){
SendMsg(ADServerDaemon,msgtype,v)
}
func SendTHMsg(msgtype string ,v interface{}){
SendMsg(THServerDaemon,msgtype,v)
}
// base msg
func SendMsg(server,msgtype string ,v interface{}) {
//将结构体 转化成 byte //将结构体 转化成 byte
textbyte,err := json.Marshal(v) textbyte,err := json.Marshal(v)
if err !=nil { if err !=nil {
PntError("Json to String Error ",v,err) PntError("Json to String Error ",v,err)
} }
link := fmt.Sprintf("http://%s/%s",ADServerDaemon,msgtype) link := fmt.Sprintf("http://%s/%s",server,msgtype)
PntSend(link,string(textbyte)) PntSend(link,string(textbyte))
//发送数据 //发送数据
......
...@@ -78,3 +78,16 @@ func Adserver() bool{ ...@@ -78,3 +78,16 @@ func Adserver() bool{
if Host_adserver == User_computername {return true} if Host_adserver == User_computername {return true}
return false return false
} }
func BeSecNetwork(hostname * string) bool{
//自动转大写
*hostname = strings.ToUpper(*hostname)
//京东和HB组报告研究中心组,是第二个网络
if strings.HasPrefix(*hostname,"HB") || strings.HasPrefix(*hostname,"JD") || strings.HasPrefix(*hostname,"BGYJZX"){
return true
}
return false
}
\ No newline at end of file
...@@ -179,6 +179,9 @@ func PSTest_Connection(host string) (bool,error) { ...@@ -179,6 +179,9 @@ func PSTest_Connection(host string) (bool,error) {
return false,nil return false,nil
} }
} }
// //
// //
// local // local
...@@ -196,6 +199,7 @@ func OpenWindow(s string){ ...@@ -196,6 +199,7 @@ func OpenWindow(s string){
} }
// //
// //
// remote exec // remote exec
...@@ -223,6 +227,9 @@ func Pskill(pc ,cmd string) { ...@@ -223,6 +227,9 @@ func Pskill(pc ,cmd string) {
Execcmd_nowait(psExecCommand) Execcmd_nowait(psExecCommand)
} }
// //
// //
// msg show // msg show
...@@ -280,6 +287,18 @@ func Reg_query_item_one(root int ,path string) string { ...@@ -280,6 +287,18 @@ func Reg_query_item_one(root int ,path string) string {
return "" return ""
} }
} }
func Reg_query_list(root int ,path string) ([]string,error) {
if k, kerr := registry.OpenKey(reg_prase(&root),path, registry.READ);kerr==nil{
defer k.Close()
if sk,err := k.ReadSubKeyNames(0); err ==nil{
return sk,nil
} else{
return nil,Error_Null_Reg_Query
}
} else {
return nil,Error_Null_Reg_Query
}
}
func Reg_IfExist_item(root int ,path string) error { func Reg_IfExist_item(root int ,path string) error {
k,err := registry.OpenKey(reg_prase(&root),path, registry.READ) k,err := registry.OpenKey(reg_prase(&root),path, registry.READ)
defer k.Close() defer k.Close()
......
...@@ -15,9 +15,23 @@ import ( ...@@ -15,9 +15,23 @@ import (
// 网络唤醒魔包技术白皮书地址 // 网络唤醒魔包技术白皮书地址
// https://www.amd.com/system/files/TechDocs/20213.pdf // https://www.amd.com/system/files/TechDocs/20213.pdf
func Wol(mac string) error{
//nic := ""
func Wol_enter(pc string,mac *string ){
// 如果是704,且只有主控进行唤醒操作
if BeSecNetwork(&pc) && Adserver(){
SendTHMsg(Msg_Wake,GJwake(pc,*mac))
// 否则本地直接唤醒(用于辅控在其他的网络唤醒)
// 如果测试其他网络的滑行情况,需要注释else代码块
}else {
PntWol(pc,*mac)
if err := wol(*mac); err != nil{
PntError(err)
}
}
}
func wol(mac string) error{
hw := strings.Replace(strings.Replace(mac, ":", "", -1), "-", "", -1) hw := strings.Replace(strings.Replace(mac, ":", "", -1), "-", "", -1)
if len(hw) != 12 { if len(hw) != 12 {
......
...@@ -3,7 +3,7 @@ import ( ...@@ -3,7 +3,7 @@ import (
"github.com/lxn/walk" "github.com/lxn/walk"
. "github.com/lxn/walk/declarative" . "github.com/lxn/walk/declarative"
"strings" "strings"
pub "AD-Control/public" pub "AD-Control-Golang/public"
) )
const ( const (
...@@ -124,7 +124,7 @@ func menuInitSoftwareInstall(ni * walk.NotifyIcon){ ...@@ -124,7 +124,7 @@ func menuInitSoftwareInstall(ni * walk.NotifyIcon){
func siEnter_admin(softname string){ func siEnter_admin(softname string){
go pub.Msg("等待弹出安装窗口,请稍等。。") go pub.Msg("等待弹出安装窗口,请稍等。。")
ifFile := pub.Exist(`C:\windows\`+softname) ifFile := pub.Exist(`C:\windows\`+softname)
pub.SendServerExecJ(pub.GJexecInstallSoftware(ifFile,softname)) pub.SendServerExec(pub.GJexecInstallSoftware(ifFile,softname))
} }
...@@ -138,7 +138,7 @@ func siEnter_admin(softname string){ ...@@ -138,7 +138,7 @@ func siEnter_admin(softname string){
func menuInitTools(ni * walk.NotifyIcon){ func menuInitTools(ni * walk.NotifyIcon){
fa := "工具集合" fa := "工具集合"
sub := [...]string{"Excel关键词分割","备份用户文件","优雅批量打开网页","隐藏/显示桌面图标","更新手机代理程序","PDF转换"} sub := [...]string{"Excel关键词分割","备份用户文件","优雅批量打开网页","隐藏/显示桌面图标","更新手机代理程序","PDF转换","窗口拦截"}
// 建立空菜单 // 建立空菜单
nm,err := walk.NewMenu() nm,err := walk.NewMenu()
if err != nil { if err != nil {
...@@ -173,6 +173,8 @@ func menuInitTools(ni * walk.NotifyIcon){ ...@@ -173,6 +173,8 @@ func menuInitTools(ni * walk.NotifyIcon){
na.Triggered().Attach(tUpdateATool) na.Triggered().Attach(tUpdateATool)
case 5: case 5:
na.Triggered().Attach(tPdfTrans) na.Triggered().Attach(tPdfTrans)
case 6:
na.Triggered().Attach(tWindowsBlock)
} }
// 将 子按钮 添加到 菜单 // 将 子按钮 添加到 菜单
...@@ -260,7 +262,7 @@ func tBakcupUser(){ ...@@ -260,7 +262,7 @@ func tBakcupUser(){
pub.SendServerReport(pub.Msg_Report_InitBak) pub.SendServerReport(pub.Msg_Report_InitBak)
} }
} }
// 其他工具 备份用户文件 // 其他工具 Pdf转换
func tPdfTrans(){ func tPdfTrans(){
AcrobatDC := `C:\Application\AcrobatDC\AcrobatDCPortable.exe` AcrobatDC := `C:\Application\AcrobatDC\AcrobatDCPortable.exe`
if pub.NotExist(AcrobatDC){ if pub.NotExist(AcrobatDC){
...@@ -268,7 +270,7 @@ func tPdfTrans(){ ...@@ -268,7 +270,7 @@ func tPdfTrans(){
return return
} }
go pub.Msg(`Acrobat DC正在打开`) go pub.Msg(`Acrobat DC正在打开`)
pub.SendServerExecJ(pub.GJexecDIYFlag(pub.Msg_Exec_OpenAdminEXE,AcrobatDC)) pub.SendServerExec(pub.GJexecDIYFlag(pub.Msg_Exec_OpenAdminEXE,AcrobatDC))
return return
} }
...@@ -306,7 +308,17 @@ func tHideShowIcon(){ ...@@ -306,7 +308,17 @@ func tHideShowIcon(){
} }
} }
// 其他工具 火绒窗口拦截工具
func tWindowsBlock(){
PopBlock := `C:\Progra~2\zhiwei\huorong_windows_block\PopBlock.exe`
if pub.NotExist(PopBlock){
go pub.Msg(`火绒窗口拦截工具没有安装,请先从小工具中"软件安装"中进行安装`)
return
}
pub.SendServerExec(pub.GJexecDIYFlag(pub.Msg_Exec_OpenAdminEXE,PopBlock))
return
}
//--------------------------------------------------------------- //---------------------------------------------------------------
// //
// File share // File share
...@@ -317,7 +329,7 @@ func tHideShowIcon(){ ...@@ -317,7 +329,7 @@ func tHideShowIcon(){
func menuInitFileShares(ni * walk.NotifyIcon){ func menuInitFileShares(ni * walk.NotifyIcon){
fa := "文件共享" fa := "文件共享"
// // 建立空菜单 // 建立空菜单
mfs,err := walk.NewMenu() mfs,err := walk.NewMenu()
if err != nil { if err != nil {
pub.PntError(err) pub.PntError(err)
...@@ -337,7 +349,7 @@ func menuInitFileShares(ni * walk.NotifyIcon){ ...@@ -337,7 +349,7 @@ func menuInitFileShares(ni * walk.NotifyIcon){
} }
deptshare := memberList.Name() deptshare := memberList.Name()
// 不在 其他共享 里 显示自己部门的共享 // 不在 其他共享 里 显示自己部门的共享
if deptshare == pub.User_dept_desplay{ if deptshare == pub.User_dept{
continue continue
} }
if deptshare == "DfsrPrivate"{ if deptshare == "DfsrPrivate"{
...@@ -483,7 +495,7 @@ func (mw *MyMainWindow) tHideShowIconDeal() { ...@@ -483,7 +495,7 @@ func (mw *MyMainWindow) tHideShowIconDeal() {
exec.Explain = "显示" exec.Explain = "显示"
exec.DataBool = true exec.DataBool = true
} }
pub.SendServerExecJ(exec) pub.SendServerExec(exec)
} }
......
...@@ -14,9 +14,6 @@ import ( ...@@ -14,9 +14,6 @@ import (
pub "AD-Control-Golang/public" pub "AD-Control-Golang/public"
) )
var baseDay,baseHour = pub.GetDateHour()
var baseX,baseY = GetMousePos()
func GetMousePos() (int,int) { func GetMousePos() (int,int) {
C.getMouse() C.getMouse()
x :=int(C.point.x) x :=int(C.point.x)
...@@ -56,6 +53,9 @@ func menuInit(ni * walk.NotifyIcon){ ...@@ -56,6 +53,9 @@ func menuInit(ni * walk.NotifyIcon){
func isActive(){ func isActive(){
for { for {
d,h := pub.GetDateHour() d,h := pub.GetDateHour()
ox,oy := GetMousePos()
pub.Delay(3602)
// 新的一天 // 新的一天
if d == 9 { if d == 9 {
...@@ -67,12 +67,11 @@ func isActive(){ ...@@ -67,12 +67,11 @@ func isActive(){
x,y := GetMousePos() x,y := GetMousePos()
// 如果处于闲置状态 // 如果处于闲置状态
if baseX == x && baseY == y && pub.IsPrimaryUser(pub.User_name){ if ox == x && oy == y {
pub.MsgShutdown("即将关机,如需取消,点击小工具-电源选项-取消关机计时") pub.MsgShutdown("即将关机,如需取消,点击小工具-电源选项-取消关机计时")
} }
} }
pub.Delay(3602)
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment