From cc4f1f1f0738b05ffb2ba60b15338672681a58b3 Mon Sep 17 00:00:00 2001 From: ltf Date: Sat, 19 Feb 2022 11:46:44 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=8D=95=E5=AE=B9=E5=99=A8=E5=8D=95?= =?UTF-8?q?=E8=BF=9B=E7=A8=8B=E6=A8=A1=E5=BC=8F=E4=B8=ADetcd=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E7=9A=84=E6=9C=8D=E5=8A=A1=E5=92=8C=E5=8D=95=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E5=A4=9A=E8=BF=9B=E7=A8=8B=E6=97=B6=E5=86=B2=E7=AA=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.yaml | 1 + internal/demo/register/login.go | 7 +++-- internal/demo/register/set_password.go | 7 +++-- internal/msg_gateway/gate/rpc_server.go | 7 +++-- internal/push/logic/push_rpc_server.go | 9 ++++-- internal/rpc/auth/auth.go | 6 ++-- internal/rpc/friend/firend.go | 7 +++-- internal/rpc/group/group.go | 37 +++++++++++++------------ internal/rpc/msg/rpcChat.go | 7 +++-- internal/rpc/user/user.go | 4 ++- pkg/utils/get_server_ip.go | 6 ++++ 11 files changed, 62 insertions(+), 36 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 9b735520c..fe6574d3f 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -58,6 +58,7 @@ kafka: serverip: 0.0.0.0 # endpoints 内部组件间访问的端点host名称,访问时,可以内部直接访问 host:port 来访问 +# 如果需要使用ip访问(比如在单容器里面运行所有组件时),可以直接把下列名称直接改为ip地址(比如0.0.0.0) endpoints: api: openim_api cmsapi: openim_cms_api diff --git a/internal/demo/register/login.go b/internal/demo/register/login.go index 944a9d039..3b8aaf6f7 100644 --- a/internal/demo/register/login.go +++ b/internal/demo/register/login.go @@ -7,11 +7,12 @@ import ( "Open_IM/pkg/common/db/mysql_model/im_mysql_model" http2 "Open_IM/pkg/common/http" "Open_IM/pkg/common/log" - "Open_IM/pkg/utils" "encoding/json" "fmt" - "github.com/gin-gonic/gin" "net/http" + + "github.com/gin-gonic/gin" + "github.com/spf13/viper" ) type ParamsLogin struct { @@ -46,7 +47,7 @@ func Login(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"errCode": constant.PasswordErr, "errMsg": "Mobile phone number is not registered"}) return } - url := fmt.Sprintf("http://%s:10000/auth/user_token", utils.ServerIP) + url := fmt.Sprintf("http://%s:10000/auth/user_token", viper.GetString("endpoints.api")) openIMGetUserToken := api.UserTokenReq{} openIMGetUserToken.OperationID = params.OperationID openIMGetUserToken.Platform = params.Platform diff --git a/internal/demo/register/set_password.go b/internal/demo/register/set_password.go index a0558fa5a..aea2f09d2 100644 --- a/internal/demo/register/set_password.go +++ b/internal/demo/register/set_password.go @@ -8,12 +8,13 @@ import ( "Open_IM/pkg/common/db/mysql_model/im_mysql_model" http2 "Open_IM/pkg/common/http" "Open_IM/pkg/common/log" - "Open_IM/pkg/utils" "encoding/json" "fmt" + "net/http" + "github.com/garyburd/redigo/redis" "github.com/gin-gonic/gin" - "net/http" + "github.com/spf13/viper" ) type ParamsSetPassword struct { @@ -48,7 +49,7 @@ func SetPassword(c *gin.Context) { return } } - url := fmt.Sprintf("http://%s:10000/auth/user_register", utils.ServerIP) + url := fmt.Sprintf("http://%s:10000/auth/user_register", viper.GetString("endpoints.api")) openIMRegisterReq := api.UserRegisterReq{} openIMRegisterReq.OperationID = params.OperationID openIMRegisterReq.Platform = params.Platform diff --git a/internal/msg_gateway/gate/rpc_server.go b/internal/msg_gateway/gate/rpc_server.go index 4c96b9241..2d2c6748d 100644 --- a/internal/msg_gateway/gate/rpc_server.go +++ b/internal/msg_gateway/gate/rpc_server.go @@ -12,10 +12,12 @@ import ( "context" "encoding/gob" "fmt" - "github.com/golang/protobuf/proto" "net" "strings" + "github.com/golang/protobuf/proto" + "github.com/spf13/viper" + "github.com/gorilla/websocket" "google.golang.org/grpc" ) @@ -45,7 +47,8 @@ func (r *RPCServer) run() { srv := grpc.NewServer() defer srv.GracefulStop() pbRelay.RegisterOnlineMessageRelayServiceServer(srv, r) - err = getcdv3.RegisterEtcd4Unique(r.etcdSchema, strings.Join(r.etcdAddr, ","), ip, r.rpcPort, r.rpcRegisterName, 10) + host := viper.GetString("endpoints.msg_gateway") + err = getcdv3.RegisterEtcd4Unique(r.etcdSchema, strings.Join(r.etcdAddr, ","), host, r.rpcPort, r.rpcRegisterName, 10) if err != nil { log.ErrorByKv("register push message rpc to etcd err", "", "err", err.Error()) } diff --git a/internal/push/logic/push_rpc_server.go b/internal/push/logic/push_rpc_server.go index b622ba721..451db7191 100644 --- a/internal/push/logic/push_rpc_server.go +++ b/internal/push/logic/push_rpc_server.go @@ -4,12 +4,14 @@ import ( "Open_IM/pkg/common/config" "Open_IM/pkg/common/log" "Open_IM/pkg/grpc-etcdv3/getcdv3" - "Open_IM/pkg/proto/push" + pbPush "Open_IM/pkg/proto/push" "Open_IM/pkg/utils" "context" - "google.golang.org/grpc" "net" "strings" + + "github.com/spf13/viper" + "google.golang.org/grpc" ) type RPCServer struct { @@ -37,7 +39,8 @@ func (r *RPCServer) run() { srv := grpc.NewServer() defer srv.GracefulStop() pbPush.RegisterPushMsgServiceServer(srv, r) - err = getcdv3.RegisterEtcd(r.etcdSchema, strings.Join(r.etcdAddr, ","), ip, r.rpcPort, r.rpcRegisterName, 10) + host := viper.GetString("endpoints.push") + err = getcdv3.RegisterEtcd(r.etcdSchema, strings.Join(r.etcdAddr, ","), host, r.rpcPort, r.rpcRegisterName, 10) if err != nil { log.ErrorByKv("register push module rpc to etcd err", "", "err", err.Error()) } diff --git a/internal/rpc/auth/auth.go b/internal/rpc/auth/auth.go index bb804d6e2..c67f709f8 100644 --- a/internal/rpc/auth/auth.go +++ b/internal/rpc/auth/auth.go @@ -16,6 +16,7 @@ import ( "Open_IM/pkg/common/config" + "github.com/spf13/viper" "google.golang.org/grpc" ) @@ -88,10 +89,11 @@ func (rpc *rpcAuth) Run() { //service registers with etcd pbAuth.RegisterAuthServer(srv, rpc) - err = getcdv3.RegisterEtcd(rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName, 10) + host := viper.GetString("endpoints.rpc_auth") + err = getcdv3.RegisterEtcd(rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), host, rpc.rpcPort, rpc.rpcRegisterName, 10) if err != nil { log.NewError("0", "RegisterEtcd failed ", err.Error(), - rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName) + rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), host, rpc.rpcPort, rpc.rpcRegisterName) return } log.NewInfo("0", "RegisterAuthServer ok ", rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName) diff --git a/internal/rpc/friend/firend.go b/internal/rpc/friend/firend.go index dcea5be2a..427a565fb 100644 --- a/internal/rpc/friend/firend.go +++ b/internal/rpc/friend/firend.go @@ -14,11 +14,13 @@ import ( sdkws "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" - "google.golang.org/grpc" "net" "strconv" "strings" "time" + + "github.com/spf13/viper" + "google.golang.org/grpc" ) type friendServer struct { @@ -56,7 +58,8 @@ func (s *friendServer) Run() { defer srv.GracefulStop() //User friend related services register to etcd pbFriend.RegisterFriendServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + host := viper.GetString("endpoints.rpc_friend") + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), host, s.rpcPort, s.rpcRegisterName, 10) if err != nil { log.NewError("0", "RegisterEtcd failed ", err.Error(), s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName) return diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 7d5fd547f..c8069e7ed 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -20,6 +20,7 @@ import ( "strings" "time" + "github.com/spf13/viper" "google.golang.org/grpc" ) @@ -57,7 +58,8 @@ func (s *groupServer) Run() { defer srv.GracefulStop() //Service registers with etcd pbGroup.RegisterGroupServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + host := viper.GetString("endpoints.rpc_group") + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), host, s.rpcPort, s.rpcRegisterName, 10) if err != nil { log.NewError("0", "RegisterEtcd failed ", err.Error()) return @@ -642,9 +644,9 @@ func (s *groupServer) TransferGroupOwner(_ context.Context, req *pbGroup.Transfe } func (s *groupServer) GetGroupById(_ context.Context, req *pbGroup.GetGroupByIdReq) (*pbGroup.GetGroupByIdResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbGroup.GetGroupByIdResp{CMSGroup: &pbGroup.CMSGroup{ - GroupInfo: &open_im_sdk.GroupInfo{}, + GroupInfo: &open_im_sdk.GroupInfo{}, }} group, err := imdb.GetGroupById(req.GroupId) if err != nil { @@ -682,7 +684,7 @@ func (s *groupServer) GetGroup(_ context.Context, req *pbGroup.GetGroupReq) (*pb log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupsByName error", req.String()) return resp, http.WrapError(constant.ErrDB) } - nums, err := imdb.GetGroupsCountNum(db.Group{GroupName:req.GroupName}) + nums, err := imdb.GetGroupsCountNum(db.Group{GroupName: req.GroupName}) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupsCountNum error", err.Error()) return resp, http.WrapError(constant.ErrDB) @@ -707,7 +709,7 @@ func (s *groupServer) GetGroup(_ context.Context, req *pbGroup.GetGroupReq) (*pb CreatorUserID: v.CreatorUserID, }, GroupMasterName: groupMember.Nickname, - GroupMasterId: groupMember.UserID, + GroupMasterId: groupMember.UserID, }) } return resp, nil @@ -747,7 +749,7 @@ func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (* Status: v.Status, CreatorUserID: v.CreatorUserID, }, - GroupMasterId: groupMember.UserID, + GroupMasterId: groupMember.UserID, GroupMasterName: groupMember.Nickname, }) } @@ -786,11 +788,11 @@ func (s *groupServer) OperateUserRole(_ context.Context, req *pbGroup.OperateUse } func (s *groupServer) GetGroupMembersCMS(_ context.Context, req *pbGroup.GetGroupMembersCMSReq) (*pbGroup.GetGroupMembersCMSResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "args:", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "args:", req.String()) resp := &pbGroup.GetGroupMembersCMSResp{} groupMembers, err := imdb.GetGroupMembersByGroupIdCMS(req.GroupId, req.UserName, req.Pagination.ShowNumber, req.Pagination.PageNumber) if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(),"GetGroupMembersByGroupIdCMS Error", err.Error()) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMembersByGroupIdCMS Error", err.Error()) return resp, http.WrapError(constant.ErrDB) } groupMembersCount, err := imdb.GetGroupMembersCount(req.GroupId, req.UserName) @@ -802,13 +804,13 @@ func (s *groupServer) GetGroupMembersCMS(_ context.Context, req *pbGroup.GetGrou resp.MemberNums = groupMembersCount for _, groupMember := range groupMembers { resp.Members = append(resp.Members, &open_im_sdk.GroupMemberFullInfo{ - GroupID: req.GroupId, - UserID: groupMember.UserID, - RoleLevel: groupMember.RoleLevel, - JoinTime: groupMember.JoinTime.Unix(), - Nickname: groupMember.Nickname, - FaceURL: groupMember.FaceURL, - JoinSource: groupMember.JoinSource, + GroupID: req.GroupId, + UserID: groupMember.UserID, + RoleLevel: groupMember.RoleLevel, + JoinTime: groupMember.JoinTime.Unix(), + Nickname: groupMember.Nickname, + FaceURL: groupMember.FaceURL, + JoinSource: groupMember.JoinSource, }) } resp.Pagination = &open_im_sdk.ResponsePagination{ @@ -870,7 +872,7 @@ func (s *groupServer) AddGroupMembersCMS(_ context.Context, req *pbGroup.AddGrou if err := imdb.InsertIntoGroupMember(groupMember); err != nil { log.NewError(req.OperationId, utils.GetSelfFuncName(), "InsertIntoGroupMember failed", req.String()) resp.Failed = append(resp.Failed, userId) - } else { + } else { resp.Success = append(resp.Success, userId) chat.MemberInvitedNotification(req.OperationId, req.GroupId, req.OpUserId, "admin add", resp.Success) } @@ -879,9 +881,8 @@ func (s *groupServer) AddGroupMembersCMS(_ context.Context, req *pbGroup.AddGrou return resp, nil } - func (s *groupServer) GetUserReqApplicationList(_ context.Context, req *pbGroup.GetUserReqApplicationListReq) (*pbGroup.GetUserReqApplicationListResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbGroup.GetUserReqApplicationListResp{} groupRequests, err := imdb.GetUserReqGroupByUserID(req.UserID) if err != nil { diff --git a/internal/rpc/msg/rpcChat.go b/internal/rpc/msg/rpcChat.go index 43113ae51..ef3bb6083 100644 --- a/internal/rpc/msg/rpcChat.go +++ b/internal/rpc/msg/rpcChat.go @@ -7,10 +7,12 @@ import ( "Open_IM/pkg/grpc-etcdv3/getcdv3" pbChat "Open_IM/pkg/proto/chat" "Open_IM/pkg/utils" - "google.golang.org/grpc" "net" "strconv" "strings" + + "github.com/spf13/viper" + "google.golang.org/grpc" ) type rpcChat struct { @@ -51,7 +53,8 @@ func (rpc *rpcChat) Run() { //service registers with etcd pbChat.RegisterChatServer(srv, rpc) - err = getcdv3.RegisterEtcd(rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), utils.ServerIP, rpc.rpcPort, rpc.rpcRegisterName, 10) + host := viper.GetString("endpoints.rpc_msg") + err = getcdv3.RegisterEtcd(rpc.etcdSchema, strings.Join(rpc.etcdAddr, ","), host, rpc.rpcPort, rpc.rpcRegisterName, 10) if err != nil { log.Error("", "", "register rpc get_token to etcd failed, err = %s", err.Error()) return diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index b0ebf593a..ab0a0a5dd 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -21,6 +21,7 @@ import ( "strconv" "strings" + "github.com/spf13/viper" "google.golang.org/grpc" ) @@ -59,7 +60,8 @@ func (s *userServer) Run() { defer srv.GracefulStop() //Service registers with etcd pbUser.RegisterUserServer(srv, s) - err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName, 10) + host := viper.GetString("endpoints.rpc_user") + err = getcdv3.RegisterEtcd(s.etcdSchema, strings.Join(s.etcdAddr, ","), host, s.rpcPort, s.rpcRegisterName, 10) if err != nil { log.NewError("0", "RegisterEtcd failed ", err.Error(), s.etcdSchema, strings.Join(s.etcdAddr, ","), ip, s.rpcPort, s.rpcRegisterName) return diff --git a/pkg/utils/get_server_ip.go b/pkg/utils/get_server_ip.go index 239c75a19..87b5eac20 100644 --- a/pkg/utils/get_server_ip.go +++ b/pkg/utils/get_server_ip.go @@ -5,6 +5,12 @@ import ( "net" ) +// Deprecated: This value is no longer recommended. +// 不在建议使用该值:主要因为该值在每个组件部署时无法表示各自的实际ip,建议使用viper读取目标配置 +// +// 比如: +// +// 需要读取rpc_auth地址时:viper.GetString("endpoints.rpc_auth") var ServerIP = "" func init() {