Commit 35ce7d2d by 陶腾飞

mod

parent 09dd5837
No preview for this file type
......@@ -17,13 +17,17 @@ func daemonInit(){
public.PrintLog("init: create Documents Base -> ",public.DocuBase)
public.Mkdir(public.DocuBase)
}
public.PrintLog(public.Env_computername," Deamon start")
if notadserver() { public.SendServerReport(public.Env_computername + " Deamon start")}
public.PrintLog(public.Env_computername," Daemon start")
if notadserver() {
public.SendServerExec(public.Version)
public.SendServerReport(public.Env_computername + " Daemon start")
}
}
func deamonRun(){
daemonHost := public.Env_computername
listener, err := net.Listen("tcp", public.DeamonListen)
listener, err := net.Listen("tcp", public.DaemonListen)
if err != nil {
public.PrintLog("Listen Error ", err)
return
......
package main
// import (
// "bufio"
// "os"
// "bytes"
// "AD-Control/public"
// )
......@@ -2,18 +2,19 @@ package public
// user env ///////////////////////////////////////////////////////////////
var Env_dept string = GetEnvif("DEPT")
var Env_userprofile string = GetEnvif("USERPROFILE")
var Env_username string = GetEnvif("USERNAME")
var Env_computername string = GetEnvif("COMPUTERNAME")
var Env_homeshare string = GetEnvif("HOMESHARE")
var Env_userdomain string = GetEnvif("USERDOMAIN")
var Env_userprofile string = GetEnv("USERPROFILE")
var Env_username string = GetEnv("USERNAME")
var Env_computername string = GetEnv("COMPUTERNAME")
var Env_homeshare string = GetEnv("HOMESHARE")
var Env_userdomain string = GetEnv("USERDOMAIN")
var Env_fqdn_cn string = GetEnvFqdn("CN")
var Env_dept string = GetEnvFqdn("OU")
// computer env /////////////////////////////////////////////////////
const Env_FreeFileSyncExe string = `C:\Program Files (x86)\zhiwei\FreeFileSync_10.22\FreeFileSync.exe`
const Env_FreeFileSyncExe string = `C:\Progra~2\zhiwei\FreeFileSync_10.22\FreeFileSync.exe`
......@@ -24,32 +25,39 @@ const Env_SMBAdserver string = `\\` + Env_MainADHostname + `\`
const Env_ADSoft string = Env_SMBAdserver + "software"
const Env_ADMain string = Env_SMBAdserver + "ADMAIN"
var Env_ADMainDeptShare string = Env_ADMain + `\` + Env_dept + `\` + "部门共享"
const Env_ADSfoftlike string = Env_ADSoft + `\` + "softlike"
const Env_ADSoftlike string = Env_ADSoft + `\` + "softlike"
const Env_ADApplication string = Env_ADSoft + `\` + "application" + `\`
const Env_ADSoftTool string = Env_ADSoft + `\` + "tools" + `\`
const Env_ADSoftTool_RebootUser string = Env_ADApplication + "reboot.bat"
const Env_ADSoftTool_Update string = Env_ADApplication + "update.bat"
// app env ////////////////////////////////////////////////////////////////
const Debug bool = true
const DeamonPort string = "16823"
const DeamonListen string = ":" + DeamonPort
const ADServerDeamon string = Env_MainADHostname + DeamonListen
const DaemonPort string = "16823"
const DaemonListen string = ":" + DaemonPort
const ADServerDaemon string = Env_MainADHostname + DaemonListen
var LocalDaemon string = Env_computername + DaemonListen
const DocuBase string = `C:\Users\Public\Documents\AD-Control\`
const RandMax int = 60
const Version string = "0.5"
// backup env //////////////////////////////////////////////////////////////
var BackupVersion string = "0417"
var BackupVersion string = "0419"
var BackupExtFile string = ".ffs_batch"
var BackupReplaceKey =[]byte("tengfei")
// wxwork env ///////////////////////////////////////////////////////////////
const WxworkBotLink string = `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=59107f72-5b72-4a20-a33c-fdb1cd46f2c6`
// other env ///////////////////////////////////////////////////////////////
const Link_WxworkBot string = `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=59107f72-5b72-4a20-a33c-fdb1cd46f2c6`
const Link_MultiSplit string = Env_ADApplication + "win_MultiSplit.exe"
const Cmdk string = "cmd /k "
const Startk string = "cmd /k start "
//
//
//
......@@ -85,8 +93,7 @@ const Msg_Backup_Status_RFile string = "rfile"
const Msg_Backup_Status_If string = "if"
const Msg_Backup_Status_RunBak string = "runbak"
//const Msg_Backup_Status_Over string = "over"
const Msg_Backup_Status_Error string = msgerror
const Msg_Backup_Status_Error string = msgerror
// msg exec status ////////////////////////////////////////////////////////////////
......@@ -94,9 +101,15 @@ const Msg_Exec_State_Request string = "request"
const Msg_Exec_State_Ack string = "ack"
const Msg_Exec_CloseWindows string = "closewindow"
const Msg_Exec_CloseWindows_cmd string = "shutdown -s -t 15"
const Msg_Exec_CancelCloseWindows string = "cancelclosewindow"
const Msg_Exec_CancelCloseWindows string = "cancelclosewindows"
const Msg_Exec_CancelCloseWindows_cmd string = "shutdown -a"
const Msg_Exec_LogOffUser string = "logoffuser"
const Msg_Exec_LogOffUser_cmd string = "shutdown -l"
const Msg_Exec_UserExec string = "userexec"
const Msg_Exec_RebootWindows string = "rebootWindows"
const Msg_Exec_RebootWindows_cmd string = "shutdown -r -t 15"
const Msg_Exec_Update string = "update"
const Msg_Exec_Update_cmd string = Env_ADSoftTool_Update
......@@ -119,7 +132,7 @@ type MJreport struct {
// Exec Json Fromat ///////////////////////////////////////////////////////
type MJexec struct {
MJbase
Instruction string `json:instruction`
Instruction string `json:"instruction"`
Command string `json:"command"`
//ExtData string `json:"extdata"`
IfDelay bool `josn:"ifDelay"`
......
......@@ -67,16 +67,34 @@ func (exec *MJexec)Msg_Deal()interface{}{
case Msg_Exec_CancelCloseWindows:
exec.Command = Msg_Exec_CancelCloseWindows_cmd
exec.IfDelay = false
case Msg_Exec_LogOffUser:
exec.Command = Msg_Exec_LogOffUser_cmd
exec.IfDelay = false
case Msg_Exec_RebootWindows:
exec.Command = Msg_Exec_RebootWindows_cmd
exec.IfDelay = false
case Msg_Exec_Update:
exec.Explain = Version
exec.Command = Msg_Exec_Update_cmd
exec.IfDelay = false
}
return exec
case Msg_Exec_State_Ack:
// maybe 利用协程,单独启动
switch exec.Instruction{
case Msg_Exec_Update:
if exec.Explain == Version{ return nil}
case Msg_Exec_CancelCloseWindows:
exec.Command = Msg_Exec_CancelCloseWindows_cmd
}
if exec.IfDelay {Delay(&exec.Delay)}
Execcmd_nowait(exec.Command)
}
return nil
}
func (bak * MJbackup)Msg_Deal () interface{}{
func (bak * MJbackup)Msg_Deal() interface{}{
switch bak.Status{
case Msg_Backup_Status_Start:
bak.Username = Env_username
......@@ -125,7 +143,7 @@ func (bak * MJbackup)Msg_Deal () interface{}{
bak.Explain = "Backup Runing"
PrintLog(bak.Explain)
SendMsg(bak.Computername + DeamonListen,bak)
SendMsg(bak.Computername + DaemonListen,bak)
case Msg_Backup_Status_RunBak:
// 有新版本的话,下行赋值才有意义
......@@ -170,19 +188,24 @@ func (rep * MJreport)init(Report string) {
}
func GJexec(s string) interface{}{
func GJexec(s string) MJexec{
var rep MJexec
rep.init(s)
return rep
}
func GJexecAck(s string) interface{}{
// var rep := GJexec(s)
// 这样不行,GJexec返回的是interface{}
var rep MJexec
rep.init(s)
rep.Status = Msg_Exec_State_Ack
return rep
}
func GJexecUserCmd(s string) interface{}{
var rep MJexec
rep.init("")
rep.Command = s
rep.Status = Msg_Exec_State_Ack
return rep
}
func (exec * MJexec)init(s string){
exec.Username = Env_username
exec.Computername = Env_computername
......@@ -193,8 +216,6 @@ func (exec * MJexec)init(s string){
exec.IfDelay = false
exec.Delay = Rand(RandMax)
}
func GJbackup(s string)interface{}{
var rep MJbackup
rep.init(s)
......
......@@ -8,14 +8,16 @@ import (
"bufio"
"math/rand"
"time"
"os/exec"
"io/ioutil"
"strconv"
"golang.org/x/text/encoding/simplifiedchinese"
)
// 获取 环境变量
// 如果空 输出错误
// 但不退出
func GetEnvif(e string) string{
func GetEnv(e string) string{
r := os.Getenv(e)
DebugLog(e,"->",r)
// 获取为空
......@@ -24,7 +26,23 @@ func GetEnvif(e string) string{
}
return r
}
func GetEnvFqdn(s string)string{
cmd,err := exec.Command("whoami","/fqdn").Output()
if err !=nil {
PrintLog(err)
}
out,err := simplifiedchinese.GBK.NewDecoder().Bytes(cmd)
if err !=nil {
PrintLog(err)
}
for _,each := range strings.Split(string(out),","){
if strings.Index(each,s) != -1{
return each[3:]
}
}
return ""
}
// 获取 消息内容
func ParseJsonHead(b []byte)string{
//{"msgtype":"report","msgstate":"","username":"zhiweiadserver","computername":"ADSERVER","report":"下班"}
......@@ -123,4 +141,8 @@ func Delay(s * string){
DebugLog("延迟",*s,"秒")
i,_ := strconv.Atoi(*s)
time.Sleep(time.Duration(i) * time.Second)
}
func TheUser(s * string)bool{
if *s == Env_fqdn_cn || *s == "taotengfei" || *s == "tengfei" || *s == "zhiweiadserver" {return true}
return false
}
\ No newline at end of file
......@@ -10,8 +10,14 @@ import (
)
func SendDaemon(v interface{})[]byte{
return SendMsg(LocalDaemon,v)
}
func SendDaemonExec(s string){
SendDaemon(GJexecUserCmd(s))
}
func SendServer(v interface{})[]byte{
return SendMsg(ADServerDeamon,v)
return SendMsg(ADServerDaemon,v)
}
func SendServerReport(s string)[]byte{
return SendServer(GJreport(s))
......@@ -64,5 +70,5 @@ func SendWX(Content string){
"content": "`+Content+`"
}
}`)
http.Post(WxworkBotLink,"application/json; charset=utf-8",bytes.NewBuffer(w))
http.Post(Link_WxworkBot,"application/json; charset=utf-8",bytes.NewBuffer(w))
}
\ No newline at end of file
......@@ -12,21 +12,24 @@ func Execcmd_nowait(cmdargs string){
// 不接受 shutdown -s -t 0
c := strings.Split(cmdargs," ")
len := len(c)
var err error
switch len{
case 1:
exec.Command(c[0]).Start()
err = exec.Command(c[0]).Start()
case 2:
exec.Command(c[0],c[1]).Start()
err = exec.Command(c[0],c[1]).Start()
case 3:
exec.Command(c[0],c[1],c[2]).Start()
err = exec.Command(c[0],c[1],c[2]).Start()
case 4:
exec.Command(c[0],c[1],c[2],c[3]).Start()
err = exec.Command(c[0],c[1],c[2],c[3]).Start()
case 5:
exec.Command(c[0],c[1],c[2],c[3],c[4]).Start()
err = exec.Command(c[0],c[1],c[2],c[3],c[4]).Start()
}
if err !=nil {
DebugLog(err)
}
}
func Msg(message * string) {
walk.MsgBox(*new(walk.Form), "提示", *message, walk.MsgBoxIconInformation)
func Msg(message string) {
walk.MsgBox(*new(walk.Form), "提示", message, walk.MsgBoxIconInformation)
}
\ No newline at end of file
package main
import(
//"os/exec"
"strings"
"os/exec"
"fmt"
"golang.org/x/text/encoding/simplifiedchinese"
)
func main() {
cmd := "msg"
scmd := strings.Split(cmd," ")
fmt.Print(len(scmd))
cmd,err := exec.Command("whoami","/fqdn").Output()
if err !=nil {
fmt.Print(err)
}
gbk,err := simplifiedchinese.GBK.NewEncoder().Bytes([]byte(cmd))
if err !=nil {
fmt.Print(err)
}
return string(gbk)
}
@echo off
copy /y daemon\daemon.exe \\adserver\software\application
copy /y users\Users.exe \\adserver\software\application
pause
\ No newline at end of file
......@@ -36,11 +36,11 @@ func menuInitPower(ni * walk.NotifyIcon){
na.Triggered().Attach(pWorkOff)
case 1:
na.Triggered().Attach(pCloseWindows)
case 3:
case 2:
na.Triggered().Attach(pLogOffUser)
case 3:
na.Triggered().Attach(pRebootWindows)
case 4:
na.Triggered().Attach(pRebootComputer)
case 5:
na.Triggered().Attach(pCancelCloseWindows)
}
......@@ -66,10 +66,12 @@ func pCloseWindows(){
public.SendServerExec(public.Msg_Exec_CloseWindows)
}
func pLogOffUser(){
public.PrintLog("注销用户")
public.SendServerExec(public.Msg_Exec_LogOffUser)
}
func pRebootComputer(){
public.PrintLog("重启主机")
func pRebootWindows(){
public.SendServerExec(public.Msg_Exec_RebootWindows)
}
func pCancelCloseWindows(){
public.SendServerExec(public.Msg_Exec_CancelCloseWindows)
......@@ -87,7 +89,7 @@ func menuInitSoftwareInstall(ni * walk.NotifyIcon){
if err != nil {
public.PrintLog(err)
}
list,err := ioutil.ReadDir(public.Env_ADSfoftlike)
list,err := ioutil.ReadDir(public.Env_ADSoftlike)
if err != nil {
public.PrintLog(err)
}
......@@ -124,8 +126,8 @@ func menuInitSoftwareInstall(ni * walk.NotifyIcon){
sysmenu.SetEnabled(true)
}
func siEnter_admin(soft string){
cmd := exec.Command(public.Env_ADSfoftlike + `\` + soft)
cmd.Start()
go public.Msg("等待弹出安装窗口,请稍等。。")
public.SendDaemonExec(public.Env_ADSoftlike + `\` + soft)
}
......@@ -179,16 +181,16 @@ func menuInitUserTools(ni * walk.NotifyIcon){
sysmenu.SetEnabled(true)
}
func utDeptLinkWxPan(){
public.PrintLog("部门共享连接微盘")
public.Msg("等等嘛,还没好呢!")
}
func utDesktopLinkWxPan(){
public.PrintLog("桌面文件连接微盘")
public.Msg("别别别别急,缓一缓!")
}
func utHideIcon(){
public.PrintLog("隐藏图标")
public.Msg("emmmmmmm,大概下周吧,这周无望哈")
}
func utShowIcon(){
public.PrintLog("显示图标")
public.Msg("仅供参考!!")
}
......@@ -203,7 +205,7 @@ func menuInitFileShares(ni * walk.NotifyIcon){
// public.PrintLog(envhs)
fa := "文件共享"
// sub := [...]string{"部门共享连接微盘","隐藏桌面图标","恢复桌面图标"}
// // 建立空菜单
mfs,err := walk.NewMenu()
if err != nil {
......@@ -262,8 +264,68 @@ func menuInitFileShares(ni * walk.NotifyIcon){
sysmenu.SetVisible(true)
sysmenu.SetEnabled(true)
}
func fsOpenWindow(s string){
public.PrintLog(s)
exec.Command("explorer",s).Start()
}
\ No newline at end of file
}
//---------------------------------------------------------------
//
// Other
//
//---------------------------------------------------------------
func menuInitOther(ni * walk.NotifyIcon){
fa := "其他"
sub := [...]string{"Excel关键词分割","移动硬盘","重新加载"}
// 建立空菜单
nm,err := walk.NewMenu()
if err != nil {
public.PrintLog(err)
}
for i,buttonText := range sub{
// 建立 子按钮
na := walk.NewAction()
if err := na.SetText(buttonText); err != nil {
public.PrintLog(err)
}
// 为子按钮 添加事件
switch i{
case 0:
na.Triggered().Attach(oMultiSplit)
case 1:
na.Triggered().Attach(o_JR_huyibo_movedisk)
case 2:
na.Triggered().Attach(o_RebootUser)
}
// 将 子按钮 添加到 菜单
nm.Actions().Add(na)
}
//将菜单添加到托盘
sysmenu,err := ni.ContextMenu().Actions().AddMenu(nm)
if err != nil {
public.PrintLog(err)
}
// 主菜单 属性
sysmenu.SetText(fa)
sysmenu.SetVisible(true)
sysmenu.SetEnabled(true)
}
func oMultiSplit(){
public.Execcmd_nowait(public.Startk + public.Link_MultiSplit)
}
func o_JR_huyibo_movedisk(){
public.SendDaemonExec(`D:\WXWork.exe`)
}
func o_RebootUser(){
public.Execcmd_nowait(public.Env_ADSoftTool_RebootUser)
}
No preview for this file type
......@@ -9,6 +9,8 @@ import (
"AD-Control/public"
)
func userInit(){
public.SendServerExec(public.Msg_Exec_Update)
public.SendServerReport("Start User")
}
......@@ -18,6 +20,7 @@ func menuInit(ni * walk.NotifyIcon){
menuInitSoftwareInstall(ni)
menuInitUserTools(ni)
menuInitFileShares(ni)
menuInitOther(ni)
}
func main() {
......
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