Merge remote-tracking branch 'origin/v2.3.0release' into v2.3.0release

This commit is contained in:
skiffer-git 2022-09-18 10:51:07 +08:00
commit a4fe45d58c
7 changed files with 74 additions and 24 deletions

View File

@ -234,6 +234,8 @@ push:
appKey: "" appKey: ""
intent: "" intent: ""
enable: false enable: false
channelID: ""
channelName: ""
fcm: #firebase cloud message 消息推送 fcm: #firebase cloud message 消息推送
serviceAccount: "openim-5c6c0-firebase-adminsdk-ppwol-8765884a78.json" #帐号文件,此处需要改修配置,并且这个文件放在 config目录下 serviceAccount: "openim-5c6c0-firebase-adminsdk-ppwol-8765884a78.json" #帐号文件,此处需要改修配置,并且这个文件放在 config目录下
enable: false enable: false

View File

@ -48,17 +48,7 @@ func CheckLoginLimit(c *gin.Context) {
var Limited bool var Limited bool
var LimitError error var LimitError error
Limited, LimitError = imdb.IsLimitLoginIp(ip) // 指定账户指定ip才能登录
if LimitError != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), LimitError, ip)
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.ErrDB.ErrCode, "errMsg": LimitError})
return
}
if Limited {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), Limited, ip, req.UserID)
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.LoginLimit, "errMsg": "ip limited Login"})
return
}
Limited, LimitError = imdb.IsLimitUserLoginIp(user.UserID, ip) Limited, LimitError = imdb.IsLimitUserLoginIp(user.UserID, ip)
if LimitError != nil { if LimitError != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), LimitError, ip) log.NewError(req.OperationID, utils.GetSelfFuncName(), LimitError, ip)
@ -70,6 +60,20 @@ func CheckLoginLimit(c *gin.Context) {
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.LoginLimit, "errMsg": "user ip limited Login"}) c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.LoginLimit, "errMsg": "user ip limited Login"})
return return
} }
// 该ip不能登录
Limited, LimitError = imdb.IsLimitLoginIp(ip)
if LimitError != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), LimitError, ip)
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.ErrDB.ErrCode, "errMsg": LimitError})
return
}
if Limited {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), Limited, ip, req.UserID)
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.LoginLimit, "errMsg": "ip limited Login"})
return
}
Limited, LimitError = imdb.UserIsBlock(user.UserID) Limited, LimitError = imdb.UserIsBlock(user.UserID)
if LimitError != nil { if LimitError != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), LimitError, user.UserID) log.NewError(req.OperationID, utils.GetSelfFuncName(), LimitError, user.UserID)

View File

@ -90,6 +90,8 @@ type Android struct {
type Notification struct { type Notification struct {
Title string `json:"title"` Title string `json:"title"`
Body string `json:"body"` Body string `json:"body"`
ChannelID string `json:"channelID"`
ChannelName string `json:"ChannelName"`
ClickType string `json:"click_type"` ClickType string `json:"click_type"`
} }
@ -138,6 +140,8 @@ func (g *Getui) Push(userIDList []string, title, detailContent, operationID stri
Title: title, Title: title,
Body: detailContent, Body: detailContent,
ClickType: "startapp", ClickType: "startapp",
ChannelID: config.Config.Push.Getui.ChannelID,
ChannelName: config.Config.Push.Getui.ChannelName,
} }
pushReq.PushChannel.Ios.Aps.Sound = "default" pushReq.PushChannel.Ios.Aps.Sound = "default"
pushReq.PushChannel.Ios.Aps.Alert = Alert{ pushReq.PushChannel.Ios.Aps.Alert = Alert{

View File

@ -208,6 +208,8 @@ type config struct {
Enable bool `yaml:"enable"` Enable bool `yaml:"enable"`
Intent string `yaml:"intent"` Intent string `yaml:"intent"`
MasterSecret string `yaml:"masterSecret"` MasterSecret string `yaml:"masterSecret"`
ChannelID string `yaml:"channelID"`
ChannelName string `yaml:"channelName"`
} }
Fcm struct { Fcm struct {
ServiceAccount string `yaml:"serviceAccount"` ServiceAccount string `yaml:"serviceAccount"`

View File

@ -337,4 +337,4 @@ const StatisticsTimeInterval = 60
const MaxNotificationNum = 100 const MaxNotificationNum = 100
const CurrentVersion = "v2.3.3-rc0" const CurrentVersion = "v2.3.3"

View File

@ -26,13 +26,22 @@ func IsLimitLoginIp(LoginIp string) (bool, error) {
return count > 0, nil return count > 0, nil
} }
func IsLimitUserLoginIp(userID string, LoginIp string) (bool, error) { func IsLimitUserLoginIp(userID string, loginIp string) (limit bool, err error) {
//如果已经存在则放行 //如果已经存在则放行
var count int64 var count int64
if err := db.DB.MysqlDB.DefaultGormDB().Table("user_ip_limits").Where("ip=? and user_id=?", LoginIp, userID).Count(&count).Error; err != nil { result := db.DB.MysqlDB.DefaultGormDB().Table("user_ip_limits").Where("user_id=?", userID).Count(&count)
return false, err if err := result.Error; err != nil {
return true, err
} }
return count == 0, nil if count < 1 {
return false, nil
}
result = db.DB.MysqlDB.DefaultGormDB().Table("user_ip_limits").Where("user_id=? and ip = ?", userID, loginIp).Count(&count)
if err := result.Error; err != nil {
return true, err
}
return count > 0, nil
} }
func QueryIPLimits(ip string) (*db.IpLimit, error) { func QueryIPLimits(ip string) (*db.IpLimit, error) {

View File

@ -6,7 +6,6 @@ import (
"Open_IM/pkg/utils" "Open_IM/pkg/utils"
"context" "context"
"fmt" "fmt"
"go.etcd.io/etcd/api/v3/mvccpb" "go.etcd.io/etcd/api/v3/mvccpb"
clientv3 "go.etcd.io/etcd/client/v3" clientv3 "go.etcd.io/etcd/client/v3"
@ -271,8 +270,38 @@ func (r *Resolver) watch(prefix string, addrList []resolver.Address) {
} }
} }
var Conn4UniqueList []*grpc.ClientConn
var Conn4UniqueListMtx sync.RWMutex
var IsUpdateStart bool
var IsUpdateStartMtx sync.RWMutex
func GetDefaultGatewayConn4Unique(schema, etcdaddr, operationID string) []*grpc.ClientConn { func GetDefaultGatewayConn4Unique(schema, etcdaddr, operationID string) []*grpc.ClientConn {
grpcConns := getConn4Unique(schema, etcdaddr, config.Config.RpcRegisterName.OpenImRelayName) IsUpdateStartMtx.Lock()
if IsUpdateStart == false {
Conn4UniqueList = getConn4Unique(schema, etcdaddr, config.Config.RpcRegisterName.OpenImRelayName)
go func() {
for {
select {
case <-time.After(time.Second * time.Duration(30)):
Conn4UniqueListMtx.Lock()
Conn4UniqueList = getConn4Unique(schema, etcdaddr, config.Config.RpcRegisterName.OpenImRelayName)
Conn4UniqueListMtx.Unlock()
}
}
}()
}
IsUpdateStart = true
IsUpdateStartMtx.Unlock()
Conn4UniqueListMtx.Lock()
var clientConnList []*grpc.ClientConn
for _, v := range Conn4UniqueList {
clientConnList = append(clientConnList, v)
}
Conn4UniqueListMtx.Unlock()
//grpcConns := getConn4Unique(schema, etcdaddr, config.Config.RpcRegisterName.OpenImRelayName)
grpcConns := clientConnList
if len(grpcConns) > 0 { if len(grpcConns) > 0 {
return grpcConns return grpcConns
} }