diff --git a/internal/db/models/http_web_dao.go b/internal/db/models/http_web_dao.go index c8dda0e1..32766a86 100644 --- a/internal/db/models/http_web_dao.go +++ b/internal/db/models/http_web_dao.go @@ -3,6 +3,7 @@ package models import ( "encoding/json" "errors" + teaconst "github.com/TeaOSLab/EdgeAPI/internal/const" "github.com/TeaOSLab/EdgeAPI/internal/utils" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs" @@ -446,6 +447,16 @@ func (this *HTTPWebDAO) ComposeWebConfig(tx *dbs.Tx, webId int64, cacheMap *util } } + // UAM + if teaconst.IsPlus && IsNotNull(web.Uam) { + var uamConfig = &serverconfigs.UAMConfig{} + err = json.Unmarshal(web.Uam, uamConfig) + if err != nil { + return nil, err + } + config.UAM = uamConfig + } + if cacheMap != nil { cacheMap.Put(cacheKey, config) } @@ -1168,6 +1179,35 @@ func (this *HTTPWebDAO) FindWebRequestScripts(tx *dbs.Tx, webId int64) (*serverc return config, nil } +// UpdateWebUAM 开启UAM +func (this *HTTPWebDAO) UpdateWebUAM(tx *dbs.Tx, webId int64, uamConfig *serverconfigs.UAMConfig) error { + if uamConfig == nil { + return nil + } + configJSON, err := json.Marshal(uamConfig) + if err != nil { + return err + } + + err = this.Query(tx). + Pk(webId). + Set("uam", configJSON). + UpdateQuickly() + if err != nil { + return err + } + + return this.NotifyUpdate(tx, webId) +} + +// FindWebUAM 查找服务的UAM配置 +func (this *HTTPWebDAO) FindWebUAM(tx *dbs.Tx, webId int64) ([]byte, error) { + return this.Query(tx). + Pk(webId). + Result("uam"). + FindJSONCol() +} + // NotifyUpdate 通知更新 func (this *HTTPWebDAO) NotifyUpdate(tx *dbs.Tx, webId int64) error { // server diff --git a/internal/db/models/http_web_model.go b/internal/db/models/http_web_model.go index aff2c221..2211ddde 100644 --- a/internal/db/models/http_web_model.go +++ b/internal/db/models/http_web_model.go @@ -37,6 +37,7 @@ type HTTPWeb struct { MergeSlashes uint8 `field:"mergeSlashes"` // 是否合并路径中的斜杠 RequestLimit dbs.JSON `field:"requestLimit"` // 请求限制 RequestScripts dbs.JSON `field:"requestScripts"` // 请求脚本 + Uam dbs.JSON `field:"uam"` // UAM设置 } type HTTPWebOperator struct { @@ -73,6 +74,7 @@ type HTTPWebOperator struct { MergeSlashes interface{} // 是否合并路径中的斜杠 RequestLimit interface{} // 请求限制 RequestScripts interface{} // 请求脚本 + Uam interface{} // UAM设置 } func NewHTTPWebOperator() *HTTPWebOperator { diff --git a/internal/rpc/services/service_http_web_community.go b/internal/rpc/services/service_http_web_community.go new file mode 100644 index 00000000..0f5f039d --- /dev/null +++ b/internal/rpc/services/service_http_web_community.go @@ -0,0 +1,20 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . +//go:build !plus +// +build !plus + +package services + +import ( + "context" + "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" +) + +// UpdateHTTPWebUAM 修改UAM设置 +func (this *HTTPWebService) UpdateHTTPWebUAM(ctx context.Context, req *pb.UpdateHTTPWebUAMRequest) (*pb.RPCSuccess, error) { + return this.Success() +} + +// FindHTTPWebUAM 查找UAM设置 +func (this *HTTPWebService) FindHTTPWebUAM(ctx context.Context, req *pb.FindHTTPWebUAMRequest) (*pb.FindHTTPWebUAMResponse, error) { + return &pb.FindHTTPWebUAMResponse{UamJSON: nil}, nil +}