/
plugins_controller.go
102 lines (95 loc) · 2.47 KB
/
plugins_controller.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package host
import (
"fmt"
"strconv"
log "github.com/Sirupsen/logrus"
"github.com/gin-gonic/gin"
h "github.com/open-falcon/falcon-plus/modules/api/app/helper"
f "github.com/open-falcon/falcon-plus/modules/api/app/model/falcon_portal"
)
type APICreatePluginInput struct {
GrpId int64 `json:"hostgroup_id" binding:"required"`
DirPaht string `json:"dir_path" binding:"required"`
}
func CreatePlugin(c *gin.Context) {
var inputs APICreatePluginInput
if err := c.Bind(&inputs); err != nil {
h.JSONR(c, badstatus, err)
return
}
user, _ := h.GetUser(c)
if !user.IsAdmin() {
hostgroup := f.HostGroup{ID: inputs.GrpId}
if dt := db.Falcon.Find(&hostgroup); dt.Error != nil {
h.JSONR(c, expecstatus, dt.Error)
return
}
if hostgroup.CreateUser != user.Name {
h.JSONR(c, badstatus, "You don't have permission!")
return
}
}
plugin := f.Plugin{Dir: inputs.DirPaht, GrpId: inputs.GrpId, CreateUser: user.Name}
if dt := db.Falcon.Save(&plugin); dt.Error != nil {
h.JSONR(c, expecstatus, dt.Error)
return
}
h.JSONR(c, plugin)
return
}
func GetPluginOfGrp(c *gin.Context) {
grpIDtmp := c.Params.ByName("host_group")
if grpIDtmp == "" {
h.JSONR(c, badstatus, "grp id is missing")
return
}
grpID, err := strconv.Atoi(grpIDtmp)
if err != nil {
log.Debugf("grpIDtmp: %v", grpIDtmp)
h.JSONR(c, badstatus, err)
return
}
plugins := []f.Plugin{}
if dt := db.Falcon.Where("grp_id = ?", grpID).Find(&plugins); dt.Error != nil {
h.JSONR(c, expecstatus, dt.Error)
return
}
h.JSONR(c, plugins)
return
}
func DeletePlugin(c *gin.Context) {
pluginIDtmp := c.Params.ByName("id")
if pluginIDtmp == "" {
h.JSONR(c, badstatus, "plugin id is missing")
return
}
pluginID, err := strconv.Atoi(pluginIDtmp)
if err != nil {
log.Debugf("pluginIDtmp: %v", pluginIDtmp)
h.JSONR(c, badstatus, err)
return
}
plugin := f.Plugin{ID: int64(pluginID)}
if dt := db.Falcon.Find(&plugin); dt.Error != nil {
h.JSONR(c, expecstatus, dt.Error)
return
}
user, _ := h.GetUser(c)
if !user.IsAdmin() {
hostgroup := f.HostGroup{ID: plugin.GrpId}
if dt := db.Falcon.Find(&hostgroup); dt.Error != nil {
h.JSONR(c, expecstatus, dt.Error)
return
}
if hostgroup.CreateUser != user.Name && plugin.CreateUser != user.Name {
h.JSONR(c, badstatus, "You don't have permission!")
return
}
}
if dt := db.Falcon.Delete(&plugin); dt.Error != nil {
h.JSONR(c, expecstatus, dt.Error)
return
}
h.JSONR(c, fmt.Sprintf("plugin:%v has been deleted", pluginID))
return
}