diff --git a/go.mod b/go.mod index 8af55fe0ce499847ee510094159de3b2931c81bb..d204eb94999a252706f27ba33e8a28bfac0f08c7 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module openeuler.org/PilotGo/grafana-plugin go 1.17 require ( - gitee.com/openeuler/PilotGo/sdk v0.0.0-20231229071059-61698c219eb3 + gitee.com/openeuler/PilotGo/sdk v0.0.0-20240328030306-4b66a7291c6e github.com/gin-gonic/gin v1.9.1 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/go.sum b/go.sum index 745a2e6cb23cc3073786e63b256d2b492b34f069..7e93618b4aa29ac26e1cd2d2230654fff1ba36d4 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ gitee.com/openeuler/PilotGo/sdk v0.0.0-20231208073829-a1e2ae2fa48f h1:SSV11E2fBo gitee.com/openeuler/PilotGo/sdk v0.0.0-20231208073829-a1e2ae2fa48f/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= gitee.com/openeuler/PilotGo/sdk v0.0.0-20231229071059-61698c219eb3 h1:J3frP8uNIwxjTzbaP00tNmJVtQGtcwL0K6HRjZaxvQM= gitee.com/openeuler/PilotGo/sdk v0.0.0-20231229071059-61698c219eb3/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20240328030306-4b66a7291c6e h1:lSwHbmV75XrNcxQw5EzXNTE/EFthLVfXlC0GDYV/tdM= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20240328030306-4b66a7291c6e/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/common/extention.go b/vendor/gitee.com/openeuler/PilotGo/sdk/common/extention.go index 8f6d040e4bea996789d685ef17340550565f4d28..90fe3522fc91dabc4d6eedf69e0b1bca027cd62c 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/common/extention.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/common/extention.go @@ -5,11 +5,82 @@ const ( ExtentionMachine = "machine" // 批处理扩展,增加选择批次时对批次的操作 ExtentionBatch = "batch" + // 主页面扩展,增加侧边栏入口及主页面 + ExtentionPage = "page" ) -type Extention struct { - PluginName string `json:"plugin_name"` +type Extention interface { + Clone() Extention +} + +type MachineExtention struct { + Type string `json:"type"` Name string `json:"name"` + URL string `json:"url"` + Permission string `json:"permission"` +} + +type BatchExtention struct { + Type string `json:"type"` + Name string `json:"name"` + URL string `json:"url"` + Permission string `json:"permission"` +} + +type PageExtention struct { Type string `json:"type"` + Name string `json:"name"` URL string `json:"url"` + Permission string `json:"permission"` +} + +func (me *MachineExtention) Clone() Extention { + result := *me + return &result +} + +func (be *BatchExtention) Clone() Extention { + result := *be + return &result +} + +func (pe *PageExtention) Clone() Extention { + result := *pe + return &result +} + +// 解析extentions参数 +func ParseParameters(data []map[string]interface{}) []Extention { + extentions := []Extention{} + for _, v := range data { + switch v["type"] { + case ExtentionMachine: + me := &MachineExtention{ + Name: v["name"].(string), + URL: v["url"].(string), + Permission: v["permission"].(string), + Type: v["type"].(string), + } + extentions = append(extentions, me) + + case ExtentionBatch: + be := &BatchExtention{ + Name: v["name"].(string), + URL: v["url"].(string), + Permission: v["permission"].(string), + Type: v["type"].(string), + } + extentions = append(extentions, be) + + case ExtentionPage: + pe := &PageExtention{ + Name: v["name"].(string), + URL: v["url"].(string), + Permission: v["permission"].(string), + Type: v["type"].(string), + } + extentions = append(extentions, pe) + } + } + return extentions } diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/common/machine.go b/vendor/gitee.com/openeuler/PilotGo/sdk/common/machine.go index 33ef06057611f73883b1d6b3a94c316664b357b0..2a8f7d0a6e2b18f51882ccefaa6471530d2d406a 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/common/machine.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/common/machine.go @@ -10,8 +10,27 @@ type MachineNode struct { MaintStatus string `json:"maintatatus"` } +type BatchList struct { + ID int `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + Manager string `json:"manager"` +} + type Batch struct { - BatchId int `json:"batch_id"` - DepartmentIDs []string `json:"department_ids"` + BatchIds []int `json:"batch_ids"` + DepartmentIDs []int `json:"department_ids"` MachineUUIDs []string `json:"machine_uuids"` } + +type File struct { + Path string `json:"path"` + Name string `json:"name"` + Content string `json:"content"` +} + +type NodeResult struct { + UUID string + Error string + Data interface{} +} diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/common/permission.go b/vendor/gitee.com/openeuler/PilotGo/sdk/common/permission.go new file mode 100644 index 0000000000000000000000000000000000000000..ebbc060b5e485364ea1acf2dc981db3014233f8f --- /dev/null +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/common/permission.go @@ -0,0 +1,6 @@ +package common + +type Permission struct { + Resource string `json:"resource"` //字符串中不允许包含"/" + Operate string `json:"operate"` +} diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/logger/logger.go b/vendor/gitee.com/openeuler/PilotGo/sdk/logger/logger.go index 32cc99bcb895cb2bf7a13cf18539910990e6803d..6854d6fe42a98f93f49eaa54fb851968af88a8a2 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/logger/logger.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/logger/logger.go @@ -112,6 +112,10 @@ func Error(format string, args ...interface{}) { logrus.Errorf(format, args...) } +func ErrorStack(msg string, err error) { + logrus.Errorf(msg+"\n%+v", err) +} + func Fatal(format string, args ...interface{}) { logrus.Fatalf(format, args...) } @@ -143,7 +147,7 @@ func RequestLogger() gin.HandlerFunc { clientIP := c.ClientIP() // 日志格式 - if reqUri != "/api/v1/pluginapi/heartbeat" { + if reqUri != "/api/v1/pluginapi/heartbeat" && reqUri != "/plugin/prometheus/target" { Debug("status_code:%d latency_time:%s client_ip:%s req_method:%s req_uri:%s", statusCode, latencyTime, diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/batch.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/batch.go new file mode 100644 index 0000000000000000000000000000000000000000..088761aab7d49d209415d1e3db0e7036f718de7f --- /dev/null +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/batch.go @@ -0,0 +1,57 @@ +package client + +import ( + "encoding/json" + "errors" + + "gitee.com/openeuler/PilotGo/sdk/common" + "gitee.com/openeuler/PilotGo/sdk/utils/httputils" +) + +func (c *Client) BatchList() ([]*common.BatchList, error) { + if !c.IsBind() { + return nil, errors.New("unbind PilotGo-server platform") + } + url := "http://" + c.Server() + "/api/v1/pluginapi/batch_list" + r, err := httputils.Get(url, &httputils.Params{ + Cookie: map[string]string{ + TokenCookie: c.token, + }, + }) + if err != nil { + return nil, err + } + + result := struct { + Code int `json:"code"` + Data []*common.BatchList `json:"data"` + }{} + if err := json.Unmarshal(r.Body, &result); err != nil { + return nil, err + } + return result.Data, nil +} + +func (c *Client) BatchUUIDList(batchId string) ([]string, error) { + if !c.IsBind() { + return nil, errors.New("unbind PilotGo-server platform") + } + url := "http://" + c.Server() + "/api/v1/pluginapi/batch_uuid?batchId=" + batchId + r, err := httputils.Get(url, &httputils.Params{ + Cookie: map[string]string{ + TokenCookie: c.token, + }, + }) + if err != nil { + return nil, err + } + + result := struct { + Code int `json:"code"` + Data []string `json:"data"` + }{} + if err := json.Unmarshal(r.Body, &result); err != nil { + return nil, err + } + return result.Data, nil +} diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go index ab586652e11255a443657595796a0141475249cb..5c936d4b5b96aa864406e05dee319dbf92ea300b 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go @@ -7,6 +7,8 @@ import ( "github.com/gin-gonic/gin" ) +const TokenCookie = "PluginToken" + type GetTagsCallback func([]string) []common.Tag type Client struct { @@ -17,6 +19,9 @@ type Client struct { // 远程PilotGo server地址 server string + // 鉴权token + token string + // 用于event消息处理 eventChan chan *common.EventMessage eventCallbackMap map[int]EventCallback @@ -29,7 +34,10 @@ type Client struct { getTagsCallback GetTagsCallback // 用于平台扩展点功能 - extentions []*common.Extention + extentions []common.Extention + + //用于权限校验 + permissions []common.Permission //bind阻塞功能支持 mu sync.Mutex @@ -47,6 +55,8 @@ func DefaultClient(desc *PluginInfo) *Client { asyncCmdResultChan: make(chan *common.AsyncCmdResult, 20), cmdProcessorCallbackMap: make(map[string]CallbackHandler), + extentions: []common.Extention{}, + permissions: []common.Permission{}, } global_client.cond = sync.NewCond(&global_client.mu) @@ -76,10 +86,6 @@ func (client *Client) RegisterHandlers(router *gin.Engine) { api := router.Group("/plugin_manage/api/v1/") { - api.GET("/extentions", func(c *gin.Context) { - c.Set("__internal__client_instance", client) - }, extentionsHandler) - api.GET("/gettags", func(c *gin.Context) { c.Set("__internal__client_instance", client) }, tagsHandler) diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/config.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/config.go index a23122edad4c3c2d276450ee1ec76d5caf62dd65..643bb9bac0c527c14200e24d6919daf89417bbc9 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/config.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/config.go @@ -13,7 +13,11 @@ func (c *Client) ApplyConfig(batch *common.Batch, path, content string) error { return errors.New("unbind PilotGo-server platform") } url := c.Server() + "/api/v1/pluginapi/apply_config" - r, err := httputils.Put(url, nil) + r, err := httputils.Put(url, &httputils.Params{ + Cookie: map[string]string{ + TokenCookie: c.token, + }, + }) if err != nil { return err } diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/event.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/event.go index 4ec5f1b73fb3fbccd27662547302449161743400..8d76833b10b5aff0da075e92c16bb5f7edb2198b 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/event.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/event.go @@ -23,6 +23,9 @@ func (c *Client) ListenEvent(eventTypes []int, callbacks []EventCallback) error url := c.Server() + "/api/v1/pluginapi/listener?eventTypes=" + strings.Join(eventtypes, ",") r, err := httputils.Put(url, &httputils.Params{ Body: c.PluginInfo, + Cookie: map[string]string{ + TokenCookie: c.token, + }, }) if err != nil { return err @@ -62,6 +65,9 @@ func (c *Client) UnListenEvent(eventTypes []int) error { url := c.Server() + "/api/v1/pluginapi/listener?eventTypes=" + strings.Join(eventtypes, ",") r, err := httputils.Delete(url, &httputils.Params{ Body: c.PluginInfo, + Cookie: map[string]string{ + TokenCookie: c.token, + }, }) if err != nil { return err @@ -97,6 +103,9 @@ func (c *Client) PublishEvent(msg common.EventMessage) error { url := c.Server() + "/api/v1/pluginapi/publish_event" r, err := httputils.Put(url, &httputils.Params{ Body: &msg, + Cookie: map[string]string{ + TokenCookie: c.token, + }, }) if err != nil { return err diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/extention.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/extention.go index 4460e210ba75263fd5c29d68b3b925ac7d7ea388..a0d233efcc79d4531f37b35a1270315f67882f53 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/extention.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/extention.go @@ -4,6 +4,6 @@ import ( "gitee.com/openeuler/PilotGo/sdk/common" ) -func (c *Client) RegisterExtention(exts []*common.Extention) { - c.extentions = exts +func (c *Client) RegisterExtention(exts []common.Extention) { + c.extentions = append(c.extentions, exts...) } diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/fileservice.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/fileservice.go new file mode 100644 index 0000000000000000000000000000000000000000..5c8c5d7c120eb4170300527f9c5adc519ceb06e4 --- /dev/null +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/fileservice.go @@ -0,0 +1,79 @@ +package client + +import ( + "bytes" + "crypto/tls" + "encoding/json" + "errors" + "io" + "net/http" + "os" + "path/filepath" + + "gitee.com/openeuler/PilotGo/sdk/logger" +) + +func (client *Client) FileUpload(filePath string, filename string) error { + // 以二进制方式上传文件 + file := filepath.Join(filePath, filename) + bodyBuf, contentType, err := getUploadBody(file) + if err != nil { + return err + } + + upload_addr := "http://" + client.Server() + "/api/v1/pluginapi/upload?filename=" + filename + req, err := http.NewRequest("POST", upload_addr, bodyBuf) + if err != nil { + return err + } + defer req.Body.Close() + + req.Header.Set("Content-Type", contentType) + req.AddCookie(&http.Cookie{ + Name: TokenCookie, + Value: client.token, + }) + + hc := &http.Client{Transport: &http.Transport{ + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + }} + defer hc.CloseIdleConnections() + + resp, err := hc.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + // 读取返回结果 + bs, err := io.ReadAll(resp.Body) + if err != nil { + logger.Error("没获取到:%s", err.Error()) + return err + } + res := &struct { + StatusCode int `json:"code"` + Data interface{} `json:"data"` + Message string `json:"msg"` + }{} + err = json.Unmarshal(bs, &res) + if err != nil { + logger.Error("解析出错:%s", err.Error()) + return err + } + if resp.StatusCode == http.StatusOK && res.StatusCode == http.StatusOK { + return nil + } + return errors.New(res.Message) +} + +// 以二进制格式上传文件 +func getUploadBody(filename string) (*bytes.Reader, string, error) { + bodyBytes, err := os.ReadFile(filename) + if err != nil { + return bytes.NewReader(bodyBytes), "", err + } + return bytes.NewReader(bodyBytes), "multipart/form-data", nil +} diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go index 1438deff2f444385baf73d2da24383fa21246243..b8c9def763e9a5dbcd95c5ff326f86c0ec615859 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go @@ -46,8 +46,9 @@ func infoHandler(c *gin.Context) { } info := &PluginFullInfo{ - PluginInfo: *client.PluginInfo, - Extentions: client.extentions, + PluginInfo: *client.PluginInfo, + Extentions: client.extentions, + Permissions: client.permissions, } c.JSON(http.StatusOK, info) @@ -73,6 +74,13 @@ func bindHandler(c *gin.Context) { logger.Error("已有PilotGo-server与此插件绑定") } client.cond.Broadcast() + + for _, c := range c.Request.Cookies() { + if c.Name == TokenCookie { + client.token = c.Value + } + } + client.sendHeartBeat() response.Success(c, nil, "bind server success") } @@ -101,21 +109,6 @@ func eventHandler(c *gin.Context) { client.ProcessEvent(&msg) } -func extentionsHandler(c *gin.Context) { - v, ok := c.Get("__internal__client_instance") - if !ok { - response.Fail(c, gin.H{"status": false}, "未获取到client值信息") - return - } - client, ok := v.(*Client) - if !ok { - response.Fail(c, gin.H{"status": false}, "client信息错误") - return - } - - response.Success(c, client.extentions, "") -} - func commandResultHandler(c *gin.Context) { j, err := io.ReadAll(c.Request.Body) // 接收数据 if err != nil { diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/heartbeat.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/heartbeat.go index b0e16977a8017cc6617767819fc22648306fbe7b..fa1fb9ce81f7a12f5afdea91406b783284d6bf1b 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/heartbeat.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/heartbeat.go @@ -44,6 +44,9 @@ func (client *Client) sendHeartbeat(clientID string) error { ServerUrl := "http://" + client.Server() + "/api/v1/pluginapi/heartbeat" resp, err := httputils.Post(ServerUrl, &httputils.Params{ Body: p, + Cookie: map[string]string{ + TokenCookie: client.token, + }, }) if err != nil { return err diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/machine.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/machine.go index 34acd4bf7bee29a4b5758444d48827d415ce3061..94043cfcfc3e9b22a4954c01c263ae6167738d9f 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/machine.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/machine.go @@ -13,7 +13,11 @@ func (c *Client) MachineList() ([]*common.MachineNode, error) { return nil, errors.New("unbind PilotGo-server platform") } url := "http://" + c.Server() + "/api/v1/pluginapi/machine_list" - r, err := httputils.Get(url, nil) + r, err := httputils.Get(url, &httputils.Params{ + Cookie: map[string]string{ + TokenCookie: c.token, + }, + }) if err != nil { return nil, err } @@ -27,3 +31,47 @@ func (c *Client) MachineList() ([]*common.MachineNode, error) { } return result.Data, nil } + +func (c *Client) MachineInfoByUUID(machine_uuid string) (*common.MachineNode, error) { + if !c.IsBind() { + return nil, errors.New("unbind PilotGo-server platform") + } + url := "http://" + c.Server() + "/api/v1/pluginapi/machine_info?machine_uuid=" + machine_uuid + r, err := httputils.Get(url, &httputils.Params{ + Cookie: map[string]string{ + TokenCookie: c.token, + }, + }) + if err != nil { + return nil, err + } + + result := struct { + Code int `json:"code"` + Data *struct { + ID int `json:"id"` + Departid int `json:"departid"` + Departname string `json:"departname"` + IP string `json:"ip"` + UUID string `json:"uuid"` + CPU string `json:"cpu"` + Runstatus string `json:"runstatus"` + Maintstatus string `json:"maintstatus"` + Systeminfo string `json:"systeminfo"` + } `json:"data"` + }{} + if err := json.Unmarshal(r.Body, &result); err != nil { + return nil, err + } + + res := &common.MachineNode{ + UUID: machine_uuid, + Department: result.Data.Departname, + IP: result.Data.IP, + CPUArch: result.Data.CPU, + OS: result.Data.Systeminfo, + RunStatus: result.Data.Runstatus, + MaintStatus: result.Data.Maintstatus, + } + return res, nil +} diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/permission.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/permission.go new file mode 100644 index 0000000000000000000000000000000000000000..155b66e6463ee8c8320fbe6342d61456d45b937b --- /dev/null +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/permission.go @@ -0,0 +1,57 @@ +package client + +import ( + "encoding/json" + "errors" + "net/http" + "strings" + + "gitee.com/openeuler/PilotGo/sdk/common" + "gitee.com/openeuler/PilotGo/sdk/utils/httputils" +) + +func (c *Client) RegisterPermission(pers []common.Permission) error { + for _, v := range pers { + if strings.Contains(v.Resource, "/") { + return errors.New("permission-resource string contains /") + } else { + c.permissions = append(c.permissions, v) + } + } + return nil +} + +func (c *Client) HasPermission(resource, operate string) (bool, error) { + if !c.IsBind() { + return false, errors.New("unbind PilotGo-server platform") + } + + url := "http://" + c.Server() + "/api/v1/pluginapi/permission" + p := &common.Permission{ + Resource: resource, + Operate: operate, + } + + r, err := httputils.Post(url, &httputils.Params{ + Body: p, + Cookie: map[string]string{ + TokenCookie: c.token, + }, + }) + if err != nil { + return false, err + } + + res := &struct { + Code int `json:"code"` + Message string `json:"msg"` + Data bool `json:"data"` + }{} + if err := json.Unmarshal(r.Body, res); err != nil { + return false, err + } + if res.Code != http.StatusOK { + return false, errors.New(res.Message) + } + return res.Data, nil +} diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/plugin.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/plugin.go index f63c429562b3902e10728ba98db11fbaefbf8afa..e878f3323da4e8e8bdf0a22eb2aae84eb7b5e6bf 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/plugin.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/plugin.go @@ -23,7 +23,8 @@ type PluginInfo struct { // 用于插件与PilotGo server通讯 type PluginFullInfo struct { PluginInfo - Extentions []*common.Extention + Extentions []common.Extention + Permissions []common.Permission } func (c *Client) GetPluginInfo(name string) (*PluginInfo, error) { @@ -31,7 +32,11 @@ func (c *Client) GetPluginInfo(name string) (*PluginInfo, error) { return nil, errors.New("unbind PilotGo-server platform") } url := c.Server() + "/api/v1/pluginapi/plugins" - r, err := httputils.Get(url, nil) + r, err := httputils.Get(url, &httputils.Params{ + Cookie: map[string]string{ + TokenCookie: c.token, + }, + }) if err != nil { return nil, err } diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/script.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/script.go index 5809e5c07ad6e08f1819690ee8057808a992b9b7..2d28745e89f5bd2860e71201ec48976062f9d4b1 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/script.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/script.go @@ -30,6 +30,9 @@ func (c *Client) RunCommand(batch *common.Batch, cmd string) ([]*common.CmdResul r, err := httputils.Post(url, &httputils.Params{ Body: p, + Cookie: map[string]string{ + TokenCookie: c.token, + }, }) if err != nil { return nil, err @@ -67,6 +70,9 @@ func (c *Client) RunScript(batch *common.Batch, script string, params []string) r, err := httputils.Post(url, &httputils.Params{ Body: p, + Cookie: map[string]string{ + TokenCookie: c.token, + }, }) if err != nil { return nil, err @@ -97,6 +103,9 @@ func (c *Client) RunCommandAsync(batch *common.Batch, cmd string, callback RunCo r, err := httputils.Post(url, &httputils.Params{ Body: p, + Cookie: map[string]string{ + TokenCookie: c.token, + }, }) if err != nil { return err diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/service.go b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/service.go index 8790c9a96715a5e43606be4f24ee1c591d1f15f3..29597123325bcb098ffe8740891162296ecea300 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/service.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/service.go @@ -21,6 +21,9 @@ func (c *Client) ServiceStatus(batch *common.Batch, servicename string) ([]*comm r, err := httputils.Put(url, &httputils.Params{ Body: p, + Cookie: map[string]string{ + TokenCookie: c.token, + }, }) if err != nil { return nil, err @@ -47,6 +50,9 @@ func (c *Client) StartService(batch *common.Batch, serviceName string) ([]*commo r, err := httputils.Put(url, &httputils.Params{ Body: p, + Cookie: map[string]string{ + TokenCookie: c.token, + }, }) if err != nil { return nil, err @@ -73,6 +79,9 @@ func (c *Client) StopService(batch *common.Batch, serviceName string) ([]*common r, err := httputils.Put(url, &httputils.Params{ Body: p, + Cookie: map[string]string{ + TokenCookie: c.token, + }, }) if err != nil { return nil, err diff --git a/vendor/gitee.com/openeuler/PilotGo/sdk/utils/httputils/request.go b/vendor/gitee.com/openeuler/PilotGo/sdk/utils/httputils/request.go index 3c371e3f18b4a94345498293a0e8936c7e2caf5b..2cca0c24b28bc71797359825b1bff8f8e943d697 100644 --- a/vendor/gitee.com/openeuler/PilotGo/sdk/utils/httputils/request.go +++ b/vendor/gitee.com/openeuler/PilotGo/sdk/utils/httputils/request.go @@ -54,6 +54,16 @@ func request(method, url string, param *Params) (*Response, error) { } } } + + // 处理token + if len(param.Cookie) > 0 { + for k, v := range param.Cookie { + req.AddCookie(&http.Cookie{ + Name: k, + Value: v, + }) + } + } } hc := &http.Client{Transport: &http.Transport{ @@ -88,6 +98,8 @@ type Params struct { Form map[string]string // Body 参数会被序列化成json字符串 Body interface{} + // Cookit 参数会被添加到请求cookie当中 + Cookie map[string]string } type Response struct { diff --git a/vendor/modules.txt b/vendor/modules.txt index ded544fd7ddace0d1b11ca2dd4471bf27ecd93fb..dc11afa7bee69dfeaf9a0dc4867476e240bc62ee 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,4 +1,4 @@ -# gitee.com/openeuler/PilotGo/sdk v0.0.0-20231229071059-61698c219eb3 +# gitee.com/openeuler/PilotGo/sdk v0.0.0-20240328030306-4b66a7291c6e ## explicit; go 1.17 gitee.com/openeuler/PilotGo/sdk/common gitee.com/openeuler/PilotGo/sdk/logger