Commit 654776f7 by 陶腾飞

2022/07/22 v2.6.0

parent c29b95e2
...@@ -104,8 +104,9 @@ ...@@ -104,8 +104,9 @@
- 2022/04/29 v2.5.5 ci工具 自我升级 - 2022/04/29 v2.5.5 ci工具 自我升级
- 2022/05/26 v2.5.6 更新主要计算机功能bug修复 - 2022/05/26 v2.5.6 更新主要计算机功能bug修复
- 2022/06/14 v2.5.7 更新日志输出、删除情报一二三部 - 2022/06/14 v2.5.7 更新日志输出、删除情报一二三部
- 2022/07/6 v2.5.8 增加抖音组,解决walk的反射问题,优化软件安装的下载速度 - 2022/07/06 v2.5.8 增加抖音组,解决walk的反射问题,优化软件安装的下载速度
- 2022/07/7 v2.5.9 隐藏下载软件的窗口, - 2022/07/07 v2.5.9 隐藏下载软件的窗口
- 2022/07/22 v2.6.0 使用企业微信作为注册个人账号的验证方式
## 四、其他说明 ## 四、其他说明
......
package main package main
import ( import (
pub "git.zhiweidata.top/taotengfei/AD-Control-Golang/public" "log"
"encoding/json" "encoding/json"
"flag" "flag"
"fmt" "fmt"
"os" "os"
"strings" "strings"
pub "git.zhiweidata.top/taotengfei/AD-Control-Golang/public"
. "github.com/lxn/walk/declarative"
) )
const INFO = pub.INFO const INFO = pub.INFO
...@@ -66,7 +69,10 @@ func main() { ...@@ -66,7 +69,10 @@ func main() {
} else if *wolPartText != "" { } else if *wolPartText != "" {
pub.DomainCotroller() pub.DomainCotroller()
wolPart(*wolPartText) wolPart(*wolPartText)
} else {
gui()
} }
} }
func loglevelSet(l string) { func loglevelSet(l string) {
switch l { switch l {
...@@ -157,3 +163,22 @@ func wolALL() { ...@@ -157,3 +163,22 @@ func wolALL() {
func wolPart(p string) { func wolPart(p string) {
pub.SendADMsg(pub.Msg_Wake, pub.GJwakeList(p)) pub.SendADMsg(pub.Msg_Wake, pub.GJwakeList(p))
} }
func gui() {
if _, err := (MainWindow{
Title: "软件安装",
MinSize: Size{Width: 150, Height: 100},
Size: Size{Width: 150, Height: 100},
Layout: VBox{MarginsZero: true}, // 请勿删除
Children: []Widget{
PushButton{
Text: "初始化域计算机",
OnClicked: guiInitDC,
},
},
}.Run()); err != nil {
log.Fatal(err)
}
}
func guiInitDC() {
}
module adct module adct
go 1.18 go 1.17
require git.zhiweidata.top/taotengfei/AD-Control-Golang/public v0.0.0
replace git.zhiweidata.top/taotengfei/AD-Control-Golang/public v0.0.0 => ..\public replace git.zhiweidata.top/taotengfei/AD-Control-Golang/public v0.0.0 => ..\public
require ( require (
git.zhiweidata.top/taotengfei/AD-Control-Golang/public v0.0.0
github.com/lxn/walk v0.0.0-20210112085537-c389da54e794
)
require (
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e // indirect github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e // indirect
github.com/go-asn1-ber/asn1-ber v1.5.3 // indirect github.com/go-asn1-ber/asn1-ber v1.5.3 // indirect
github.com/go-ldap/ldap/v3 v3.4.2 // indirect github.com/go-ldap/ldap/v3 v3.4.2 // indirect
github.com/gookit/color v1.5.0 // indirect github.com/gookit/color v1.5.0 // indirect
github.com/lxn/win v0.0.0-20210218163916-a377121e959e // indirect
github.com/mozillazg/go-pinyin v0.19.0 // indirect github.com/mozillazg/go-pinyin v0.19.0 // indirect
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 // indirect golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 // indirect
golang.org/x/text v0.3.7 // indirect golang.org/x/text v0.3.7 // indirect
gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect
) )
github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e h1:ZU22z/2YRFLyf/P4ZwUYSdNCWsMEI0VeyrFoI2rAhJQ= github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e h1:ZU22z/2YRFLyf/P4ZwUYSdNCWsMEI0VeyrFoI2rAhJQ=
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
...@@ -10,6 +12,10 @@ github.com/go-ldap/ldap/v3 v3.4.2 h1:zFZKcXKLqZpFMrMQGHeHWKXbDTdNCmhGY9AK41zPh+8 ...@@ -10,6 +12,10 @@ github.com/go-ldap/ldap/v3 v3.4.2 h1:zFZKcXKLqZpFMrMQGHeHWKXbDTdNCmhGY9AK41zPh+8
github.com/go-ldap/ldap/v3 v3.4.2/go.mod h1:iYS1MdmrmceOJ1QOTnRXrIs7i3kloqtmGQjRvjKpyMg= github.com/go-ldap/ldap/v3 v3.4.2/go.mod h1:iYS1MdmrmceOJ1QOTnRXrIs7i3kloqtmGQjRvjKpyMg=
github.com/gookit/color v1.5.0 h1:1Opow3+BWDwqor78DcJkJCIwnkviFi+rrOANki9BUFw= github.com/gookit/color v1.5.0 h1:1Opow3+BWDwqor78DcJkJCIwnkviFi+rrOANki9BUFw=
github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo= github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo=
github.com/lxn/walk v0.0.0-20210112085537-c389da54e794 h1:NVRJ0Uy0SOFcXSKLsS65OmI1sgCCfiDUPj+cwnH7GZw=
github.com/lxn/walk v0.0.0-20210112085537-c389da54e794/go.mod h1:E23UucZGqpuUANJooIbHWCufXvOcT6E7Stq81gU+CSQ=
github.com/lxn/win v0.0.0-20210218163916-a377121e959e h1:H+t6A/QJMbhCSEH5rAuRxh+CtW96g0Or0Fxa9IKr4uc=
github.com/lxn/win v0.0.0-20210218163916-a377121e959e/go.mod h1:KxxjdtRkfNoYDCUP5ryK7XJJNTnpC8atvtmTheChOtk=
github.com/mozillazg/go-pinyin v0.19.0 h1:p+J8/kjJ558KPvVGYLvqBhxf8jbZA2exSLCs2uUVN8c= github.com/mozillazg/go-pinyin v0.19.0 h1:p+J8/kjJ558KPvVGYLvqBhxf8jbZA2exSLCs2uUVN8c=
github.com/mozillazg/go-pinyin v0.19.0/go.mod h1:iR4EnMMRXkfpFVV5FMi4FNB6wGq9NV6uDWbUuPhP4Yc= github.com/mozillazg/go-pinyin v0.19.0/go.mod h1:iR4EnMMRXkfpFVV5FMi4FNB6wGq9NV6uDWbUuPhP4Yc=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
...@@ -24,14 +30,25 @@ golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPh ...@@ -24,14 +30,25 @@ golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o=
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 h1:PgUUmg0gNMIPY2WafhL/oLyQGw+kdTNPlVWOjltpp3w= golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 h1:PgUUmg0gNMIPY2WafhL/oLyQGw+kdTNPlVWOjltpp3w=
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc=
gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<asmv1:assemblyIdentity name="adct..exe" version="1.10.2.0" publicKeyToken="0000000000000000" language="非特定语言" processorArchitecture="msil" type="win32" />
<description asmv2:publisher="知微" asmv2:product="域控制中心" xmlns="urn:schemas-microsoft-com:asm.v1" />
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly>
</dependency>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True</dpiAware>
</windowsSettings>
</application>
</assembly>
\ No newline at end of file
...@@ -16,15 +16,19 @@ func messionloop() { ...@@ -16,15 +16,19 @@ func messionloop() {
// 若通道为空,则阻塞 // 若通道为空,则阻塞
// 若通道有数据,则读取 // 若通道有数据,则读取
// 若通道关闭,则退出 // 若通道关闭,则退出
// 获取cmdb的token
if !setCMDBToken() { if !setCMDBToken() {
os.Exit(-1) os.Exit(-1)
} }
pub.Opt_UserActivitydetection_state = getOption(pub.Opt_UserActivitydetection) // 获取企业微信的token
pub.Opt_SendWX_state = getOption(pub.Opt_SendWX) setWXWorkToken()
pub.Opt_UserActivitydetection_state = reg.Query_DC(pub.Opt_UserActivitydetection)
pub.Opt_SendWX_state = reg.Query_DC(pub.Opt_SendWX)
go func() { go func() {
onehour := time.NewTicker(1 * time.Minute) onehour := time.NewTicker(10 * time.Minute)
defer onehour.Stop() defer onehour.Stop()
for range onehour.C { for range onehour.C {
setCMDBToken() setCMDBToken()
...@@ -34,11 +38,17 @@ func messionloop() { ...@@ -34,11 +38,17 @@ func messionloop() {
oneminute := time.NewTicker(1 * time.Minute) oneminute := time.NewTicker(1 * time.Minute)
defer oneminute.Stop() defer oneminute.Stop()
for range oneminute.C { for range oneminute.C {
pub.Opt_UserActivitydetection_state = getOption(pub.Opt_UserActivitydetection) pub.Opt_UserActivitydetection_state = reg.Query_DC(pub.Opt_UserActivitydetection)
pub.Opt_SendWX_state = getOption(pub.Opt_SendWX) pub.Opt_SendWX_state = reg.Query_DC(pub.Opt_SendWX)
}
}()
go func() {
sk := time.NewTicker(100 * time.Minute)
defer sk.Stop()
for range sk.C {
setWXWorkToken()
} }
}() }()
} }
func setCMDBToken() bool { func setCMDBToken() bool {
...@@ -68,6 +78,23 @@ func setCMDBToken() bool { ...@@ -68,6 +78,23 @@ func setCMDBToken() bool {
pub.Cmdb_token = string(r.Token) pub.Cmdb_token = string(r.Token)
return true return true
} }
func getOption(opt string) string {
return reg.Query_DC(opt) // https://developer.work.weixin.qq.com/document/path/91039
func setWXWorkToken() {
link := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s", pub.WxworkCorid, pub.WxworkCorpSecret)
data, err := pub.SendGetRequest(&link)
if err != nil {
pub.LOG(ERROR, "automatic", err)
}
var wt pub.WxToken
if pub.ParseJson(data, &wt); err != nil {
pub.LOG(ERROR, "automatic", err)
}
if wt.Errcode == 0 {
reg.Write_DC(pub.Reg_Key_WxworkToken, wt.Access_token)
} else {
pub.LOG(ERROR, "automatic", wt.Errmsg)
}
pub.WxWorkToken = wt.Access_token
} }
module AD-Control-Golang/daemon module AD-Control-Golang/daemon
go 1.18 go 1.17
require git.zhiweidata.top/taotengfei/AD-Control-Golang/public v0.0.0 require git.zhiweidata.top/taotengfei/AD-Control-Golang/public v0.0.0
...@@ -8,12 +8,15 @@ require git.zhiweidata.top/taotengfei/AD-Control-Golang/registry v0.0.0 ...@@ -8,12 +8,15 @@ require git.zhiweidata.top/taotengfei/AD-Control-Golang/registry v0.0.0
require ( require (
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e // indirect github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e // indirect
github.com/PuerkitoBio/goquery v1.8.0 // indirect
github.com/andybalholm/cascadia v1.3.1 // indirect
github.com/go-asn1-ber/asn1-ber v1.5.3 // indirect github.com/go-asn1-ber/asn1-ber v1.5.3 // indirect
github.com/go-ldap/ldap/v3 v3.4.2 // indirect github.com/go-ldap/ldap/v3 v3.4.2 // indirect
github.com/gookit/color v1.5.0 // indirect github.com/gookit/color v1.5.0 // indirect
github.com/mozillazg/go-pinyin v0.19.0 // indirect github.com/mozillazg/go-pinyin v0.19.0 // indirect
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 // indirect golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 // indirect
golang.org/x/text v0.3.7 // indirect golang.org/x/text v0.3.7 // indirect
) )
......
github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e h1:ZU22z/2YRFLyf/P4ZwUYSdNCWsMEI0VeyrFoI2rAhJQ= github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e h1:ZU22z/2YRFLyf/P4ZwUYSdNCWsMEI0VeyrFoI2rAhJQ=
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
...@@ -24,14 +28,23 @@ golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPh ...@@ -24,14 +28,23 @@ golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o=
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 h1:PgUUmg0gNMIPY2WafhL/oLyQGw+kdTNPlVWOjltpp3w= golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 h1:PgUUmg0gNMIPY2WafhL/oLyQGw+kdTNPlVWOjltpp3w=
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
...@@ -187,29 +187,29 @@ func (cir *CIRecordStartup) GetDept() (string, error) { ...@@ -187,29 +187,29 @@ func (cir *CIRecordStartup) GetDept() (string, error) {
} }
switch hostnameSplit[1] { switch hostnameSplit[1] {
case "JL": case "JL":
result = Dept_zw_qbmb_jl_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_jl_string + Dept_zw_qbbm_unit
case "ZJ": case "ZJ":
result = Dept_zw_qbmb_zj_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_zj_string + Dept_zw_qbbm_unit
case "MT": case "MT":
result = Dept_zw_qbmb_mt_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_mt_string + Dept_zw_qbbm_unit
case "DD": case "DD":
result = Dept_zw_qbmb_dd_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_dd_string + Dept_zw_qbbm_unit
case "JR": case "JR":
result = Dept_zw_qbmb_jr_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_jr_string + Dept_zw_qbbm_unit
case "TXHD": case "TXHD":
result = Dept_zw_qbmb_txhd_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_txhd_string + Dept_zw_qbbm_unit
case "TXWJ": case "TXWJ":
result = Dept_zw_qbmb_txwj_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_txwj_string + Dept_zw_qbbm_unit
case "JS": case "JS":
result = Dept_zw_qbmb_js_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_js_string + Dept_zw_qbbm_unit
case "JD": case "JD":
result = Dept_zw_qbmb_jd_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_jd_string + Dept_zw_qbbm_unit
case "HW": case "HW":
result = Dept_zw_qbmb_hw_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_hw_string + Dept_zw_qbbm_unit
case "DY": case "DY":
result = Dept_zw_qbmb_dy_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_dy_string + Dept_zw_qbbm_unit
case "BGYJ": case "BGYJ":
result = Dept_zw_qbmb_bgyj_string + Dept_zw_qbbm_unit result = Dept_zw_qbbm_bgyj_string + Dept_zw_qbbm_unit
default: default:
result = ERROR result = ERROR
} }
......
...@@ -15,21 +15,40 @@ const Dept_zw_peixun = "培训" ...@@ -15,21 +15,40 @@ const Dept_zw_peixun = "培训"
const Dept_zw_chaiwu = "财务" const Dept_zw_chaiwu = "财务"
const Dept_zw_jishu = "技术" const Dept_zw_jishu = "技术"
const Dept_zw_qbmb = "情报部门" const Dept_zw_qbbm = "情报部门"
const Dept_zw_qbmb_jl_string = "巨量" const Dept_zw_qbbm_jl_string = "巨量"
const Dept_zw_qbmb_zj_string = "字节" const Dept_zw_qbbm_zj_string = "字节"
const Dept_zw_qbmb_mt_string = "美团" const Dept_zw_qbbm_mt_string = "美团"
const Dept_zw_qbmb_dd_string = "滴滴" const Dept_zw_qbbm_dd_string = "滴滴"
const Dept_zw_qbmb_jr_string = "金融" const Dept_zw_qbbm_jr_string = "金融"
const Dept_zw_qbmb_txhd_string = "腾讯互动" const Dept_zw_qbbm_txhd_string = "腾讯互动"
const Dept_zw_qbmb_txwj_string = "腾讯危机" const Dept_zw_qbbm_txwj_string = "腾讯危机"
const Dept_zw_qbmb_js_string = "技术" const Dept_zw_qbbm_js_string = "技术"
const Dept_zw_qbmb_jd_string = "京东" const Dept_zw_qbbm_jd_string = "京东"
const Dept_zw_qbmb_hw_string = "华为" const Dept_zw_qbbm_hw_string = "华为"
const Dept_zw_qbmb_dy_string = "抖音" const Dept_zw_qbbm_dy_string = "抖音"
const Dept_zw_qbmb_bgyj_string = "报告研究中心" const Dept_zw_qbbm_bgyj_string = "报告研究中心"
const Dept_zw_qbbm_xmglwyh_string = "项目管理委员会"
const Dept_zw_zztd = "郑州团队"
const Dept_ldap_nb_12 = "宁波-12"
const Dept_ldap_nb_7 = "宁波-704"
const Dept_ldap_zz_1613 = "郑州-1613"
var Dept_zw_qbbm_map map[string]string = map[string]string{
"波塞冬Poseidon(华)": Dept_zw_qbbm_hw_string,
"盖娅Gaia(美)": Dept_zw_qbbm_mt_string,
"格劳克斯Glaucus(危)": Dept_zw_qbbm_txwj_string,
"哈迪斯Hades(互)": Dept_zw_qbbm_txhd_string,
"赫尔墨斯Hermes(京)": Dept_zw_qbbm_jd_string,
"克洛里斯Chloris(字)": Dept_zw_qbbm_zj_string,
"美杜莎Medusa(滴)": Dept_zw_qbbm_dd_string,
"普罗米修斯Prometheus": Dept_zw_qbbm_dy_string,
"雅典娜Athena(巨)": Dept_zw_qbbm_jl_string,
"赫斯提亚Hestia(研)": Dept_zw_qbbm_bgyj_string,
"宙斯Zeus": Dept_zw_jishu,
}
var Dept_zw_region_array = []string{Region_nb, Region_zz} var Dept_zw_region_array = []string{Region_nb, Region_zz}
var Dept_zw_noqbmm_array = []string{Dept_zw_changpin, Dept_zw_renshi, Dept_zw_peixun, Dept_zw_chaiwu, Dept_zw_jishu} var Dept_zw_noqbmm_array = []string{Dept_zw_changpin, Dept_zw_renshi, Dept_zw_peixun, Dept_zw_chaiwu, Dept_zw_jishu}
...@@ -81,3 +100,23 @@ func GetPostationFromHostname(hostname string) (string, error) { ...@@ -81,3 +100,23 @@ func GetPostationFromHostname(hostname string) (string, error) {
} }
} }
func GetQBBMdeptFromHostname(host, region string) (string, error) {
pop, err := GetPostationFromHostname(host)
if err != nil {
return "", err
}
var r string
switch region {
case Region_nb:
switch pop {
case Cmdb_Position_12:
r = Dept_ldap_nb_12
case Cmdb_Position_7:
r = Dept_ldap_nb_7
}
case Region_zz:
r = Dept_ldap_zz_1613
}
return r, err
}
...@@ -9,6 +9,8 @@ var Active bool = true ...@@ -9,6 +9,8 @@ var Active bool = true
const SymbolHostname = "-" const SymbolHostname = "-"
const SymbolSplit = "," const SymbolSplit = ","
const SymbolUrl = "_"
const SymbolDH = "、"
// AD-Control // // AD-Control //
...@@ -72,6 +74,7 @@ const ( ...@@ -72,6 +74,7 @@ const (
) )
const Reg_Key_cmdbtoken string = "cmdb_token" const Reg_Key_cmdbtoken string = "cmdb_token"
const Reg_Key_WxworkToken string = "WxworkToken"
const Reg_Value_ON string = "ON" const Reg_Value_ON string = "ON"
const Reg_Value_OFF string = "OFF" const Reg_Value_OFF string = "OFF"
...@@ -81,10 +84,6 @@ const Cmd_c string = "cmd /c " ...@@ -81,10 +84,6 @@ const Cmd_c string = "cmd /c "
const Cmd_k string = "cmd /k " const Cmd_k string = "cmd /k "
const Cmd_K_Start string = "cmd /k start " const Cmd_K_Start string = "cmd /k start "
//
const Msg_file = "file"
const Msg_softlike = "softlike"
// wxwork key // // wxwork key //
var WxworkBotLink string var WxworkBotLink string
...@@ -94,6 +93,7 @@ var WxworkReceiverId string ...@@ -94,6 +93,7 @@ var WxworkReceiverId string
var WxworkCorid string var WxworkCorid string
var WxworkCorpSecret string var WxworkCorpSecret string
var WxWorkAgentID string var WxWorkAgentID string
var WxWorkToken string
const WxWorkInteraction_RemoteTerminal = "请求远程终端" const WxWorkInteraction_RemoteTerminal = "请求远程终端"
const WxWorkInteraction_SignUP = "申请个人账号" const WxWorkInteraction_SignUP = "申请个人账号"
......
module git.zhiweidata.top/taotengfei/AD-Control-Golang/public module git.zhiweidata.top/taotengfei/AD-Control-Golang/public
go 1.18 go 1.17
require ( require (
github.com/PuerkitoBio/goquery v1.8.0
github.com/go-ldap/ldap/v3 v3.4.2 github.com/go-ldap/ldap/v3 v3.4.2
github.com/gookit/color v1.5.0 github.com/gookit/color v1.5.0
github.com/mozillazg/go-pinyin v0.19.0 github.com/mozillazg/go-pinyin v0.19.0
...@@ -11,8 +12,11 @@ require ( ...@@ -11,8 +12,11 @@ require (
require ( require (
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e // indirect github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e // indirect
github.com/andybalholm/cascadia v1.3.1 // indirect
github.com/go-asn1-ber/asn1-ber v1.5.3 // indirect github.com/go-asn1-ber/asn1-ber v1.5.3 // indirect
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 // indirect golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 // indirect
) )
replace git.zhiweidata.top/taotengfei/AD-Control-Golang/registry v0.0.0 => ..\registry
\ No newline at end of file
github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e h1:ZU22z/2YRFLyf/P4ZwUYSdNCWsMEI0VeyrFoI2rAhJQ= github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e h1:ZU22z/2YRFLyf/P4ZwUYSdNCWsMEI0VeyrFoI2rAhJQ=
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
...@@ -24,14 +28,23 @@ golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPh ...@@ -24,14 +28,23 @@ golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o=
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 h1:PgUUmg0gNMIPY2WafhL/oLyQGw+kdTNPlVWOjltpp3w= golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 h1:PgUUmg0gNMIPY2WafhL/oLyQGw+kdTNPlVWOjltpp3w=
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
...@@ -14,10 +14,11 @@ import ( ...@@ -14,10 +14,11 @@ import (
// } // }
// 解析Json 并放到变量中 // 解析Json 并放到变量中
func ParseJson(unmsg []byte, v interface{}) { func ParseJson(unmsg []byte, v interface{}) error {
if err := json.Unmarshal(unmsg, v); err != nil { if err := json.Unmarshal(unmsg, v); err != nil {
LOG(ERROR, "Parse Json Error", fmt.Sprintf("%v %v", err, v)) return fmt.Errorf("%v %v", err, v)
} }
return nil
} }
// Json 转 Byte // Json 转 Byte
......
...@@ -15,6 +15,9 @@ const Msg_status_deal string = "deal" ...@@ -15,6 +15,9 @@ const Msg_status_deal string = "deal"
// msg type //////////////////////////////////////////////////////////////// // msg type ////////////////////////////////////////////////////////////////
const Msg_File string = "file"
const Msg_Softlike string = "softlike"
const Msg_WXAuth string = "wxauth"
const Msg_Report string = "report" const Msg_Report string = "report"
const Msg_Exec string = "exec" const Msg_Exec string = "exec"
const Msg_Wake string = "wake" const Msg_Wake string = "wake"
...@@ -35,6 +38,7 @@ const Msg_Report_UpdatePrimaryHost string = "UpdatePrimaryHost" ...@@ -35,6 +38,7 @@ const Msg_Report_UpdatePrimaryHost string = "UpdatePrimaryHost"
const Msg_Report_SignUPUser string = "SignUPUser" const Msg_Report_SignUPUser string = "SignUPUser"
const Msg_Report_Dimission string = "Dimission" const Msg_Report_Dimission string = "Dimission"
const Msg_Report_GetSoftlike string = "GetSoftlike" const Msg_Report_GetSoftlike string = "GetSoftlike"
const Msg_Report_GetURL string = "GetURL"
// msg exec type //////////////////////////////////////////////////////////////// // msg exec type ////////////////////////////////////////////////////////////////
...@@ -71,6 +75,12 @@ const WXEK_zwDevopsHostGetinfo string = "zwdevops_host_getinfo" ...@@ -71,6 +75,12 @@ const WXEK_zwDevopsHostGetinfo string = "zwdevops_host_getinfo"
const WXEK_zwDevopsAccountSelf string = "zwdevops_account_self" const WXEK_zwDevopsAccountSelf string = "zwdevops_account_self"
const WXEK_zwDevopsAccountPublic string = "zwdevops_account_public" const WXEK_zwDevopsAccountPublic string = "zwdevops_account_public"
const WXWORK_zwDevopsChatAccountManager string = "zwDevopsChatAccountManager"
// URL
const URL_Wxwork_QrCode_Redirect string = "http://zhiweiadserver.xunyang.site:16823/wxauth"
const URL_WXWork_QRCode_Login string = "URL_WXWork_QRCode_Login"
// Registry Root // Registry Root
const ( const (
Msg_Reg_Query = iota Msg_Reg_Query = iota
...@@ -99,6 +109,7 @@ type MJbase struct { ...@@ -99,6 +109,7 @@ type MJbase struct {
Timestamp int64 `json:"timestamp"` Timestamp int64 `json:"timestamp"`
DataBool bool `json:"databool"` DataBool bool `json:"databool"`
DataStr string `json:"datastr"` DataStr string `json:"datastr"`
PlusStr string `json:"plusstr"`
Instruction string `json:"instruction"` Instruction string `json:"instruction"`
Version string `json:"version"` Version string `json:"version"`
} }
...@@ -159,6 +170,14 @@ func GJreportString(s string, d string) interface{} { ...@@ -159,6 +170,14 @@ func GJreportString(s string, d string) interface{} {
rep.DataStr = d rep.DataStr = d
return rep return rep
} }
func GJreportPlusString(s string, d string, p string) interface{} {
var rep MJreport
rep.Init(s)
rep.DataStr = d
rep.PlusStr = p
return rep
}
func GJreportUsernameString(s string, n string, d string) interface{} { func GJreportUsernameString(s string, n string, d string) interface{} {
var rep MJreport var rep MJreport
rep.Init(s) rep.Init(s)
......
...@@ -24,7 +24,7 @@ func Telnet(ip, port string) bool { ...@@ -24,7 +24,7 @@ func Telnet(ip, port string) bool {
var initServer = false var initServer = false
func DownloadFile(url, saveFile string) error { func DownloadFileInside(url, saveFile string) error {
if !initServer { if !initServer {
if Telnet(Host_adserver_wan, DaemonListen[1:]) { if Telnet(Host_adserver_wan, DaemonListen[1:]) {
Host_server_download = Host_adserver_wan + DaemonListen Host_server_download = Host_adserver_wan + DaemonListen
...@@ -46,7 +46,21 @@ func DownloadFile(url, saveFile string) error { ...@@ -46,7 +46,21 @@ func DownloadFile(url, saveFile string) error {
if err := PSCommandWait(cmd); err != nil { if err := PSCommandWait(cmd); err != nil {
return err return err
} }
default:
return fmt.Errorf("不支持该操作系统的下载方式")
} }
return nil return nil
} }
func DownlaodFileOutSide(url, saveFile string) error {
switch OS_Type {
case OS_Type_Windows:
cmd := fmt.Sprintf(`Invoke-WebRequest -uri "%s" -OutFile "%s"`, url, saveFile)
if err := PSCommandWait(cmd); err != nil {
return err
}
default:
return fmt.Errorf("不支持该操作系统的下载方式")
}
return nil
}
...@@ -106,8 +106,7 @@ func SendGetRequest(link *string) ([]byte, error) { ...@@ -106,8 +106,7 @@ func SendGetRequest(link *string) ([]byte, error) {
if resp.StatusCode != 200 { if resp.StatusCode != 200 {
return nil, fmt.Errorf("url:%s,StatusCode:%d", *link, resp.StatusCode) return nil, fmt.Errorf("url:%s,StatusCode:%d", *link, resp.StatusCode)
} }
body, err := ioutil.ReadAll(resp.Body) return ioutil.ReadAll(resp.Body)
return body, err
} }
// 发送 带Data的Post请求 // 发送 带Data的Post请求
...@@ -144,24 +143,19 @@ func SendWX(Content string) { ...@@ -144,24 +143,19 @@ func SendWX(Content string) {
} }
}`) }`)
http.Post(WxworkBotLink, "application/json; charset=utf-8", bytes.NewBuffer(w)) http.Post(WxworkBotLink, "application/json; charset=utf-8", bytes.NewBuffer(w))
} }
// 发送应用消息( // 发送应用消息(
// https://developer.work.weixin.qq.com/document/path/90236 // https://developer.work.weixin.qq.com/document/path/90236
func SendWxworkTextToAUser(nameOrID, text string) error { func SendWxworkTextToAUser(nameOrID, text string) error {
// 获取 最新 token
t, err := GetWXWorkToken()
if err != nil {
return err
}
// 初始化 消息推送 结构体 // 初始化 消息推送 结构体
var wsmt WxSendMsgText var wsmt WxSendMsgText
wsmt.Init() wsmt.Init()
wsmt.Touser = nameOrID wsmt.Touser = nameOrID
wsmt.Text.Content = text wsmt.Text.Content = text
link := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s&debug=1", t) link := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s&debug=1", WxWorkToken)
// 发送 Post 请求 // 发送 Post 请求
res, err := SendPostRequestWithData(&link, &wsmt) res, err := SendPostRequestWithData(&link, &wsmt)
...@@ -180,12 +174,40 @@ func SendWxworkTextToAUser(nameOrID, text string) error { ...@@ -180,12 +174,40 @@ func SendWxworkTextToAUser(nameOrID, text string) error {
} }
return nil return nil
} }
func SendWXWrokTextToChat(chatid string, Content string) error {
if DomainCotroller() {
if Opt_SendWX_state == "0" {
LOG(WARN, "opt_deny", "取消微信发送")
return fmt.Errorf("取消微信发送")
}
}
// Content不支持发送Json,
w := []byte(`
{
"chatid": ` + chatid + `",
"msgtype":"text",
"text":{
"content" : "` + Content + `"
},
"safe":0
}`)
_, err := http.Post(fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token=%s", WxWorkToken), "application/json; charset=utf-8", bytes.NewBuffer(w))
if err != nil {
LOG(ERROR, "send_chat_account_manager", err)
return err
}
return nil
}
func SendWxworkTextToAdmins(nameOrID string) error { func SendWxworkTextToAdmins(nameOrID string) error {
return SendWxworkTextToAUser("TaoTengFei", nameOrID) return SendWxworkTextToAUser("TaoTengFei|BaoJiaQi", nameOrID)
} }
func SendWxworkTextToHR(nameOrID string) error { func SendWxworkTextToHR(nameOrID string) error {
return SendWxworkTextToAUser("BianShuang", nameOrID) return SendWxworkTextToAUser("TaoTengFei|BaoJiaQi|BianShuang", nameOrID)
}
func SendWXWrokTextToChatAccountManager(Conentstring string) error {
return SendWXWrokTextToChat(WXWORK_zwDevopsChatAccountManager, Conentstring)
} }
// 根据主机位置定义发送的服务器 // 根据主机位置定义发送的服务器
......
...@@ -52,6 +52,7 @@ func execcmd_base(cmdargs string) (string, []string, error) { ...@@ -52,6 +52,7 @@ func execcmd_base(cmdargs string) (string, []string, error) {
app = cmdargs app = cmdargs
appargs[0] = "" appargs[0] = ""
} }
fmt.Println(cmdargs)
LOG(INFO, "CMD", cmdargs) LOG(INFO, "CMD", cmdargs)
return app, appargs, nil return app, appargs, nil
} }
...@@ -118,6 +119,12 @@ func Execcmd_waitOutput(cmdargs string) ([]byte, error) { ...@@ -118,6 +119,12 @@ func Execcmd_waitOutput(cmdargs string) ([]byte, error) {
} }
return cmd.CombinedOutput() return cmd.CombinedOutput()
} }
func Execcmd_two_nowait(cmd, cmdargs string) error {
if err := exec.Command(cmd, cmdargs).Start(); err != nil {
return err
}
return nil
}
// 包含标准错误的结果输出 // 包含标准错误的结果输出
func Execcmd_output(cmdargs string) []byte { func Execcmd_output(cmdargs string) []byte {
...@@ -239,7 +246,7 @@ func PSTest_Connection(host string) (bool, error) { ...@@ -239,7 +246,7 @@ func PSTest_Connection(host string) (bool, error) {
// local // local
func OpenWindow(s string) { func OpenWindow(s string) {
Execcmd_nowait("explorer " + s) Execcmd_nowait(fmt.Sprintf(`msedge "%s"`, s))
} }
// //
......
...@@ -28,7 +28,7 @@ func ParseWX(d string, byteBody *[]byte) MJwxwork { ...@@ -28,7 +28,7 @@ func ParseWX(d string, byteBody *[]byte) MJwxwork {
// fmt.Fprintf(w,string(res)) // fmt.Fprintf(w,string(res))
// return // return
// 解密html // 解密query
msg, cerr := wxcpt.DecryptMsg( msg, cerr := wxcpt.DecryptMsg(
m["msg_signature"][0], m["msg_signature"][0],
m["timestamp"][0], m["timestamp"][0],
...@@ -47,16 +47,8 @@ func ParseWX(d string, byteBody *[]byte) MJwxwork { ...@@ -47,16 +47,8 @@ func ParseWX(d string, byteBody *[]byte) MJwxwork {
return w return w
} }
// 获取 查阅同事的token
wtBricklayer, err := GetWXWorkToken()
if err != nil {
LOG(ERROR, NULL, err)
w.Result = Error_WXWork_Fail_ReTry
return w
}
// 查询 姓名 // 查询 姓名
name, err := GetBricklayerName(wtBricklayer, wxmsg.FromUsername) wi, err := GetWxworkWorkerInfo(wxmsg.FromUsername)
if err != nil { if err != nil {
LOG(ERROR, NULL, err) LOG(ERROR, NULL, err)
w.Result = Error_WXWork_Fail_ReTry w.Result = Error_WXWork_Fail_ReTry
...@@ -68,7 +60,7 @@ func ParseWX(d string, byteBody *[]byte) MJwxwork { ...@@ -68,7 +60,7 @@ func ParseWX(d string, byteBody *[]byte) MJwxwork {
// wxmsg.EventKey是菜单事件 // wxmsg.EventKey是菜单事件
w.Instruction = wxmsg.EventKey w.Instruction = wxmsg.EventKey
w.UserID = wxmsg.FromUsername w.UserID = wxmsg.FromUsername
w.Name = name w.Name = wi.Name
w.Content = wxmsg.Content w.Content = wxmsg.Content
// 先回复空,再异步发送处理结果 // 先回复空,再异步发送处理结果
...@@ -102,35 +94,64 @@ func ParseWX(d string, byteBody *[]byte) MJwxwork { ...@@ -102,35 +94,64 @@ func ParseWX(d string, byteBody *[]byte) MJwxwork {
// return string(cryptMsg) // return string(cryptMsg)
} }
// 读取企业通讯录的成员信息(需要管理员登录) // https://developer.work.weixin.qq.com/document/path/91437
// https://work.weixin.qq.com/api/doc/90000/90135/90196 func GetWXworktUserID(code string) (string, error) {
func GetBricklayerName(token, userid string) (string, error) { type wxUserID struct {
link := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=%s&userid=%s", token, userid) Errcode int `json:"errcode"`
ErrMsg string `json:"errmsg"`
UserID string `json:"userid"`
}
link := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=%s&code=%s", WxWorkToken, code)
data, err := SendGetRequest(&link) data, err := SendGetRequest(&link)
if err != nil { if err != nil {
LOG(ERROR, NULL, err) return "", err
return "", Error_WXWork_Down }
var wxuid wxUserID
if err := ParseJson(data, &wxuid); err != nil {
return "", err
} }
var bi wxJsonBricklayerInfo if wxuid.Errcode != 0 {
ParseJson(data, &bi) return "", fmt.Errorf(wxuid.ErrMsg)
if bi.Errcode != 0 {
LOG(ERROR, NULL, bi.Errmsg)
return "", Error_WXWork_Down
} }
return bi.Name, nil return wxuid.UserID, nil
}
// 读取企业通讯录的成员信息
// https://developer.work.weixin.qq.com/document/path/90196
func GetWxworkWorkerInfo(userid string) (wxJsonWorkerInfo, error) {
var wi wxJsonWorkerInfo
link := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=%s&userid=%s", WxWorkToken, userid)
data, err := SendGetRequest(&link)
if err != nil {
return wxJsonWorkerInfo{}, err
}
if err := ParseJson(data, &wi); err != nil {
return wxJsonWorkerInfo{}, err
}
if wi.Errcode != 0 {
return wxJsonWorkerInfo{}, fmt.Errorf(wi.Errmsg)
}
return wi, nil
} }
func GetWXWorkToken() (string, error) {
link := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s", WxworkCorid, WxworkCorpSecret)
// 根据部门ID获取部门名称
// https://developer.work.weixin.qq.com/document/path/95351
func GetWxworkWorkerDepartmentName(deptID int) (string, error) {
var wd wxJsonWorkerDepartment
link := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/department/get?access_token=%s&id=%d", WxWorkToken, deptID)
data, err := SendGetRequest(&link) data, err := SendGetRequest(&link)
if err != nil { if err != nil {
return "", err return "", err
} }
var wt WxToken if err := ParseJson(data, &wd); err != nil {
ParseJson(data, &wt) return "", err
if wt.Errcode == 0 { }
return wt.Access_token, nil if wd.Errcode != 0 {
} else { return "", fmt.Errorf(wd.Errmsg)
return "", Error_Fail_File_Write
} }
return wd.Department.Name, nil
} }
package public package public
// JSON:token返回格式 // JSON:token返回格式
// https://open.work.weixin.qq.com/api/doc/90000/90135/91039 // https://open.work.weixin.qq.com/api/doc/90000/90135/91039
type WxToken struct { type WxToken struct {
Errcode int `json:"errcode"` Errcode int `json:"errcode"`
Errmsg string `json:"errmsg"` Errmsg string `json:"errmsg"`
Access_token string `json:"access_token"` Access_token string `json:"access_token"`
Expires_in int `json:"expires_in"` Expires_in int `json:"expires_in"`
} }
type WxSendMsgRec struct { type WxSendMsgRec struct {
ErrCode int `json:"errcode"` ErrCode int `json:"errcode"`
ErrMsg string `json:"errmsg"` ErrMsg string `json:"errmsg"`
Invaliduser string `json:"invaliduser"` Invaliduser string `json:"invaliduser"`
Invalidparty string `json:"invalidparty"` Invalidparty string `json:"invalidparty"`
Invalidtag string `json:"invalidtag"` Invalidtag string `json:"invalidtag"`
} }
// JSON:消息发送格式 // JSON:消息发送格式
// https://work.weixin.qq.com/api/doc/90000/90135/90236#%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF // https://work.weixin.qq.com/api/doc/90000/90135/90236#%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF
type WxSendMsgText struct { type WxSendMsgText struct {
Touser string `json:"touser"` Touser string `json:"touser"`
Toparty string `json:"toparty"` Toparty string `json:"toparty"`
Totag string `json:"totag"` Totag string `json:"totag"`
Msgtype string `json:"msgtype"` Msgtype string `json:"msgtype"`
Agentid int `json:"agentid"` Agentid int `json:"agentid"`
Text WxSendMsgTextContent `json:"text"` Text WxSendMsgTextContent `json:"text"`
Safe int `json:"safe"` Safe int `json:"safe"`
Enable_id_trans int `json:"enable_id_trans"` Enable_id_trans int `json:"enable_id_trans"`
Enable_duplicate_check int `json:"enable_duplicate_check"` Enable_duplicate_check int `json:"enable_duplicate_check"`
Duplicate_check_interval int `json:"duplicate_check_interval"` Duplicate_check_interval int `json:"duplicate_check_interval"`
} }
type WxSendMsgTextContent struct { type WxSendMsgTextContent struct {
Content string `json:"content"` Content string `json:"content"`
} }
func(wsmt * WxSendMsgText) Init(){ func (wsmt *WxSendMsgText) Init() {
wsmt.Msgtype = "text" wsmt.Msgtype = "text"
wsmt.Agentid = 1000014 wsmt.Agentid = 1000014
wsmt.Safe = 0 wsmt.Safe = 0
wsmt.Enable_id_trans = 0 wsmt.Enable_id_trans = 0
wsmt.Enable_duplicate_check = 0 wsmt.Enable_duplicate_check = 0
wsmt.Duplicate_check_interval = 1800 wsmt.Duplicate_check_interval = 1800
} }
// 获取 同事个人信息的Json // 获取 同事个人信息的Json
// https://open.work.weixin.qq.com/api/doc/90000/90135/90196 // https://open.work.weixin.qq.com/api/doc/90000/90135/90196
type wxJsonBricklayerInfo struct { type wxJsonWorkerInfo struct {
Errcode int `json:"errcode"` Errcode int `json:"errcode"`
Errmsg string `json:"errmsg"` Errmsg string `json:"errmsg"`
Userid string `json:"userid"` Userid string `json:"userid"`
Name string `json:"name"` Name string `json:"name"`
Department []int `json:"department"` Department []int `json:"department"`
Order []int `json:"order"` Order []int `json:"order"`
Position string `json:"position"` Position string `json:"position"`
Mobile string `json:"mobile"` Mobile string `json:"mobile"`
Gender string `json:"gender"` Gender string `json:"gender"`
Email string `json:"email"` Email string `json:"email"`
Is_leader_in_dept []int `json:"is_leader_in_dept"` Is_leader_in_dept []int `json:"is_leader_in_dept"`
Avatar string `json:"avatar"` Avatar string `json:"avatar"`
Thumb_avatar string `json:"thumb_avatar"` Thumb_avatar string `json:"thumb_avatar"`
Telephone string `json:"telephone"` Telephone string `json:"telephone"`
Alias string `json:"alias"` Alias string `json:"alias"`
Address string `json:"address"` Address string `json:"address"`
Open_userid string `json:"open_userid"` Open_userid string `json:"open_userid"`
Main_department int `json:"main_department"` Main_department int `json:"main_department"`
Extattr wxJsonBricklayerInfoExtattr `json:"extattr"` Extattr wxJsonWorkerInfoExtattr `json:"extattr"`
Status int `json:"status"` Status int `json:"status"`
Qr_code string `json:"qr_code"` Qr_code string `json:"qr_code"`
External_position string `json:"external_position"` External_position string `json:"external_position"`
External_profile wxJsonBricklayerInfoExtattr `json:"external_profile"` External_profile wxJsonWorkerInfoExtattr `json:"external_profile"`
} }
type wxJsonBricklayerInfoExtattr struct { type wxJsonWorkerInfoExtattr struct {
Attrs [] wxJsonBricklayerInfoExtattrValue `json:"attrs"` Attrs []wxJsonWorkerInfoExtattrValue `json:"attrs"`
} }
type wxJsonBricklayerInfoExtattrValue struct { type wxJsonWorkerInfoExtattrValue struct {
Type int `json:"type"` Type int `json:"type"`
Name string `json:"name"` Name string `json:"name"`
Text wxJsonBricklayerInfoExtattrValueText `json:"text"` Text wxJsonWorkerInfoExtattrValueText `json:"text"`
Web wxJsonBricklayerInfoExtattrValueWeb `json:"value"` Web wxJsonWorkerInfoExtattrValueWeb `json:"value"`
MiniProgram wxJsonBricklayerInfoExtattrValueMinProgram `json:"miniProgram"` MiniProgram wxJsonWorkerInfoExtattrValueMinProgram `json:"miniProgram"`
} }
type wxJsonBricklayerInfoExtattrValueText struct { type wxJsonWorkerInfoExtattrValueText struct {
Value string `json:"value"` Value string `json:"value"`
} }
type wxJsonBricklayerInfoExtattrValueWeb struct { type wxJsonWorkerInfoExtattrValueWeb struct {
Url string `json:"url"` Url string `json:"url"`
Title string `json:"title"` Title string `json:"title"`
} }
type wxJsonBricklayerInfoExtattrValueMinProgram struct { type wxJsonWorkerInfoExtattrValueMinProgram struct {
Appid string `json:"appid"` Appid string `json:"appid"`
Pagepath string `json:"pagepath"` Pagepath string `json:"pagepath"`
Title string `json:"title"` Title string `json:"title"`
} }
type wxXml struct { type wxXml struct {
ToUsername string `xml:"ToUserName"` ToUsername string `xml:"ToUserName"`
FromUsername string `xml:"FromUserName"` FromUsername string `xml:"FromUserName"`
CreateTime uint32 `xml:"CreateTime"` CreateTime uint32 `xml:"CreateTime"`
MsgType string `xml:"MsgType"` MsgType string `xml:"MsgType"`
Content string `xml:"Content"` Content string `xml:"Content"`
Msgid string `xml:"MsgId"` Msgid string `xml:"MsgId"`
Agentid uint32 `xml:"AgentId"` Agentid uint32 `xml:"AgentId"`
Event string `xml:"Event"` Event string `xml:"Event"`
EventKey string `xml:"EventKey"` EventKey string `xml:"EventKey"`
}
type wxJsonWorkerDepartment struct {
Errcode int `json:"errcode"`
Errmsg string `json:"errmsg"`
Department wxJsonWorkerDepartmentExtattrDept `json:"department"`
}
type wxJsonWorkerDepartmentExtattrDept struct {
Id int `json:"id"`
Name string `json:"name"`
Name_en string `json:"name_en"`
Department_leader []string `json:"department_leader"`
Parentid int `json:"parentid"`
Order int `json:"order"`
} }
...@@ -12,6 +12,7 @@ const ( ...@@ -12,6 +12,7 @@ const (
HKCU = iota HKCU = iota
HKLM HKLM
HKU HKU
HKCR
) )
var Error_Null_Reg_Query = errors.New("not found reg query result") var Error_Null_Reg_Query = errors.New("not found reg query result")
...@@ -115,6 +116,8 @@ func prase(root *int) registry.Key { ...@@ -115,6 +116,8 @@ func prase(root *int) registry.Key {
return registry.USERS return registry.USERS
case HKLM: case HKLM:
return registry.LOCAL_MACHINE return registry.LOCAL_MACHINE
case HKCR:
return registry.CLASSES_ROOT
} }
return registry.LOCAL_MACHINE return registry.LOCAL_MACHINE
} }
module AD-Control-Golang/users module AD-Control-Golang/users
go 1.18 go 1.17
require git.zhiweidata.top/taotengfei/AD-Control-Golang/public v0.0.0 require git.zhiweidata.top/taotengfei/AD-Control-Golang/public v0.0.0
...@@ -13,6 +13,8 @@ require ( ...@@ -13,6 +13,8 @@ require (
require ( require (
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e // indirect github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e // indirect
github.com/PuerkitoBio/goquery v1.8.0 // indirect
github.com/andybalholm/cascadia v1.3.1 // indirect
github.com/go-asn1-ber/asn1-ber v1.5.3 // indirect github.com/go-asn1-ber/asn1-ber v1.5.3 // indirect
github.com/go-ldap/ldap/v3 v3.4.2 // indirect github.com/go-ldap/ldap/v3 v3.4.2 // indirect
github.com/gookit/color v1.5.0 // indirect github.com/gookit/color v1.5.0 // indirect
...@@ -20,6 +22,7 @@ require ( ...@@ -20,6 +22,7 @@ require (
github.com/mozillazg/go-pinyin v0.19.0 // indirect github.com/mozillazg/go-pinyin v0.19.0 // indirect
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 // indirect
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 // indirect golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 // indirect
golang.org/x/text v0.3.7 // indirect golang.org/x/text v0.3.7 // indirect
gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect
......
github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e h1:ZU22z/2YRFLyf/P4ZwUYSdNCWsMEI0VeyrFoI2rAhJQ= github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e h1:ZU22z/2YRFLyf/P4ZwUYSdNCWsMEI0VeyrFoI2rAhJQ=
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
...@@ -28,15 +32,24 @@ golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPh ...@@ -28,15 +32,24 @@ golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o=
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 h1:PgUUmg0gNMIPY2WafhL/oLyQGw+kdTNPlVWOjltpp3w= golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0 h1:PgUUmg0gNMIPY2WafhL/oLyQGw+kdTNPlVWOjltpp3w=
golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220403020550-483a9cbc67c0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc= gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc=
gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E= gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
......
...@@ -19,7 +19,7 @@ const timeout int = 30 ...@@ -19,7 +19,7 @@ const timeout int = 30
func menuInitName(ni *walk.NotifyIcon) { func menuInitName(ni *walk.NotifyIcon) {
text := fmt.Sprintf("姓名: %s", pub.User_name_display) text := fmt.Sprintf("系统账号: %s", pub.User_name_display)
na := walk.NewAction() na := walk.NewAction()
if err := na.SetText(text); err != nil { if err := na.SetText(text); err != nil {
pub.LOG(pub.ERROR, NULL, err) pub.LOG(pub.ERROR, NULL, err)
...@@ -125,99 +125,23 @@ func menuInitAccountManager(ni *walk.NotifyIcon) { ...@@ -125,99 +125,23 @@ func menuInitAccountManager(ni *walk.NotifyIcon) {
sysmenu.SetEnabled(true) sysmenu.SetEnabled(true)
} }
type signUpStruct struct {
Name *walk.LineEdit
Dept *walk.ComboBox
}
// 账号管理 申请个人账号 // 账号管理 申请个人账号
func tAccountManagerSignUP() { func tAccountManagerSignUP() {
if !pub.PublicUser() { // 仅仅公共用户可使用“申请个人账号”功能
Msg("您已经正在使用个人账号!") // if !pub.PublicUser() {
return // go Msg("您已经正在使用个人账号!")
} // return
var signUp signUpStruct // }
if _, err := (MainWindow{
Title: "申请个人账号", // 获取登录地址
MinSize: Size{Width: 300, Height: 400}, pub.SendADMsg(pub.Msg_Report, pub.GJreportPlusString(pub.Msg_Report_GetURL, pub.URL_WXWork_QRCode_Login, pub.Msg_Report_SignUPUser))
Size: Size{Width: 300, Height: 400}, default_explorer := reg.Query_key_one(reg.HKCR, `http\shell\open\command`, ``)
Layout: VBox{}, default_explorer = default_explorer[1 : len(default_explorer)-4]
Children: []Widget{ if err := pub.Execcmd_two_nowait(default_explorer, pub.MS.S); err != nil {
VSplitter{ pub.LOG(ERROR, NULL, err)
Children: []Widget{
GroupBox{
Layout: HBox{},
Children: []Widget{
Label{
Text: "姓名",
},
LineEdit{
MinSize: Size{Width: 40, Height: 0},
AssignTo: &signUp.Name,
},
},
},
GroupBox{
Layout: HBox{},
Children: []Widget{
Label{
Text: "部门",
},
ComboBox{
AssignTo: &signUp.Dept,
Model: []string{pub.Dept_zw_qbmb_jl_string, pub.Dept_zw_qbmb_zj_string, pub.Dept_zw_qbmb_mt_string, pub.Dept_zw_qbmb_dd_string, pub.Dept_zw_qbmb_jr_string, pub.Dept_zw_qbmb_txhd_string, pub.Dept_zw_qbmb_txwj_string, pub.Dept_zw_qbmb_jd_string, pub.Dept_zw_qbmb_hw_string, pub.Dept_zw_qbmb_bgyj_string},
CurrentIndex: 0, // 默认选中第一个
},
},
},
PushButton{
Text: "提交",
OnClicked: signUp.signUpPush,
},
},
},
},
}.Run()); err != nil {
pub.LOG(ERROR, "", err)
}
}
func (signUp *signUpStruct) signUpPush() {
var Reg_target string = Reg_Signup
var exec bool
name := signUp.Name.Text()
dept := signUp.Dept.Text()
if name == "" {
Msg("请输入姓名")
}
host, _ := pub.GetHostnamePart(pub.User_computername)
var region string
switch host[0] {
case pub.HOST_Region_NB:
region = pub.Region_nb
case pub.HOST_Region_ZZ:
region = pub.Region_zz
}
if reg_t := reg.Query_ADPC(Reg_target); reg_t == "" {
exec = true
} else {
exec = pub.IfBeforeMin(pub.UnixTimeParseTimeFromString(reg_t), timeout)
}
if !exec {
Msg(`暂时无法使用,稍后重试!`)
return return
} }
l := fmt.Sprintf("地区:%s\n部门:%s\n姓名:%s", region, dept, name)
if Msg_YesNo(l + "\n\n是否确定消息无误?") {
l = fmt.Sprintf("%s\n%s\n主机名:%s", pub.WxWorkInteraction_SignUP, l, pub.User_computername)
pub.SendADMsg(pub.Msg_Report, pub.GJreportString(pub.Msg_Report_SignUPUser, l))
reg.Write_ADPC(Reg_target, pub.NowTimestampString())
}
} }
// 主机管理 // 主机管理
...@@ -451,9 +375,9 @@ func (mw *siMainWindow) siInstall() { ...@@ -451,9 +375,9 @@ func (mw *siMainWindow) siInstall() {
app := (&mw.siM.items[mw.siLB.CurrentIndex()]).name app := (&mw.siM.items[mw.siLB.CurrentIndex()]).name
go Msg("下载文件中,请等待,请勿重复点击") go Msg("下载文件中,请等待,请勿重复点击")
pub.LOG(INFO, "SoftwareInstall", "下载"+app) pub.LOG(INFO, "SoftwareInstall", "下载"+app)
url := fmt.Sprintf("%s/%s", pub.Msg_softlike, app) url := fmt.Sprintf("%s/%s", pub.Msg_Softlike, app)
fullapp := fmt.Sprintf(`%s\%s`, pub.Dir_tmp, app) fullapp := fmt.Sprintf(`%s\%s`, pub.Dir_tmp, app)
err := pub.DownloadFile(url, fullapp) err := pub.DownloadFileInside(url, fullapp)
if err != nil { if err != nil {
go Msg("下载文件失败") go Msg("下载文件失败")
pub.LOG(ERROR, "SoftwareInstall", "下载文件失败"+err.Error()) pub.LOG(ERROR, "SoftwareInstall", "下载文件失败"+err.Error())
......
...@@ -107,12 +107,14 @@ func userEnvInit() { ...@@ -107,12 +107,14 @@ func userEnvInit() {
} }
func main() { func main() {
if !pub.Windows() { if !pub.Windows() {
os.Exit(-1) os.Exit(-1)
} }
if pub.DomainCotroller() {
os.Exit(-1) // if pub.DomainCotroller() {
} // os.Exit(-1)
// }
// 用户 初始化 // 用户 初始化
icodir := userInit() icodir := userInit()
userEnvInit() userEnvInit()
......
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