Skip to content

Commit fa93554

Browse files
authored
Merge pull request #91 from canghai908/dev
Update to 2.1.2
2 parents 7344812 + a1f718c commit fa93554

File tree

19 files changed

+384
-258
lines changed

19 files changed

+384
-258
lines changed

.air.toml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
root = "."
2+
testdata_dir = "testdata"
3+
tmp_dir = "tmp"
4+
5+
[build]
6+
bin = "tmp\\main.exe web"
7+
cmd = "go build -o ./tmp/main.exe ."
8+
delay = 1000
9+
exclude_dir = ["assets", "tmp", "vendor", "testdata","download"]
10+
exclude_file = []
11+
exclude_regex = ["_test.go"]
12+
exclude_unchanged = false
13+
follow_symlink = false
14+
full_bin = ""
15+
include_dir = []
16+
include_ext = ["go", "tpl", "tmpl", "html"]
17+
kill_delay = "0s"
18+
log = "build-errors.log"
19+
send_interrupt = false
20+
stop_on_error = true
21+
22+
[color]
23+
app = ""
24+
build = "yellow"
25+
main = "magenta"
26+
runner = "green"
27+
watcher = "cyan"
28+
29+
[log]
30+
time = false
31+
32+
[misc]
33+
clean_on_exit = false
34+
35+
[screen]
36+
clear_on_rebuild = false

.drone.yml

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
kind: pipeline
2+
name: zbxtable
3+
steps:
4+
- name: build
5+
image: golang:1.18.6
6+
commands:
7+
- chmod a+x ./control
8+
- ./control build
9+
- ./control pack
10+
- name: scp dev
11+
image: appleboy/drone-scp
12+
settings:
13+
host:
14+
from_secret: 222_host
15+
port:
16+
from_secret: port
17+
username:
18+
from_secret: username
19+
password:
20+
from_secret: 222_password
21+
command_timeout: 10m
22+
target:
23+
- /home/wwwroot/downloads/dev
24+
source:
25+
- ./*.tar.gz
26+
when:
27+
branch:
28+
- dev
29+
- name: scp prod
30+
image: appleboy/drone-scp
31+
settings:
32+
host:
33+
from_secret: 222_host
34+
port:
35+
from_secret: port
36+
username:
37+
from_secret: username
38+
password:
39+
from_secret: 222_password
40+
command_timeout: 10m
41+
target:
42+
- /home/wwwroot/downloads/stable
43+
source:
44+
- ./*.tar.gz
45+
when:
46+
branch:
47+
- 2.1
48+
- name: scp demo
49+
image: appleboy/drone-scp
50+
settings:
51+
host:
52+
from_secret: demo_host
53+
port:
54+
from_secret: demo_port
55+
username:
56+
from_secret: demo_username
57+
password:
58+
from_secret: demo_password
59+
command_timeout: 10m
60+
target:
61+
- /tmp/zbxtable
62+
source:
63+
- zbxtable
64+
rm: true
65+
when:
66+
branch:
67+
- demo
68+
- name: ssh restart
69+
image: appleboy/drone-ssh
70+
settings:
71+
host:
72+
from_secret: demo_host
73+
username:
74+
from_secret: demo_username
75+
password:
76+
from_secret: demo_password
77+
port:
78+
from_secret: demo_port
79+
command_timeout: 10m
80+
script:
81+
- systemctl stop zbxtable
82+
- rm -rf /usr/local/zbxtable/zbxtable
83+
- mv /tmp/zbxtable/zbxtable /usr/local/zbxtable/
84+
- systemctl start zbxtable
85+
when:
86+
branch:
87+
- demo

cmd/install.go

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,13 @@ import (
77
"github.com/google/uuid"
88
"github.com/urfave/cli/v2"
99
"math/rand"
10+
"regexp"
1011
"strconv"
1112
"strings"
1213
"time"
1314
)
1415

15-
func init() {
16-
rand.Seed(time.Now().UnixNano())
17-
}
18-
19-
//tpl t
16+
// tpl t
2017
type EventTpl struct {
2118
HostsID string `json:"host_id"`
2219
HostHost string `json:"host_host"`
@@ -83,21 +80,29 @@ func CreateRecoveryTpl() string {
8380
return tp
8481
}
8582

86-
//RandStringRunes 随机密码生成
87-
func RandStringRunes() string {
88-
b := make([]rune, 10)
89-
for i := range b {
90-
b[i] = letterRunes[rand.Intn(len(letterRunes))]
83+
// GetStrongPasswordString 强密码生成
84+
func GetStrongPasswordString(l int) string {
85+
//~!@#$%^&*()_+{}":?><;.,
86+
str := "123456789ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz!@#$%&*"
87+
bytes := []byte(str)
88+
result := []byte{}
89+
r := rand.New(rand.NewSource(time.Now().UnixNano()))
90+
for i := 0; i < l; i++ {
91+
result = append(result, bytes[r.Intn(len(bytes))])
9192
}
92-
return string(b)
93-
}
9493

95-
//const
96-
var (
97-
letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
98-
)
94+
ok1, _ := regexp.MatchString(".[1|2|3|4|5|6|7|8|9]", string(result))
95+
ok2, _ := regexp.MatchString(".[Z|X|C|V|B|N|M|A|S|D|F|G|H|J|K|L|Q|W|E|R|T|Y|U|I|P]", string(result))
96+
ok3, _ := regexp.MatchString(".[z|x|c|v|b|n|m|a|s|d|f|g|h|j|k|l|q|w|e|r|t|y|u|i|p]", string(result))
97+
ok4, _ := regexp.MatchString(".[!|@|#|$|%|&|*]", string(result))
98+
if ok1 && ok2 && ok3 && ok4 {
99+
return string(result)
100+
} else {
101+
return GetStrongPasswordString(l)
102+
}
103+
}
99104

100-
//ms-aget const
105+
// ms-aget const
101106
var (
102107
MSName = "ms-agent"
103108
MSUser = "ms-agent"
@@ -136,7 +141,7 @@ func CheckZabbix() error {
136141
return nil
137142
}
138143

139-
//installAagent
144+
// installAagent
140145
func installAgent(*cli.Context) error {
141146
err := CheckZabbix()
142147
if err != nil {
@@ -190,7 +195,8 @@ func installAgent(*cli.Context) error {
190195
userpara["alias"] = MSUser
191196
userpara["name"] = MSUser
192197
}
193-
tPassword := RandStringRunes()
198+
//10位随机密码生成
199+
tPassword := GetStrongPasswordString(10)
194200
userpara["passwd"] = tPassword
195201
//5.2版本 取消type字段,切换为roleid,roleid=2默认为管理员角色
196202
//5.2以下版本为管理员角色type=3,5.2以上版本roleid=3,为超级管理员角色
@@ -279,7 +285,7 @@ func installAgent(*cli.Context) error {
279285
return nil
280286
}
281287

282-
//GetActionID by actionname
288+
// GetActionID by actionname
283289
func GetActionID(ActionName string) (string, error) {
284290
//action get
285291
Params := make(map[string]interface{}, 0)
@@ -310,7 +316,7 @@ func GetActionID(ActionName string) (string, error) {
310316
return hb[0].ActionID, nil
311317
}
312318

313-
//UserGrpInfo st
319+
// UserGrpInfo st
314320
type UserInfo struct {
315321
Mediatypes []struct {
316322
Mediatypeid string `json:"mediatypeid"`
@@ -321,7 +327,7 @@ type UserInfo struct {
321327
} `json:"usrgrps"`
322328
}
323329

324-
//GetUserID by username
330+
// GetUserID by username
325331
func GetUserID(Username string) (userinfo UserInfo, err error) {
326332
Params := make(map[string]interface{}, 0)
327333
FilterParams := make(map[string]string)

cmd/update.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package cmd
2+
3+
import (
4+
"github.com/astaxie/beego/logs"
5+
"github.com/sanbornm/go-selfupdate/selfupdate"
6+
"github.com/urfave/cli/v2"
7+
"zbxtable/models"
8+
)
9+
10+
var updater = &selfupdate.Updater{
11+
// Manually update the const, or set it using `go build -ldflags="-X main.VERSION=<newver>" -o hello-updater src/hello-updater/main.go`
12+
ApiURL: "http://dl.cactifans.com/stable/", // The server hosting `$CmdName/$GOOS-$ARCH.json` which contains the checksum for the binary
13+
BinURL: "http://dl.cactifans.com/stable/", // The server hosting the zip file containing the binary application which is a fallback for the patch method
14+
DiffURL: "http://dl.cactifans.com/stable/", // The server hosting the binary patch diff for incremental updates
15+
Dir: "update/", // The directory created by the app when run which stores the cktime file
16+
CmdName: "zbxtable", // The app name which is appended to the ApiURL to look for an update
17+
ForceCheck: true, // For this example, always check for an update unless the version is "dev"
18+
}
19+
20+
func GetVersion(version, gitHash, buildTime string) selfupdate.Updater {
21+
models.Version = version
22+
models.GitHash = gitHash
23+
models.BuildTime = buildTime
24+
updater.CurrentVersion = version
25+
return *updater
26+
}
27+
28+
var (
29+
// Install cli
30+
Update = &cli.Command{
31+
Name: "update",
32+
Usage: "update zbxtable",
33+
Action: update,
34+
}
35+
)
36+
37+
func update(*cli.Context) error {
38+
//获取更新信息
39+
UpdateVersion, err := updater.UpdateAvailable()
40+
//更新出错
41+
if err != nil {
42+
logs.Error("Update failed!", err)
43+
return err
44+
}
45+
//版本需要更新
46+
if UpdateVersion != "" {
47+
logs.Info("Start updating zbxtable!")
48+
err := updater.BackgroundRun()
49+
if err != nil {
50+
logs.Error("Update failed!", err)
51+
return err
52+
}
53+
//更新成功
54+
logs.Info("Successfully updated to version %s", updater.Info.Version)
55+
logs.Info("Update Next run, I should be %v", updater.Info.Version)
56+
return nil
57+
} else {
58+
logs.Info("The current version is %v ", updater.CurrentVersion)
59+
logs.Info("The latest version is %v ", updater.Info.Version)
60+
logs.Info("The current version is the latest version, no need to update!")
61+
return nil
62+
}
63+
return nil
64+
}

cmd/web.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,16 @@ import (
1717
)
1818

1919
const motd = `
20+
2021
$$$$$$$$\ $$$$$$$\ $$\ $$\ $$$$$$$$\ $$$$$$\ $$$$$$$\ $$\ $$$$$$$$\
2122
\____$$ |$$ __$$\ $$ | $$ |\__$$ __|$$ __$$\ $$ __$$\ $$ | $$ _____|
2223
$$ / $$ | $$ |\$$\ $$ | $$ | $$ / $$ |$$ | $$ |$$ | $$ |
2324
$$ / $$$$$$$\ | \$$$$ / $$ | $$$$$$$$ |$$$$$$$\ |$$ | $$$$$\
2425
$$ / $$ __$$\ $$ $$< $$ | $$ __$$ |$$ __$$\ $$ | $$ __|
2526
$$ / $$ | $$ |$$ /\$$\ $$ | $$ | $$ |$$ | $$ |$$ | $$ |
2627
$$$$$$$$\ $$$$$$$ |$$ / $$ | $$ | $$ | $$ |$$$$$$$ |$$$$$$$$\ $$$$$$$$\
27-
\________|\_______/ \__| \__| \__| \__| \__|\_______/ \________|\________|`
28+
\________|\_______/ \__| \__| \__| \__| \__|\_______/ \________|\________|
29+
`
2830

2931
var (
3032
//Web 配置
@@ -35,11 +37,11 @@ var (
3537
}
3638
)
3739

38-
//runWeb 启动web
40+
// runWeb 启动web
3941
func runWeb(*cli.Context) error {
42+
Initlogger()
4043
logs.Info(motd)
4144
CheckConfExist()
42-
Initlogger()
4345
if beego.BConfig.RunMode == "dev" {
4446
beego.BConfig.WebConfig.DirectoryIndex = true
4547
beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
@@ -61,7 +63,7 @@ func runWeb(*cli.Context) error {
6163
return nil
6264
}
6365

64-
//CheckDb
66+
// CheckDb
6567
func CheckDb(dbdriver, dbhost, dbuser, dbpass, dbname string, dbport string) error {
6668
//database type
6769
switch dbdriver {
@@ -90,7 +92,7 @@ func CheckDb(dbdriver, dbhost, dbuser, dbpass, dbname string, dbport string) err
9092
return nil
9193
}
9294

93-
//LoginZabbixAPI Check
95+
// LoginZabbixAPI Check
9496
func CheckZabbixAPI(args ...string) (string, error) {
9597
address := args[0]
9698
user := args[1]
@@ -127,7 +129,7 @@ func CheckZabbixAPI(args ...string) (string, error) {
127129
return version, nil
128130
}
129131

130-
//CheckConfExist config
132+
// CheckConfExist config
131133
func CheckConfExist() {
132134
_, err := os.Stat("./conf/app.conf")
133135
if err != nil {
@@ -143,13 +145,12 @@ func CheckConfExist() {
143145
}
144146
}
145147

146-
//init config files
148+
// init config files
147149
func InitConfig(v string) string {
148150
p, err := Cfg.Section("").GetKey(v)
149151
if err != nil {
150152
logs.Error(err)
151153
return ""
152-
os.Exit(1)
153154
}
154155
return p.String()
155156
}

0 commit comments

Comments
 (0)