From 9a840f420ed754b903b13cbb589e9f7c0e6ad7f1 Mon Sep 17 00:00:00 2001 From: eson <9673575+githubcontent@user.noreply.gitee.com> Date: Mon, 3 Jul 2023 14:34:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/render/etc/render.yaml | 8 -- server/render/internal/config/config.go | 9 --- .../internal/handler/readimageshandler.go | 78 ------------------- server/render/internal/handler/routes.go | 27 ------- .../render/internal/handler/tounityhandler.go | 78 ------------------- .../render/internal/logic/readimageslogic.go | 34 -------- server/render/internal/logic/tounitylogic.go | 34 -------- server/render/internal/svc/servicecontext.go | 60 -------------- server/render/internal/types/types.go | 74 ------------------ server/render/render.go | 49 ------------ utils/auth/user_test.go | 8 +- 11 files changed, 5 insertions(+), 454 deletions(-) delete mode 100644 server/render/etc/render.yaml delete mode 100644 server/render/internal/config/config.go delete mode 100644 server/render/internal/handler/readimageshandler.go delete mode 100644 server/render/internal/handler/routes.go delete mode 100644 server/render/internal/handler/tounityhandler.go delete mode 100644 server/render/internal/logic/readimageslogic.go delete mode 100644 server/render/internal/logic/tounitylogic.go delete mode 100644 server/render/internal/svc/servicecontext.go delete mode 100644 server/render/internal/types/types.go delete mode 100644 server/render/render.go diff --git a/server/render/etc/render.yaml b/server/render/etc/render.yaml deleted file mode 100644 index a4865400..00000000 --- a/server/render/etc/render.yaml +++ /dev/null @@ -1,8 +0,0 @@ -Name: render -Host: 0.0.0.0 -Port: 8888 -SourceMysql: "" -Auth: - AccessSecret: fusen2023 - AccessExpire: 604800 - RefreshAfter: 345600 \ No newline at end of file diff --git a/server/render/internal/config/config.go b/server/render/internal/config/config.go deleted file mode 100644 index b24bb7d7..00000000 --- a/server/render/internal/config/config.go +++ /dev/null @@ -1,9 +0,0 @@ -package config - -import "github.com/zeromicro/go-zero/rest" - -type Config struct { - rest.RestConf - SourceMysql string - Auth types.Auth -} diff --git a/server/render/internal/handler/readimageshandler.go b/server/render/internal/handler/readimageshandler.go deleted file mode 100644 index 26577e20..00000000 --- a/server/render/internal/handler/readimageshandler.go +++ /dev/null @@ -1,78 +0,0 @@ -package handler - -import ( - "errors" - "net/http" - - "github.com/zeromicro/go-zero/core/logx" - "github.com/zeromicro/go-zero/rest/httpx" - - "fusenapi/utils/auth" - "fusenapi/utils/basic" - - "fusenapi/server/render/internal/logic" - "fusenapi/server/render/internal/svc" - "fusenapi/server/render/internal/types" -) - -func ReadImagesHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - - var ( - // 定义错误变量 - err error - // 定义用户信息变量 - userinfo *auth.UserInfo - ) - // 解析JWT token,并对空用户进行判断 - claims, err := svcCtx.ParseJwtToken(r) - // 如果解析JWT token出错,则返回未授权的JSON响应并记录错误消息 - if err != nil { - httpx.OkJsonCtx(r.Context(), w, &basic.Response{ - Code: 401, // 返回401状态码,表示未授权 - Message: "unauthorized", // 返回未授权信息 - }) - logx.Info("unauthorized:", err.Error()) // 记录错误日志 - return - } - - if claims != nil { - // 从token中获取对应的用户信息 - userinfo, err = auth.GetUserInfoFormMapClaims(claims) - // 如果获取用户信息出错,则返回未授权的JSON响应并记录错误消息 - if err != nil { - httpx.OkJsonCtx(r.Context(), w, &basic.Response{ - Code: 401, - Message: "unauthorized", - }) - logx.Info("unauthorized:", err.Error()) - return - } - } else { - // 如果claims为nil,则认为用户身份为白板用户 - userinfo = &auth.UserInfo{UserId: 0, GuestId: 0} - } - - var req types.RequestReadImages - // 如果端点有请求结构体,则使用httpx.Parse方法从HTTP请求体中解析请求数据 - if err := httpx.Parse(r, &req); err != nil { - httpx.OkJsonCtx(r.Context(), w, &basic.Response{ - Code: 510, - Message: "parameter error", - }) - logx.Info(err) - return - } - // 创建一个业务逻辑层实例 - l := logic.NewReadImagesLogic(r.Context(), svcCtx) - resp := l.ReadImages(&req, userinfo) - // 如果响应不为nil,则使用httpx.OkJsonCtx方法返回JSON响应; - if resp != nil { - httpx.OkJsonCtx(r.Context(), w, resp) - } else { - err := errors.New("server logic is error, resp must not be nil") - httpx.ErrorCtx(r.Context(), w, err) - logx.Error(err) - } - } -} diff --git a/server/render/internal/handler/routes.go b/server/render/internal/handler/routes.go deleted file mode 100644 index 2763e81b..00000000 --- a/server/render/internal/handler/routes.go +++ /dev/null @@ -1,27 +0,0 @@ -// Code generated by goctl. DO NOT EDIT. -package handler - -import ( - "net/http" - - "fusenapi/server/render/internal/svc" - - "github.com/zeromicro/go-zero/rest" -) - -func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { - server.AddRoutes( - []rest.Route{ - { - Method: http.MethodGet, - Path: "/render/to-unity", - Handler: ToUnityHandler(serverCtx), - }, - { - Method: http.MethodGet, - Path: "/render/read-images", - Handler: ReadImagesHandler(serverCtx), - }, - }, - ) -} diff --git a/server/render/internal/handler/tounityhandler.go b/server/render/internal/handler/tounityhandler.go deleted file mode 100644 index 80071f59..00000000 --- a/server/render/internal/handler/tounityhandler.go +++ /dev/null @@ -1,78 +0,0 @@ -package handler - -import ( - "errors" - "net/http" - - "github.com/zeromicro/go-zero/core/logx" - "github.com/zeromicro/go-zero/rest/httpx" - - "fusenapi/utils/auth" - "fusenapi/utils/basic" - - "fusenapi/server/render/internal/logic" - "fusenapi/server/render/internal/svc" - "fusenapi/server/render/internal/types" -) - -func ToUnityHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - - var ( - // 定义错误变量 - err error - // 定义用户信息变量 - userinfo *auth.UserInfo - ) - // 解析JWT token,并对空用户进行判断 - claims, err := svcCtx.ParseJwtToken(r) - // 如果解析JWT token出错,则返回未授权的JSON响应并记录错误消息 - if err != nil { - httpx.OkJsonCtx(r.Context(), w, &basic.Response{ - Code: 401, // 返回401状态码,表示未授权 - Message: "unauthorized", // 返回未授权信息 - }) - logx.Info("unauthorized:", err.Error()) // 记录错误日志 - return - } - - if claims != nil { - // 从token中获取对应的用户信息 - userinfo, err = auth.GetUserInfoFormMapClaims(claims) - // 如果获取用户信息出错,则返回未授权的JSON响应并记录错误消息 - if err != nil { - httpx.OkJsonCtx(r.Context(), w, &basic.Response{ - Code: 401, - Message: "unauthorized", - }) - logx.Info("unauthorized:", err.Error()) - return - } - } else { - // 如果claims为nil,则认为用户身份为白板用户 - userinfo = &auth.UserInfo{UserId: 0, GuestId: 0} - } - - var req types.RequestToUnity - // 如果端点有请求结构体,则使用httpx.Parse方法从HTTP请求体中解析请求数据 - if err := httpx.Parse(r, &req); err != nil { - httpx.OkJsonCtx(r.Context(), w, &basic.Response{ - Code: 510, - Message: "parameter error", - }) - logx.Info(err) - return - } - // 创建一个业务逻辑层实例 - l := logic.NewToUnityLogic(r.Context(), svcCtx) - resp := l.ToUnity(&req, userinfo) - // 如果响应不为nil,则使用httpx.OkJsonCtx方法返回JSON响应; - if resp != nil { - httpx.OkJsonCtx(r.Context(), w, resp) - } else { - err := errors.New("server logic is error, resp must not be nil") - httpx.ErrorCtx(r.Context(), w, err) - logx.Error(err) - } - } -} diff --git a/server/render/internal/logic/readimageslogic.go b/server/render/internal/logic/readimageslogic.go deleted file mode 100644 index 34b32eec..00000000 --- a/server/render/internal/logic/readimageslogic.go +++ /dev/null @@ -1,34 +0,0 @@ -package logic - -import ( - "fusenapi/utils/auth" - "fusenapi/utils/basic" - - "context" - - "fusenapi/server/render/internal/svc" - "fusenapi/server/render/internal/types" - - "github.com/zeromicro/go-zero/core/logx" -) - -type ReadImagesLogic struct { - logx.Logger - ctx context.Context - svcCtx *svc.ServiceContext -} - -func NewReadImagesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ReadImagesLogic { - return &ReadImagesLogic{ - Logger: logx.WithContext(ctx), - ctx: ctx, - svcCtx: svcCtx, - } -} - -func (l *ReadImagesLogic) ReadImages(req *types.RequestReadImages, userinfo *auth.UserInfo) (resp *basic.Response) { - // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) - // userinfo 传入值时, 一定不为null - - return resp.SetStatus(basic.CodeOK) -} diff --git a/server/render/internal/logic/tounitylogic.go b/server/render/internal/logic/tounitylogic.go deleted file mode 100644 index 0787ebef..00000000 --- a/server/render/internal/logic/tounitylogic.go +++ /dev/null @@ -1,34 +0,0 @@ -package logic - -import ( - "fusenapi/utils/auth" - "fusenapi/utils/basic" - - "context" - - "fusenapi/server/render/internal/svc" - "fusenapi/server/render/internal/types" - - "github.com/zeromicro/go-zero/core/logx" -) - -type ToUnityLogic struct { - logx.Logger - ctx context.Context - svcCtx *svc.ServiceContext -} - -func NewToUnityLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ToUnityLogic { - return &ToUnityLogic{ - Logger: logx.WithContext(ctx), - ctx: ctx, - svcCtx: svcCtx, - } -} - -func (l *ToUnityLogic) ToUnity(req *types.RequestToUnity, userinfo *auth.UserInfo) (resp *basic.Response) { - // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) - // userinfo 传入值时, 一定不为null - - return resp.SetStatus(basic.CodeOK) -} diff --git a/server/render/internal/svc/servicecontext.go b/server/render/internal/svc/servicecontext.go deleted file mode 100644 index cc585118..00000000 --- a/server/render/internal/svc/servicecontext.go +++ /dev/null @@ -1,60 +0,0 @@ -package svc - -import ( - "errors" - "fmt" - "fusenapi/server/render/internal/config" - "net/http" - - "fusenapi/initalize" - "fusenapi/model/gmodel" - - "github.com/golang-jwt/jwt" - "gorm.io/gorm" -) - -type ServiceContext struct { - Config config.Config - - MysqlConn *gorm.DB - AllModels *gmodel.AllModelsGen -} - -func NewServiceContext(c config.Config) *ServiceContext { - - return &ServiceContext{ - Config: c, - MysqlConn: initalize.InitMysql(c.SourceMysql), - AllModels: gmodel.NewAllModels(initalize.InitMysql(c.SourceMysql)), - } -} - -func (svcCtx *ServiceContext) ParseJwtToken(r *http.Request) (jwt.MapClaims, error) { - AuthKey := r.Header.Get("Authorization") - if AuthKey == "" { - return nil, nil - } - - if len(AuthKey) <= 50 { - return nil, errors.New(fmt.Sprint("Error parsing token, len:", len(AuthKey))) - } - - token, err := jwt.Parse(AuthKey, func(token *jwt.Token) (interface{}, error) { - // 检查签名方法是否为 HS256 - if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { - return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"]) - } - // 返回用于验证签名的密钥 - return []byte(svcCtx.Config.Auth.AccessSecret), nil - }) - if err != nil { - return nil, errors.New(fmt.Sprint("Error parsing token:", err)) - } - - // 验证成功返回 - if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid { - return claims, nil - } - - return nil, errors.New(fmt.Sprint("Invalid token", err)) -} diff --git a/server/render/internal/types/types.go b/server/render/internal/types/types.go deleted file mode 100644 index a27a43c6..00000000 --- a/server/render/internal/types/types.go +++ /dev/null @@ -1,74 +0,0 @@ -// Code generated by goctl. DO NOT EDIT. -package types - -import ( - "fusenapi/utils/basic" -) - -type RequestToUnity struct { -} - -type RequestReadImages struct { -} - -type Request struct { -} - -type Response struct { - Code int `json:"code"` - Message string `json:"msg"` - Data interface{} `json:"data"` -} - -type Auth struct { - AccessSecret string `json:"accessSecret"` - AccessExpire int64 `json:"accessExpire"` - RefreshAfter int64 `json:"refreshAfter"` -} - -type Pagnation struct { - TotalCount int64 `json:"total_count"` - TotalPage int64 `json:"total_page"` - CurPage int64 `json:"cur_page"` - PageSize int64 `json:"page_size"` -} - -// Set 设置Response的Code和Message值 -func (resp *Response) Set(Code int, Message string) *Response { - return &Response{ - Code: Code, - Message: Message, - } -} - -// Set 设置整个Response -func (resp *Response) SetWithData(Code int, Message string, Data interface{}) *Response { - return &Response{ - Code: Code, - Message: Message, - Data: Data, - } -} - -// SetStatus 设置默认StatusResponse(内部自定义) 默认msg, 可以带data, data只使用一个参数 -func (resp *Response) SetStatus(sr *basic.StatusResponse, data ...interface{}) *Response { - newResp := &Response{ - Code: sr.Code, - } - if len(data) == 1 { - newResp.Data = data[0] - } - return newResp -} - -// SetStatusWithMessage 设置默认StatusResponse(内部自定义) 非默认msg, 可以带data, data只使用一个参数 -func (resp *Response) SetStatusWithMessage(sr *basic.StatusResponse, msg string, data ...interface{}) *Response { - newResp := &Response{ - Code: sr.Code, - Message: msg, - } - if len(data) == 1 { - newResp.Data = data[0] - } - return newResp -} diff --git a/server/render/render.go b/server/render/render.go deleted file mode 100644 index 901f9a1f..00000000 --- a/server/render/render.go +++ /dev/null @@ -1,49 +0,0 @@ -package main - -import ( - "flag" - "fmt" - - "fusenapi/server/render/internal/config" - "fusenapi/server/render/internal/handler" - "fusenapi/server/render/internal/svc" - - "github.com/zeromicro/go-zero/core/conf" - "github.com/zeromicro/go-zero/rest" -) - -var configFile = flag.String("f", "etc/render.yaml", "the config file") - -func main() { - flag.Parse() - - var c config.Config - conf.MustLoad(*configFile, &c) - - server := rest.MustNewServer(c.RestConf) - defer server.Stop() - - ctx := svc.NewServiceContext(c) - handler.RegisterHandlers(server, ctx) - - fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port) - server.Start() -} - -// var testConfigFile = flag.String("f", "../etc/render.yaml", "the config file") -// var cnf config.Config - -// func GetTestServer() *rest.Server { -// flag.Parse() - -// conf.MustLoad(*testConfigFile, &cnf) - -// server := rest.MustNewServer(cnf.RestConf) -// defer server.Stop() - -// ctx := svc.NewServiceContext(cnf) -// handler.RegisterHandlers(server, ctx) - -// fmt.Printf("Starting server at %s:%d...\n", cnf.Host, cnf.Port) -// return server -// } diff --git a/utils/auth/user_test.go b/utils/auth/user_test.go index c4ae2042..87a3c7bf 100644 --- a/utils/auth/user_test.go +++ b/utils/auth/user_test.go @@ -1,8 +1,6 @@ package auth import ( - "crypto/sha256" - "encoding/base64" "log" "testing" "time" @@ -56,7 +54,11 @@ func TestGenBackendJwt(t *testing.T) { } func TestCase1(t *testing.T) { - log.Println(base64.URLEncoding.EncodeToString(sha256.New().Sum([]byte("fusen_backend_2023")))) + // log.Println(base64.URLEncoding.EncodeToString(sha256.New().Sum([]byte("fusen_backend_2023")))) + + // log.Println(basic.CBCEncrypt("sdfsdfsadsasdasadas", "1232132131232132")) + + // log.Println(basic.CBCDecrypt("8pq8ud33FfFZN2jUmBaNFfYbOeyrK1C/xVEtnbV2HfeG9KCGZfEcF6qrRwOHzWvT", "1232132131232132")) } func TestCheckValueRange(t *testing.T) {