♻️ v4: 去掉添加 Agent ID 要求 需要更新面板 close #83

This commit is contained in:
naiba
2021-01-30 17:10:51 +08:00
parent 777cfd84ca
commit 0cdd0626f3
13 changed files with 52 additions and 76 deletions

View File

@@ -13,7 +13,7 @@ import (
pb "github.com/naiba/nezha/proto"
)
var Version = "v0.4.1" // !!记得修改 README 重的 badge 版本!!
var Version = "v0.4.2" // !!记得修改 README 重的 badge 版本!!
const (
SnapshotDelay = 3
@@ -26,6 +26,7 @@ var (
DB *gorm.DB
ServerList map[uint64]*model.Server
SecretToID map[string]uint64
ServerLock sync.RWMutex
SortedServerList []*model.Server

View File

@@ -2,7 +2,6 @@ package rpc
import (
"context"
"strconv"
"github.com/naiba/nezha/service/dao"
"google.golang.org/grpc/codes"
@@ -11,36 +10,34 @@ import (
)
type AuthHandler struct {
ClientID string
ClientSecret string
}
func (a *AuthHandler) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {
return map[string]string{"client_id": a.ClientID, "client_secret": a.ClientSecret}, nil
return map[string]string{"client_secret": a.ClientSecret}, nil
}
func (a *AuthHandler) RequireTransportSecurity() bool {
return !dao.Conf.Debug
}
func (a *AuthHandler) Check(ctx context.Context) (clientID uint64, err error) {
func (a *AuthHandler) Check(ctx context.Context) (uint64, error) {
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
err = status.Errorf(codes.Unauthenticated, "获取 metaData 失败")
return
return 0, status.Errorf(codes.Unauthenticated, "获取 metaData 失败")
}
var clientSecret string
if value, ok := md["client_id"]; ok {
clientID, _ = strconv.ParseUint(value[0], 10, 64)
}
if value, ok := md["client_secret"]; ok {
clientSecret = value[0]
}
dao.ServerLock.RLock()
defer dao.ServerLock.RUnlock()
if server, has := dao.ServerList[clientID]; !has || server.Secret != clientSecret {
err = status.Errorf(codes.Unauthenticated, "客户端认证失败")
clientID, hasID := dao.SecretToID[clientSecret]
_, hasServer := dao.ServerList[clientID]
if !hasID || !hasServer {
return 0, status.Errorf(codes.Unauthenticated, "客户端认证失败")
}
return
return clientID, nil
}