diff --git a/internal/api/config_manager.go b/internal/api/config_manager.go index 5adc2d297..8d2ec0e7e 100644 --- a/internal/api/config_manager.go +++ b/internal/api/config_manager.go @@ -4,21 +4,68 @@ import ( "encoding/json" "github.com/gin-gonic/gin" + "github.com/openimsdk/open-im-server/v3/pkg/apistruct" + "github.com/openimsdk/open-im-server/v3/pkg/authverify" "github.com/openimsdk/open-im-server/v3/pkg/common/config" + "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/apiresp" + "github.com/openimsdk/tools/errs" + "github.com/openimsdk/tools/utils/runtimeenv" ) type ConfigManager struct { - config *config.AllConfig + imAdminUserID []string + config *config.AllConfig } -func NewConfigManager(cfg *config.AllConfig) *ConfigManager { +func NewConfigManager(IMAdminUserID []string, cfg *config.AllConfig) *ConfigManager { return &ConfigManager{ - config: cfg, + imAdminUserID: IMAdminUserID, + config: cfg, + } +} + +func (cm *ConfigManager) CheckAdmin(c *gin.Context) { + if err := authverify.CheckAdmin(c, cm.imAdminUserID); err != nil { + apiresp.GinError(c, err) + c.Abort() } } func (cm *ConfigManager) GetConfig(c *gin.Context) { + var req apistruct.GetConfigReq + if err := c.BindJSON(&req); err != nil { + apiresp.GinError(c, errs.ErrArgs.WithDetail(err.Error()).Wrap()) + return + } + conf := cm.config.Name2Config(req.ConfigName) + if conf == nil { + apiresp.GinError(c, errs.ErrArgs.WithDetail("config name not found").Wrap()) + return + } + b, err := json.Marshal(cm.config) + if err != nil { + apiresp.GinError(c, err) + return + } + apiresp.GinSuccess(c, string(b)) +} + +func (cm *ConfigManager) GetConfigList(c *gin.Context) { + var resp apistruct.GetConfigListResp + resp.ConfigNames = cm.config.GetConfigNames() + resp.Environment = runtimeenv.PrintRuntimeEnvironment() + resp.Version = version.Version + + apiresp.GinSuccess(c, resp) +} + +func (cm *ConfigManager) SetConfig(c *gin.Context) { + var req apistruct.SetConfigReq + if err := c.BindJSON(&req); err != nil { + apiresp.GinError(c, errs.ErrArgs.WithDetail(err.Error()).Wrap()) + return + } b, err := json.Marshal(cm.config) if err != nil { apiresp.GinError(c, err) // args option error diff --git a/internal/api/init.go b/internal/api/init.go index 8091a6a3e..2b504f7e2 100644 --- a/internal/api/init.go +++ b/internal/api/init.go @@ -27,7 +27,7 @@ import ( "time" conf "github.com/openimsdk/open-im-server/v3/pkg/common/config" - kdisc "github.com/openimsdk/open-im-server/v3/pkg/common/discoveryregister" + kdisc "github.com/openimsdk/open-im-server/v3/pkg/common/discovery" "github.com/openimsdk/open-im-server/v3/pkg/common/prommetrics" "github.com/openimsdk/open-im-server/v3/pkg/rpcclient" "github.com/openimsdk/tools/discovery/etcd" diff --git a/internal/api/router.go b/internal/api/router.go index ee0db1206..787ead7a1 100644 --- a/internal/api/router.go +++ b/internal/api/router.go @@ -259,9 +259,11 @@ func newGinRouter(disCov discovery.SvcDiscoveryRegistry, config *Config) *gin.En proDiscoveryGroup.GET("/msg_gateway", pd.MessageGateway) proDiscoveryGroup.GET("/msg_transfer", pd.MessageTransfer) - cm := NewConfigManager(config.AllConfig) - configGroup := r.Group("/config") - configGroup.GET("/api", cm.GetConfig) + cm := NewConfigManager(config.Share.IMAdminUserID, config.AllConfig) + configGroup := r.Group("/config", cm.CheckAdmin) + configGroup.POST("/get_config_list", cm.GetConfigList) + configGroup.POST("/get_config", cm.GetConfig) + configGroup.POST("/set_config", cm.SetConfig) return r } diff --git a/internal/msgtransfer/init.go b/internal/msgtransfer/init.go index 19a53ebd5..506984ffc 100644 --- a/internal/msgtransfer/init.go +++ b/internal/msgtransfer/init.go @@ -40,7 +40,7 @@ import ( "github.com/openimsdk/tools/utils/runtimeenv" conf "github.com/openimsdk/open-im-server/v3/pkg/common/config" - discRegister "github.com/openimsdk/open-im-server/v3/pkg/common/discoveryregister" + discRegister "github.com/openimsdk/open-im-server/v3/pkg/common/discovery" "github.com/openimsdk/open-im-server/v3/pkg/common/storage/controller" "github.com/openimsdk/tools/errs" "github.com/openimsdk/tools/log" diff --git a/internal/tools/cron_task.go b/internal/tools/cron_task.go index 2fe7d0e39..c393efae9 100644 --- a/internal/tools/cron_task.go +++ b/internal/tools/cron_task.go @@ -7,7 +7,7 @@ import ( "time" "github.com/openimsdk/open-im-server/v3/pkg/common/config" - kdisc "github.com/openimsdk/open-im-server/v3/pkg/common/discoveryregister" + kdisc "github.com/openimsdk/open-im-server/v3/pkg/common/discovery" pbconversation "github.com/openimsdk/protocol/conversation" "github.com/openimsdk/protocol/msg" "github.com/openimsdk/protocol/third" diff --git a/pkg/apistruct/config_manager.go b/pkg/apistruct/config_manager.go index 358bdc7e9..6e3a21aed 100644 --- a/pkg/apistruct/config_manager.go +++ b/pkg/apistruct/config_manager.go @@ -4,11 +4,13 @@ type GetConfigReq struct { ConfigName string `json:"config_name"` } -type GetConfigListReq struct { -} - type GetConfigListResp struct { Environment string `json:"environment"` Version string `json:"version"` ConfigNames []string `json:"config_names"` } + +type SetConfigReq struct { + ConfigName string `json:"config_name"` + Data string `json:"data"` +} diff --git a/pkg/common/cmd/api.go b/pkg/common/cmd/api.go index 4088ecd09..7ec6d75a3 100644 --- a/pkg/common/cmd/api.go +++ b/pkg/common/cmd/api.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/api" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" "github.com/spf13/cobra" @@ -34,9 +35,23 @@ func NewApiCmd() *ApiCmd { var apiConfig api.Config ret := &ApiCmd{apiConfig: &apiConfig} ret.configMap = map[string]any{ - OpenIMAPICfgFileName: &apiConfig.API, - ShareFileName: &apiConfig.Share, - DiscoveryConfigFilename: &apiConfig.Discovery, + config.DiscoveryConfigFilename: &apiConfig.Discovery, + config.LocalCacheConfigFileName: &apiConfig.LocalCache, + config.LogConfigFileName: &apiConfig.Log, + config.OpenIMAPICfgFileName: &apiConfig.API, + config.OpenIMCronTaskCfgFileName: &apiConfig.CronTask, + config.OpenIMMsgGatewayCfgFileName: &apiConfig.MsgGateway, + config.OpenIMMsgTransferCfgFileName: &apiConfig.MsgTransfer, + config.OpenIMPushCfgFileName: &apiConfig.Push, + config.OpenIMRPCAuthCfgFileName: &apiConfig.Auth, + config.OpenIMRPCConversationCfgFileName: &apiConfig.Conversation, + config.OpenIMRPCFriendCfgFileName: &apiConfig.Friend, + config.OpenIMRPCGroupCfgFileName: &apiConfig.Group, + config.OpenIMRPCMsgCfgFileName: &apiConfig.Msg, + config.OpenIMRPCThirdCfgFileName: &apiConfig.Third, + config.OpenIMRPCUserCfgFileName: &apiConfig.User, + config.ShareFileName: &apiConfig.Share, + config.WebhooksConfigFileName: &apiConfig.Webhooks, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/auth.go b/pkg/common/cmd/auth.go index bf51a2cf3..2215dce89 100644 --- a/pkg/common/cmd/auth.go +++ b/pkg/common/cmd/auth.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/rpc/auth" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/startrpc" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" @@ -35,10 +36,10 @@ func NewAuthRpcCmd() *AuthRpcCmd { var authConfig auth.Config ret := &AuthRpcCmd{authConfig: &authConfig} ret.configMap = map[string]any{ - OpenIMRPCAuthCfgFileName: &authConfig.RpcConfig, - RedisConfigFileName: &authConfig.RedisConfig, - ShareFileName: &authConfig.Share, - DiscoveryConfigFilename: &authConfig.Discovery, + config.OpenIMRPCAuthCfgFileName: &authConfig.RpcConfig, + config.RedisConfigFileName: &authConfig.RedisConfig, + config.ShareFileName: &authConfig.Share, + config.DiscoveryConfigFilename: &authConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/constant.go b/pkg/common/cmd/constant.go index 45dbcafda..38751d086 100644 --- a/pkg/common/cmd/constant.go +++ b/pkg/common/cmd/constant.go @@ -1,85 +1,23 @@ -// Copyright © 2023 OpenIM. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - package cmd import ( "strings" -) -var ( - FileName string - NotificationFileName string - ShareFileName string - WebhooksConfigFileName string - LocalCacheConfigFileName string - KafkaConfigFileName string - RedisConfigFileName string - MongodbConfigFileName string - MinioConfigFileName string - LogConfigFileName string - OpenIMAPICfgFileName string - OpenIMCronTaskCfgFileName string - OpenIMMsgGatewayCfgFileName string - OpenIMMsgTransferCfgFileName string - OpenIMPushCfgFileName string - OpenIMRPCAuthCfgFileName string - OpenIMRPCConversationCfgFileName string - OpenIMRPCFriendCfgFileName string - OpenIMRPCGroupCfgFileName string - OpenIMRPCMsgCfgFileName string - OpenIMRPCThirdCfgFileName string - OpenIMRPCUserCfgFileName string - DiscoveryConfigFilename string + "github.com/openimsdk/open-im-server/v3/pkg/common/config" ) var ConfigEnvPrefixMap map[string]string func init() { - FileName = "config.yaml" - NotificationFileName = "notification.yml" - ShareFileName = "share.yml" - WebhooksConfigFileName = "webhooks.yml" - LocalCacheConfigFileName = "local-cache.yml" - KafkaConfigFileName = "kafka.yml" - RedisConfigFileName = "redis.yml" - MongodbConfigFileName = "mongodb.yml" - MinioConfigFileName = "minio.yml" - LogConfigFileName = "log.yml" - OpenIMAPICfgFileName = "openim-api.yml" - OpenIMCronTaskCfgFileName = "openim-crontask.yml" - OpenIMMsgGatewayCfgFileName = "openim-msggateway.yml" - OpenIMMsgTransferCfgFileName = "openim-msgtransfer.yml" - OpenIMPushCfgFileName = "openim-push.yml" - OpenIMRPCAuthCfgFileName = "openim-rpc-auth.yml" - OpenIMRPCConversationCfgFileName = "openim-rpc-conversation.yml" - OpenIMRPCFriendCfgFileName = "openim-rpc-friend.yml" - OpenIMRPCGroupCfgFileName = "openim-rpc-group.yml" - OpenIMRPCMsgCfgFileName = "openim-rpc-msg.yml" - OpenIMRPCThirdCfgFileName = "openim-rpc-third.yml" - OpenIMRPCUserCfgFileName = "openim-rpc-user.yml" - DiscoveryConfigFilename = "discovery.yml" - ConfigEnvPrefixMap = make(map[string]string) fileNames := []string{ - FileName, NotificationFileName, ShareFileName, WebhooksConfigFileName, - KafkaConfigFileName, RedisConfigFileName, - MongodbConfigFileName, MinioConfigFileName, LogConfigFileName, - OpenIMAPICfgFileName, OpenIMCronTaskCfgFileName, OpenIMMsgGatewayCfgFileName, - OpenIMMsgTransferCfgFileName, OpenIMPushCfgFileName, OpenIMRPCAuthCfgFileName, - OpenIMRPCConversationCfgFileName, OpenIMRPCFriendCfgFileName, OpenIMRPCGroupCfgFileName, - OpenIMRPCMsgCfgFileName, OpenIMRPCThirdCfgFileName, OpenIMRPCUserCfgFileName, DiscoveryConfigFilename, + config.FileName, config.NotificationFileName, config.ShareFileName, config.WebhooksConfigFileName, + config.KafkaConfigFileName, config.RedisConfigFileName, + config.MongodbConfigFileName, config.MinioConfigFileName, config.LogConfigFileName, + config.OpenIMAPICfgFileName, config.OpenIMCronTaskCfgFileName, config.OpenIMMsgGatewayCfgFileName, + config.OpenIMMsgTransferCfgFileName, config.OpenIMPushCfgFileName, config.OpenIMRPCAuthCfgFileName, + config.OpenIMRPCConversationCfgFileName, config.OpenIMRPCFriendCfgFileName, config.OpenIMRPCGroupCfgFileName, + config.OpenIMRPCMsgCfgFileName, config.OpenIMRPCThirdCfgFileName, config.OpenIMRPCUserCfgFileName, config.DiscoveryConfigFilename, } for _, fileName := range fileNames { diff --git a/pkg/common/cmd/conversation.go b/pkg/common/cmd/conversation.go index 4d38f7fd4..05b5cadcd 100644 --- a/pkg/common/cmd/conversation.go +++ b/pkg/common/cmd/conversation.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/rpc/conversation" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/startrpc" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" @@ -35,13 +36,13 @@ func NewConversationRpcCmd() *ConversationRpcCmd { var conversationConfig conversation.Config ret := &ConversationRpcCmd{conversationConfig: &conversationConfig} ret.configMap = map[string]any{ - OpenIMRPCConversationCfgFileName: &conversationConfig.RpcConfig, - RedisConfigFileName: &conversationConfig.RedisConfig, - MongodbConfigFileName: &conversationConfig.MongodbConfig, - ShareFileName: &conversationConfig.Share, - NotificationFileName: &conversationConfig.NotificationConfig, - LocalCacheConfigFileName: &conversationConfig.LocalCacheConfig, - DiscoveryConfigFilename: &conversationConfig.Discovery, + config.OpenIMRPCConversationCfgFileName: &conversationConfig.RpcConfig, + config.RedisConfigFileName: &conversationConfig.RedisConfig, + config.MongodbConfigFileName: &conversationConfig.MongodbConfig, + config.ShareFileName: &conversationConfig.Share, + config.NotificationFileName: &conversationConfig.NotificationConfig, + config.LocalCacheConfigFileName: &conversationConfig.LocalCacheConfig, + config.DiscoveryConfigFilename: &conversationConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/cron_task.go b/pkg/common/cmd/cron_task.go index d6c5e472e..e7eb0ce18 100644 --- a/pkg/common/cmd/cron_task.go +++ b/pkg/common/cmd/cron_task.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/tools" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" "github.com/spf13/cobra" @@ -34,9 +35,9 @@ func NewCronTaskCmd() *CronTaskCmd { var cronTaskConfig tools.CronTaskConfig ret := &CronTaskCmd{cronTaskConfig: &cronTaskConfig} ret.configMap = map[string]any{ - OpenIMCronTaskCfgFileName: &cronTaskConfig.CronTask, - ShareFileName: &cronTaskConfig.Share, - DiscoveryConfigFilename: &cronTaskConfig.Discovery, + config.OpenIMCronTaskCfgFileName: &cronTaskConfig.CronTask, + config.ShareFileName: &cronTaskConfig.Share, + config.DiscoveryConfigFilename: &cronTaskConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/friend.go b/pkg/common/cmd/friend.go index 800116531..bb377b4af 100644 --- a/pkg/common/cmd/friend.go +++ b/pkg/common/cmd/friend.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/rpc/relation" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/startrpc" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" @@ -35,14 +36,14 @@ func NewFriendRpcCmd() *FriendRpcCmd { var relationConfig relation.Config ret := &FriendRpcCmd{relationConfig: &relationConfig} ret.configMap = map[string]any{ - OpenIMRPCFriendCfgFileName: &relationConfig.RpcConfig, - RedisConfigFileName: &relationConfig.RedisConfig, - MongodbConfigFileName: &relationConfig.MongodbConfig, - ShareFileName: &relationConfig.Share, - NotificationFileName: &relationConfig.NotificationConfig, - WebhooksConfigFileName: &relationConfig.WebhooksConfig, - LocalCacheConfigFileName: &relationConfig.LocalCacheConfig, - DiscoveryConfigFilename: &relationConfig.Discovery, + config.OpenIMRPCFriendCfgFileName: &relationConfig.RpcConfig, + config.RedisConfigFileName: &relationConfig.RedisConfig, + config.MongodbConfigFileName: &relationConfig.MongodbConfig, + config.ShareFileName: &relationConfig.Share, + config.NotificationFileName: &relationConfig.NotificationConfig, + config.WebhooksConfigFileName: &relationConfig.WebhooksConfig, + config.LocalCacheConfigFileName: &relationConfig.LocalCacheConfig, + config.DiscoveryConfigFilename: &relationConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/group.go b/pkg/common/cmd/group.go index 4f8d17516..de7c7102c 100644 --- a/pkg/common/cmd/group.go +++ b/pkg/common/cmd/group.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/rpc/group" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/startrpc" "github.com/openimsdk/open-im-server/v3/pkg/common/storage/versionctx" "github.com/openimsdk/open-im-server/v3/version" @@ -36,14 +37,14 @@ func NewGroupRpcCmd() *GroupRpcCmd { var groupConfig group.Config ret := &GroupRpcCmd{groupConfig: &groupConfig} ret.configMap = map[string]any{ - OpenIMRPCGroupCfgFileName: &groupConfig.RpcConfig, - RedisConfigFileName: &groupConfig.RedisConfig, - MongodbConfigFileName: &groupConfig.MongodbConfig, - ShareFileName: &groupConfig.Share, - NotificationFileName: &groupConfig.NotificationConfig, - WebhooksConfigFileName: &groupConfig.WebhooksConfig, - LocalCacheConfigFileName: &groupConfig.LocalCacheConfig, - DiscoveryConfigFilename: &groupConfig.Discovery, + config.OpenIMRPCGroupCfgFileName: &groupConfig.RpcConfig, + config.RedisConfigFileName: &groupConfig.RedisConfig, + config.MongodbConfigFileName: &groupConfig.MongodbConfig, + config.ShareFileName: &groupConfig.Share, + config.NotificationFileName: &groupConfig.NotificationConfig, + config.WebhooksConfigFileName: &groupConfig.WebhooksConfig, + config.LocalCacheConfigFileName: &groupConfig.LocalCacheConfig, + config.DiscoveryConfigFilename: &groupConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/msg.go b/pkg/common/cmd/msg.go index b6647f9c1..eb5938f7c 100644 --- a/pkg/common/cmd/msg.go +++ b/pkg/common/cmd/msg.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/rpc/msg" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/startrpc" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" @@ -35,15 +36,15 @@ func NewMsgRpcCmd() *MsgRpcCmd { var msgConfig msg.Config ret := &MsgRpcCmd{msgConfig: &msgConfig} ret.configMap = map[string]any{ - OpenIMRPCMsgCfgFileName: &msgConfig.RpcConfig, - RedisConfigFileName: &msgConfig.RedisConfig, - MongodbConfigFileName: &msgConfig.MongodbConfig, - KafkaConfigFileName: &msgConfig.KafkaConfig, - ShareFileName: &msgConfig.Share, - NotificationFileName: &msgConfig.NotificationConfig, - WebhooksConfigFileName: &msgConfig.WebhooksConfig, - LocalCacheConfigFileName: &msgConfig.LocalCacheConfig, - DiscoveryConfigFilename: &msgConfig.Discovery, + config.OpenIMRPCMsgCfgFileName: &msgConfig.RpcConfig, + config.RedisConfigFileName: &msgConfig.RedisConfig, + config.MongodbConfigFileName: &msgConfig.MongodbConfig, + config.KafkaConfigFileName: &msgConfig.KafkaConfig, + config.ShareFileName: &msgConfig.Share, + config.NotificationFileName: &msgConfig.NotificationConfig, + config.WebhooksConfigFileName: &msgConfig.WebhooksConfig, + config.LocalCacheConfigFileName: &msgConfig.LocalCacheConfig, + config.DiscoveryConfigFilename: &msgConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/msg_gateway.go b/pkg/common/cmd/msg_gateway.go index 6363bfbf9..3f66ea720 100644 --- a/pkg/common/cmd/msg_gateway.go +++ b/pkg/common/cmd/msg_gateway.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/msggateway" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" @@ -35,11 +36,11 @@ func NewMsgGatewayCmd() *MsgGatewayCmd { var msgGatewayConfig msggateway.Config ret := &MsgGatewayCmd{msgGatewayConfig: &msgGatewayConfig} ret.configMap = map[string]any{ - OpenIMMsgGatewayCfgFileName: &msgGatewayConfig.MsgGateway, - ShareFileName: &msgGatewayConfig.Share, - RedisConfigFileName: &msgGatewayConfig.RedisConfig, - WebhooksConfigFileName: &msgGatewayConfig.WebhooksConfig, - DiscoveryConfigFilename: &msgGatewayConfig.Discovery, + config.OpenIMMsgGatewayCfgFileName: &msgGatewayConfig.MsgGateway, + config.ShareFileName: &msgGatewayConfig.Share, + config.RedisConfigFileName: &msgGatewayConfig.RedisConfig, + config.WebhooksConfigFileName: &msgGatewayConfig.WebhooksConfig, + config.DiscoveryConfigFilename: &msgGatewayConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/msg_transfer.go b/pkg/common/cmd/msg_transfer.go index 364393413..fbb83c65f 100644 --- a/pkg/common/cmd/msg_transfer.go +++ b/pkg/common/cmd/msg_transfer.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/msgtransfer" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" "github.com/spf13/cobra" @@ -34,13 +35,13 @@ func NewMsgTransferCmd() *MsgTransferCmd { var msgTransferConfig msgtransfer.Config ret := &MsgTransferCmd{msgTransferConfig: &msgTransferConfig} ret.configMap = map[string]any{ - OpenIMMsgTransferCfgFileName: &msgTransferConfig.MsgTransfer, - RedisConfigFileName: &msgTransferConfig.RedisConfig, - MongodbConfigFileName: &msgTransferConfig.MongodbConfig, - KafkaConfigFileName: &msgTransferConfig.KafkaConfig, - ShareFileName: &msgTransferConfig.Share, - WebhooksConfigFileName: &msgTransferConfig.WebhooksConfig, - DiscoveryConfigFilename: &msgTransferConfig.Discovery, + config.OpenIMMsgTransferCfgFileName: &msgTransferConfig.MsgTransfer, + config.RedisConfigFileName: &msgTransferConfig.RedisConfig, + config.MongodbConfigFileName: &msgTransferConfig.MongodbConfig, + config.KafkaConfigFileName: &msgTransferConfig.KafkaConfig, + config.ShareFileName: &msgTransferConfig.Share, + config.WebhooksConfigFileName: &msgTransferConfig.WebhooksConfig, + config.DiscoveryConfigFilename: &msgTransferConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/push.go b/pkg/common/cmd/push.go index 93b502cd8..90bcfefb3 100644 --- a/pkg/common/cmd/push.go +++ b/pkg/common/cmd/push.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/push" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/startrpc" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" @@ -35,14 +36,14 @@ func NewPushRpcCmd() *PushRpcCmd { var pushConfig push.Config ret := &PushRpcCmd{pushConfig: &pushConfig} ret.configMap = map[string]any{ - OpenIMPushCfgFileName: &pushConfig.RpcConfig, - RedisConfigFileName: &pushConfig.RedisConfig, - KafkaConfigFileName: &pushConfig.KafkaConfig, - ShareFileName: &pushConfig.Share, - NotificationFileName: &pushConfig.NotificationConfig, - WebhooksConfigFileName: &pushConfig.WebhooksConfig, - LocalCacheConfigFileName: &pushConfig.LocalCacheConfig, - DiscoveryConfigFilename: &pushConfig.Discovery, + config.OpenIMPushCfgFileName: &pushConfig.RpcConfig, + config.RedisConfigFileName: &pushConfig.RedisConfig, + config.KafkaConfigFileName: &pushConfig.KafkaConfig, + config.ShareFileName: &pushConfig.Share, + config.NotificationFileName: &pushConfig.NotificationConfig, + config.WebhooksConfigFileName: &pushConfig.WebhooksConfig, + config.LocalCacheConfigFileName: &pushConfig.LocalCacheConfig, + config.DiscoveryConfigFilename: &pushConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/root.go b/pkg/common/cmd/root.go index 87252c133..57074c23e 100644 --- a/pkg/common/cmd/root.go +++ b/pkg/common/cmd/root.go @@ -117,7 +117,7 @@ func (r *RootCmd) initializeConfiguration(cmd *cobra.Command, opts *CmdOpts) err } } // Load common log configuration file - return config.Load(configDirectory, LogConfigFileName, ConfigEnvPrefixMap[LogConfigFileName], runtimeEnv, &r.log) + return config.Load(configDirectory, config.LogConfigFileName, ConfigEnvPrefixMap[config.LogConfigFileName], runtimeEnv, &r.log) } func (r *RootCmd) applyOptions(opts ...func(*CmdOpts)) *CmdOpts { diff --git a/pkg/common/cmd/third.go b/pkg/common/cmd/third.go index e43f61732..3efebb92f 100644 --- a/pkg/common/cmd/third.go +++ b/pkg/common/cmd/third.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/rpc/third" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/startrpc" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" @@ -35,14 +36,14 @@ func NewThirdRpcCmd() *ThirdRpcCmd { var thirdConfig third.Config ret := &ThirdRpcCmd{thirdConfig: &thirdConfig} ret.configMap = map[string]any{ - OpenIMRPCThirdCfgFileName: &thirdConfig.RpcConfig, - RedisConfigFileName: &thirdConfig.RedisConfig, - MongodbConfigFileName: &thirdConfig.MongodbConfig, - ShareFileName: &thirdConfig.Share, - NotificationFileName: &thirdConfig.NotificationConfig, - MinioConfigFileName: &thirdConfig.MinioConfig, - LocalCacheConfigFileName: &thirdConfig.LocalCacheConfig, - DiscoveryConfigFilename: &thirdConfig.Discovery, + config.OpenIMRPCThirdCfgFileName: &thirdConfig.RpcConfig, + config.RedisConfigFileName: &thirdConfig.RedisConfig, + config.MongodbConfigFileName: &thirdConfig.MongodbConfig, + config.ShareFileName: &thirdConfig.Share, + config.NotificationFileName: &thirdConfig.NotificationConfig, + config.MinioConfigFileName: &thirdConfig.MinioConfig, + config.LocalCacheConfigFileName: &thirdConfig.LocalCacheConfig, + config.DiscoveryConfigFilename: &thirdConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/cmd/user.go b/pkg/common/cmd/user.go index dc848a775..c74013020 100644 --- a/pkg/common/cmd/user.go +++ b/pkg/common/cmd/user.go @@ -18,6 +18,7 @@ import ( "context" "github.com/openimsdk/open-im-server/v3/internal/rpc/user" + "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/startrpc" "github.com/openimsdk/open-im-server/v3/version" "github.com/openimsdk/tools/system/program" @@ -35,15 +36,15 @@ func NewUserRpcCmd() *UserRpcCmd { var userConfig user.Config ret := &UserRpcCmd{userConfig: &userConfig} ret.configMap = map[string]any{ - OpenIMRPCUserCfgFileName: &userConfig.RpcConfig, - RedisConfigFileName: &userConfig.RedisConfig, - MongodbConfigFileName: &userConfig.MongodbConfig, - KafkaConfigFileName: &userConfig.KafkaConfig, - ShareFileName: &userConfig.Share, - NotificationFileName: &userConfig.NotificationConfig, - WebhooksConfigFileName: &userConfig.WebhooksConfig, - LocalCacheConfigFileName: &userConfig.LocalCacheConfig, - DiscoveryConfigFilename: &userConfig.Discovery, + config.OpenIMRPCUserCfgFileName: &userConfig.RpcConfig, + config.RedisConfigFileName: &userConfig.RedisConfig, + config.MongodbConfigFileName: &userConfig.MongodbConfig, + config.KafkaConfigFileName: &userConfig.KafkaConfig, + config.ShareFileName: &userConfig.Share, + config.NotificationFileName: &userConfig.NotificationConfig, + config.WebhooksConfigFileName: &userConfig.WebhooksConfig, + config.LocalCacheConfigFileName: &userConfig.LocalCacheConfig, + config.DiscoveryConfigFilename: &userConfig.Discovery, } ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap)) ret.ctx = context.WithValue(context.Background(), "version", version.Version) diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index e28b1f105..e10c4df2e 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -701,7 +701,74 @@ type AllConfig struct { Webhooks Webhooks } +func (a *AllConfig) Name2Config(name string) any { + switch name { + case DiscoveryConfigFilename: + return a.Discovery + case LocalCacheConfigFileName: + return a.LocalCache + case LogConfigFileName: + return a.Log + case NotificationFileName: + return a.Notification + case OpenIMAPICfgFileName: + return a.API + case OpenIMCronTaskCfgFileName: + return a.CronTask + case OpenIMMsgGatewayCfgFileName: + return a.MsgGateway + case OpenIMMsgTransferCfgFileName: + return a.MsgTransfer + case OpenIMPushCfgFileName: + return a.Push + case OpenIMRPCAuthCfgFileName: + return a.Auth + case OpenIMRPCConversationCfgFileName: + return a.Conversation + case OpenIMRPCFriendCfgFileName: + return a.Friend + case OpenIMRPCGroupCfgFileName: + return a.Group + case OpenIMRPCMsgCfgFileName: + return a.Msg + case OpenIMRPCThirdCfgFileName: + return a.Third + case OpenIMRPCUserCfgFileName: + return a.User + case ShareFileName: + return a.Share + case WebhooksConfigFileName: + return a.Webhooks + default: + return nil + } +} + +func (a *AllConfig) GetConfigNames() []string { + return []string{ + DiscoveryConfigFilename, + LocalCacheConfigFileName, + LogConfigFileName, + NotificationFileName, + OpenIMAPICfgFileName, + OpenIMCronTaskCfgFileName, + OpenIMMsgGatewayCfgFileName, + OpenIMMsgTransferCfgFileName, + OpenIMPushCfgFileName, + OpenIMRPCAuthCfgFileName, + OpenIMRPCConversationCfgFileName, + OpenIMRPCFriendCfgFileName, + OpenIMRPCGroupCfgFileName, + OpenIMRPCMsgCfgFileName, + OpenIMRPCThirdCfgFileName, + OpenIMRPCUserCfgFileName, + ShareFileName, + WebhooksConfigFileName, + } +} + var ( + FileName = "config.yaml" NotificationFileName = "notification.yml" ShareFileName = "share.yml" WebhooksConfigFileName = "webhooks.yml" diff --git a/pkg/common/discoveryregister/direct/direct_resolver.go b/pkg/common/discovery/direct/direct_resolver.go similarity index 100% rename from pkg/common/discoveryregister/direct/direct_resolver.go rename to pkg/common/discovery/direct/direct_resolver.go diff --git a/pkg/common/discoveryregister/direct/directconn.go b/pkg/common/discovery/direct/directconn.go similarity index 100% rename from pkg/common/discoveryregister/direct/directconn.go rename to pkg/common/discovery/direct/directconn.go diff --git a/pkg/common/discoveryregister/direct/doc.go b/pkg/common/discovery/direct/doc.go similarity index 94% rename from pkg/common/discoveryregister/direct/doc.go rename to pkg/common/discovery/direct/doc.go index b3cd0f804..0ba0d1437 100644 --- a/pkg/common/discoveryregister/direct/doc.go +++ b/pkg/common/discovery/direct/doc.go @@ -12,4 +12,4 @@ // See the License for the specific language governing permissions and // limitations under the License. -package direct // import "github.com/openimsdk/open-im-server/v3/pkg/common/discoveryregister/direct" +package direct // import "github.com/openimsdk/open-im-server/v3/pkg/common/discovery/direct" diff --git a/pkg/common/discoveryregister/discoveryregister.go b/pkg/common/discovery/discoveryregister.go similarity index 98% rename from pkg/common/discoveryregister/discoveryregister.go rename to pkg/common/discovery/discoveryregister.go index ae4229e1b..bc9fd0f5a 100644 --- a/pkg/common/discoveryregister/discoveryregister.go +++ b/pkg/common/discovery/discoveryregister.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package discoveryregister +package discovery import ( "time" diff --git a/pkg/common/discoveryregister/discoveryregister_test.go b/pkg/common/discovery/discoveryregister_test.go similarity index 98% rename from pkg/common/discoveryregister/discoveryregister_test.go rename to pkg/common/discovery/discoveryregister_test.go index 417226645..63f7e94cd 100644 --- a/pkg/common/discoveryregister/discoveryregister_test.go +++ b/pkg/common/discovery/discoveryregister_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package discoveryregister +package discovery import ( "os" diff --git a/pkg/common/discoveryregister/doc.go b/pkg/common/discovery/doc.go similarity index 85% rename from pkg/common/discoveryregister/doc.go rename to pkg/common/discovery/doc.go index 46bbe7001..7a5918cfa 100644 --- a/pkg/common/discoveryregister/doc.go +++ b/pkg/common/discovery/doc.go @@ -12,4 +12,4 @@ // See the License for the specific language governing permissions and // limitations under the License. -package discoveryregister // import "github.com/openimsdk/open-im-server/v3/pkg/common/discoveryregister" +package discovery // import "github.com/openimsdk/open-im-server/v3/pkg/common/discovery" diff --git a/pkg/common/discoveryregister/etcd/doc.go b/pkg/common/discovery/etcd/doc.go similarity index 94% rename from pkg/common/discoveryregister/etcd/doc.go rename to pkg/common/discovery/etcd/doc.go index 1da7508a1..60cf702e8 100644 --- a/pkg/common/discoveryregister/etcd/doc.go +++ b/pkg/common/discovery/etcd/doc.go @@ -12,4 +12,4 @@ // See the License for the specific language governing permissions and // limitations under the License. -package kubernetes // import "github.com/openimsdk/open-im-server/v3/pkg/common/discoveryregister/etcd" +package kubernetes // import "github.com/openimsdk/open-im-server/v3/pkg/common/discovery/etcd" diff --git a/pkg/common/discoveryregister/kubernetes/doc.go b/pkg/common/discovery/kubernetes/doc.go similarity index 93% rename from pkg/common/discoveryregister/kubernetes/doc.go rename to pkg/common/discovery/kubernetes/doc.go index 8615caa6b..dc23ac132 100644 --- a/pkg/common/discoveryregister/kubernetes/doc.go +++ b/pkg/common/discovery/kubernetes/doc.go @@ -12,4 +12,4 @@ // See the License for the specific language governing permissions and // limitations under the License. -package kubernetes // import "github.com/openimsdk/open-im-server/v3/pkg/common/discoveryregister/kubernetes" +package kubernetes // import "github.com/openimsdk/open-im-server/v3/pkg/common/discovery/kubernetes" diff --git a/pkg/common/startrpc/start.go b/pkg/common/startrpc/start.go index 089bc3d97..c9be1d8a6 100644 --- a/pkg/common/startrpc/start.go +++ b/pkg/common/startrpc/start.go @@ -35,7 +35,7 @@ import ( "github.com/openimsdk/tools/utils/runtimeenv" - kdisc "github.com/openimsdk/open-im-server/v3/pkg/common/discoveryregister" + kdisc "github.com/openimsdk/open-im-server/v3/pkg/common/discovery" "github.com/openimsdk/open-im-server/v3/pkg/common/prommetrics" "github.com/openimsdk/tools/discovery" "github.com/openimsdk/tools/errs" diff --git a/tools/check-component/main.go b/tools/check-component/main.go index 15d8640c7..6c764d8ed 100644 --- a/tools/check-component/main.go +++ b/tools/check-component/main.go @@ -87,35 +87,35 @@ func initConfig(configDir string) (*config.Mongo, *config.Redis, *config.Kafka, ) runtimeEnv := runtimeenv.PrintRuntimeEnvironment() - err := config.Load(configDir, cmd.MongodbConfigFileName, cmd.ConfigEnvPrefixMap[cmd.MongodbConfigFileName], runtimeEnv, mongoConfig) + err := config.Load(configDir, config.MongodbConfigFileName, cmd.ConfigEnvPrefixMap[config.MongodbConfigFileName], runtimeEnv, mongoConfig) if err != nil { return nil, nil, nil, nil, nil, err } - err = config.Load(configDir, cmd.RedisConfigFileName, cmd.ConfigEnvPrefixMap[cmd.RedisConfigFileName], runtimeEnv, redisConfig) + err = config.Load(configDir, config.RedisConfigFileName, cmd.ConfigEnvPrefixMap[config.RedisConfigFileName], runtimeEnv, redisConfig) if err != nil { return nil, nil, nil, nil, nil, err } - err = config.Load(configDir, cmd.KafkaConfigFileName, cmd.ConfigEnvPrefixMap[cmd.KafkaConfigFileName], runtimeEnv, kafkaConfig) + err = config.Load(configDir, config.KafkaConfigFileName, cmd.ConfigEnvPrefixMap[config.KafkaConfigFileName], runtimeEnv, kafkaConfig) if err != nil { return nil, nil, nil, nil, nil, err } - err = config.Load(configDir, cmd.OpenIMRPCThirdCfgFileName, cmd.ConfigEnvPrefixMap[cmd.OpenIMRPCThirdCfgFileName], runtimeEnv, thirdConfig) + err = config.Load(configDir, config.OpenIMRPCThirdCfgFileName, cmd.ConfigEnvPrefixMap[config.OpenIMRPCThirdCfgFileName], runtimeEnv, thirdConfig) if err != nil { return nil, nil, nil, nil, nil, err } if thirdConfig.Object.Enable == "minio" { - err = config.Load(configDir, cmd.MinioConfigFileName, cmd.ConfigEnvPrefixMap[cmd.MinioConfigFileName], runtimeEnv, minioConfig) + err = config.Load(configDir, config.MinioConfigFileName, cmd.ConfigEnvPrefixMap[config.MinioConfigFileName], runtimeEnv, minioConfig) if err != nil { return nil, nil, nil, nil, nil, err } } else { minioConfig = nil } - err = config.Load(configDir, cmd.DiscoveryConfigFilename, cmd.ConfigEnvPrefixMap[cmd.DiscoveryConfigFilename], runtimeEnv, discovery) + err = config.Load(configDir, config.DiscoveryConfigFilename, cmd.ConfigEnvPrefixMap[config.DiscoveryConfigFilename], runtimeEnv, discovery) if err != nil { return nil, nil, nil, nil, nil, err } diff --git a/tools/seq/internal/seq.go b/tools/seq/internal/seq.go index 62466670e..c931cda5d 100644 --- a/tools/seq/internal/seq.go +++ b/tools/seq/internal/seq.go @@ -15,7 +15,6 @@ import ( "syscall" "time" - "github.com/openimsdk/open-im-server/v3/pkg/common/cmd" "github.com/openimsdk/open-im-server/v3/pkg/common/config" "github.com/openimsdk/open-im-server/v3/pkg/common/storage/database/mgo" "github.com/openimsdk/tools/db/mongoutil" @@ -59,11 +58,11 @@ func readConfig[T any](dir string, name string) (*T, error) { } func Main(conf string, del time.Duration) error { - redisConfig, err := readConfig[config.Redis](conf, cmd.RedisConfigFileName) + redisConfig, err := readConfig[config.Redis](conf, config.RedisConfigFileName) if err != nil { return err } - mongodbConfig, err := readConfig[config.Mongo](conf, cmd.MongodbConfigFileName) + mongodbConfig, err := readConfig[config.Mongo](conf, config.MongodbConfigFileName) if err != nil { return err }