mirror of
https://github.com/openimsdk/open-im-server.git
synced 2026-01-10 06:06:57 +08:00
Compare commits
6 Commits
4d6229df63
...
5d4df33a28
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d4df33a28 | ||
|
|
fbca49d431 | ||
|
|
0a93fb1b6d | ||
|
|
24d889157a | ||
|
|
420ab44e06 | ||
|
|
686366bdba |
@ -8,44 +8,20 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "37017:27017"
|
- "37017:27017"
|
||||||
container_name: mongo
|
container_name: mongo
|
||||||
command: >
|
|
||||||
bash -c '
|
|
||||||
docker-entrypoint.sh mongod --wiredTigerCacheSizeGB $$wiredTigerCacheSizeGB --auth &
|
|
||||||
until mongosh -u $$MONGO_INITDB_ROOT_USERNAME -p $$MONGO_INITDB_ROOT_PASSWORD --authenticationDatabase admin --eval "db.runCommand({ ping: 1 })" &>/dev/null; do
|
|
||||||
echo "Waiting for MongoDB to start..."
|
|
||||||
sleep 1
|
|
||||||
done &&
|
|
||||||
mongosh -u $$MONGO_INITDB_ROOT_USERNAME -p $$MONGO_INITDB_ROOT_PASSWORD --authenticationDatabase admin --eval "
|
|
||||||
db = db.getSiblingDB(\"$$MONGO_INITDB_DATABASE\");
|
|
||||||
if (!db.getUser(\"$$MONGO_OPENIM_USERNAME\")) {
|
|
||||||
db.createUser({
|
|
||||||
user: \"$$MONGO_OPENIM_USERNAME\",
|
|
||||||
pwd: \"$$MONGO_OPENIM_PASSWORD\",
|
|
||||||
roles: [{role: \"readWrite\", db: \"$$MONGO_INITDB_DATABASE\"}]
|
|
||||||
});
|
|
||||||
print(\"User created successfully: \");
|
|
||||||
print(\"Username: $$MONGO_OPENIM_USERNAME\");
|
|
||||||
print(\"Password: $$MONGO_OPENIM_PASSWORD\");
|
|
||||||
print(\"Database: $$MONGO_INITDB_DATABASE\");
|
|
||||||
} else {
|
|
||||||
print(\"User already exists in database: $$MONGO_INITDB_DATABASE, Username: $$MONGO_OPENIM_USERNAME\");
|
|
||||||
}
|
|
||||||
" &&
|
|
||||||
tail -f /dev/null
|
|
||||||
'
|
|
||||||
volumes:
|
volumes:
|
||||||
- "${DATA_DIR}/components/mongodb/data/db:/data/db"
|
- "${DATA_DIR}/components/mongodb/data/db:/data/db"
|
||||||
- "${DATA_DIR}/components/mongodb/data/logs:/data/logs"
|
- "${DATA_DIR}/components/mongodb/data/logs:/data/logs"
|
||||||
- "${DATA_DIR}/components/mongodb/data/conf:/etc/mongo"
|
- "${DATA_DIR}/components/mongodb/data/conf:/etc/mongo"
|
||||||
- "${MONGO_BACKUP_DIR}:/data/backup"
|
- "${MONGO_BACKUP_DIR}:/data/backup"
|
||||||
|
- ./scripts/mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh:ro
|
||||||
environment:
|
environment:
|
||||||
- TZ=Asia/Shanghai
|
- TZ=Asia/Shanghai
|
||||||
- wiredTigerCacheSizeGB=1
|
|
||||||
- MONGO_INITDB_ROOT_USERNAME=root
|
- MONGO_INITDB_ROOT_USERNAME=root
|
||||||
- MONGO_INITDB_ROOT_PASSWORD=openIM123
|
- MONGO_INITDB_ROOT_PASSWORD=openIM123
|
||||||
- MONGO_INITDB_DATABASE=openim_v3
|
- MONGO_INITDB_DATABASE=openim_v3
|
||||||
- MONGO_OPENIM_USERNAME=openIM
|
- MONGO_OPENIM_USERNAME=openIM
|
||||||
- MONGO_OPENIM_PASSWORD=openIM123
|
- MONGO_OPENIM_PASSWORD=openIM123
|
||||||
|
command: [ "mongod", "--wiredTigerCacheSizeGB", "1", "--auth" ]
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- openim
|
- openim
|
||||||
@ -64,11 +40,7 @@ services:
|
|||||||
sysctls:
|
sysctls:
|
||||||
net.core.somaxconn: 1024
|
net.core.somaxconn: 1024
|
||||||
command: >
|
command: >
|
||||||
redis-server
|
redis-server --requirepass openIM123 --appendonly yes --aof-use-rdb-preamble yes --save ""
|
||||||
--requirepass openIM123
|
|
||||||
--appendonly yes
|
|
||||||
--aof-use-rdb-preamble yes
|
|
||||||
--save ""
|
|
||||||
networks:
|
networks:
|
||||||
- openim
|
- openim
|
||||||
|
|
||||||
@ -89,7 +61,6 @@ services:
|
|||||||
- ETCD_INITIAL_CLUSTER_TOKEN=tkn
|
- ETCD_INITIAL_CLUSTER_TOKEN=tkn
|
||||||
- ETCD_INITIAL_CLUSTER_STATE=new
|
- ETCD_INITIAL_CLUSTER_STATE=new
|
||||||
- ALLOW_NONE_AUTHENTICATION=no
|
- ALLOW_NONE_AUTHENTICATION=no
|
||||||
|
|
||||||
## Optional: Enable etcd authentication by setting the following credentials
|
## Optional: Enable etcd authentication by setting the following credentials
|
||||||
# - ETCD_ROOT_USER=root
|
# - ETCD_ROOT_USER=root
|
||||||
# - ETCD_ROOT_PASSWORD=openIM123
|
# - ETCD_ROOT_PASSWORD=openIM123
|
||||||
@ -212,7 +183,6 @@ services:
|
|||||||
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT"
|
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,INTERNAL:PLAINTEXT"
|
||||||
# Defines which listener is used for inter-broker communication within the Kafka cluster
|
# Defines which listener is used for inter-broker communication within the Kafka cluster
|
||||||
KAFKA_CFG_INTER_BROKER_LISTENER_NAME: "INTERNAL"
|
KAFKA_CFG_INTER_BROKER_LISTENER_NAME: "INTERNAL"
|
||||||
|
|
||||||
# Authentication configuration variables - comment out to disable auth
|
# Authentication configuration variables - comment out to disable auth
|
||||||
# KAFKA_USERNAME: "openIM"
|
# KAFKA_USERNAME: "openIM"
|
||||||
# KAFKA_PASSWORD: "openIM123"
|
# KAFKA_PASSWORD: "openIM123"
|
||||||
|
|||||||
4
go.mod
4
go.mod
@ -12,8 +12,8 @@ require (
|
|||||||
github.com/gorilla/websocket v1.5.1
|
github.com/gorilla/websocket v1.5.1
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
|
||||||
github.com/mitchellh/mapstructure v1.5.0
|
github.com/mitchellh/mapstructure v1.5.0
|
||||||
github.com/openimsdk/protocol v0.0.73-alpha.17
|
github.com/openimsdk/protocol v0.0.73-alpha.18
|
||||||
github.com/openimsdk/tools v0.0.50-alpha.105
|
github.com/openimsdk/tools v0.0.50-alpha.106
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/prometheus/client_golang v1.18.0
|
github.com/prometheus/client_golang v1.18.0
|
||||||
github.com/stretchr/testify v1.10.0
|
github.com/stretchr/testify v1.10.0
|
||||||
|
|||||||
8
go.sum
8
go.sum
@ -349,10 +349,10 @@ github.com/onsi/gomega v1.25.0 h1:Vw7br2PCDYijJHSfBOWhov+8cAnUf8MfMaIOV323l6Y=
|
|||||||
github.com/onsi/gomega v1.25.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
|
github.com/onsi/gomega v1.25.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
|
||||||
github.com/openimsdk/gomake v0.0.15-alpha.11 h1:PQudYDRESYeYlUYrrLLJhYIlUPO5x7FAx+o5El9U/Bw=
|
github.com/openimsdk/gomake v0.0.15-alpha.11 h1:PQudYDRESYeYlUYrrLLJhYIlUPO5x7FAx+o5El9U/Bw=
|
||||||
github.com/openimsdk/gomake v0.0.15-alpha.11/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
|
github.com/openimsdk/gomake v0.0.15-alpha.11/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
|
||||||
github.com/openimsdk/protocol v0.0.73-alpha.17 h1:ddo0QMns1GVwAmrPIPlAQ7uKmThAYLnOt+CIOgLsJyE=
|
github.com/openimsdk/protocol v0.0.73-alpha.18 h1:LXmDFx3KnMd2mN0/S3Q2U33Ft/DHvplSsINO0/bto/c=
|
||||||
github.com/openimsdk/protocol v0.0.73-alpha.17/go.mod h1:WF7EuE55vQvpyUAzDXcqg+B+446xQyEba0X35lTINmw=
|
github.com/openimsdk/protocol v0.0.73-alpha.18/go.mod h1:WF7EuE55vQvpyUAzDXcqg+B+446xQyEba0X35lTINmw=
|
||||||
github.com/openimsdk/tools v0.0.50-alpha.105 h1:axuCvKXhxY2RGLhpMMFNgBtE0B65T2Sr1JDW3UD9nBs=
|
github.com/openimsdk/tools v0.0.50-alpha.106 h1:gaqU08IbRxOdL16ZEQNyYLhCTf7K1HNkrik8KZLA+BM=
|
||||||
github.com/openimsdk/tools v0.0.50-alpha.105/go.mod h1:x9i/e+WJFW4tocy6RNJQ9NofQiP3KJ1Y576/06TqOG4=
|
github.com/openimsdk/tools v0.0.50-alpha.106/go.mod h1:x9i/e+WJFW4tocy6RNJQ9NofQiP3KJ1Y576/06TqOG4=
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
||||||
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
|
github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ=
|
||||||
|
|||||||
@ -17,7 +17,6 @@ package group
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
|
||||||
"math/big"
|
"math/big"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -606,10 +605,6 @@ func (g *groupServer) KickGroupMember(ctx context.Context, req *pbgroup.KickGrou
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
num, err := g.db.FindGroupMemberNum(ctx, req.GroupID)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
ownerUserIDs, err := g.db.GetGroupRoleLevelMemberIDs(ctx, req.GroupID, constant.GroupOwner)
|
ownerUserIDs, err := g.db.GetGroupRoleLevelMemberIDs(ctx, req.GroupID, constant.GroupOwner)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -621,6 +616,10 @@ func (g *groupServer) KickGroupMember(ctx context.Context, req *pbgroup.KickGrou
|
|||||||
if err := g.db.DeleteGroupMember(ctx, group.GroupID, req.KickedUserIDs); err != nil {
|
if err := g.db.DeleteGroupMember(ctx, group.GroupID, req.KickedUserIDs); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
num, err := g.db.FindGroupMemberNum(ctx, req.GroupID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
tips := &sdkws.MemberKickedTips{
|
tips := &sdkws.MemberKickedTips{
|
||||||
Group: &sdkws.GroupInfo{
|
Group: &sdkws.GroupInfo{
|
||||||
GroupID: group.GroupID,
|
GroupID: group.GroupID,
|
||||||
@ -630,7 +629,7 @@ func (g *groupServer) KickGroupMember(ctx context.Context, req *pbgroup.KickGrou
|
|||||||
FaceURL: group.FaceURL,
|
FaceURL: group.FaceURL,
|
||||||
OwnerUserID: ownerUserID,
|
OwnerUserID: ownerUserID,
|
||||||
CreateTime: group.CreateTime.UnixMilli(),
|
CreateTime: group.CreateTime.UnixMilli(),
|
||||||
MemberCount: num - uint32(len(req.KickedUserIDs)),
|
MemberCount: num,
|
||||||
Ex: group.Ex,
|
Ex: group.Ex,
|
||||||
Status: group.Status,
|
Status: group.Status,
|
||||||
CreatorUserID: group.CreatorUserID,
|
CreatorUserID: group.CreatorUserID,
|
||||||
@ -1040,7 +1039,7 @@ func (g *groupServer) deleteMemberAndSetConversationSeq(ctx context.Context, gro
|
|||||||
|
|
||||||
func (g *groupServer) setMemberJoinSeq(ctx context.Context, groupID string, userIDs []string) error {
|
func (g *groupServer) setMemberJoinSeq(ctx context.Context, groupID string, userIDs []string) error {
|
||||||
conversationID := msgprocessor.GetConversationIDBySessionType(constant.ReadGroupChatType, groupID)
|
conversationID := msgprocessor.GetConversationIDBySessionType(constant.ReadGroupChatType, groupID)
|
||||||
return g.conversationClient.SetConversationMaxSeq(ctx, conversationID, userIDs, math.MaxInt64)
|
return g.conversationClient.SetConversationMaxSeq(ctx, conversationID, userIDs, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *groupServer) SetGroupInfo(ctx context.Context, req *pbgroup.SetGroupInfoReq) (*pbgroup.SetGroupInfoResp, error) {
|
func (g *groupServer) SetGroupInfo(ctx context.Context, req *pbgroup.SetGroupInfoReq) (*pbgroup.SetGroupInfoResp, error) {
|
||||||
|
|||||||
20
scripts/mongo-init.sh
Executable file
20
scripts/mongo-init.sh
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Creating OpenIM user in database ${MONGO_INITDB_DATABASE}..."
|
||||||
|
|
||||||
|
mongosh -u "${MONGO_INITDB_ROOT_USERNAME}" -p "${MONGO_INITDB_ROOT_PASSWORD}" --authenticationDatabase admin <<EOF
|
||||||
|
use ${MONGO_INITDB_DATABASE}
|
||||||
|
if (!db.getUser("${MONGO_OPENIM_USERNAME}")) {
|
||||||
|
db.createUser({
|
||||||
|
user: "${MONGO_OPENIM_USERNAME}",
|
||||||
|
pwd: "${MONGO_OPENIM_PASSWORD}",
|
||||||
|
roles: [{role: "readWrite", db: "${MONGO_INITDB_DATABASE}"}]
|
||||||
|
})
|
||||||
|
print("OpenIM user created successfully")
|
||||||
|
} else {
|
||||||
|
print("User ${MONGO_OPENIM_USERNAME} already exists")
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "OpenIM user setup completed"
|
||||||
Loading…
x
Reference in New Issue
Block a user