Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
AD-Control-Golang
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陶腾飞
AD-Control-Golang
Commits
95ffb832
Commit
95ffb832
authored
Apr 29, 2022
by
陶腾飞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2022/04/29 v2.5.5
parent
8eade0b1
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
172 additions
and
46 deletions
+172
-46
README.MD
+2
-1
public/array.go
+10
-0
public/characters.go
+18
-0
public/cmdb_client.go
+7
-0
public/cmdb_server.go
+15
-0
public/cmdbjson.go
+11
-11
public/dept.go
+15
-4
public/env.go
+4
-2
public/msg_deal.go
+46
-11
public/msg_init.go
+19
-4
public/send.go
+18
-1
public/win.go
+7
-12
No files found.
README.MD
View file @
95ffb832
...
...
@@ -100,7 +100,8 @@
-
2022/04/23 v2.5.1 每月10号和25号提醒新人创建个人账号
-
2022/04/23 v2.5.2 添加知微运维平台的"账号管理功能"
-
2022/04/25 v2.5.3 更新powershell函数
-
2022/04/26 v2.5.4 更新powershell函数
-
2022/04/26 v2.5.4 cmdb消息初始化
-
2022/04/29 v2.5.5 ci工具 自我升级
## 四、其他说明
...
...
public/array.go
0 → 100644
View file @
95ffb832
package
public
func
ArrayContains
(
items
[]
string
,
item
string
)
bool
{
for
_
,
eachItem
:=
range
items
{
if
eachItem
==
item
{
return
true
}
}
return
false
}
public/
string
.go
→
public/
characters
.go
View file @
95ffb832
package
public
import
(
"fmt"
"strings"
"golang.org/x/text/encoding/simplifiedchinese"
)
var
punctuationMap
=
map
[
rune
]
rune
{
...
...
@@ -30,3 +33,18 @@ func ToEnglishSymbol(text string) string {
},
text
)
return
text
}
func
ToChineseChar
(
b
[]
byte
)
[]
byte
{
r
,
_
:=
simplifiedchinese
.
GBK
.
NewDecoder
()
.
Bytes
(
b
)
return
r
}
func
JoinPlus
(
array
[]
string
,
lr
,
m
string
)
string
{
var
r
string
for
i
,
j
:=
range
array
{
if
i
==
len
(
array
)
-
1
{
m
=
""
}
r
+=
fmt
.
Sprintf
(
`%s%s%s%s`
,
lr
,
j
,
lr
,
m
)
}
return
r
}
public/cmdb_client.go
0 → 100644
View file @
95ffb832
package
public
var
CI_Update
bool
func
(
ci
*
MJCmdbInfo
)
updateC
()
{
CI_Update
=
ci
.
DataBool
}
public/cmdb_server.go
0 → 100644
View file @
95ffb832
package
public
import
"fmt"
func
(
ci
*
MJCmdbInfo
)
updateS
()
{
ci
.
Explain
=
fmt
.
Sprintf
(
"CI Daemon:%s,CI Client:%s"
,
Version
,
ci
.
DataStr
)
// 不等于 表示需要更新
if
Version
!=
ci
.
DataStr
{
ci
.
DataBool
=
true
}
else
{
ci
.
DataBool
=
false
}
}
public/cmdbjson.go
View file @
95ffb832
...
...
@@ -187,27 +187,27 @@ func (cir *CIRecordStartup) GetDept() (string, error) {
}
switch
hostnameSplit
[
1
]
{
case
"JL"
:
result
=
Dept_zw_qbmb_jl_string
+
Dept_
group
result
=
Dept_zw_qbmb_jl_string
+
Dept_
zw_qbbm_unit
case
"ZJ"
:
result
=
Dept_zw_qbmb_zj_string
+
Dept_
group
result
=
Dept_zw_qbmb_zj_string
+
Dept_
zw_qbbm_unit
case
"MT"
:
result
=
Dept_zw_qbmb_mt_string
+
Dept_
group
result
=
Dept_zw_qbmb_mt_string
+
Dept_
zw_qbbm_unit
case
"DD"
:
result
=
Dept_zw_qbmb_dd_string
+
Dept_
group
result
=
Dept_zw_qbmb_dd_string
+
Dept_
zw_qbbm_unit
case
"JR"
:
result
=
Dept_zw_qbmb_jr_string
+
Dept_
group
result
=
Dept_zw_qbmb_jr_string
+
Dept_
zw_qbbm_unit
case
"TXHD"
:
result
=
Dept_zw_qbmb_txhd_string
+
Dept_
group
result
=
Dept_zw_qbmb_txhd_string
+
Dept_
zw_qbbm_unit
case
"TXWJ"
:
result
=
Dept_zw_qbmb_txwj_string
+
Dept_
group
result
=
Dept_zw_qbmb_txwj_string
+
Dept_
zw_qbbm_unit
case
"JS"
:
result
=
Dept_zw_qbmb_js_string
+
Dept_
group
result
=
Dept_zw_qbmb_js_string
+
Dept_
zw_qbbm_unit
case
"JD"
:
result
=
Dept_zw_qbmb_jd_string
+
Dept_
group
result
=
Dept_zw_qbmb_jd_string
+
Dept_
zw_qbbm_unit
case
"HW"
:
result
=
Dept_zw_qbmb_hw_string
+
Dept_
group
result
=
Dept_zw_qbmb_hw_string
+
Dept_
zw_qbbm_unit
case
"BGYJ"
:
result
=
Dept_zw_qbmb_bgyj_string
+
Dept_
group
result
=
Dept_zw_qbmb_bgyj_string
+
Dept_
zw_qbbm_unit
default
:
result
=
ERROR
}
...
...
public/dept.go
View file @
95ffb832
package
public
import
"fmt"
import
(
"fmt"
)
const
Region_nb
=
"宁波"
const
Region_zz
=
"郑州"
const
Dept_group
=
"组"
const
Dept_zw_jishu
=
"技术部门"
const
Dept_zw_chanpin
=
"产品部门"
const
Dept_zw_unit
=
"部"
const
Dept_zw_qbbm_unit
=
"组"
const
Dept_zw_chanpin
=
"产品"
const
Dept_zw_renshi
=
"人事"
const
Dept_zw_peixun
=
"培训"
const
Dept_zw_chaiwu
=
"财务"
const
Dept_zw_jishu
=
"技术"
const
Dept_zw_qbmb
=
"情报部门"
const
Dept_zw_qbmb_1
=
"情报一部"
const
Dept_zw_qbmb_2
=
"情报二部"
...
...
@@ -23,6 +31,9 @@ const Dept_zw_qbmb_jd_string = "京东"
const
Dept_zw_qbmb_hw_string
=
"华为"
const
Dept_zw_qbmb_bgyj_string
=
"报告研究中心"
var
Dept_zw_region_array
=
[]
string
{
Region_nb
,
Region_zz
}
var
Dept_zw_noqbmm_array
=
[]
string
{
Dept_zw_chanpin
,
Dept_zw_renshi
,
Dept_zw_peixun
,
Dept_zw_chaiwu
,
Dept_zw_jishu
}
func
GetPostationFromHostname
(
hostname
string
)
(
string
,
error
)
{
switch
hostname
{
case
Host_adserver
:
...
...
public/env.go
View file @
95ffb832
...
...
@@ -11,9 +11,10 @@ const SymbolHostname = "-"
// AD-Control //
const
Version
string
=
"2.5.
4
"
const
Version
string
=
"2.5.
5
"
const
Host_adserver
string
=
"ADSERVER"
const
Host_adserver_ip
string
=
"192.168.0.20"
const
Host_adserver_lan
string
=
"192.168.0.20"
const
Host_adserver_wan
string
=
"115.231.214.234"
const
Host_thserver
string
=
"THSERVER"
const
Host_zzserver
string
=
"ZZSERVER"
const
DaemonListen
string
=
":16823"
...
...
@@ -55,6 +56,7 @@ var Dir_userprofile string = GetEnv("USERPROFILE")
var
Dir_tmp
string
=
GetEnv
(
"tmp"
)
const
Dir_ADsoftware_local
string
=
`H:\software\softlike\`
const
Dir_ADControl_local
string
=
`H:\software\application\`
// application //
const
App_MultiSplit
string
=
SMB_ADSoftOthTool
+
"win_MultiSplit.exe"
...
...
public/msg_deal.go
View file @
95ffb832
...
...
@@ -10,22 +10,37 @@ import (
// 消息入口
func
DealMsgEnter
(
w
http
.
ResponseWriter
,
r
*
http
.
Request
)
{
url
:=
strings
.
Split
(
r
.
URL
.
Path
,
"/"
)
query
:=
r
.
URL
.
RawQuery
msgtype
:=
r
.
URL
.
Path
[
1
:
]
url
:=
r
.
URL
.
RawQuery
unmsg
,
err
:=
ioutil
.
ReadAll
(
r
.
Body
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
err
)
w
.
Write
([]
byte
(
""
))
}
w
.
Write
(
DealMsg
(
msgtype
,
url
,
unmsg
))
if
r
,
err
:=
DealMsg
(
url
,
query
,
unmsg
);
err
!=
nil
{
w
.
WriteHeader
(
504
)
}
else
{
w
.
Write
(
r
)
}
}
// 处理消息
func
DealMsg
(
msgtype
,
url
string
,
unmsg
[]
byte
)
[]
byte
{
func
DealMsg
(
url
[]
string
,
query
string
,
unmsg
[]
byte
)
([]
byte
,
error
)
{
msgtype
:=
url
[
1
]
var
ret
[]
byte
switch
msgtype
{
case
"file"
:
var
err
error
file
:=
url
[
2
]
ret
,
err
=
ioutil
.
ReadFile
(
Dir_ADControl_local
+
file
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
err
)
return
nil
,
err
}
// 报告 消息
case
Msg_Report
:
...
...
@@ -49,17 +64,17 @@ func DealMsg(msgtype, url string, unmsg []byte) []byte {
ret
=
ReParseJson
(
&
ice
)
// CMDB 消息
case
Msg_C
MDB
:
var
msg
MJ
cmdb
case
Msg_C
mdbInfo
:
var
msg
MJ
CmdbInfo
ParseJson
(
unmsg
,
&
msg
)
ice
:=
msg
.
MsgDeal
()
ret
=
ReParseJson
(
&
ice
)
default
:
msg
:=
ParseWX
(
url
,
&
unmsg
)
msg
:=
ParseWX
(
query
,
&
unmsg
)
go
msg
.
MsgDealSend
()
}
return
ret
return
ret
,
nil
}
//
...
...
@@ -430,9 +445,29 @@ func (wake *MJwake) MsgDeal() interface{} {
}
// 关于 CMDB 的消息处理
func
(
cmdb
*
MJcmdb
)
MsgDeal
()
interface
{}
{
fmt
.
Println
(
"cmdb"
)
return
cmdb
func
(
ci
*
MJCmdbInfo
)
MsgDeal
()
interface
{}
{
switch
ci
.
Instruction
{
case
Msg_CmdbInfo_update
:
switch
ci
.
Status
{
case
Msg_status_commit
:
ci
.
updateS
()
case
Msg_status_deal
:
ci
.
updateC
()
}
}
// 修改状态
switch
ci
.
Status
{
// 服务器
case
Msg_status_commit
:
ci
.
Status
=
Msg_status_deal
// 客户端
case
Msg_status_deal
:
return
nil
}
return
ci
}
// 关于 wxwork 企业微信 的 消息处理
...
...
public/msg_init.go
View file @
95ffb832
...
...
@@ -18,7 +18,7 @@ const Msg_status_deal string = "deal"
const
Msg_Report
string
=
"report"
const
Msg_Exec
string
=
"exec"
const
Msg_Wake
string
=
"wake"
const
Msg_C
MDB
string
=
"cmdb
"
const
Msg_C
mdbInfo
string
=
"cmdbinfo
"
const
Msg_Wxwork
string
=
"wxwork"
// msg report type ///////////////////////////////////////////////////////////
...
...
@@ -58,7 +58,10 @@ const Msg_Wake_Status_Req string = "WakeReq"
const
Msg_Wake_Status_Start
string
=
"WakeStart"
const
Msg_Wake_Status_Over
string
=
"WakeOver"
// wxwork event key ////////////////////////////////////////////////////////////////
// msg cmdb info key //
const
Msg_CmdbInfo_update
string
=
"update"
// msg wxwork event key ////////////////////////////////////////////////////////////////
const
WXEK_zwDevopsPowerWake
string
=
"zwdevops_power_wake"
const
WXEK_zwDevopsPowerTurnOFF
string
=
"zwdevops_power_turnoff"
...
...
@@ -128,12 +131,13 @@ type MJwxwork struct {
Result
string
Content
string
}
type
MJ
cmdb
struct
{
type
MJ
CmdbInfo
struct
{
MsgType
string
`json:"msgtype"`
Status
string
`json:"status"`
Instruction
string
`json:"instruction"`
Explain
string
`json:"explain"`
Version
string
`json:"version"`
DataStr
string
`json:"datastr"`
DataBool
bool
`json:"databool"`
}
//
...
...
@@ -238,6 +242,17 @@ func GJwakeList(list string) interface{} {
return
wake
}
// cmdb
func
GJCmdbInfo
(
s
string
,
data
string
)
MJCmdbInfo
{
var
ci
MJCmdbInfo
ci
.
MsgType
=
Msg_CmdbInfo
ci
.
Status
=
Msg_status_commit
ci
.
Instruction
=
s
ci
.
DataStr
=
data
return
ci
}
// wxwork
func
(
wxwork
*
MJwxwork
)
SendText
(
text
string
)
{
...
...
public/send.go
View file @
95ffb832
...
...
@@ -7,6 +7,8 @@ import (
"io/ioutil"
"net"
"net/http"
"net/url"
"strings"
)
var
sendserver
func
(
msgtype
string
,
v
interface
{})
...
...
@@ -38,6 +40,7 @@ func SendMsg(server, msgtype string, v interface{}) {
LOG
(
ERROR
,
"Json to byte Error"
,
fmt
.
Sprintf
(
"%v %v"
,
err
,
v
))
}
link
:=
fmt
.
Sprintf
(
"http://%s/%s"
,
server
,
msgtype
)
fmt
.
Println
(
string
(
textbyte
))
// 发送数据
resp
,
err
:=
http
.
Post
(
link
,
...
...
@@ -48,14 +51,25 @@ func SendMsg(server, msgtype string, v interface{}) {
}
defer
resp
.
Body
.
Close
()
if
resp
.
StatusCode
!=
200
{
LOG
(
ERROR
,
""
,
fmt
.
Sprintf
(
"url:%s,StatusCode:%d,data:%s
\n
"
,
link
,
resp
.
StatusCode
,
string
(
textbyte
)))
return
}
// 解析url
url_link
,
_
:=
url
.
Parse
(
link
)
url
:=
strings
.
Split
(
url_link
.
Path
,
"/"
)
query
:=
url_link
.
RawQuery
// 读取数据
body
,
err
:=
ioutil
.
ReadAll
(
resp
.
Body
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
err
)
}
// 处理数据
if
len
(
body
)
>
0
&&
string
(
body
)
!=
"null"
{
DealMsg
(
msgtype
,
""
,
body
)
DealMsg
(
url
,
query
,
body
)
}
}
...
...
@@ -90,6 +104,9 @@ func SendGetRequest(link *string) ([]byte, error) {
return
nil
,
err
}
defer
resp
.
Body
.
Close
()
if
resp
.
StatusCode
!=
200
{
return
nil
,
fmt
.
Errorf
(
"url:%s,StatusCode:%d"
,
*
link
,
resp
.
StatusCode
)
}
body
,
err
:=
ioutil
.
ReadAll
(
resp
.
Body
)
return
body
,
err
}
...
...
public/win.go
View file @
95ffb832
...
...
@@ -8,8 +8,6 @@ import (
"os/exec"
"strconv"
"strings"
"golang.org/x/text/encoding/simplifiedchinese"
)
// 获取环境变量
...
...
@@ -26,10 +24,7 @@ func GetEnvFqdn(s string) string {
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
err
)
}
out
,
err
:=
simplifiedchinese
.
GBK
.
NewDecoder
()
.
Bytes
(
cmd
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
err
)
}
out
:=
ToChineseChar
(
cmd
)
for
_
,
each
:=
range
strings
.
Split
(
string
(
out
),
","
)
{
if
strings
.
Contains
(
each
,
s
)
{
...
...
@@ -142,7 +137,7 @@ func Execcmd_output(cmdargs string) []byte {
func
Execcmd_outputIgnoreError
(
cmdargs
string
)
[]
byte
{
app
,
appargs
,
_
:=
execcmd_base_nolog
(
cmdargs
)
out
,
_
:=
exec
.
Command
(
app
,
appargs
...
)
.
CombinedOutput
()
outchinese
,
_
:=
simplifiedchinese
.
GBK
.
NewDecoder
()
.
Bytes
(
out
)
outchinese
:=
ToChineseChar
(
out
)
return
outchinese
}
...
...
@@ -176,7 +171,7 @@ func PSCommandOutput(cmd string) (string, error) {
if
err
!=
nil
{
return
""
,
err
}
out
,
err
:=
simplifiedchinese
.
GBK
.
NewDecoder
()
.
Bytes
(
r
)
out
:=
ToChineseChar
(
r
)
if
err
!=
nil
{
return
""
,
err
}
...
...
@@ -304,7 +299,7 @@ func CopyFile(dstFileName string, srcFileName string) (written int64, err error)
srcFile
,
err
:=
os
.
Open
(
srcFileName
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
fmt
.
Sprintf
(
"open file err = %v
\n
"
,
err
)
)
LOG
(
ERROR
,
NULL
,
err
)
return
}
...
...
@@ -313,7 +308,7 @@ func CopyFile(dstFileName string, srcFileName string) (written int64, err error)
// dstFile, err := os.OpenFile(dstFileName, os.O_WRONLY | os.O_CREATE, 0755)
dstFile
,
err
:=
os
.
OpenFile
(
dstFileName
,
os
.
O_WRONLY
|
os
.
O_CREATE
|
os
.
O_TRUNC
,
0755
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
fmt
.
Sprintf
(
"open file err = %v
\n
"
,
err
)
)
LOG
(
ERROR
,
NULL
,
err
)
return
}
...
...
@@ -330,10 +325,10 @@ func RemoveFile(name string) error {
// 创建文件夹
func
mkdir
(
dir
string
)
{
os
.
Mkdir
(
dir
,
os
.
ModeSetuid
)
os
.
Mkdir
(
dir
,
0755
)
}
func
MkdirAll
(
dir
string
)
error
{
return
os
.
MkdirAll
(
dir
,
os
.
ModeSetuid
)
return
os
.
MkdirAll
(
dir
,
0755
)
}
func
ExistFolder
(
dir
string
)
{
if
NotExist
(
dir
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment