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
1502af8b
Commit
1502af8b
authored
Jan 26, 2024
by
陶腾飞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加openvpn的处理逻辑
parent
aa2ef175
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
136 additions
and
25 deletions
+136
-25
public/dept.go
+2
-0
public/env.go
+1
-1
public/msg_deal.go
+61
-17
public/msg_init.go
+20
-0
public/send.go
+13
-4
public/win_key.go
+2
-2
public/wxmsg.go
+17
-1
public/wxstruct.go
+20
-0
No files found.
public/dept.go
View file @
1502af8b
...
...
@@ -161,6 +161,8 @@ func GetLDAPDeptFromHostnameP2(part string, groupname bool) string {
result
=
Dept_zw_qbbm_hw_string
+
unit
case
"DY"
:
result
=
Dept_zw_qbbm_dy_string
+
unit
case
"BD"
:
result
=
Dept_zw_qbbm_bd_string
+
unit
case
"BGYJ"
:
result
=
Dept_zw_qbbm_bgyj_string
+
unit
}
...
...
public/env.go
View file @
1502af8b
...
...
@@ -61,7 +61,6 @@ var Dir_tmp string = GetEnv("tmp")
const
Dir_softlike
string
=
`D:\software\softlike\`
const
Dir_application
string
=
`D:\software\application\`
const
Dir_otherFile
string
=
`D:\file\`
// application //
const
App_MultiSplit
string
=
SMB_ADSoftOthTool
+
"win_MultiSplit.exe"
...
...
@@ -100,6 +99,7 @@ var WxWorkToken string
const
WxWorkInteraction_RemoteTerminal
=
"请求远程终端"
const
WxWorkInteraction_SignUP
=
"申请个人账号"
const
WxWorkInteraction_Dimission
=
"停用个人账号"
const
WxWorkInteraction_OpenVPN
=
"申请OpenVPN"
// log level //
var
Loglevel
string
=
INFO
...
...
public/msg_deal.go
View file @
1502af8b
...
...
@@ -2,8 +2,9 @@ package public
import
(
"fmt"
"io
/ioutil
"
"io"
"net/http"
"os"
"strings"
)
...
...
@@ -13,7 +14,7 @@ func DealMsgEnter(w http.ResponseWriter, r *http.Request) {
url
:=
strings
.
Split
(
r
.
URL
.
Path
,
"/"
)
query
:=
r
.
URL
.
RawQuery
unmsg
,
err
:=
io
util
.
ReadAll
(
r
.
Body
)
unmsg
,
err
:=
io
.
ReadAll
(
r
.
Body
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
err
)
w
.
Write
([]
byte
(
""
))
...
...
@@ -35,7 +36,7 @@ func DealMsg(url []string, query string, unmsg []byte) ([]byte, error) {
case
Msg_File
:
var
err
error
file
:=
url
[
2
]
ret
,
err
=
ioutil
.
ReadFile
(
Dir_application
+
file
)
ret
,
err
=
os
.
ReadFile
(
Dir_application
+
file
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
err
)
...
...
@@ -46,20 +47,11 @@ func DealMsg(url []string, query string, unmsg []byte) ([]byte, error) {
case
Msg_Softlike
:
var
err
error
file
:=
url
[
2
]
ret
,
err
=
ioutil
.
ReadFile
(
Dir_softlike
+
file
)
ret
,
err
=
os
.
ReadFile
(
Dir_softlike
+
file
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
err
)
return
nil
,
err
}
case
Msg_OthFile
:
var
err
error
file
:=
url
[
2
]
ret
,
err
=
ioutil
.
ReadFile
(
Dir_otherFile
+
file
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
err
)
return
nil
,
err
}
case
Msg_WXAuth
:
LOG
(
INFO
,
""
,
query
)
return
[]
byte
(
WXAuth
(
query
)),
nil
...
...
@@ -615,7 +607,7 @@ func (ci *MJCmdbInfo) MsgDeal() interface{} {
return
ci
}
// 关于
wxwork 企业微信
的 消息处理
// 关于
企业微信菜单
的 消息处理
func
(
wxwork
*
MJwxwork
)
MsgDealSend
()
{
// 创建菜单调用工具:https://open.work.weixin.qq.com/wwopen/devtool/interface?doc_id=10786
// 创建菜单官方说明:https://work.weixin.qq.com/api/doc/90000/90135/90231
...
...
@@ -800,6 +792,7 @@ func (wxwork *MJwxwork) MsgDealSend() {
}
}(
wxwork
.
Name
,
wxwork
.
UserID
)
wxwork
.
Result
=
"开始关机,请等待~"
// 电源管理 电源状态
case
WXEK_zwDevopsPowerStatus
:
wxwork
.
SendText
(
"收到查询指令,正在处理!"
)
...
...
@@ -877,20 +870,61 @@ func (wxwork *MJwxwork) MsgDealSend() {
return
}
wxwork
.
Result
=
fmt
.
Sprintf
(
"您的主机IP地址为%s"
,
ip
)
// 账号管理 获取个人账号
// 账号管理 获取主机个人账号
case
WXEK_zwDevopsAccountSelf
:
LOG
(
INFO
,
wxwork
.
Instruction
,
fmt
.
Sprintf
(
"%s 获取个人账号"
,
wxwork
.
Name
))
wxwork
.
Result
=
"登录名:姓名拼音小写
\n
"
+
"完整登录名:姓名拼音小写@zhiweireach.com"
// 账号管理 获取公共账号
// 账号管理 获取主机公共账号
case
WXEK_zwDevopsAccountPublic
:
LOG
(
INFO
,
wxwork
.
Instruction
,
fmt
.
Sprintf
(
"%s 获取公共账号"
,
wxwork
.
Name
))
wxwork
.
Result
=
"登录名:组名首字母小写zhiwei
\n
"
+
"完整登录名:组名首字母小写zhiwei@zhiweireach.com
\n
"
+
"例,巨量:jlzhiwei,报告研究中心:bgyjzxzhiwei
\n
"
+
"密码:1Q2W3e4r"
// 账号管理 申请OpenVPN账号
case
WXEK_zwDevopsOpenvpn
:
wxwork
.
Result
=
"请求已经提交审核,处理人:陶腾飞,包佳琪"
info
,
err
:=
GetWxworkWorkerInfo
(
wxwork
.
UserID
)
if
err
!=
nil
{
LOG
(
ERROR
,
wxwork
.
Instruction
,
err
)
return
}
if
len
(
info
.
Department
)
==
0
{
wxwork
.
Result
=
"您似乎不属于任何一部门,无法申请openvpn"
break
}
department
,
err
:=
GetWxworkWorkerDepartmentName
(
info
.
Department
[
0
])
var
msg
string
if
err
!=
nil
{
msg
=
"获取错误"
}
else
{
msg
=
fmt
.
Sprintf
(
"%s
\n
姓名:%s
\n
ID:%s
\n
部门:%s"
,
WxWorkInteraction_OpenVPN
,
wxwork
.
Name
,
wxwork
.
UserID
,
department
)
}
SendWxworkTextToAdmins
(
msg
)
// 账号管理 获取OpenVPN账号
case
WXEK_zwDevopsOpenvpn_get
:
info
,
err
:=
GetWxworkWorkerInfo
(
wxwork
.
UserID
)
if
err
!=
nil
{
LOG
(
ERROR
,
wxwork
.
Instruction
,
err
)
return
}
department
,
err
:=
GetWxworkWorkerDepartmentName
(
info
.
Department
[
0
])
if
err
!=
nil
{
wxwork
.
Result
=
"获取错误"
break
}
g
:=
GJOpenVPN
(
wxwork
.
Name
,
wxwork
.
UserID
,
department
)
wxwork
.
Result
=
SendOpenVPNMsg
(
g
)
default
:
if
wxwork
.
Name
==
"陶腾飞"
||
wxwork
.
Name
==
"边爽"
{
if
wxwork
.
Name
==
"陶腾飞"
||
wxwork
.
Name
==
"边爽"
||
wxwork
.
Name
==
"包佳琪"
{
if
strings
.
Contains
(
wxwork
.
Content
,
"
\n
"
)
{
msgtype
:=
strings
.
Split
(
wxwork
.
Content
,
"
\n
"
)[
0
]
...
...
@@ -916,6 +950,16 @@ func (wxwork *MJwxwork) MsgDealSend() {
rep
.
WxUser
=
wxwork
.
UserID
rep
.
DataStr
=
wxwork
.
Content
SendADMsg
(
Msg_Report
,
rep
)
case
WxWorkInteraction_OpenVPN
:
m
:=
strings
.
Split
(
wxwork
.
Content
,
"
\n
"
)
id
:=
strings
.
Split
(
m
[
2
],
":"
)[
1
]
g
:=
GJOpenVPN
(
strings
.
Split
(
m
[
1
],
":"
)[
1
],
id
,
strings
.
Split
(
m
[
3
],
":"
)[
1
])
wxwork
.
Result
=
SendOpenVPNMsg
(
g
)
LOG
(
INFO
,
wxwork
.
Instruction
,
wxwork
.
Result
)
SendWxworkTextToAdmins
(
wxwork
.
Result
)
SendWxworkTextToAUser
(
id
,
wxwork
.
Result
)
wxwork
.
Result
=
""
default
:
wxwork
.
Result
=
fmt
.
Sprintf
(
"%s 不是有效的"
,
msgtype
)
...
...
public/msg_init.go
View file @
1502af8b
...
...
@@ -81,6 +81,8 @@ const WXEK_zwDevopsPowerStatus string = "zwdevops_power_status"
const
WXEK_zwDevopsHostGetinfo
string
=
"zwdevops_host_getinfo"
const
WXEK_zwDevopsAccountSelf
string
=
"zwdevops_account_self"
const
WXEK_zwDevopsAccountPublic
string
=
"zwdevops_account_public"
const
WXEK_zwDevopsOpenvpn
string
=
"zwdevops_openvpn"
const
WXEK_zwDevopsOpenvpn_get
string
=
"zwdevops_openvpn_get"
const
WXWORK_zwDevopsChatAccountManager
string
=
"zwDevopsChatAccountManager"
...
...
@@ -179,6 +181,14 @@ type MJBoom struct {
Errmsg
string
`json:"errmsg"`
}
type
MJopenvpn
struct
{
MsgType
string
`json:"msgtype"`
Name
string
`json:"name"`
Dept
string
`json:"dept"`
UserID
string
`json:"userid"`
Msg
string
`json:"msg"`
}
//
//
// quickly Get & Set Json
...
...
@@ -325,3 +335,13 @@ func GJBoom(i, s string) MJBoom {
boom
.
DataStr
=
s
return
boom
}
// openvpn
func
GJOpenVPN
(
name
,
id
,
dept
string
)
MJopenvpn
{
var
ovpn
MJopenvpn
ovpn
.
MsgType
=
WxWorkInteraction_OpenVPN
ovpn
.
Name
=
name
ovpn
.
UserID
=
id
ovpn
.
Dept
=
dept
return
ovpn
}
public/send.go
View file @
1502af8b
...
...
@@ -4,7 +4,7 @@ import (
"bytes"
"encoding/json"
"fmt"
"io
/ioutil
"
"io"
"net"
"net/http"
"net/url"
...
...
@@ -61,7 +61,7 @@ func SendMsg(server, msgtype string, v interface{}) {
query
:=
url_link
.
RawQuery
// 读取数据
body
,
err
:=
io
util
.
ReadAll
(
resp
.
Body
)
body
,
err
:=
io
.
ReadAll
(
resp
.
Body
)
if
err
!=
nil
{
LOG
(
ERROR
,
NULL
,
err
)
}
...
...
@@ -106,7 +106,7 @@ func SendGetRequest(link *string) ([]byte, error) {
if
resp
.
StatusCode
!=
200
{
return
nil
,
fmt
.
Errorf
(
"url:%s,StatusCode:%d"
,
*
link
,
resp
.
StatusCode
)
}
return
io
util
.
ReadAll
(
resp
.
Body
)
return
io
.
ReadAll
(
resp
.
Body
)
}
// 发送 带Data的Post请求
...
...
@@ -121,7 +121,7 @@ func SendPostRequestWithData(link *string, data interface{}) ([]byte, error) {
return
nil
,
err
}
defer
resp
.
Body
.
Close
()
body
,
err
:=
io
util
.
ReadAll
(
resp
.
Body
)
body
,
err
:=
io
.
ReadAll
(
resp
.
Body
)
return
body
,
err
}
...
...
@@ -249,3 +249,12 @@ func GetSendServer(hostname string) func(msgtype string, v interface{}) {
}
return
sendserver
}
func
SendOpenVPNMsg
(
v
interface
{})
string
{
openvpn_server
:=
"http://192.168.0.11:16825/api"
b
,
err
:=
SendPostRequestWithData
(
&
openvpn_server
,
v
)
if
err
!=
nil
{
return
err
.
Error
()
}
return
string
(
b
)
}
public/win_key.go
View file @
1502af8b
...
...
@@ -2,7 +2,7 @@ package public
import
(
"fmt"
"
io/ioutil
"
"
os
"
"gopkg.in/yaml.v3"
)
...
...
@@ -10,7 +10,7 @@ import (
var
key_time
int
=
0
func
getYAML
(
file
string
)
(
map
[
string
][]
string
,
error
)
{
yamlFile
,
err
:=
ioutil
.
ReadFile
(
file
)
yamlFile
,
err
:=
os
.
ReadFile
(
file
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
public/wxmsg.go
View file @
1502af8b
...
...
@@ -141,7 +141,6 @@ func GetWxworkWorkerInfo(userid string) (wxJsonWorkerInfo, error) {
// 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
)
if
err
!=
nil
{
...
...
@@ -155,3 +154,20 @@ func GetWxworkWorkerDepartmentName(deptID int) (string, error) {
}
return
wd
.
Department
.
Name
,
nil
}
// func GetWxworkDepartmentList() {
// var wd wxDepartmentList
// link := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=%s", WxWorkToken)
// data, err := SendGetRequest(&link)
// if err != nil {
// return "", err
// }
// if err := ParseJson(data, &wd); err != nil {
// return "", err
// }
// if wd.Errcode != 0 {
// return "", fmt.Errorf(wd.Errmsg)
// }
// return wd.Department.Name, nil
// }
public/wxstruct.go
View file @
1502af8b
...
...
@@ -120,3 +120,23 @@ type wxJsonWorkerDepartmentExtattrDept struct {
Parentid
int
`json:"parentid"`
Order
int
`json:"order"`
}
type
wxDepartmentList
struct
{
Errcode
int
`json:"errcode"`
Errmsg
string
`json:"errmsg"`
Department
[]
wxDepartmentListData
`json:"department"`
}
type
wxDepartmentListData
struct
{
ID
int
`json:"id"`
Name
string
`json:"name"`
Parentid
int
`json:"parentid"`
Order
int
`json:"order"`
DepartmentLeader
[]
interface
{}
`json:"department_leader"`
}
type
wxDepartmentListAllName
struct
{
Department
[]
wxDepartmentListData
`json:"department"`
}
type
wxDepartmentListAllNameData
struct
{
ID
int
`json:"id"`
Name
string
`json:"name"`
}
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