mirror of
https://github.com/openimsdk/open-im-server.git
synced 2026-05-07 10:35:59 +08:00
Merge remote-tracking branch 'origin/errcode' into errcode
This commit is contained in:
+17
-18
@@ -2,17 +2,19 @@ package auth
|
||||
|
||||
import (
|
||||
"Open_IM/internal/common/check"
|
||||
"Open_IM/internal/common/network"
|
||||
"Open_IM/pkg/common/constant"
|
||||
"Open_IM/pkg/common/db/controller"
|
||||
"Open_IM/pkg/common/log"
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"Open_IM/pkg/common/token_verify"
|
||||
"Open_IM/pkg/common/tracelog"
|
||||
"Open_IM/pkg/getcdv3"
|
||||
discoveryRegistry "Open_IM/pkg/discovery_registry"
|
||||
pbAuth "Open_IM/pkg/proto/auth"
|
||||
pbRelay "Open_IM/pkg/proto/relay"
|
||||
"Open_IM/pkg/utils"
|
||||
"context"
|
||||
"github.com/OpenIMSDK/openKeeper"
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
@@ -85,7 +87,10 @@ func (s *rpcAuth) ForceLogout(ctx context.Context, req *pbAuth.ForceLogoutReq) (
|
||||
}
|
||||
|
||||
func (s *rpcAuth) forceKickOff(ctx context.Context, userID string, platformID int32, operationID string) error {
|
||||
grpcCons := rpc.GetDefaultGatewayConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), operationID)
|
||||
grpcCons, err := s.dr.GetConns(config.Config.RpcRegisterName.OpenImRelayName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, v := range grpcCons {
|
||||
client := pbRelay.NewRelayClient(v)
|
||||
kickReq := &pbRelay.KickUserOfflineReq{OperationID: operationID, KickUserIDList: []string{userID}, PlatformID: platformID}
|
||||
@@ -102,6 +107,7 @@ type rpcAuth struct {
|
||||
etcdSchema string
|
||||
etcdAddr []string
|
||||
controller.AuthInterface
|
||||
dr discoveryRegistry.SvcDiscoveryRegistry
|
||||
}
|
||||
|
||||
func NewRpcAuthServer(port int) *rpcAuth {
|
||||
@@ -109,8 +115,6 @@ func NewRpcAuthServer(port int) *rpcAuth {
|
||||
return &rpcAuth{
|
||||
rpcPort: port,
|
||||
rpcRegisterName: config.Config.RpcRegisterName.OpenImAuthName,
|
||||
etcdSchema: config.Config.Etcd.EtcdSchema,
|
||||
etcdAddr: config.Config.Etcd.EtcdAddr,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,23 +152,18 @@ func (s *rpcAuth) Run() {
|
||||
|
||||
//service registers with etcd
|
||||
pbAuth.RegisterAuthServer(srv, s)
|
||||
rpcRegisterIP := config.Config.RpcRegisterIP
|
||||
if config.Config.RpcRegisterIP == "" {
|
||||
rpcRegisterIP, err = utils.GetLocalIP()
|
||||
if err != nil {
|
||||
log.Error("", "GetLocalIP failed ", err.Error())
|
||||
}
|
||||
}
|
||||
log.NewInfo("", "rpcRegisterIP", rpcRegisterIP)
|
||||
|
||||
err = rpc.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName, 10, "")
|
||||
zkClient, err := openKeeper.NewClient([]string{"43.154.157.177:2181"}, config.Config.Etcd.EtcdSchema, 10, "", "")
|
||||
if err != nil {
|
||||
log.NewError(operationID, "RegisterEtcd failed ", err.Error(),
|
||||
s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName)
|
||||
panic(utils.Wrap(err, "register auth module rpc to etcd err"))
|
||||
|
||||
panic(err.Error())
|
||||
}
|
||||
log.NewInfo(operationID, "RegisterAuthServer ok ", s.etcdSchema, strings.Join(s.etcdAddr, ","), rpcRegisterIP, s.rpcPort, s.rpcRegisterName)
|
||||
registerIP, err := network.GetRpcIP(config.Config.RpcRegisterIP)
|
||||
err = zkClient.Register(s.rpcRegisterName, registerIP, s.rpcPort)
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
|
||||
log.NewInfo(operationID, "RegisterAuthServer ok ", s.etcdSchema, strings.Join(s.etcdAddr, ","), registerIP, s.rpcPort, s.rpcRegisterName)
|
||||
err = srv.Serve(listener)
|
||||
if err != nil {
|
||||
log.NewError(operationID, "Serve failed ", err.Error())
|
||||
|
||||
@@ -166,7 +166,7 @@ func (s *friendServer) ImportFriends(ctx context.Context, req *pbFriend.ImportFr
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if utils.Contain(req.FriendUserIDs, req.OwnerUserID) {
|
||||
if utils.Contain(req.OwnerUserID, req.FriendUserIDs...) {
|
||||
return nil, constant.ErrCanNotAddYourself.Wrap()
|
||||
}
|
||||
if utils.Duplicate(req.FriendUserIDs) {
|
||||
@@ -211,7 +211,7 @@ func (s *friendServer) DeleteFriend(ctx context.Context, req *pbFriend.DeleteFri
|
||||
if err := check.Access(ctx, req.OwnerUserID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_, err = s.FindFriends(ctx, req.OwnerUserID, []string{req.FriendUserID})
|
||||
_, err = s.FindFriendsWithError(ctx, req.OwnerUserID, []string{req.FriendUserID})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -228,7 +228,7 @@ func (s *friendServer) SetFriendRemark(ctx context.Context, req *pbFriend.SetFri
|
||||
if err := check.Access(ctx, req.OwnerUserID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_, err = s.FindFriends(ctx, req.OwnerUserID, []string{req.FriendUserID})
|
||||
_, err = s.FindFriendsWithError(ctx, req.OwnerUserID, []string{req.FriendUserID})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -245,7 +245,7 @@ func (s *friendServer) GetDesignatedFriendsReq(ctx context.Context, req *pbFrien
|
||||
if err := check.Access(ctx, req.UserID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
friends, total, err := s.FriendInterface.FindOwnerFriends(ctx, req.UserID, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
||||
friends, total, err := s.FriendInterface.PageOwnerFriends(ctx, req.UserID, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -263,7 +263,7 @@ func (s *friendServer) GetPaginationFriendsApplyTo(ctx context.Context, req *pbF
|
||||
if err := check.Access(ctx, req.UserID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
friendRequests, total, err := s.FriendInterface.FindFriendRequestToMe(ctx, req.UserID, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
||||
friendRequests, total, err := s.FriendInterface.PageFriendRequestToMe(ctx, req.UserID, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -281,7 +281,7 @@ func (s *friendServer) GetPaginationFriendsApplyFrom(ctx context.Context, req *p
|
||||
if err := check.Access(ctx, req.UserID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
friendRequests, total, err := s.FriendInterface.FindFriendRequestFromMe(ctx, req.UserID, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
||||
friendRequests, total, err := s.FriendInterface.PageFriendRequestFromMe(ctx, req.UserID, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -309,7 +309,7 @@ func (s *friendServer) GetPaginationFriends(ctx context.Context, req *pbFriend.G
|
||||
if utils.Duplicate(req.FriendUserIDs) {
|
||||
return nil, constant.ErrArgs.Wrap("friend userID repeated")
|
||||
}
|
||||
friends, err := s.FriendInterface.FindFriends(ctx, req.OwnerUserID, req.FriendUserIDs)
|
||||
friends, err := s.FriendInterface.FindFriendsWithError(ctx, req.OwnerUserID, req.FriendUserIDs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package group
|
||||
|
||||
import (
|
||||
"Open_IM/internal/common/network"
|
||||
chat "Open_IM/internal/rpc/msg"
|
||||
"Open_IM/pkg/common/config"
|
||||
"Open_IM/pkg/common/constant"
|
||||
@@ -66,7 +67,7 @@ func NewGroupServer(port int) *groupServer {
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
registerIP, err := utils.GetRpcIP()
|
||||
registerIP, err := network.GetRpcIP(config.Config.RpcRegisterIP)
|
||||
err = zkClient.Register(config.Config.RpcRegisterName.OpenImGroupName, registerIP, port)
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
|
||||
+51
-63
@@ -12,13 +12,10 @@ import (
|
||||
promePkg "Open_IM/pkg/common/prometheus"
|
||||
"Open_IM/pkg/common/token_verify"
|
||||
"Open_IM/pkg/common/tracelog"
|
||||
pbFriend "Open_IM/pkg/proto/friend"
|
||||
pbGroup "Open_IM/pkg/proto/group"
|
||||
server_api_params "Open_IM/pkg/proto/sdk_ws"
|
||||
pbUser "Open_IM/pkg/proto/user"
|
||||
"Open_IM/pkg/utils"
|
||||
"context"
|
||||
"github.com/golang/protobuf/ptypes/wrappers"
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
@@ -114,21 +111,14 @@ func (s *userServer) Run() {
|
||||
log.NewInfo("", "rpc user success")
|
||||
}
|
||||
|
||||
// ok
|
||||
func (s *userServer) SyncJoinedGroupMemberFaceURL(ctx context.Context, userID string, faceURL string, operationID string, opUserID string) {
|
||||
etcdConn, err := rpc.GetConn(ctx, config.Config.RpcRegisterName.OpenImFriendName)
|
||||
members, err := s.GetJoinedGroupMembers(ctx, userID)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
client := pbGroup.NewGroupClient(etcdConn)
|
||||
newReq := &pbGroup.GetJoinedGroupListReq{FromUserID: userID}
|
||||
rpcResp, err := client.GetJoinedGroupList(ctx, newReq)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
for _, group := range rpcResp.Groups {
|
||||
req := &pbGroup.SetGroupMemberInfoReq{GroupID: group.GroupID, UserID: userID, FaceURL: &wrappers.StringValue{Value: faceURL}}
|
||||
_, err := client.SetGroupMemberInfo(ctx, req)
|
||||
for _, group := range members {
|
||||
err := s.SetGroupMemberFaceURL(ctx, faceURL, group.GroupID, userID)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -136,29 +126,15 @@ func (s *userServer) SyncJoinedGroupMemberFaceURL(ctx context.Context, userID st
|
||||
}
|
||||
}
|
||||
|
||||
// ok
|
||||
func (s *userServer) SyncJoinedGroupMemberNickname(ctx context.Context, userID string, newNickname, oldNickname string, operationID string, opUserID string) {
|
||||
etcdConn, err := rpc.GetConn(ctx, config.Config.RpcRegisterName.OpenImFriendName)
|
||||
members, err := s.GetJoinedGroupMembers(ctx, userID)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
client := pbGroup.NewGroupClient(etcdConn)
|
||||
newReq := &pbGroup.GetJoinedGroupListReq{FromUserID: userID}
|
||||
rpcResp, err := client.GetJoinedGroupList(ctx, newReq)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
req := pbGroup.GetUserInGroupMembersReq{UserID: userID}
|
||||
for _, group := range rpcResp.Groups {
|
||||
req.GroupIDs = append(req.GroupIDs, group.GroupID)
|
||||
}
|
||||
resp, err := client.GetUserInGroupMembers(ctx, &req)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for _, v := range resp.Members {
|
||||
for _, v := range members {
|
||||
if v.Nickname == oldNickname {
|
||||
req := pbGroup.SetGroupMemberNicknameReq{Nickname: newNickname, GroupID: v.GroupID, UserID: v.UserID}
|
||||
_, err := client.SetGroupMemberNickname(ctx, &req)
|
||||
err := s.SetGroupMemberNickname(ctx, newNickname, v.GroupID, v.UserID)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -167,10 +143,25 @@ func (s *userServer) SyncJoinedGroupMemberNickname(ctx context.Context, userID s
|
||||
}
|
||||
}
|
||||
|
||||
// 设置群昵称
|
||||
func (s *userServer) SetGroupMemberNickname(ctx context.Context, nickname string, groupID string, userID string) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// 设置群头像
|
||||
func (s *userServer) SetGroupMemberFaceURL(ctx context.Context, faceURL string, groupID string, userID string) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// 获取加入的群成员信息
|
||||
func (s *userServer) GetJoinedGroupMembers(ctx context.Context, userID string) (members []*server_api_params.GroupMemberFullInfo, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// ok
|
||||
func (s *userServer) GetDesignateUsers(ctx context.Context, req *pbUser.GetDesignateUsersReq) (resp *pbUser.GetDesignateUsersResp, err error) {
|
||||
resp = &pbUser.GetDesignateUsersResp{}
|
||||
users, err := s.Find(ctx, req.UserIDs)
|
||||
users, err := s.FindWithError(ctx, req.UserIDs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -181,15 +172,20 @@ func (s *userServer) GetDesignateUsers(ctx context.Context, req *pbUser.GetDesig
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserInfoReq) (*pbUser.UpdateUserInfoResp, error) {
|
||||
resp := pbUser.UpdateUserInfoResp{}
|
||||
err := token_verify.CheckAccessV3(ctx, req.UserInfo.UserID)
|
||||
func (s *userServer) GetAllPageFriends(ctx context.Context, ownerUserID string) (resp []*server_api_params.FriendInfo, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// ok
|
||||
func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserInfoReq) (resp *pbUser.UpdateUserInfoResp, err error) {
|
||||
resp = &pbUser.UpdateUserInfoResp{}
|
||||
err = token_verify.CheckAccessV3(ctx, req.UserInfo.UserID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
oldNickname := ""
|
||||
if req.UserInfo.Nickname != "" {
|
||||
u, err := s.Find(ctx, []string{req.UserInfo.UserID})
|
||||
u, err := s.FindWithError(ctx, []string{req.UserInfo.UserID})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -203,36 +199,30 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
etcdConn, err := rpc.GetConn(ctx, config.Config.RpcRegisterName.OpenImFriendName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client := pbFriend.NewFriendClient(etcdConn)
|
||||
newReq := &pbFriend.GetFriendsReq{UserID: req.UserInfo.UserID}
|
||||
rpcResp, err := client.GetFriends(context.Background(), newReq)
|
||||
friends, err := s.GetAllPageFriends(ctx, req.UserInfo.UserID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
go func() {
|
||||
for _, v := range rpcResp.FriendsInfo {
|
||||
for _, v := range friends {
|
||||
chat.FriendInfoUpdatedNotification(ctx, req.UserInfo.UserID, v.FriendUser.UserID, tracelog.GetOpUserID(ctx))
|
||||
}
|
||||
}()
|
||||
|
||||
chat.UserInfoUpdatedNotification(ctx, tracelog.GetOpUserID(ctx), req.UserInfo.UserID)
|
||||
if req.UserInfo.FaceURL != "" {
|
||||
s.SyncJoinedGroupMemberFaceURL(ctx, req.UserInfo.UserID, req.UserInfo.FaceURL, tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx))
|
||||
go s.SyncJoinedGroupMemberFaceURL(ctx, req.UserInfo.UserID, req.UserInfo.FaceURL, tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx))
|
||||
}
|
||||
if req.UserInfo.Nickname != "" {
|
||||
s.SyncJoinedGroupMemberNickname(ctx, req.UserInfo.UserID, req.UserInfo.Nickname, oldNickname, tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx))
|
||||
go s.SyncJoinedGroupMemberNickname(ctx, req.UserInfo.UserID, req.UserInfo.Nickname, oldNickname, tracelog.GetOperationID(ctx), tracelog.GetOpUserID(ctx))
|
||||
}
|
||||
return &resp, nil
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// ok
|
||||
func (s *userServer) SetGlobalRecvMessageOpt(ctx context.Context, req *pbUser.SetGlobalRecvMessageOptReq) (resp *pbUser.SetGlobalRecvMessageOptResp, err error) {
|
||||
resp = &pbUser.SetGlobalRecvMessageOptResp{}
|
||||
|
||||
if _, err := s.Find(ctx, []string{req.UserID}); err != nil {
|
||||
if _, err := s.FindWithError(ctx, []string{req.UserID}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
m := make(map[string]interface{}, 1)
|
||||
@@ -244,18 +234,22 @@ func (s *userServer) SetGlobalRecvMessageOpt(ctx context.Context, req *pbUser.Se
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// ok
|
||||
func (s *userServer) AccountCheck(ctx context.Context, req *pbUser.AccountCheckReq) (resp *pbUser.AccountCheckResp, err error) {
|
||||
resp = &pbUser.AccountCheckResp{}
|
||||
if utils.Duplicate(req.CheckUserIDs) {
|
||||
return nil, constant.ErrArgs.Wrap("userID repeated")
|
||||
}
|
||||
err = token_verify.CheckAdmin(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
user, err := s.Find(ctx, req.CheckUserIDs)
|
||||
users, err := s.Find(ctx, req.CheckUserIDs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
userIDs := make(map[string]interface{}, 0)
|
||||
for _, v := range user {
|
||||
for _, v := range users {
|
||||
userIDs[v.UserID] = nil
|
||||
}
|
||||
for _, v := range req.CheckUserIDs {
|
||||
@@ -270,25 +264,19 @@ func (s *userServer) AccountCheck(ctx context.Context, req *pbUser.AccountCheckR
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// ok
|
||||
func (s *userServer) GetPaginationUsers(ctx context.Context, req *pbUser.GetPaginationUsersReq) (resp *pbUser.GetPaginationUsersResp, err error) {
|
||||
resp = &pbUser.GetPaginationUsersResp{}
|
||||
usersDB, total, err := s.Get(ctx, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
||||
usersDB, total, err := s.Page(ctx, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp.Total = int32(total)
|
||||
|
||||
for _, userDB := range usersDB {
|
||||
u, err := convert.NewDBUser(userDB).Convert()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp.Users = append(resp.Users, u)
|
||||
}
|
||||
resp.Users, err = (*convert.DBUser)(nil).DB2PB(usersDB)
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// ok
|
||||
func (s *userServer) UserRegister(ctx context.Context, req *pbUser.UserRegisterReq) (resp *pbUser.UserRegisterResp, err error) {
|
||||
resp = &pbUser.UserRegisterResp{}
|
||||
if utils.DuplicateAny(req.Users, func(e *server_api_params.UserInfo) string { return e.UserID }) {
|
||||
@@ -304,7 +292,7 @@ func (s *userServer) UserRegister(ctx context.Context, req *pbUser.UserRegisterR
|
||||
return nil, err
|
||||
}
|
||||
if exist {
|
||||
return nil, constant.ErrRegisteredAlready.Wrap("userID exist in db")
|
||||
return nil, constant.ErrRegisteredAlready.Wrap("userID registered already")
|
||||
}
|
||||
users, err := (*convert.PBUser)(nil).PB2DB(req.Users)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user