mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-10-27 05:52:29 +08:00
feat: config
This commit is contained in:
parent
755efcb58e
commit
5d449400da
@ -24,10 +24,11 @@ type ConfigManager struct {
|
|||||||
runtimeEnv string
|
runtimeEnv string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewConfigManager(IMAdminUserID []string, cfg *config.AllConfig, configPath string, runtimeEnv string) *ConfigManager {
|
func NewConfigManager(IMAdminUserID []string, cfg *config.AllConfig, client *clientv3.Client, configPath string, runtimeEnv string) *ConfigManager {
|
||||||
return &ConfigManager{
|
return &ConfigManager{
|
||||||
imAdminUserID: IMAdminUserID,
|
imAdminUserID: IMAdminUserID,
|
||||||
config: cfg,
|
config: cfg,
|
||||||
|
client: client,
|
||||||
configPath: configPath,
|
configPath: configPath,
|
||||||
runtimeEnv: runtimeEnv,
|
runtimeEnv: runtimeEnv,
|
||||||
}
|
}
|
||||||
@ -69,6 +70,10 @@ func (cm *ConfigManager) GetConfigList(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cm *ConfigManager) SetConfig(c *gin.Context) {
|
func (cm *ConfigManager) SetConfig(c *gin.Context) {
|
||||||
|
if cm.config.Discovery.Enable != config.ETCD {
|
||||||
|
apiresp.GinError(c, errs.New("only etcd support set config").Wrap())
|
||||||
|
return
|
||||||
|
}
|
||||||
var req apistruct.SetConfigReq
|
var req apistruct.SetConfigReq
|
||||||
if err := c.BindJSON(&req); err != nil {
|
if err := c.BindJSON(&req); err != nil {
|
||||||
apiresp.GinError(c, errs.ErrArgs.WithDetail(err.Error()).Wrap())
|
apiresp.GinError(c, errs.ErrArgs.WithDetail(err.Error()).Wrap())
|
||||||
|
|||||||
@ -40,6 +40,7 @@ import (
|
|||||||
"github.com/openimsdk/tools/utils/jsonutil"
|
"github.com/openimsdk/tools/utils/jsonutil"
|
||||||
"github.com/openimsdk/tools/utils/network"
|
"github.com/openimsdk/tools/utils/network"
|
||||||
"github.com/openimsdk/tools/utils/runtimeenv"
|
"github.com/openimsdk/tools/utils/runtimeenv"
|
||||||
|
clientv3 "go.etcd.io/etcd/client/v3"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/credentials/insecure"
|
"google.golang.org/grpc/credentials/insecure"
|
||||||
)
|
)
|
||||||
@ -94,7 +95,11 @@ func Start(ctx context.Context, index int, config *Config) error {
|
|||||||
return errs.New("only etcd support autoSetPorts", "RegisterName", "api").Wrap()
|
return errs.New("only etcd support autoSetPorts", "RegisterName", "api").Wrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
router := newGinRouter(client, config)
|
var etcdClient *clientv3.Client
|
||||||
|
if config.Discovery.Enable == conf.ETCD {
|
||||||
|
etcdClient = client.(*etcd.SvcDiscoveryRegistryImpl).GetClient()
|
||||||
|
}
|
||||||
|
router := newGinRouter(client, config, etcdClient)
|
||||||
if config.API.Prometheus.Enable {
|
if config.API.Prometheus.Enable {
|
||||||
var (
|
var (
|
||||||
listener net.Listener
|
listener net.Listener
|
||||||
@ -106,8 +111,6 @@ func Start(ctx context.Context, index int, config *Config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
etcdClient := client.(*etcd.SvcDiscoveryRegistryImpl).GetClient()
|
|
||||||
|
|
||||||
_, err = etcdClient.Put(ctx, prommetrics.BuildDiscoveryKey(prommetrics.APIKeyName), jsonutil.StructToJsonString(prommetrics.BuildDefaultTarget(registerIP, prometheusPort)))
|
_, err = etcdClient.Put(ctx, prommetrics.BuildDiscoveryKey(prommetrics.APIKeyName), jsonutil.StructToJsonString(prommetrics.BuildDefaultTarget(registerIP, prometheusPort)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errs.WrapMsg(err, "etcd put err")
|
return errs.WrapMsg(err, "etcd put err")
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import (
|
|||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/internal/api/jssdk"
|
"github.com/openimsdk/open-im-server/v3/internal/api/jssdk"
|
||||||
pbAuth "github.com/openimsdk/protocol/auth"
|
pbAuth "github.com/openimsdk/protocol/auth"
|
||||||
|
clientv3 "go.etcd.io/etcd/client/v3"
|
||||||
|
|
||||||
"github.com/gin-contrib/gzip"
|
"github.com/gin-contrib/gzip"
|
||||||
|
|
||||||
@ -47,7 +48,7 @@ func prommetricsGin() gin.HandlerFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newGinRouter(disCov discovery.SvcDiscoveryRegistry, config *Config) *gin.Engine {
|
func newGinRouter(disCov discovery.SvcDiscoveryRegistry, config *Config, client *clientv3.Client) *gin.Engine {
|
||||||
disCov.AddOption(mw.GrpcClient(), grpc.WithTransportCredentials(insecure.NewCredentials()),
|
disCov.AddOption(mw.GrpcClient(), grpc.WithTransportCredentials(insecure.NewCredentials()),
|
||||||
grpc.WithDefaultServiceConfig(fmt.Sprintf(`{"LoadBalancingPolicy": "%s"}`, "round_robin")))
|
grpc.WithDefaultServiceConfig(fmt.Sprintf(`{"LoadBalancingPolicy": "%s"}`, "round_robin")))
|
||||||
gin.SetMode(gin.ReleaseMode)
|
gin.SetMode(gin.ReleaseMode)
|
||||||
@ -259,7 +260,7 @@ func newGinRouter(disCov discovery.SvcDiscoveryRegistry, config *Config) *gin.En
|
|||||||
proDiscoveryGroup.GET("/msg_gateway", pd.MessageGateway)
|
proDiscoveryGroup.GET("/msg_gateway", pd.MessageGateway)
|
||||||
proDiscoveryGroup.GET("/msg_transfer", pd.MessageTransfer)
|
proDiscoveryGroup.GET("/msg_transfer", pd.MessageTransfer)
|
||||||
|
|
||||||
cm := NewConfigManager(config.Share.IMAdminUserID, config.AllConfig, config.ConfigPath, config.RuntimeEnv)
|
cm := NewConfigManager(config.Share.IMAdminUserID, config.AllConfig, client, config.ConfigPath, config.RuntimeEnv)
|
||||||
configGroup := r.Group("/config", cm.CheckAdmin)
|
configGroup := r.Group("/config", cm.CheckAdmin)
|
||||||
configGroup.POST("/get_config_list", cm.GetConfigList)
|
configGroup.POST("/get_config_list", cm.GetConfigList)
|
||||||
configGroup.POST("/get_config", cm.GetConfig)
|
configGroup.POST("/get_config", cm.GetConfig)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user