From 947c1f0abed7a92626c8eb5d86a91a20fdad9e8f Mon Sep 17 00:00:00 2001
From: chao <48119764+withchao@users.noreply.github.com>
Date: Tue, 23 Apr 2024 19:35:41 +0800
Subject: [PATCH 01/15] fix: gin log and rpc mw (#499)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix: ptr
* feat: go 1.19
* fix: config get env
* test log
* fix; login
* fix: update grpc version.
* fix: update grpc version.
* fix: bug
---------
Co-authored-by: Xinwei Xiong <3293172751NSS@gmail.com>
Co-authored-by: Gordon <46924906+FGadvancer@users.noreply.github.com>
---
go.mod | 2 +-
go.sum | 4 ++--
internal/api/admin/start.go | 4 ++--
internal/api/chat/start.go | 4 ++--
internal/rpc/admin/start.go | 3 ++-
internal/rpc/chat/start.go | 3 ++-
6 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/go.mod b/go.mod
index 1357fd854..b11884c0e 100644
--- a/go.mod
+++ b/go.mod
@@ -27,7 +27,7 @@ require (
github.com/mitchellh/mapstructure v1.5.0
github.com/openimsdk/gomake v0.0.6
github.com/openimsdk/protocol v0.0.63
- github.com/openimsdk/tools v0.0.48
+ github.com/openimsdk/tools v0.0.49-alpha.1
github.com/redis/go-redis/v9 v9.5.1
github.com/spf13/cobra v1.8.0
github.com/spf13/viper v1.18.2
diff --git a/go.sum b/go.sum
index d4c9121bb..b0867c341 100644
--- a/go.sum
+++ b/go.sum
@@ -182,8 +182,8 @@ github.com/openimsdk/gomake v0.0.6 h1:bJmQWDHBj8PQ7oGJ2SL3Gsx0k5CdI/BPfGzlGcV105
github.com/openimsdk/gomake v0.0.6/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
github.com/openimsdk/protocol v0.0.63 h1:9DnweZe9nEYDFa4fGTbC9Cqi0gLUdtBhRo1NRP2X3WQ=
github.com/openimsdk/protocol v0.0.63/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8=
-github.com/openimsdk/tools v0.0.48 h1:GgRtYtMNlJ0PzCR9XQzMVDv7O+Sp8Hg9Grrlnh8HFGE=
-github.com/openimsdk/tools v0.0.48/go.mod h1:P4oGP1Pd+d4ctbLD5U/XQTgl8yu8Hd3skx640Fr69ko=
+github.com/openimsdk/tools v0.0.49-alpha.1 h1:LtlKh5t/1b1tNikR9LWwV9PIJclUNsVqpEzEke4CMtk=
+github.com/openimsdk/tools v0.0.49-alpha.1/go.mod h1:P4oGP1Pd+d4ctbLD5U/XQTgl8yu8Hd3skx640Fr69ko=
github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
github.com/pion/datachannel v1.5.5 h1:10ef4kwdjije+M9d7Xm9im2Y3O6A6ccQb0zcqZcJew8=
diff --git a/internal/api/admin/start.go b/internal/api/admin/start.go
index 08bcce51c..ce30a64b8 100644
--- a/internal/api/admin/start.go
+++ b/internal/api/admin/start.go
@@ -60,8 +60,8 @@ func Start(ctx context.Context, index int, config *Config) error {
adminApi := New(chatClient, adminClient, im, &base)
mwApi := chatmw.New(adminClient)
gin.SetMode(gin.ReleaseMode)
- engine := gin.Default()
- engine.Use(mw.CorsHandler(), mw.GinParseOperationID())
+ engine := gin.New()
+ engine.Use(gin.Recovery(), mw.CorsHandler(), mw.GinParseOperationID())
SetAdminRoute(engine, adminApi, mwApi)
return engine.Run(fmt.Sprintf(":%d", apiPort))
}
diff --git a/internal/api/chat/start.go b/internal/api/chat/start.go
index 6b30d235e..d5291c6ad 100644
--- a/internal/api/chat/start.go
+++ b/internal/api/chat/start.go
@@ -59,8 +59,8 @@ func Start(ctx context.Context, index int, config *Config) error {
adminApi := New(chatClient, adminClient, im, &base)
mwApi := chatmw.New(adminClient)
gin.SetMode(gin.ReleaseMode)
- engine := gin.Default()
- engine.Use(mw.CorsHandler(), mw.GinParseOperationID())
+ engine := gin.New()
+ engine.Use(gin.Recovery(), mw.CorsHandler(), mw.GinParseOperationID())
SetChatRoute(engine, adminApi, mwApi)
return engine.Run(fmt.Sprintf(":%d", apiPort))
}
diff --git a/internal/rpc/admin/start.go b/internal/rpc/admin/start.go
index c8ed81ea6..36ac9801a 100644
--- a/internal/rpc/admin/start.go
+++ b/internal/rpc/admin/start.go
@@ -17,6 +17,7 @@ import (
"github.com/openimsdk/tools/db/redisutil"
"github.com/openimsdk/tools/discovery"
"github.com/openimsdk/tools/errs"
+ "github.com/openimsdk/tools/mw"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"math/rand"
@@ -49,7 +50,7 @@ func Start(ctx context.Context, config *Config, client discovery.SvcDiscoveryReg
if err != nil {
return err
}
- conn, err := client.GetConn(ctx, config.Share.RpcRegisterName.Chat, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ conn, err := client.GetConn(ctx, config.Share.RpcRegisterName.Chat, grpc.WithTransportCredentials(insecure.NewCredentials()), mw.GrpcClient())
if err != nil {
return err
}
diff --git a/internal/rpc/chat/start.go b/internal/rpc/chat/start.go
index 7a4a3e7dc..ed62eaeaa 100644
--- a/internal/rpc/chat/start.go
+++ b/internal/rpc/chat/start.go
@@ -9,6 +9,7 @@ import (
"github.com/openimsdk/tools/db/mongoutil"
"github.com/openimsdk/tools/discovery"
"github.com/openimsdk/tools/errs"
+ "github.com/openimsdk/tools/mw"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"time"
@@ -52,7 +53,7 @@ func Start(ctx context.Context, config *Config, client discovery.SvcDiscoveryReg
if err != nil {
return err
}
- conn, err := client.GetConn(ctx, config.Share.RpcRegisterName.Admin, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ conn, err := client.GetConn(ctx, config.Share.RpcRegisterName.Admin, grpc.WithTransportCredentials(insecure.NewCredentials()), mw.GrpcClient())
if err != nil {
return err
}
From 74f8d1afebfc8890024c653430933d36aaf10960 Mon Sep 17 00:00:00 2001
From: skiffer-git <72860476+skiffer-git@users.noreply.github.com>
Date: Tue, 23 Apr 2024 19:41:40 +0800
Subject: [PATCH 02/15] Optimize the Dockerfile. (#502)
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
* refactor dockerFile
---
.dockerignore | 4 +--
.gitignore | 1 -
Dockerfile | 83 ++++++++++++++++++++++++------------------------
go.mod | 2 +-
go.sum | 4 +--
start-config.yml | 8 +++++
6 files changed, 54 insertions(+), 48 deletions(-)
create mode 100644 start-config.yml
diff --git a/.dockerignore b/.dockerignore
index a118b899f..b52db5740 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -4,8 +4,8 @@
.dockerignore
# Ignore build artifacts
-_output/
logs/
+_output/
# Ignore non-essential documentation
README.md
@@ -17,8 +17,6 @@ CHANGELOG/
# Ignore testing and linting configuration
.golangci.yml
-# Ignore deployment-related files
-docker-compose.yaml
# Ignore assets
assets/
diff --git a/.gitignore b/.gitignore
index ea171e8a3..811715820 100644
--- a/.gitignore
+++ b/.gitignore
@@ -374,4 +374,3 @@ dist
# config files, may contain sensitive informatio
config/config.yaml
-start-config.yml
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 2ecf60a70..52e184104 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,48 +1,49 @@
-# Copyright © 2023 OpenIM open source community. 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.
-
-ARG GOARCH
-ARG GOOS
-
-# Use golang as the builder stage
-FROM golang:1.21 AS builder
-
-ARG GO111MODULE=on
-ARG GOPROXY=https://goproxy.io,direct
-
-WORKDIR /openim/openim-chat
-
-ENV GO111MODULE=$GO111MODULE
-ENV GOPROXY=$GOPROXY
-
-COPY go.mod go.sum ./
+# Use Go 1.21 Alpine as the base image for building the application
+FROM golang:1.21-alpine as builder
+
+# Define the base directory for the application as an environment variable
+ENV SERVER_DIR=/openim-chat
+
+# Set the working directory inside the container based on the environment variable
+WORKDIR $SERVER_DIR
+
+# Set the Go proxy to improve dependency resolution speed
+ENV GOPROXY=https://goproxy.io,direct
+
+# Copy all files from the current directory into the container
+COPY . .
+
RUN go mod download
-# Copy all files to the container
-ADD . .
+# Install Mage to use for building the application
+RUN go install github.com/magefile/mage@v1.15.0
+
+# Optionally build your application if needed
+RUN mage build
+
+# Using Alpine Linux with Go environment for the final image
+FROM golang:1.21-alpine
+
+# Install necessary packages, such as bash
+RUN apk add --no-cache bash
-RUN make clean
-RUN make build
+# Set the environment and work directory
+ENV SERVER_DIR=/openim-chat
+WORKDIR $SERVER_DIR
-# Build the runtime stage
-FROM ghcr.io/openim-sigs/openim-ubuntu-image:latest
-WORKDIR ${CHAT_WORKDIR}
+# Copy the compiled binaries and mage from the builder image to the final image
+COPY --from=builder $SERVER_DIR/_output $SERVER_DIR/_output
+COPY --from=builder $SERVER_DIR/config $SERVER_DIR/config
+COPY --from=builder /go/bin/mage /usr/local/bin/mage
+COPY --from=builder $SERVER_DIR/magefile_windows.go $SERVER_DIR/
+COPY --from=builder $SERVER_DIR/magefile_unix.go $SERVER_DIR/
+COPY --from=builder $SERVER_DIR/magefile.go $SERVER_DIR/
+COPY --from=builder $SERVER_DIR/start-config.yml $SERVER_DIR/
+COPY --from=builder $SERVER_DIR/go.mod $SERVER_DIR/
+COPY --from=builder $SERVER_DIR/go.sum $SERVER_DIR/
-COPY --from=builder ${OPENIM_CHAT_BINDIR} /openim/openim-chat/_output/bin
-COPY --from=builder ${CHAT_WORKDIR}/config /openim/openim-chat/config
-COPY --from=builder ${CHAT_WORKDIR}/scripts /openim/openim-chat/scripts
-COPY --from=builder ${CHAT_WORKDIR}/deployments /openim/openim-chat/deployments
+RUN go get github.com/openimsdk/gomake@v0.0.9-alpha.3
-CMD ["/openim/openim-chat/scripts/docker-start-all.sh"]
+# Set the command to run when the container starts
+ENTRYPOINT ["sh", "-c", "mage start && tail -f /dev/null"]
diff --git a/go.mod b/go.mod
index b11884c0e..f85546e2b 100644
--- a/go.mod
+++ b/go.mod
@@ -25,7 +25,7 @@ require (
require (
github.com/livekit/protocol v1.10.1
github.com/mitchellh/mapstructure v1.5.0
- github.com/openimsdk/gomake v0.0.6
+ github.com/openimsdk/gomake v0.0.9-alpha.3
github.com/openimsdk/protocol v0.0.63
github.com/openimsdk/tools v0.0.49-alpha.1
github.com/redis/go-redis/v9 v9.5.1
diff --git a/go.sum b/go.sum
index b0867c341..ffb87ecec 100644
--- a/go.sum
+++ b/go.sum
@@ -178,8 +178,8 @@ github.com/nats-io/nkeys v0.4.6/go.mod h1:4DxZNzenSVd1cYQoAa8948QY3QDjrHfcfVADym
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
-github.com/openimsdk/gomake v0.0.6 h1:bJmQWDHBj8PQ7oGJ2SL3Gsx0k5CdI/BPfGzlGcV105s=
-github.com/openimsdk/gomake v0.0.6/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
+github.com/openimsdk/gomake v0.0.9-alpha.3 h1:KO3stbmiTksnnx2o2Lh8/FkKXc7qiF4rwPnr01WO7aM=
+github.com/openimsdk/gomake v0.0.9-alpha.3/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
github.com/openimsdk/protocol v0.0.63 h1:9DnweZe9nEYDFa4fGTbC9Cqi0gLUdtBhRo1NRP2X3WQ=
github.com/openimsdk/protocol v0.0.63/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8=
github.com/openimsdk/tools v0.0.49-alpha.1 h1:LtlKh5t/1b1tNikR9LWwV9PIJclUNsVqpEzEke4CMtk=
diff --git a/start-config.yml b/start-config.yml
new file mode 100644
index 000000000..b5b8ddc55
--- /dev/null
+++ b/start-config.yml
@@ -0,0 +1,8 @@
+serviceBinaries:
+ chat-api: 1
+ chat-rpc: 1
+ admin-api: 1
+ admin-rpc: 1
+toolBinaries:
+ - check-component
+maxFileDescriptors: 10000
From 7f78020911924228712b91b9f2e6ee7faf0ab427 Mon Sep 17 00:00:00 2001
From: skiffer-git <44203734@qq.com>
Date: Tue, 23 Apr 2024 19:45:05 +0800
Subject: [PATCH 03/15] update go mod
---
go.mod | 2 +-
go.sum | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/go.mod b/go.mod
index f85546e2b..c27621cd4 100644
--- a/go.mod
+++ b/go.mod
@@ -27,7 +27,7 @@ require (
github.com/mitchellh/mapstructure v1.5.0
github.com/openimsdk/gomake v0.0.9-alpha.3
github.com/openimsdk/protocol v0.0.63
- github.com/openimsdk/tools v0.0.49-alpha.1
+ github.com/openimsdk/tools v0.0.49-alpha.3
github.com/redis/go-redis/v9 v9.5.1
github.com/spf13/cobra v1.8.0
github.com/spf13/viper v1.18.2
diff --git a/go.sum b/go.sum
index ffb87ecec..322597b3f 100644
--- a/go.sum
+++ b/go.sum
@@ -182,8 +182,8 @@ github.com/openimsdk/gomake v0.0.9-alpha.3 h1:KO3stbmiTksnnx2o2Lh8/FkKXc7qiF4rwP
github.com/openimsdk/gomake v0.0.9-alpha.3/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
github.com/openimsdk/protocol v0.0.63 h1:9DnweZe9nEYDFa4fGTbC9Cqi0gLUdtBhRo1NRP2X3WQ=
github.com/openimsdk/protocol v0.0.63/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8=
-github.com/openimsdk/tools v0.0.49-alpha.1 h1:LtlKh5t/1b1tNikR9LWwV9PIJclUNsVqpEzEke4CMtk=
-github.com/openimsdk/tools v0.0.49-alpha.1/go.mod h1:P4oGP1Pd+d4ctbLD5U/XQTgl8yu8Hd3skx640Fr69ko=
+github.com/openimsdk/tools v0.0.49-alpha.3 h1:mXKU09asKTLjj0yCsfqqMizs3ibl1vLimW7ZYzAMw44=
+github.com/openimsdk/tools v0.0.49-alpha.3/go.mod h1:P4oGP1Pd+d4ctbLD5U/XQTgl8yu8Hd3skx640Fr69ko=
github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
github.com/pion/datachannel v1.5.5 h1:10ef4kwdjije+M9d7Xm9im2Y3O6A6ccQb0zcqZcJew8=
From bf781afcebd4840b3bef6e3e51f23d9ca7bc1161 Mon Sep 17 00:00:00 2001
From: chao <48119764+withchao@users.noreply.github.com>
Date: Wed, 24 Apr 2024 16:46:27 +0800
Subject: [PATCH 04/15] feat: chat admin config (#508)
---
config/share.yml | 4 +---
internal/api/admin/start.go | 2 +-
internal/api/chat/start.go | 2 +-
internal/rpc/admin/start.go | 14 +++++++-------
pkg/common/config/config.go | 10 ++--------
5 files changed, 12 insertions(+), 20 deletions(-)
diff --git a/config/share.yml b/config/share.yml
index 76e1b4427..2eed7bd71 100644
--- a/config/share.yml
+++ b/config/share.yml
@@ -9,8 +9,6 @@ openIM:
adminUserID: imAdmin
chatAdmin:
- - adminID: chatAdmin
- imUserID: imAdmin
- nickname: chatAdmin
+ - "chatAdmin"
#proxyHeader: "X-Forwarded-For"
\ No newline at end of file
diff --git a/internal/api/admin/start.go b/internal/api/admin/start.go
index ce30a64b8..aef4602c3 100644
--- a/internal/api/admin/start.go
+++ b/internal/api/admin/start.go
@@ -55,7 +55,7 @@ func Start(ctx context.Context, index int, config *Config) error {
base := util.Api{
ImUserID: config.Share.OpenIM.AdminUserID,
ProxyHeader: config.Share.ProxyHeader,
- ChatAdminUserID: config.Share.ChatAdmin[0].AdminID,
+ ChatAdminUserID: config.Share.ChatAdmin[0],
}
adminApi := New(chatClient, adminClient, im, &base)
mwApi := chatmw.New(adminClient)
diff --git a/internal/api/chat/start.go b/internal/api/chat/start.go
index d5291c6ad..30ea80ffd 100644
--- a/internal/api/chat/start.go
+++ b/internal/api/chat/start.go
@@ -54,7 +54,7 @@ func Start(ctx context.Context, index int, config *Config) error {
base := util.Api{
ImUserID: config.Share.OpenIM.AdminUserID,
ProxyHeader: config.Share.ProxyHeader,
- ChatAdminUserID: config.Share.ChatAdmin[0].AdminID,
+ ChatAdminUserID: config.Share.ChatAdmin[0],
}
adminApi := New(chatClient, adminClient, im, &base)
mwApi := chatmw.New(adminClient)
diff --git a/internal/rpc/admin/start.go b/internal/rpc/admin/start.go
index 36ac9801a..8d46bf6f1 100644
--- a/internal/rpc/admin/start.go
+++ b/internal/rpc/admin/start.go
@@ -59,7 +59,7 @@ func Start(ctx context.Context, config *Config, client discovery.SvcDiscoveryReg
Expires: time.Duration(config.RpcConfig.TokenPolicy.Expire) * time.Hour * 24,
Secret: config.RpcConfig.Secret,
}
- if err := srv.initAdmin(ctx, config.Share.ChatAdmin); err != nil {
+ if err := srv.initAdmin(ctx, config.Share.ChatAdmin, config.Share.OpenIM.AdminUserID); err != nil {
return err
}
pbadmin.RegisterAdminServer(server, &srv)
@@ -72,17 +72,17 @@ type adminServer struct {
Token *tokenverify.Token
}
-func (o *adminServer) initAdmin(ctx context.Context, users []config.AdminUser) error {
- for _, user := range users {
- if _, err := o.Database.GetAdmin(ctx, user.AdminID); err == nil {
+func (o *adminServer) initAdmin(ctx context.Context, admins []string, imUserID string) error {
+ for _, account := range admins {
+ if _, err := o.Database.GetAdmin(ctx, account); err == nil {
continue
} else if !dbutil.IsDBNotFound(err) {
return err
}
- sum := md5.Sum([]byte(user.AdminID))
+ sum := md5.Sum([]byte(account))
a := admin.Admin{
- Account: user.AdminID,
- UserID: user.IMUserID,
+ Account: account,
+ UserID: imUserID,
Password: hex.EncodeToString(sum[:]),
Level: constant.DefaultAdminLevel,
CreateTime: time.Now(),
diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go
index f08734c34..1412f0e4e 100644
--- a/pkg/common/config/config.go
+++ b/pkg/common/config/config.go
@@ -21,14 +21,8 @@ type Share struct {
Secret string `mapstructure:"secret"`
AdminUserID string `mapstructure:"adminUserID"`
} `mapstructure:"openIM"`
- ChatAdmin []AdminUser `mapstructure:"chatAdmin"`
- ProxyHeader string `mapstructure:"proxyHeader"`
-}
-
-type AdminUser struct {
- AdminID string `mapstructure:"adminID"`
- IMUserID string `mapstructure:"imUserID"`
- Nickname string `mapstructure:"nickname"`
+ ChatAdmin []string `mapstructure:"chatAdmin"`
+ ProxyHeader string `mapstructure:"proxyHeader"`
}
type RpcRegisterName struct {
From f321a14130cb953534ec46175e4a44d29bd138e7 Mon Sep 17 00:00:00 2001
From: xuan <146319162+wxuanF@users.noreply.github.com>
Date: Wed, 24 Apr 2024 17:56:56 +0800
Subject: [PATCH 05/15] Update action (#514)
* Update chatci.yml
* Rename docker-buildx.yml to docker-buildx.bak
* Update scripts-test.yml
---
.github/workflows/chatci.yml | 31 ++++++-----------
.../{docker-buildx.yml => docker-buildx.bak} | 0
.github/workflows/scripts-test.yml | 34 ++++---------------
3 files changed, 17 insertions(+), 48 deletions(-)
rename .github/workflows/{docker-buildx.yml => docker-buildx.bak} (100%)
diff --git a/.github/workflows/chatci.yml b/.github/workflows/chatci.yml
index 2a612cb5c..e7210eaa1 100644
--- a/.github/workflows/chatci.yml
+++ b/.github/workflows/chatci.yml
@@ -60,29 +60,18 @@ jobs:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- - name: Code Typecheck Detector
- uses: kubecub/typecheck@main
-
- - name: Run go modules tidy
- run: |
- sudo make tidy
-
- - name: Run go format
- run: |
- sudo make format
- echo "Run go format successfully"
- continue-on-error: true
-
- - name: Generate all necessary files, such as error code files
+ - name: init
run: |
- make generate
+ sudo bash bootstrap.sh
+ echo "init successfully"
- - name: Run unit test and get test coverage
+ - name: build and start
run: |
- make cover
- continue-on-error: true
+ mage start
+ mage check
- - name: Build source code for host platform
+ - name: restart
run: |
- sudo make build
- echo "Build source code for host platform successfully"
+ mage stop
+ mage start
+ mage check
diff --git a/.github/workflows/docker-buildx.yml b/.github/workflows/docker-buildx.bak
similarity index 100%
rename from .github/workflows/docker-buildx.yml
rename to .github/workflows/docker-buildx.bak
diff --git a/.github/workflows/scripts-test.yml b/.github/workflows/scripts-test.yml
index 5f9d4263b..34be2029e 100644
--- a/.github/workflows/scripts-test.yml
+++ b/.github/workflows/scripts-test.yml
@@ -71,21 +71,22 @@ jobs:
- name: Build Chat
run: |
- make build
- chmod +x ./scripts/build-all-service.sh
- ./scripts/build-all-service.sh
+ sudo bash bootstrap.sh
+ sudo mage
+ sudo mage start
shell: bash
- name: deploy all services
run: |
git clone https://github.com/openimsdk/open-im-server.git
cd open-im-server
- sudo make init
sudo docker compose up -d
sudo sleep 30
- sudo make start
- sudo make check
+ sudo bash bootstrap.sh
+ sudo mage
+ sudo mage start
+ sudo mage check
sudo cat _output/logs/chat_$(date '+%Y%m%d').log 2>/dev/null
echo "pwd = $(pwd)"
@@ -94,27 +95,6 @@ jobs:
shell: bash
continue-on-error: true
- - name: start all services
- run: |
- sudo make init && \
- sudo make start || \
- (echo "An error occurred, printing logs:" && sudo cat ./_output/logs/* 2>/dev/null)
- shell: bash
-
- - name: Check all services
- run: |
- sudo make check || \
- (echo "An error occurred, printing logs:" && sudo cat ./_output/logs/* 2>/dev/null)
- shell: bash
-
- - name: Stop chat
- run: |
- sudo make stop
-
- - name: Reinstall chat
- run: |
- sudo make install
-
- name: Print chat_$(date '+%Y%m%d').log
run: |
ls -al && echo "pwd = $(pwd)"
From 0df840f77c3d9f5d8b20b5d038f2f94ec56a668a Mon Sep 17 00:00:00 2001
From: skiffer-git <72860476+skiffer-git@users.noreply.github.com>
Date: Wed, 24 Apr 2024 18:03:16 +0800
Subject: [PATCH 06/15] Add comments (#515)
* refactor dockerFile
* Add comments to the configuration file
* feat: chat admin config (#509)
* Add comments to the configuration file
* Remove comments
---------
Co-authored-by: chao <48119764+withchao@users.noreply.github.com>
---
Dockerfile | 2 +-
config/chat-api-admin.yml | 2 ++
config/chat-api-chat.yml | 2 ++
config/chat-rpc-admin.yml | 3 ++
config/chat-rpc-chat.yml | 3 ++
config/log.yml | 7 ++++-
config/mongodb.yml | 9 +++++-
config/redis.yml | 9 +++++-
config/share.yml | 5 +++-
config/zookeeper.yml | 5 +++-
go.mod | 2 +-
go.sum | 4 +--
pkg/common/db/model/admin/ip_forbidden.go | 1 -
pkg/common/db/table/admin/admin.go | 2 +-
pkg/common/db/table/admin/client_config.go | 2 +-
.../db/table/admin/forbidden_account.go | 2 +-
.../db/table/admin/invitation_register.go | 1 -
pkg/common/db/table/admin/ip_forbidden.go | 1 -
.../db/table/admin/limit_user_login_ip.go | 1 -
.../db/table/admin/register_add_friend.go | 1 -
.../db/table/admin/register_add_group.go | 1 -
pkg/common/db/table/chat/account.go | 1 -
pkg/common/db/table/chat/attribute.go | 1 -
pkg/common/db/table/chat/register.go | 1 -
pkg/common/db/table/chat/user_login_record.go | 1 -
pkg/common/xlsx/main.go | 8 +++---
pkg/common/xlsx/utils.go | 13 ++++-----
pkg/eerrs/predefine.go | 28 +++++++++----------
pkg/email/mail.go | 2 +-
29 files changed, 72 insertions(+), 48 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 52e184104..ed17db92e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -43,7 +43,7 @@ COPY --from=builder $SERVER_DIR/start-config.yml $SERVER_DIR/
COPY --from=builder $SERVER_DIR/go.mod $SERVER_DIR/
COPY --from=builder $SERVER_DIR/go.sum $SERVER_DIR/
-RUN go get github.com/openimsdk/gomake@v0.0.9-alpha.3
+RUN go get github.com/openimsdk/gomake@v0.0.9
# Set the command to run when the container starts
ENTRYPOINT ["sh", "-c", "mage start && tail -f /dev/null"]
diff --git a/config/chat-api-admin.yml b/config/chat-api-admin.yml
index dfc773c9f..e03ee18cf 100644
--- a/config/chat-api-admin.yml
+++ b/config/chat-api-admin.yml
@@ -1,4 +1,6 @@
api:
+ # Listening IP; 0.0.0.0 means both internal and external IPs are listened to, default is recommended
listenIP: 0.0.0.0
+ # Listening ports; if multiple are configured, multiple instances will be launched
ports: [ 10009 ]
diff --git a/config/chat-api-chat.yml b/config/chat-api-chat.yml
index 4c86fed55..c563647de 100644
--- a/config/chat-api-chat.yml
+++ b/config/chat-api-chat.yml
@@ -1,4 +1,6 @@
api:
+ # Listening IP; 0.0.0.0 means both internal and external IPs are listened to, default is recommended
listenIP: 0.0.0.0
+ # Listening ports; if multiple are configured, multiple instances will be launched
ports: [ 10008 ]
diff --git a/config/chat-rpc-admin.yml b/config/chat-rpc-admin.yml
index fb25d131a..7494356fa 100644
--- a/config/chat-rpc-admin.yml
+++ b/config/chat-rpc-admin.yml
@@ -1,6 +1,9 @@
rpc:
+ # The IP address where this RPC service registers itself; if left blank, it defaults to the internal network IP
registerIP: ''
+ # IP address that the RPC service listens on; setting to 0.0.0.0 listens on both internal and external IPs. If left blank, it automatically uses the internal network IP
listenIP: 0.0.0.0
+ # List of ports that the RPC service listens on; configuring multiple ports will launch multiple instances.
ports: [ 30200 ]
tokenPolicy:
diff --git a/config/chat-rpc-chat.yml b/config/chat-rpc-chat.yml
index 264759c61..d015ad63f 100644
--- a/config/chat-rpc-chat.yml
+++ b/config/chat-rpc-chat.yml
@@ -1,6 +1,9 @@
rpc:
+ # The IP address where this RPC service registers itself; if left blank, it defaults to the internal network IP
registerIP: ''
+ # IP address that the RPC service listens on; setting to 0.0.0.0 listens on both internal and external IPs. If left blank, it automatically uses the internal network IP
listenIP: 0.0.0.0
+ # List of ports that the RPC service listens on; configuring multiple ports will launch multiple instances.
ports: [ 30300 ]
verifyCode:
diff --git a/config/log.yml b/config/log.yml
index 081393902..44ff3ee71 100644
--- a/config/log.yml
+++ b/config/log.yml
@@ -1,7 +1,12 @@
+# Log storage path, default is acceptable, change to a full path if modification is needed
storageLocation: ../../../../logs/
+# Log rotation period (in hours), default is acceptable
rotationTime: 24
+# Number of log files to retain, default is acceptable
remainRotationCount: 2
+# Log level settings: 3 for production environment; 6 for more verbose logging in debugging environments
remainLogLevel: 6
+# Whether to output to standard output, default is acceptable
isStdout: false
+# Whether to log in JSON format, default is acceptable
isJson: false
-withStack: false
diff --git a/config/mongodb.yml b/config/mongodb.yml
index 12f1f66a5..98f5694e4 100644
--- a/config/mongodb.yml
+++ b/config/mongodb.yml
@@ -1,7 +1,14 @@
+# URI for database connection, leave empty if using address and credential settings directly
uri: ''
+# List of MongoDB server addresses
address: [ localhost:37017 ]
+# Name of the database
database: openim_v3
+# Username for database authentication
username: openIM
+# Password for database authentication
password: openIM123
+# Maximum number of connections in the connection pool
maxPoolSize: 100
-maxRetry: 10
\ No newline at end of file
+# Maximum number of retry attempts for a failed database connection
+maxRetry: 10
diff --git a/config/redis.yml b/config/redis.yml
index 26becd887..27361ba92 100644
--- a/config/redis.yml
+++ b/config/redis.yml
@@ -1,7 +1,14 @@
+# List of Redis server addresses
address: [ localhost:16379 ]
+# Username for Redis authentication (leave blank if not used)
username: ''
+# Password for Redis authentication
password: openIM123
+# Enable or disable pipeline processing
enablePipeline: false
+# Enable or disable cluster mode
clusterMode: false
+# Database index to be used
db: 0
-maxRetry: 10
\ No newline at end of file
+# Maximum number of retry attempts for a failed connection
+maxRetry: 10
diff --git a/config/share.yml b/config/share.yml
index 2eed7bd71..6b1bab178 100644
--- a/config/share.yml
+++ b/config/share.yml
@@ -4,11 +4,14 @@ rpcRegisterName:
admin: admin
openIM:
+ # OpenIM API address
apiURL: http://127.0.0.1:10002
+ # OpenIM secret key, must be consistent with OpenIM
secret: openIM123
+ # OpenIM administrator userID, must be consistent with OpenIM
adminUserID: imAdmin
chatAdmin:
+ # Default username and password for the admin
- "chatAdmin"
-#proxyHeader: "X-Forwarded-For"
\ No newline at end of file
diff --git a/config/zookeeper.yml b/config/zookeeper.yml
index 73c76e79c..7b7557c93 100644
--- a/config/zookeeper.yml
+++ b/config/zookeeper.yml
@@ -1,5 +1,8 @@
+# Database schema name
schema: openim
+# List of server addresses
address: [ localhost:12181 ]
+# Username for authentication (leave blank if not used)
username: ''
+# Password for authentication (leave blank if not used)
password: ''
-
diff --git a/go.mod b/go.mod
index c27621cd4..f8caab7db 100644
--- a/go.mod
+++ b/go.mod
@@ -25,7 +25,7 @@ require (
require (
github.com/livekit/protocol v1.10.1
github.com/mitchellh/mapstructure v1.5.0
- github.com/openimsdk/gomake v0.0.9-alpha.3
+ github.com/openimsdk/gomake v0.0.9
github.com/openimsdk/protocol v0.0.63
github.com/openimsdk/tools v0.0.49-alpha.3
github.com/redis/go-redis/v9 v9.5.1
diff --git a/go.sum b/go.sum
index 322597b3f..9052f235d 100644
--- a/go.sum
+++ b/go.sum
@@ -178,8 +178,8 @@ github.com/nats-io/nkeys v0.4.6/go.mod h1:4DxZNzenSVd1cYQoAa8948QY3QDjrHfcfVADym
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
-github.com/openimsdk/gomake v0.0.9-alpha.3 h1:KO3stbmiTksnnx2o2Lh8/FkKXc7qiF4rwPnr01WO7aM=
-github.com/openimsdk/gomake v0.0.9-alpha.3/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
+github.com/openimsdk/gomake v0.0.9 h1:ouf25ygN2PMQ68Gfgns/EQRPiLPnp+77SIr68GfE+n4=
+github.com/openimsdk/gomake v0.0.9/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
github.com/openimsdk/protocol v0.0.63 h1:9DnweZe9nEYDFa4fGTbC9Cqi0gLUdtBhRo1NRP2X3WQ=
github.com/openimsdk/protocol v0.0.63/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8=
github.com/openimsdk/tools v0.0.49-alpha.3 h1:mXKU09asKTLjj0yCsfqqMizs3ibl1vLimW7ZYzAMw44=
diff --git a/pkg/common/db/model/admin/ip_forbidden.go b/pkg/common/db/model/admin/ip_forbidden.go
index 97431e9c3..09fd33c2f 100644
--- a/pkg/common/db/model/admin/ip_forbidden.go
+++ b/pkg/common/db/model/admin/ip_forbidden.go
@@ -62,7 +62,6 @@ func (o *IPForbidden) Search(ctx context.Context, keyword string, state int32, p
switch state {
case constant.LimitNil:
- // 不添加额外的过滤条件
case constant.LimitEmpty:
filter = bson.M{"limit_register": 0, "limit_login": 0}
case constant.LimitOnlyRegisterIP:
diff --git a/pkg/common/db/table/admin/admin.go b/pkg/common/db/table/admin/admin.go
index 059976b5f..4773e2761 100644
--- a/pkg/common/db/table/admin/admin.go
+++ b/pkg/common/db/table/admin/admin.go
@@ -20,7 +20,7 @@ import (
"time"
)
-// Admin 后台管理员.
+// Admin user
type Admin struct {
Account string `bson:"account"`
Password string `bson:"password"`
diff --git a/pkg/common/db/table/admin/client_config.go b/pkg/common/db/table/admin/client_config.go
index 930066839..4b941001c 100644
--- a/pkg/common/db/table/admin/client_config.go
+++ b/pkg/common/db/table/admin/client_config.go
@@ -16,7 +16,7 @@ package admin
import "context"
-// ClientConfig 客户端相关配置项.
+// ClientConfig config
type ClientConfig struct {
Key string `bson:"key"`
Value string `bson:"value"`
diff --git a/pkg/common/db/table/admin/forbidden_account.go b/pkg/common/db/table/admin/forbidden_account.go
index 2e0e5abfd..fb3247618 100644
--- a/pkg/common/db/table/admin/forbidden_account.go
+++ b/pkg/common/db/table/admin/forbidden_account.go
@@ -20,7 +20,7 @@ import (
"time"
)
-// ForbiddenAccount 封号表.
+// ForbiddenAccount table
type ForbiddenAccount struct {
UserID string `bson:"user_id"`
Reason string `bson:"reason"`
diff --git a/pkg/common/db/table/admin/invitation_register.go b/pkg/common/db/table/admin/invitation_register.go
index 40155f453..4970b4adf 100644
--- a/pkg/common/db/table/admin/invitation_register.go
+++ b/pkg/common/db/table/admin/invitation_register.go
@@ -20,7 +20,6 @@ import (
"time"
)
-// 邀请码被注册使用.
type InvitationRegister struct {
InvitationCode string `bson:"invitation_code"`
UsedByUserID string `bson:"used_by_user_id"`
diff --git a/pkg/common/db/table/admin/ip_forbidden.go b/pkg/common/db/table/admin/ip_forbidden.go
index 39577a9a6..15e299d15 100644
--- a/pkg/common/db/table/admin/ip_forbidden.go
+++ b/pkg/common/db/table/admin/ip_forbidden.go
@@ -20,7 +20,6 @@ import (
"time"
)
-// 禁止ip登录 注册.
type IPForbidden struct {
IP string `bson:"ip"`
LimitRegister bool `bson:"limit_register"`
diff --git a/pkg/common/db/table/admin/limit_user_login_ip.go b/pkg/common/db/table/admin/limit_user_login_ip.go
index e167f6334..b3413f272 100644
--- a/pkg/common/db/table/admin/limit_user_login_ip.go
+++ b/pkg/common/db/table/admin/limit_user_login_ip.go
@@ -20,7 +20,6 @@ import (
"time"
)
-// 限制userID只能在某些ip登录.
type LimitUserLoginIP struct {
UserID string `bson:"user_id"`
IP string `bson:"ip"`
diff --git a/pkg/common/db/table/admin/register_add_friend.go b/pkg/common/db/table/admin/register_add_friend.go
index bd864805b..b0888e74c 100644
--- a/pkg/common/db/table/admin/register_add_friend.go
+++ b/pkg/common/db/table/admin/register_add_friend.go
@@ -20,7 +20,6 @@ import (
"time"
)
-// RegisterAddFriend 注册时默认好友.
type RegisterAddFriend struct {
UserID string `bson:"user_id"`
CreateTime time.Time `bson:"create_time"`
diff --git a/pkg/common/db/table/admin/register_add_group.go b/pkg/common/db/table/admin/register_add_group.go
index 1b7f4d12b..ebfd4a011 100644
--- a/pkg/common/db/table/admin/register_add_group.go
+++ b/pkg/common/db/table/admin/register_add_group.go
@@ -20,7 +20,6 @@ import (
"time"
)
-// RegisterAddGroup 注册时默认群组.
type RegisterAddGroup struct {
GroupID string `bson:"group_id"`
CreateTime time.Time `bson:"create_time"`
diff --git a/pkg/common/db/table/chat/account.go b/pkg/common/db/table/chat/account.go
index 414a03266..dba6d68d1 100644
--- a/pkg/common/db/table/chat/account.go
+++ b/pkg/common/db/table/chat/account.go
@@ -19,7 +19,6 @@ import (
"time"
)
-// Account 账号密码表.
type Account struct {
UserID string `bson:"user_id"`
Password string `bson:"password"`
diff --git a/pkg/common/db/table/chat/attribute.go b/pkg/common/db/table/chat/attribute.go
index 1b7ba29b4..57f62f7ef 100644
--- a/pkg/common/db/table/chat/attribute.go
+++ b/pkg/common/db/table/chat/attribute.go
@@ -20,7 +20,6 @@ import (
"time"
)
-// Attribute 用户属性表.
type Attribute struct {
UserID string `bson:"user_id"`
Account string `bson:"account"`
diff --git a/pkg/common/db/table/chat/register.go b/pkg/common/db/table/chat/register.go
index 72d514360..647037ef4 100644
--- a/pkg/common/db/table/chat/register.go
+++ b/pkg/common/db/table/chat/register.go
@@ -19,7 +19,6 @@ import (
"time"
)
-// Register 注册信息表.
type Register struct {
UserID string `bson:"user_id"`
DeviceID string `bson:"device_id"`
diff --git a/pkg/common/db/table/chat/user_login_record.go b/pkg/common/db/table/chat/user_login_record.go
index 6c3a8eda9..0b2b65aa2 100644
--- a/pkg/common/db/table/chat/user_login_record.go
+++ b/pkg/common/db/table/chat/user_login_record.go
@@ -19,7 +19,6 @@ import (
"time"
)
-// 用户登录信息表.
type UserLoginRecord struct {
UserID string `bson:"user_id"`
LoginTime time.Time `bson:"login_time"`
diff --git a/pkg/common/xlsx/main.go b/pkg/common/xlsx/main.go
index c170bd195..3606d8bc1 100644
--- a/pkg/common/xlsx/main.go
+++ b/pkg/common/xlsx/main.go
@@ -38,7 +38,7 @@ func ParseSheet(file *excelize.File, v interface{}) error {
} else if sheetIndex < 0 {
return nil
}
- fieldIndex := make(map[string]int) // 结构体对应的下标
+ fieldIndex := make(map[string]int)
for i := 0; i < itemType.NumField(); i++ {
field := itemType.Field(i)
alias := field.Tag.Get("column")
@@ -54,8 +54,8 @@ func ParseSheet(file *excelize.File, v interface{}) error {
if len(fieldIndex) == 0 {
return errors.New("empty column struct")
}
- sheetIndex := make(map[string]int) // sheet 对应的下标
- for i := 1; ; i++ { // 第一行
+ sheetIndex := make(map[string]int)
+ for i := 1; ; i++ {
name, err := file.GetCellValue(sheetName, GetAxis(i, 1))
if err != nil {
return err
@@ -88,7 +88,7 @@ func ParseSheet(file *excelize.File, v interface{}) error {
return err
}
}
- if notEmpty > 0 { // 空行表示结束
+ if notEmpty > 0 {
putItem(item)
} else {
break
diff --git a/pkg/common/xlsx/utils.go b/pkg/common/xlsx/utils.go
index 885bb9625..fea67dced 100644
--- a/pkg/common/xlsx/utils.go
+++ b/pkg/common/xlsx/utils.go
@@ -22,22 +22,21 @@ func Num2AZ(num int) string {
var (
str string
k int
- temp []int //保存转化后每一位数据的值,然后通过索引的方式匹配A-Z
+ temp []int
)
- //用来匹配的字符A-Z
slices := []string{"", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
- if num > 26 { //数据大于26需要进行拆分
+ if num > 26 {
for {
- k = num % 26 //从个位开始拆分,如果求余为0,说明末尾为26,也就是Z,如果是转化为26进制数,则末尾是可以为0的,这里必须为A-Z中的一个
+ k = num % 26
if k == 0 {
temp = append(temp, 26)
k = 26
} else {
temp = append(temp, k)
}
- num = (num - k) / 26 //减去num最后一位数的值,因为已经记录在temp中
- if num <= 26 { //小于等于26直接进行匹配,不需要进行数据拆分
+ num = (num - k) / 26
+ if num <= 26 {
temp = append(temp, num)
break
}
@@ -46,7 +45,7 @@ func Num2AZ(num int) string {
return slices[num]
}
for _, value := range temp {
- str = slices[value] + str //因为数据切分后存储顺序是反的,所以str要放在后面
+ str = slices[value] + str
}
return str
}
diff --git a/pkg/eerrs/predefine.go b/pkg/eerrs/predefine.go
index 621cba723..6546d53ab 100644
--- a/pkg/eerrs/predefine.go
+++ b/pkg/eerrs/predefine.go
@@ -17,18 +17,18 @@ package eerrs
import "github.com/openimsdk/tools/errs"
var (
- ErrPassword = errs.NewCodeError(20001, "PasswordError") // 密码错误
- ErrAccountNotFound = errs.NewCodeError(20002, "AccountNotFound") // 账号不存在
- ErrPhoneAlreadyRegister = errs.NewCodeError(20003, "PhoneAlreadyRegister") // 手机号已经注册
- ErrAccountAlreadyRegister = errs.NewCodeError(20004, "AccountAlreadyRegister") // 账号已经注册
- ErrVerifyCodeSendFrequently = errs.NewCodeError(20005, "VerifyCodeSendFrequently") // 频繁获取验证码
- ErrVerifyCodeNotMatch = errs.NewCodeError(20006, "VerifyCodeNotMatch") // 验证码错误
- ErrVerifyCodeExpired = errs.NewCodeError(20007, "VerifyCodeExpired") // 验证码过期
- ErrVerifyCodeMaxCount = errs.NewCodeError(20008, "VerifyCodeMaxCount") // 验证码失败次数过多
- ErrVerifyCodeUsed = errs.NewCodeError(20009, "VerifyCodeUsed") // 已经使用
- ErrInvitationCodeUsed = errs.NewCodeError(20010, "InvitationCodeUsed") // 邀请码已经使用
- ErrInvitationNotFound = errs.NewCodeError(20011, "InvitationNotFound") // 邀请码不存在
- ErrForbidden = errs.NewCodeError(20012, "Forbidden") // 限制登录注册
- ErrRefuseFriend = errs.NewCodeError(20013, "RefuseFriend") // 拒绝添加好友
- ErrEmailAlreadyRegister = errs.NewCodeError(20014, "EmailAlreadyRegister") // 邮箱已经注册
+ ErrPassword = errs.NewCodeError(20001, "PasswordError")
+ ErrAccountNotFound = errs.NewCodeError(20002, "AccountNotFound")
+ ErrPhoneAlreadyRegister = errs.NewCodeError(20003, "PhoneAlreadyRegister")
+ ErrAccountAlreadyRegister = errs.NewCodeError(20004, "AccountAlreadyRegister")
+ ErrVerifyCodeSendFrequently = errs.NewCodeError(20005, "VerifyCodeSendFrequently")
+ ErrVerifyCodeNotMatch = errs.NewCodeError(20006, "VerifyCodeNotMatch")
+ ErrVerifyCodeExpired = errs.NewCodeError(20007, "VerifyCodeExpired")
+ ErrVerifyCodeMaxCount = errs.NewCodeError(20008, "VerifyCodeMaxCount")
+ ErrVerifyCodeUsed = errs.NewCodeError(20009, "VerifyCodeUsed")
+ ErrInvitationCodeUsed = errs.NewCodeError(20010, "InvitationCodeUsed")
+ ErrInvitationNotFound = errs.NewCodeError(20011, "InvitationNotFound")
+ ErrForbidden = errs.NewCodeError(20012, "Forbidden")
+ ErrRefuseFriend = errs.NewCodeError(20013, "RefuseFriend")
+ ErrEmailAlreadyRegister = errs.NewCodeError(20014, "EmailAlreadyRegister")
)
diff --git a/pkg/email/mail.go b/pkg/email/mail.go
index 42194b6c0..1c1d2d1d4 100644
--- a/pkg/email/mail.go
+++ b/pkg/email/mail.go
@@ -50,6 +50,6 @@ func (m *mail) SendMail(ctx context.Context, mail string, verifyCode string) err
msg.SetHeader(`From`, m.senderMail)
msg.SetHeader(`To`, []string{mail}...)
msg.SetHeader(`Subject`, m.title)
- msg.SetBody(`text/html`, fmt.Sprintf("您的验证码为:%s,该验证码5分钟内有效,请勿泄露于他人。", verifyCode))
+ msg.SetBody(`text/html`, fmt.Sprintf("Your verification code is: %s. This code is valid for 5 minutes and should not be shared with others", verifyCode))
return errs.Wrap(m.dail.DialAndSend(msg))
}
From b82381f2f7d68c86023245a43b28f33fa1de5413 Mon Sep 17 00:00:00 2001
From: xuan <146319162+wxuanF@users.noreply.github.com>
Date: Wed, 24 Apr 2024 18:23:54 +0800
Subject: [PATCH 07/15] Updata action (#518)
* Update scripts-test.yml
* Update chatci.yml
---
.github/workflows/chatci.yml | 11 -----------
.github/workflows/scripts-test.yml | 25 +++++++------------------
2 files changed, 7 insertions(+), 29 deletions(-)
diff --git a/.github/workflows/chatci.yml b/.github/workflows/chatci.yml
index e7210eaa1..c54e08219 100644
--- a/.github/workflows/chatci.yml
+++ b/.github/workflows/chatci.yml
@@ -64,14 +64,3 @@ jobs:
run: |
sudo bash bootstrap.sh
echo "init successfully"
-
- - name: build and start
- run: |
- mage start
- mage check
-
- - name: restart
- run: |
- mage stop
- mage start
- mage check
diff --git a/.github/workflows/scripts-test.yml b/.github/workflows/scripts-test.yml
index 34be2029e..b66e8a9b1 100644
--- a/.github/workflows/scripts-test.yml
+++ b/.github/workflows/scripts-test.yml
@@ -43,17 +43,6 @@ jobs:
- name: Checkout code
uses: actions/checkout@v3
- - name: Set up environment
- run: |
- if [ "$RUNNER_OS" == "Linux" ]; then
- sudo apt-get update
- # Add other Linux specific setup here
- elif [ "$RUNNER_OS" == "macOS" ]; then
- # Add macOS specific setup here
- brew update
- fi
- shell: bash
-
# - name: Install latest Bash (macOS only)
# if: runner.os == 'macOS'
# run: |
@@ -69,13 +58,6 @@ jobs:
# brew install --cask docker
# open /Applications/Docker.app
- - name: Build Chat
- run: |
- sudo bash bootstrap.sh
- sudo mage
- sudo mage start
- shell: bash
-
- name: deploy all services
run: |
git clone https://github.com/openimsdk/open-im-server.git
@@ -95,6 +77,13 @@ jobs:
shell: bash
continue-on-error: true
+ - name: Build Chat
+ run: |
+ sudo bash bootstrap.sh
+ sudo mage
+ sudo mage start
+ shell: bash
+
- name: Print chat_$(date '+%Y%m%d').log
run: |
ls -al && echo "pwd = $(pwd)"
From c12a3cae0ddb4bbc0ee77b017d43e4fc799f33ec Mon Sep 17 00:00:00 2001
From: skiffer-git <72860476+skiffer-git@users.noreply.github.com>
Date: Wed, 24 Apr 2024 18:48:06 +0800
Subject: [PATCH 08/15] Update CODEOWNERS
---
docs/CODEOWNERS | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS
index 0242ac0ea..f3a3a550d 100644
--- a/docs/CODEOWNERS
+++ b/docs/CODEOWNERS
@@ -1 +1 @@
-* @openimsdk/go-code-review @openimsdk/bot @cubxxw
+* @openimsdk/go-code-review @skiffer-git @withchao
From f60a82f29e7f23e0ef01a75e79295d33ecb0971d Mon Sep 17 00:00:00 2001
From: skiffer-git <72860476+skiffer-git@users.noreply.github.com>
Date: Wed, 24 Apr 2024 18:57:00 +0800
Subject: [PATCH 09/15] code reviewer (#522)
* refactor dockerFile
* Add comments to the configuration file
* feat: chat admin config (#509)
* Add comments to the configuration file
* Remove comments
* add withchao as code reviewer
* add withchao as code reviewer
---------
Co-authored-by: chao <48119764+withchao@users.noreply.github.com>
From 43cb62ee8a4028cf73ab9359f10d5747c67ddaca Mon Sep 17 00:00:00 2001
From: xuan <146319162+wxuanF@users.noreply.github.com>
Date: Wed, 24 Apr 2024 18:57:54 +0800
Subject: [PATCH 10/15] Update config.yaml (#519)
* Update config.yaml
* Update admin.pb.go
* Update config.yaml
* Update scripts-test.yml
---
.github/workflows/scripts-test.yml | 3 --
deployments/helm-charts/config.yaml | 50 ++++++++++++++---------------
pkg/protocol/admin/admin.pb.go | 8 ++---
3 files changed, 29 insertions(+), 32 deletions(-)
diff --git a/.github/workflows/scripts-test.yml b/.github/workflows/scripts-test.yml
index b66e8a9b1..7da773adb 100644
--- a/.github/workflows/scripts-test.yml
+++ b/.github/workflows/scripts-test.yml
@@ -70,7 +70,6 @@ jobs:
sudo mage start
sudo mage check
- sudo cat _output/logs/chat_$(date '+%Y%m%d').log 2>/dev/null
echo "pwd = $(pwd)"
cd ..
ls -al && pwd
@@ -87,7 +86,5 @@ jobs:
- name: Print chat_$(date '+%Y%m%d').log
run: |
ls -al && echo "pwd = $(pwd)"
- sudo cat ./_output/logs/* 2>/dev/null
- sudo cat ./_output/logs/* 2>/dev/null >> "$GITHUB_OUTPUT"
shell: bash
continue-on-error: true
diff --git a/deployments/helm-charts/config.yaml b/deployments/helm-charts/config.yaml
index ee50fa60a..6be98c93f 100644
--- a/deployments/helm-charts/config.yaml
+++ b/deployments/helm-charts/config.yaml
@@ -51,8 +51,8 @@ config:
listenIP:
rpc:
- registerIP: #作为rpc启动时,注册到zookeeper的IP,api/gateway能访问到此ip和对应的rpcPort中的端口
- listenIP: #默认为0.0.0.0
+ registerIP:
+ listenIP:
rpcPort:
openImAdminPort: [ 80 ]
@@ -61,25 +61,25 @@ config:
openImAdminName: openimchat-admin-rpc:80
openImChatName: openimchat-chat-rpc:80
- # 没有配置表示和OpenIM一致
+
mysql:
- address: [ im-mysql:3306 ] #目前仅支持单机
- username: root #用户名
- password: openIM123 #密码
- #database: openIM_v2 #不建议修改
- maxOpenConn: 1000 #最大连接数
- maxIdleConn: 100 #最大空闲连接数
- maxLifeTime: 60 #连接可以重复使用的最长时间(秒)
- logLevel: 4 #日志级别 1=slient 2=error 3=warn 4=info
- slowThreshold: 500 #慢语句阈值 (毫秒)
+ address: [ im-mysql:3306 ]
+ username: root
+ password: openIM123
+ #database: openIM_v2
+ maxOpenConn: 1000
+ maxIdleConn: 100
+ maxLifeTime: 60
+ logLevel: 4
+ slowThreshold: 500
database: openim_enterprise
- # 没有配置表示和OpenIM一致
+
log:
- storageLocation: ../_output/logs/ #存放目录
- rotationTime: 24 #日志旋转时间
- remainRotationCount: 2 #日志数量
- remainLogLevel: 6 #日志级别 6表示全都打印,
+ storageLocation: ../_output/logs/
+ rotationTime: 24
+ remainRotationCount: 2
+ remainLogLevel: 6
isStdout: true
isJson: false
withStack: false
@@ -91,13 +91,13 @@ config:
expire: 86400
verifyCode:
- validTime: 300 # 验证码有效时间
- validCount: 5 # 验证码有效次数
- uintTime: 86400 # 单位时间间隔
- maxCount: 10 # 单位时间内最大获取次数
- superCode: "666666" # 超级验证码(只有use为空时使用)
- len: 6 # 验证码长度
- use: "" # 使用的验证码服务(use: "ali")
+ validTime: 300
+ validCount: 5
+ uintTime: 86400
+ maxCount: 10
+ superCode: "666666"
+ len: 6
+ use: ""
ali:
endpoint: "dysmsapi.aliyuncs.com"
accessKeyId: ""
@@ -105,7 +105,7 @@ config:
signName: ""
verificationCodeTemplateCode: ""
- # 获取ip的header,没有配置直接获取远程地址
+
#proxyHeader: "X-Forwarded-For"
adminList:
diff --git a/pkg/protocol/admin/admin.pb.go b/pkg/protocol/admin/admin.pb.go
index b2b7b48a2..30df0d2f6 100644
--- a/pkg/protocol/admin/admin.pb.go
+++ b/pkg/protocol/admin/admin.pb.go
@@ -41,7 +41,7 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
-// 登录
+// login
type LoginReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -3288,7 +3288,7 @@ func (*DelIPForbiddenResp) Descriptor() ([]byte, []int) {
return file_admin_admin_proto_rawDescGZIP(), []int{62}
}
-// ################### 用户限制 ###################
+// ################### user limit ###################
type CheckRegisterForbiddenReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -3467,7 +3467,7 @@ func (*CheckLoginForbiddenResp) Descriptor() ([]byte, []int) {
return file_admin_admin_proto_rawDescGZIP(), []int{66}
}
-// ################### 注销 ###################
+// ################### logout ###################
type CancellationUserReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -3561,7 +3561,7 @@ func (*CancellationUserResp) Descriptor() ([]byte, []int) {
return file_admin_admin_proto_rawDescGZIP(), []int{68}
}
-// ################### 封号、解封 ###################
+
type BlockUserReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
From 028afccbea2f760682623d4e0f6691f77852783a Mon Sep 17 00:00:00 2001
From: skiffer-git <72860476+skiffer-git@users.noreply.github.com>
Date: Thu, 25 Apr 2024 19:51:01 +0800
Subject: [PATCH 11/15] Update slack invite link
---
README.md | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/README.md b/README.md
index ab0f301ae..9e466965c 100644
--- a/README.md
+++ b/README.md
@@ -24,11 +24,8 @@ You may use the OpenIM source code to create compiled versions not originally pr
## :busts_in_silhouette: Community
+ 💬 [Follow our Twitter account](https://twitter.com/founder_im63606)
-+ 👫 [Join our Reddit](https://www.reddit.com/r/OpenIMessaging)
-+ 🚀 [Join our Slack community](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)
++ 🚀 [Join our Slack community](https://join.slack.com/t/openimsdk/shared_invite/zt-2hljfom5u-9ZuzP3NfEKW~BJKbpLm0Hw)
+ :eyes: [Join our WeChat group](https://openim-1253691595.cos.ap-nanjing.myqcloud.com/WechatIMG20.jpeg)
-+ 📚 [OpenIM Community](https://github.com/openimsdk/community)
-+ 💕 [OpenIM Interest Groups](https://github.com/Openim-sigs)
## 🛫 Quick Start
From 997f23fd2f2ceab5f7ba7ba7429d5771c27cdb9e Mon Sep 17 00:00:00 2001
From: skiffer-git <72860476+skiffer-git@users.noreply.github.com>
Date: Thu, 25 Apr 2024 19:51:51 +0800
Subject: [PATCH 12/15] Update slack invite link
---
README_zh_CN.md | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/README_zh_CN.md b/README_zh_CN.md
index fb190a1f0..3b5694bec 100644
--- a/README_zh_CN.md
+++ b/README_zh_CN.md
@@ -24,11 +24,8 @@
## :busts_in_silhouette: 社区
+ 💬 [关注我们的 Twitter 账户](https://twitter.com/founder_im63606)
-+ 👫 [加入我们的 Reddit](https://www.reddit.com/r/OpenIMessaging)
-+ 🚀 [加入我们的 Slack 社区](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)
++ 🚀 [加入我们的 Slack 社区](https://join.slack.com/t/openimsdk/shared_invite/zt-2hljfom5u-9ZuzP3NfEKW~BJKbpLm0Hw)
+ :eyes: [加入我们的微信群](https://openim-1253691595.cos.ap-nanjing.myqcloud.com/WechatIMG20.jpeg)
-+ 📚 [OpenIM 社区](https://github.com/openimsdk/community)
-+ 💕 [OpenIM 兴趣小组](https://github.com/Openim-sigs)
## 🛫 快速开始
From 6ce4881986ba15c56194d37157bfe3c3860715c7 Mon Sep 17 00:00:00 2001
From: skiffer-git <72860476+skiffer-git@users.noreply.github.com>
Date: Tue, 14 May 2024 18:21:56 +0800
Subject: [PATCH 13/15] Etcd naming and discovery (#540)
* etcd naming and discovery
* etcd naming and discovery
* etcd naming and discovery
* etcd naming and discovery
* etcd naming and discovery
* etcd naming and discovery
* etcd naming and discovery
* etcd naming and discovery
* etcd naming and discovery
* etcd naming and discovery
* etcd naming and discovery
* etcd naming and discovery
---
config/discovery.yml | 13 +++++++++
config/zookeeper.yml | 8 -----
go.mod | 12 ++++++--
go.sum | 42 ++++++++++++++++++++++-----
internal/api/admin/start.go | 13 ++++-----
internal/api/chat/start.go | 11 +++----
internal/rpc/admin/start.go | 10 +++----
internal/rpc/chat/start.go | 10 +++----
pkg/common/cmd/admin_api.go | 2 +-
pkg/common/cmd/admin_rpc.go | 4 +--
pkg/common/cmd/chat_api.go | 2 +-
pkg/common/cmd/chat_rpc.go | 4 +--
pkg/common/cmd/constant.go | 4 +--
pkg/common/config/config.go | 13 +++++++++
pkg/common/kdisc/discoveryregister.go | 24 +++++++++------
pkg/common/startrpc/start.go | 4 +--
tools/check-component/main.go | 32 +++++++++++++++-----
17 files changed, 138 insertions(+), 70 deletions(-)
create mode 100644 config/discovery.yml
delete mode 100644 config/zookeeper.yml
diff --git a/config/discovery.yml b/config/discovery.yml
new file mode 100644
index 000000000..3d96ff9b6
--- /dev/null
+++ b/config/discovery.yml
@@ -0,0 +1,13 @@
+enable: "etcd"
+etcd:
+ rootDirectory: openim
+ address: [ localhost:12379 ]
+ username: ''
+ password: ''
+
+zookeeper:
+ schema: openim
+ address: [ localhost:12181 ]
+ username: ''
+ password: ''
+
diff --git a/config/zookeeper.yml b/config/zookeeper.yml
deleted file mode 100644
index 7b7557c93..000000000
--- a/config/zookeeper.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-# Database schema name
-schema: openim
-# List of server addresses
-address: [ localhost:12181 ]
-# Username for authentication (leave blank if not used)
-username: ''
-# Password for authentication (leave blank if not used)
-password: ''
diff --git a/go.mod b/go.mod
index f8caab7db..53142888e 100644
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ go 1.21.2
require (
github.com/gin-gonic/gin v1.9.1
github.com/golang-jwt/jwt/v4 v4.5.0
- github.com/golang/protobuf v1.5.3 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
github.com/google/uuid v1.6.0
github.com/jinzhu/copier v0.4.0 // indirect
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible // indirect
@@ -27,7 +27,7 @@ require (
github.com/mitchellh/mapstructure v1.5.0
github.com/openimsdk/gomake v0.0.9
github.com/openimsdk/protocol v0.0.63
- github.com/openimsdk/tools v0.0.49-alpha.3
+ github.com/openimsdk/tools v0.0.49-alpha.18
github.com/redis/go-redis/v9 v9.5.1
github.com/spf13/cobra v1.8.0
github.com/spf13/viper v1.18.2
@@ -48,6 +48,8 @@ require (
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
github.com/clbanning/mxj/v2 v2.5.6 // indirect
+ github.com/coreos/go-semver v0.3.0 // indirect
+ github.com/coreos/go-systemd/v22 v22.3.2 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
@@ -59,6 +61,7 @@ require (
github.com/go-playground/validator/v10 v10.18.0 // indirect
github.com/go-zookeeper/zk v1.0.3 // indirect
github.com/goccy/go-json v0.10.2 // indirect
+ github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
@@ -100,6 +103,9 @@ require (
github.com/xuri/nfp v0.0.0-20230819163627-dc951e3ffe1a // indirect
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
+ go.etcd.io/etcd/api/v3 v3.5.13 // indirect
+ go.etcd.io/etcd/client/pkg/v3 v3.5.13 // indirect
+ go.etcd.io/etcd/client/v3 v3.5.13 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/arch v0.3.0 // indirect
@@ -109,6 +115,8 @@ require (
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
+ google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
diff --git a/go.sum b/go.sum
index 9052f235d..97b72ffb3 100644
--- a/go.sum
+++ b/go.sum
@@ -45,6 +45,10 @@ github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583j
github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
github.com/clbanning/mxj/v2 v2.5.6 h1:Jm4VaCI/+Ug5Q57IzEoZbwx4iQFA6wkXv72juUSeK+g=
github.com/clbanning/mxj/v2 v2.5.6/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
+github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
+github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
+github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI=
+github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -88,14 +92,15 @@ github.com/go-zookeeper/zk v1.0.3 h1:7M2kwOsc//9VeeFiPtf+uSJlVpU66x9Ba5+8XK7/TDg
github.com/go-zookeeper/zk v1.0.3/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw=
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
@@ -122,6 +127,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/jxskiss/base62 v1.1.0 h1:A5zbF8v8WXx2xixnAKD2w+abC+sIzYJX+nxmhA6HWFw=
github.com/jxskiss/base62 v1.1.0/go.mod h1:HhWAlUXvxKThfOlZbcuFzsqwtF5TcqS9ru3y5GfjWAc=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg=
github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
@@ -182,8 +189,8 @@ github.com/openimsdk/gomake v0.0.9 h1:ouf25ygN2PMQ68Gfgns/EQRPiLPnp+77SIr68GfE+n
github.com/openimsdk/gomake v0.0.9/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
github.com/openimsdk/protocol v0.0.63 h1:9DnweZe9nEYDFa4fGTbC9Cqi0gLUdtBhRo1NRP2X3WQ=
github.com/openimsdk/protocol v0.0.63/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8=
-github.com/openimsdk/tools v0.0.49-alpha.3 h1:mXKU09asKTLjj0yCsfqqMizs3ibl1vLimW7ZYzAMw44=
-github.com/openimsdk/tools v0.0.49-alpha.3/go.mod h1:P4oGP1Pd+d4ctbLD5U/XQTgl8yu8Hd3skx640Fr69ko=
+github.com/openimsdk/tools v0.0.49-alpha.18 h1:ARQeCiRmExvtB6XYItegThuV63JGOTxddwhSLHYXd78=
+github.com/openimsdk/tools v0.0.49-alpha.18/go.mod h1:g7mkHXYUPi0/8aAX8VPMHpnb3hqdV69Jph+bXOGvvNM=
github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4=
github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
github.com/pion/datachannel v1.5.5 h1:10ef4kwdjije+M9d7Xm9im2Y3O6A6ccQb0zcqZcJew8=
@@ -308,11 +315,18 @@ github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
+go.etcd.io/etcd/api/v3 v3.5.13 h1:8WXU2/NBge6AUF1K1gOexB6e07NgsN1hXK0rSTtgSp4=
+go.etcd.io/etcd/api/v3 v3.5.13/go.mod h1:gBqlqkcMMZMVTMm4NDZloEVJzxQOQIls8splbqBDa0c=
+go.etcd.io/etcd/client/pkg/v3 v3.5.13 h1:RVZSAnWWWiI5IrYAXjQorajncORbS0zI48LQlE2kQWg=
+go.etcd.io/etcd/client/pkg/v3 v3.5.13/go.mod h1:XxHT4u1qU12E2+po+UVPrEeL94Um6zL58ppuJWXSAB8=
+go.etcd.io/etcd/client/v3 v3.5.13 h1:o0fHTNJLeO0MyVbc7I3fsCf6nrOqn5d+diSarKnB2js=
+go.etcd.io/etcd/client/v3 v3.5.13/go.mod h1:cqiAeY8b5DEEcpxvgWKsbLIWNM/8Wy2xJSDMtioMcoI=
go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80=
go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c=
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
@@ -330,6 +344,7 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I=
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
@@ -342,6 +357,7 @@ golang.org/x/image v0.11.0/go.mod h1:bglhjqbqVuEb9e9+eNR45Jfu7D+T4Qan+NhQk8Ck2P8
golang.org/x/image v0.15.0 h1:kOELfmgrmJlw4Cdb7g/QGuB3CvDrXbqEIww/pNtNBm8=
golang.org/x/image v0.15.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -349,6 +365,7 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
@@ -360,6 +377,7 @@ golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
@@ -369,6 +387,7 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -403,17 +422,22 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
+google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
+google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU=
+google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
@@ -429,6 +453,8 @@ gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/internal/api/admin/start.go b/internal/api/admin/start.go
index aef4602c3..05a1799b3 100644
--- a/internal/api/admin/start.go
+++ b/internal/api/admin/start.go
@@ -19,9 +19,10 @@ import (
)
type Config struct {
- ApiConfig config.API
- ZookeeperConfig config.ZooKeeper
- Share config.Share
+ ApiConfig config.API
+
+ Discovery config.Discovery
+ Share config.Share
}
func Start(ctx context.Context, index int, config *Config) error {
@@ -32,15 +33,11 @@ func Start(ctx context.Context, index int, config *Config) error {
if err != nil {
return err
}
- client, err := kdisc.NewDiscoveryRegister(&config.ZookeeperConfig, &config.Share)
+ client, err := kdisc.NewDiscoveryRegister(&config.Discovery)
if err != nil {
return err
}
- if err = client.CreateRpcRootNodes(config.Share.RpcRegisterName.GetServiceNames()); err != nil {
- return errs.WrapMsg(err, "failed to create RPC root nodes")
- }
-
chatConn, err := client.GetConn(ctx, config.Share.RpcRegisterName.Chat, grpc.WithTransportCredentials(insecure.NewCredentials()), mw.GrpcClient())
if err != nil {
return err
diff --git a/internal/api/chat/start.go b/internal/api/chat/start.go
index 30ea80ffd..71a3d4834 100644
--- a/internal/api/chat/start.go
+++ b/internal/api/chat/start.go
@@ -19,9 +19,9 @@ import (
)
type Config struct {
- ApiConfig config.API
- ZookeeperConfig config.ZooKeeper
- Share config.Share
+ ApiConfig config.API
+ Discovery config.Discovery
+ Share config.Share
}
func Start(ctx context.Context, index int, config *Config) error {
@@ -32,14 +32,11 @@ func Start(ctx context.Context, index int, config *Config) error {
if err != nil {
return err
}
- client, err := kdisc.NewDiscoveryRegister(&config.ZookeeperConfig, &config.Share)
+ client, err := kdisc.NewDiscoveryRegister(&config.Discovery)
if err != nil {
return err
}
- if err = client.CreateRpcRootNodes(config.Share.RpcRegisterName.GetServiceNames()); err != nil {
- return errs.WrapMsg(err, "failed to create RPC root nodes")
- }
chatConn, err := client.GetConn(ctx, config.Share.RpcRegisterName.Chat, grpc.WithTransportCredentials(insecure.NewCredentials()), mw.GrpcClient())
if err != nil {
return err
diff --git a/internal/rpc/admin/start.go b/internal/rpc/admin/start.go
index 8d46bf6f1..bc597f58c 100644
--- a/internal/rpc/admin/start.go
+++ b/internal/rpc/admin/start.go
@@ -25,11 +25,11 @@ import (
)
type Config struct {
- RpcConfig config.Admin
- RedisConfig config.Redis
- MongodbConfig config.Mongo
- ZookeeperConfig config.ZooKeeper
- Share config.Share
+ RpcConfig config.Admin
+ RedisConfig config.Redis
+ MongodbConfig config.Mongo
+ Discovery config.Discovery
+ Share config.Share
}
func Start(ctx context.Context, config *Config, client discovery.SvcDiscoveryRegistry, server *grpc.Server) error {
diff --git a/internal/rpc/chat/start.go b/internal/rpc/chat/start.go
index ed62eaeaa..fd14fe7cc 100644
--- a/internal/rpc/chat/start.go
+++ b/internal/rpc/chat/start.go
@@ -22,11 +22,11 @@ import (
)
type Config struct {
- RpcConfig config.Chat
- RedisConfig config.Redis
- MongodbConfig config.Mongo
- ZookeeperConfig config.ZooKeeper
- Share config.Share
+ RpcConfig config.Chat
+ RedisConfig config.Redis
+ MongodbConfig config.Mongo
+ Discovery config.Discovery
+ Share config.Share
}
func Start(ctx context.Context, config *Config, client discovery.SvcDiscoveryRegistry, server *grpc.Server) error {
diff --git a/pkg/common/cmd/admin_api.go b/pkg/common/cmd/admin_api.go
index 56a1fbf14..47b2469f9 100644
--- a/pkg/common/cmd/admin_api.go
+++ b/pkg/common/cmd/admin_api.go
@@ -20,7 +20,7 @@ func NewAdminApiCmd() *AdminApiCmd {
ret.configMap = map[string]any{
ShareFileName: &ret.apiConfig.Share,
ChatAPIAdminCfgFileName: &ret.apiConfig.ApiConfig,
- ZookeeperConfigFileName: &ret.apiConfig.ZookeeperConfig,
+ DiscoveryConfigFileName: &ret.apiConfig.Discovery,
}
ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap))
ret.ctx = context.WithValue(context.Background(), "version", config.Version)
diff --git a/pkg/common/cmd/admin_rpc.go b/pkg/common/cmd/admin_rpc.go
index 384c0be51..92a9b3491 100644
--- a/pkg/common/cmd/admin_rpc.go
+++ b/pkg/common/cmd/admin_rpc.go
@@ -35,7 +35,7 @@ func NewAdminRpcCmd() *AdminRpcCmd {
ret.configMap = map[string]any{
ChatRPCAdminCfgFileName: &ret.adminConfig.RpcConfig,
RedisConfigFileName: &ret.adminConfig.RedisConfig,
- ZookeeperConfigFileName: &ret.adminConfig.ZookeeperConfig,
+ DiscoveryConfigFileName: &ret.adminConfig.Discovery,
MongodbConfigFileName: &ret.adminConfig.MongodbConfig,
ShareFileName: &ret.adminConfig.Share,
}
@@ -52,7 +52,7 @@ func (a *AdminRpcCmd) Exec() error {
}
func (a *AdminRpcCmd) runE() error {
- return startrpc.Start(a.ctx, &a.adminConfig.ZookeeperConfig, a.adminConfig.RpcConfig.RPC.ListenIP,
+ return startrpc.Start(a.ctx, &a.adminConfig.Discovery, a.adminConfig.RpcConfig.RPC.ListenIP,
a.adminConfig.RpcConfig.RPC.RegisterIP, a.adminConfig.RpcConfig.RPC.Ports,
a.Index(), a.adminConfig.Share.RpcRegisterName.Admin, &a.adminConfig.Share, &a.adminConfig, admin.Start)
}
diff --git a/pkg/common/cmd/chat_api.go b/pkg/common/cmd/chat_api.go
index 11e3de7b8..5e85f11c2 100644
--- a/pkg/common/cmd/chat_api.go
+++ b/pkg/common/cmd/chat_api.go
@@ -20,7 +20,7 @@ func NewChatApiCmd() *ChatApiCmd {
ret.configMap = map[string]any{
ShareFileName: &ret.apiConfig.Share,
ChatAPIChatCfgFileName: &ret.apiConfig.ApiConfig,
- ZookeeperConfigFileName: &ret.apiConfig.ZookeeperConfig,
+ DiscoveryConfigFileName: &ret.apiConfig.Discovery,
}
ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap))
ret.ctx = context.WithValue(context.Background(), "version", config.Version)
diff --git a/pkg/common/cmd/chat_rpc.go b/pkg/common/cmd/chat_rpc.go
index cb025c820..92520d928 100644
--- a/pkg/common/cmd/chat_rpc.go
+++ b/pkg/common/cmd/chat_rpc.go
@@ -35,7 +35,7 @@ func NewChatRpcCmd() *ChatRpcCmd {
ret.configMap = map[string]any{
ChatRPCChatCfgFileName: &ret.chatConfig.RpcConfig,
RedisConfigFileName: &ret.chatConfig.RedisConfig,
- ZookeeperConfigFileName: &ret.chatConfig.ZookeeperConfig,
+ DiscoveryConfigFileName: &ret.chatConfig.Discovery,
MongodbConfigFileName: &ret.chatConfig.MongodbConfig,
ShareFileName: &ret.chatConfig.Share,
}
@@ -52,7 +52,7 @@ func (a *ChatRpcCmd) Exec() error {
}
func (a *ChatRpcCmd) runE() error {
- return startrpc.Start(a.ctx, &a.chatConfig.ZookeeperConfig, a.chatConfig.RpcConfig.RPC.ListenIP,
+ return startrpc.Start(a.ctx, &a.chatConfig.Discovery, a.chatConfig.RpcConfig.RPC.ListenIP,
a.chatConfig.RpcConfig.RPC.RegisterIP, a.chatConfig.RpcConfig.RPC.Ports,
a.Index(), a.chatConfig.Share.RpcRegisterName.Chat, &a.chatConfig.Share, &a.chatConfig, chat.Start)
}
diff --git a/pkg/common/cmd/constant.go b/pkg/common/cmd/constant.go
index 75115d642..b07147d69 100644
--- a/pkg/common/cmd/constant.go
+++ b/pkg/common/cmd/constant.go
@@ -21,7 +21,7 @@ import (
var (
ShareFileName = "share.yml"
RedisConfigFileName = "redis.yml"
- ZookeeperConfigFileName = "zookeeper.yml"
+ DiscoveryConfigFileName = "discovery.yml"
MongodbConfigFileName = "mongodb.yml"
LogConfigFileName = "log.yml"
ChatAPIAdminCfgFileName = "chat-api-admin.yml"
@@ -37,7 +37,7 @@ func init() {
fileNames := []string{
ShareFileName,
RedisConfigFileName,
- ZookeeperConfigFileName,
+ DiscoveryConfigFileName,
MongodbConfigFileName,
LogConfigFileName,
ChatAPIAdminCfgFileName,
diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go
index 1412f0e4e..6f926660a 100644
--- a/pkg/common/config/config.go
+++ b/pkg/common/config/config.go
@@ -94,6 +94,19 @@ type ZooKeeper struct {
Password string `mapstructure:"password"`
}
+type Discovery struct {
+ Enable string `mapstructure:"enable"`
+ Etcd Etcd `mapstructure:"etcd"`
+ ZooKeeper ZooKeeper `mapstructure:"zooKeeper"`
+}
+
+type Etcd struct {
+ RootDirectory string `mapstructure:"rootDirectory"`
+ Address []string `mapstructure:"address"`
+ Username string `mapstructure:"username"`
+ Password string `mapstructure:"password"`
+}
+
type Chat struct {
RPC struct {
RegisterIP string `mapstructure:"registerIP"`
diff --git a/pkg/common/kdisc/discoveryregister.go b/pkg/common/kdisc/discoveryregister.go
index eb5bbdcc0..06e2148f1 100644
--- a/pkg/common/kdisc/discoveryregister.go
+++ b/pkg/common/kdisc/discoveryregister.go
@@ -17,6 +17,7 @@ package kdisc
import (
"github.com/openimsdk/chat/pkg/common/config"
"github.com/openimsdk/tools/discovery"
+ "github.com/openimsdk/tools/discovery/etcd"
"github.com/openimsdk/tools/discovery/zookeeper"
"github.com/openimsdk/tools/errs"
"time"
@@ -29,20 +30,25 @@ const (
)
// NewDiscoveryRegister creates a new service discovery and registry client based on the provided environment type.
-func NewDiscoveryRegister(zookeeperConfig *config.ZooKeeper, share *config.Share) (discovery.SvcDiscoveryRegistry, error) {
- switch share.Env {
- case zookeeperConst:
+func NewDiscoveryRegister(discovery *config.Discovery) (discovery.SvcDiscoveryRegistry, error) {
+ switch discovery.Enable {
+ case "zookeeper":
return zookeeper.NewZkClient(
- zookeeperConfig.Address,
- zookeeperConfig.Schema,
+ discovery.ZooKeeper.Address,
+ discovery.ZooKeeper.Schema,
zookeeper.WithFreq(time.Hour),
- zookeeper.WithUserNameAndPassword(zookeeperConfig.Username, zookeeperConfig.Password),
+ zookeeper.WithUserNameAndPassword(discovery.ZooKeeper.Username, discovery.ZooKeeper.Password),
zookeeper.WithRoundRobin(),
zookeeper.WithTimeout(10),
)
- //case directConst:
- // return direct.NewConnDirect(config)
+ case "etcd":
+ return etcd.NewSvcDiscoveryRegistry(
+ discovery.Etcd.RootDirectory,
+ discovery.Etcd.Address,
+ etcd.WithDialTimeout(10*time.Second),
+ etcd.WithMaxCallSendMsgSize(20*1024*1024),
+ etcd.WithUsernameAndPassword(discovery.Etcd.Username, discovery.Etcd.Password))
default:
- return nil, errs.New("unsupported discovery type", "type", share.Env).Wrap()
+ return nil, errs.New("unsupported discovery type", "type", discovery.Enable).Wrap()
}
}
diff --git a/pkg/common/startrpc/start.go b/pkg/common/startrpc/start.go
index 6556f89ce..ca394c694 100644
--- a/pkg/common/startrpc/start.go
+++ b/pkg/common/startrpc/start.go
@@ -39,7 +39,7 @@ import (
)
// Start rpc server.
-func Start[T any](ctx context.Context, zookeeperConfig *config.ZooKeeper, listenIP,
+func Start[T any](ctx context.Context, discovery *config.Discovery, listenIP,
registerIP string, rpcPorts []int, index int, rpcRegisterName string, share *config.Share, config T, rpcFn func(ctx context.Context,
config T, client discovery.SvcDiscoveryRegistry, server *grpc.Server) error, options ...grpc.ServerOption) error {
@@ -58,7 +58,7 @@ func Start[T any](ctx context.Context, zookeeperConfig *config.ZooKeeper, listen
}
defer listener.Close()
- client, err := kdisc.NewDiscoveryRegister(zookeeperConfig, share)
+ client, err := kdisc.NewDiscoveryRegister(discovery)
if err != nil {
return err
}
diff --git a/tools/check-component/main.go b/tools/check-component/main.go
index f0719943e..131da4c9b 100644
--- a/tools/check-component/main.go
+++ b/tools/check-component/main.go
@@ -24,6 +24,7 @@ import (
"github.com/openimsdk/protocol/constant"
"github.com/openimsdk/tools/db/mongoutil"
"github.com/openimsdk/tools/db/redisutil"
+ "github.com/openimsdk/tools/discovery/etcd"
"github.com/openimsdk/tools/discovery/zookeeper"
"github.com/openimsdk/tools/mcontext"
"github.com/openimsdk/tools/system/program"
@@ -38,6 +39,14 @@ func CheckZookeeper(ctx context.Context, config *config.ZooKeeper) error {
return zookeeper.Check(ctx, config.Address, config.Schema, zookeeper.WithUserNameAndPassword(config.Username, config.Password))
}
+func CheckEtcd(ctx context.Context, config *config.Etcd) error {
+ return etcd.Check(ctx, config.Address, "/check_chat_component",
+ true,
+ etcd.WithDialTimeout(10*time.Second),
+ etcd.WithMaxCallSendMsgSize(20*1024*1024),
+ etcd.WithUsernameAndPassword(config.Username, config.Password))
+}
+
func CheckMongo(ctx context.Context, config *config.Mongo) error {
return mongoutil.Check(ctx, config.Build())
}
@@ -52,11 +61,11 @@ func CheckOpenIM(ctx context.Context, apiURL, secret, adminUserID string) error
return err
}
-func initConfig(configDir string) (*config.Mongo, *config.Redis, *config.ZooKeeper, *config.Share, error) {
+func initConfig(configDir string) (*config.Mongo, *config.Redis, *config.Discovery, *config.Share, error) {
var (
mongoConfig = &config.Mongo{}
redisConfig = &config.Redis{}
- zookeeperConfig = &config.ZooKeeper{}
+ discoveryConfig = &config.Discovery{}
shareConfig = &config.Share{}
)
err := config.LoadConfig(filepath.Join(configDir, cmd.MongodbConfigFileName), cmd.ConfigEnvPrefixMap[cmd.MongodbConfigFileName], mongoConfig)
@@ -69,7 +78,7 @@ func initConfig(configDir string) (*config.Mongo, *config.Redis, *config.ZooKeep
return nil, nil, nil, nil, err
}
- err = config.LoadConfig(filepath.Join(configDir, cmd.ZookeeperConfigFileName), cmd.ConfigEnvPrefixMap[cmd.ZookeeperConfigFileName], zookeeperConfig)
+ err = config.LoadConfig(filepath.Join(configDir, cmd.DiscoveryConfigFileName), cmd.ConfigEnvPrefixMap[cmd.DiscoveryConfigFileName], discoveryConfig)
if err != nil {
return nil, nil, nil, nil, err
}
@@ -78,7 +87,7 @@ func initConfig(configDir string) (*config.Mongo, *config.Redis, *config.ZooKeep
return nil, nil, nil, nil, err
}
- return mongoConfig, redisConfig, zookeeperConfig, shareConfig, nil
+ return mongoConfig, redisConfig, discoveryConfig, shareConfig, nil
}
func main() {
@@ -105,13 +114,10 @@ func main() {
}
}
-func performChecks(ctx context.Context, mongoConfig *config.Mongo, redisConfig *config.Redis, zookeeperConfig *config.ZooKeeper, shareConfig *config.Share, maxRetry int) error {
+func performChecks(ctx context.Context, mongoConfig *config.Mongo, redisConfig *config.Redis, discovery *config.Discovery, shareConfig *config.Share, maxRetry int) error {
checksDone := make(map[string]bool)
checks := map[string]func(ctx context.Context) error{
- "Zookeeper": func(ctx context.Context) error {
- return CheckZookeeper(ctx, zookeeperConfig)
- },
"Mongo": func(ctx context.Context) error {
return CheckMongo(ctx, mongoConfig)
},
@@ -123,6 +129,16 @@ func performChecks(ctx context.Context, mongoConfig *config.Mongo, redisConfig *
},
}
+ if discovery.Enable == "etcd" {
+ checks["Etcd"] = func(ctx context.Context) error {
+ return CheckEtcd(ctx, &discovery.Etcd)
+ }
+ } else if discovery.Enable == "zookeeper" {
+ checks["Zookeeper"] = func(ctx context.Context) error {
+ return CheckZookeeper(ctx, &discovery.ZooKeeper)
+ }
+ }
+
for i := 0; i < maxRetry; i++ {
allSuccess := true
for name, check := range checks {
From 67b3aed1b55e621df6930dddbf07603b6108f37b Mon Sep 17 00:00:00 2001
From: skiffer-git <72860476+skiffer-git@users.noreply.github.com>
Date: Wed, 15 May 2024 15:42:59 +0800
Subject: [PATCH 14/15] Delete .github/dependabot.yml
---
.github/dependabot.yml | 59 ------------------------------------------
1 file changed, 59 deletions(-)
delete mode 100644 .github/dependabot.yml
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index d05322f18..000000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright © 2023 OpenIM open source community. 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.
-
-# To get started with Dependabot version updates, you'll need to specify which
-# package ecosystems to update and where the package manifests are located.
-# Please see the documentation for all configuration options:
-# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
-
-version: 2
-updates:
- - package-ecosystem: "gomod"
- directory: "/"
- schedule:
- interval: "daily"
- time: "08:00"
- labels:
- - "dependencies"
- commit-message:
- prefix: "feat"
- include: "scope"
- groups:
- gomod-deps:
- patterns:
- - "*"
- - package-ecosystem: "github-actions"
- directory: "/"
- schedule:
- interval: "daily"
- time: "08:00"
- labels:
- - "dependencies"
- commit-message:
- prefix: "chore"
- include: "scope"
- groups:
- github-actions:
- patterns:
- - "*"
- - package-ecosystem: "docker"
- directory: "/"
- schedule:
- interval: "daily"
- time: "08:00"
- labels:
- - "dependencies"
- commit-message:
- prefix: "feat"
- include: "scope"
\ No newline at end of file
From 1a4af90da7c8b1b0dfc9cfdbe9a7b1257917f61f Mon Sep 17 00:00:00 2001
From: blooming <37789413+Bloomingg@users.noreply.github.com>
Date: Mon, 20 May 2024 10:49:55 +0800
Subject: [PATCH 15/15] docs: livekit quick start (#543)
* docs: livekit quick start
* Update CODEOWNERS
---
HOW_TO_SETUP_LIVEKIT_SERVER.md | 63 +++++++++++++++-------------------
docs/CODEOWNERS | 2 +-
livekit/livekit.yaml | 9 +++++
3 files changed, 37 insertions(+), 37 deletions(-)
create mode 100644 livekit/livekit.yaml
diff --git a/HOW_TO_SETUP_LIVEKIT_SERVER.md b/HOW_TO_SETUP_LIVEKIT_SERVER.md
index cf4c8c85a..c8c6dd23e 100644
--- a/HOW_TO_SETUP_LIVEKIT_SERVER.md
+++ b/HOW_TO_SETUP_LIVEKIT_SERVER.md
@@ -1,54 +1,45 @@
-# How to setup LiveKit server
+# Setting Up LiveKit Server for OpenIM Chat
-OpenIM Chat uses LiveKit server as the media server to support video call and video meeting services.
+OpenIM Chat uses the LiveKit server as the media server to support video calls and video meeting services.
+## About LiveKit
-## Something about LiveKit
+[LiveKit](https://github.com/livekit/livekit-server) is an open-source WebRTC SFU written in Go, built on top of the excellent [Pion](https://github.com/pion) project. For more information, visit the [LiveKit website](https://livekit.io/).
-[Livekit](https://github.com/livekit/livekit-server) is an open source WebRTC SFU written in go, built on top of the excellent [Pion](https://github.com/pion) project. You can get more information about it on its website [livekit.io](https://livekit.io/).
+## Quick Start
-
-## Setup LiveKit server on Linux
-
-Please follow the following instructions to setup a LiveKit server to work with OpenIM Chat and OpenIM server on Linux server.
-
-### Docker installation
-
-For self hosting user, we suggest you install LiveKit server by docker pull. You can get a server ready for use in a short time.
+To self-host LiveKit, start the server with the following Docker command:
```bash
-sudo docker pull livekit/livekit-server
+docker run -d \
+ -p 7880:7880 \
+ -p 7881:7881 \
+ -p 7882:7882/udp \
+ -v $PWD/livekit/livekit.yaml:/livekit.yaml \
+ livekit/livekit-server \
+ --config /livekit.yaml \
+ --bind 0.0.0.0
```
-For cloud deployment, you may follow the [Deploy to a VM](https://docs.livekit.io/realtime/self-hosting/vm/#Deploy-to-a-VM) on [livekit.io](https://docs.livekit.io/).
-
-### Generate configuration
+## Viewing Logs
-To generate configuration file for LiveKit server, please refer to [Generate configuration](https://docs.livekit.io/realtime/self-hosting/vm/#Generate-configuration).
+To check the server logs and ensure everything is running correctly, use the following command:
-The keys section of the generated .yaml file is the "apiKey: apiSecret" pair. This key pair should be set to the LiveKit section as the value of key and secret arguments.
-
-### Generate access token for video call participant
-
-Please refer to [Generating tokens](https://docs.livekit.io/realtime/server/generating-tokens/) on [livekit.io](https://docs.livekit.io/).
+```bash
+docker logs livekit/livekit-server
+```
-### Run it
+## Configuring the LiveKit Address in OpenIM Chat
-For self hosting user, you may start LiveKit with:
+Update the `config/chat-rpc-chat.yml` file to configure the LiveKit server address:
-```bash
-docker run --rm \
- -p 7880:7880 \
- -p 7881:7881 \
- -p 7882:7882/udp \
- -v $PWD/livekit.yaml:/livekit.yaml \
- livekit/livekit-server \
- --config /livekit.yaml \
- --bind 0.0.0.0
+```yaml
+liveKit:
+ url: "ws://127.0.0.1:7880" # LIVEKIT_URL, LiveKit server address and port
```
-For cloud deployment user, you may follow the [Deploy to a VM](https://docs.livekit.io/realtime/self-hosting/vm/#Deploy-to-a-VM) on [livekit.io](https://docs.livekit.io/).
+By following these steps, you can set up and configure the LiveKit server for use with OpenIM Chat.
-## More about Deploying LiveKit
+## More about Deploying LiveKi
-Please refer to the self hosting [Deploying LiveKit](https://docs.livekit.io/realtime/self-hosting/deployment/) documentation.
+For detailed instructions on deploying LiveKit, refer to the self-hosting [deployment documentation](https://docs.livekit.io/realtime/self-hosting/deployment/).
diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS
index f3a3a550d..015466d02 100644
--- a/docs/CODEOWNERS
+++ b/docs/CODEOWNERS
@@ -1 +1 @@
-* @openimsdk/go-code-review @skiffer-git @withchao
+* @Bloomingg @FGadvancer @skiffer-git @withchao
diff --git a/livekit/livekit.yaml b/livekit/livekit.yaml
new file mode 100644
index 000000000..5d1f955f4
--- /dev/null
+++ b/livekit/livekit.yaml
@@ -0,0 +1,9 @@
+port: 7880
+rtc:
+ tcp_port: 7881
+ port_range_start: 50000
+ port_range_end: 60000
+ use_external_ip: true
+ enable_loopback_candidate: false
+keys:
+ APIftrpEkL9x2pa: 23ztfSqsfQ8hKkHzHTl3Z4bvaxro0snjk5jwbp5p6Q3
\ No newline at end of file