From e36797c52d115c720574ce3808596e099b5d5806 Mon Sep 17 00:00:00 2001 From: Project_IO Date: Mon, 24 Mar 2025 12:14:58 +0900 Subject: [PATCH] chore: refactoring and optimized code --- internal/middleware/auth.go | 46 +++++++----------------- internal/middleware/header.go | 2 +- internal/routes/auth.go | 49 ++++++++++++++------------ internal/routes/privdir.go | 22 ++++-------- internal/routes/worker.go | 10 ++---- internal/service/auth.go | 13 +++---- internal/service/privdir.go | 47 +++++++++++++++++++++--- internal/{service => util}/database.go | 4 +-- package.json | 2 +- src/components/settings/index.tsx | 8 ++--- 10 files changed, 103 insertions(+), 100 deletions(-) rename internal/{service => util}/database.go (79%) diff --git a/internal/middleware/auth.go b/internal/middleware/auth.go index 64c34b9..ae220eb 100644 --- a/internal/middleware/auth.go +++ b/internal/middleware/auth.go @@ -43,65 +43,43 @@ func WorkerRoute(ctx *gin.Context) { username, password, ok := ctx.Request.BasicAuth() if !ok { - ctx.JSON(401, gin.H{ - "ok": 0, - "errno": "Unauthorized", - }) - ctx.Abort() + ctx.AbortWithStatus(401) return } ok, err = auth.VerifyToken(username, password) if err != nil { _, _ = fmt.Fprintln(os.Stderr, err) - ctx.JSON(401, gin.H{ - "ok": 0, - "errno": "Unauthorized", - }) - ctx.Abort() + + ctx.AbortWithStatus(401) + return + } + + if !ok { + ctx.AbortWithStatus(401) return } var acc *service.Account acc, err = auth.Read(username) if err != nil { - ctx.JSON(500, gin.H{ - "ok": 0, - "errno": "Internal Server Error", - }) + _, _ = fmt.Fprintln(os.Stderr, err) - ctx.Abort() + ctx.AbortWithStatus(500) return } privdir = service.NewPrivDirService(acc) - if !ok { - ctx.JSON(401, gin.H{ - "ok": 0, - "errno": "Unauthorized", - }) - - ctx.Abort() - return - } var d *service.PrivDir d, err = privdir.Read(target) if err != nil { - ctx.JSON(500, gin.H{ - "ok": 0, - "errno": "Internal Server Error", - }) - ctx.Abort() + ctx.AbortWithStatus(500) return } if d == nil { - ctx.JSON(401, gin.H{ - "ok": 0, - "errno": "Unauthorized", - }) - ctx.Abort() + ctx.AbortWithStatus(401) return } diff --git a/internal/middleware/header.go b/internal/middleware/header.go index 187cdf6..ab2f149 100644 --- a/internal/middleware/header.go +++ b/internal/middleware/header.go @@ -3,6 +3,6 @@ package middleware import "github.com/gin-gonic/gin" func Header(ctx *gin.Context) { - ctx.Header("X-Powered-By", "Golang") + ctx.Header("Server", "Golang,Gin") ctx.Next() } diff --git a/internal/routes/auth.go b/internal/routes/auth.go index 18e7c54..5e03a4e 100644 --- a/internal/routes/auth.go +++ b/internal/routes/auth.go @@ -18,17 +18,12 @@ func readAcc(ctx *gin.Context) { ok, err := auth.VerifyToken(username, password) if err != nil { - ctx.JSON(500, gin.H{ - "ok": 0, - "errno": "internal server error!", - }) + _, _ = fmt.Fprintln(os.Stderr, err) + ctx.Status(500) } if !ok { - ctx.JSON(401, gin.H{ - "ok": 0, - "errno": "unauthorized", - }) + ctx.Status(401) return } @@ -49,14 +44,18 @@ func updateAcc(ctx *gin.Context) { } ok, err := auth.Verify(username, old) - if err != nil || !ok { + if !ok { + if err != nil { + _, _ = fmt.Fprintln(os.Stderr, err) + } + ctx.Status(401) return } if err = auth.Update(username, pass); err != nil { - ctx.Status(500) _, _ = fmt.Fprintln(os.Stderr, err) + ctx.Status(500) return } @@ -73,8 +72,8 @@ func deleteAcc(ctx *gin.Context) { ok, err := auth.VerifyToken(username, password) if err != nil { - ctx.Status(500) _, _ = fmt.Fprintln(os.Stderr, err) + ctx.Status(500) return } @@ -84,8 +83,8 @@ func deleteAcc(ctx *gin.Context) { } if err = auth.Delete(username); err != nil { - ctx.Status(500) _, _ = fmt.Fprintln(os.Stderr, err) + ctx.Status(500) return } @@ -99,19 +98,19 @@ func login(ctx *gin.Context) { acc, err := auth.Read(username) if err != nil { - ctx.JSON(401, gin.H{ - "ok": 0, - "errno": "username or password not invalid", - }) + _, _ = fmt.Fprintln(os.Stderr, err) + ctx.Status(401) return } - ok, err := auth.Verify(username, password) - if err != nil || !ok { - ctx.JSON(401, gin.H{ - "ok": 0, - "errno": "username or password not invalid", - }) + var ok bool + ok, err = auth.Verify(username, password) + if !ok { + if err != nil { + _, _ = fmt.Fprintln(os.Stderr, err) + } + + ctx.Status(401) return } @@ -130,7 +129,11 @@ func check(ctx *gin.Context) { } ok, err := auth.VerifyToken(username, password) - if err != nil || !ok { + if !ok { + if err != nil { + _, _ = fmt.Fprintln(os.Stderr, err) + } + ctx.Status(401) return } diff --git a/internal/routes/privdir.go b/internal/routes/privdir.go index ba00af3..dcdf84e 100644 --- a/internal/routes/privdir.go +++ b/internal/routes/privdir.go @@ -12,10 +12,7 @@ func createDir(ctx *gin.Context) { auth := service.NewAuthService() username, password, ok := ctx.Request.BasicAuth() if !ok { - ctx.JSON(401, gin.H{ - "ok": 0, - "errno": "Unauthorized", - }) + ctx.Status(401) return } @@ -24,20 +21,15 @@ func createDir(ctx *gin.Context) { _, _ = fmt.Fprintln(os.Stderr, err) } - ctx.JSON(401, gin.H{ - "ok": 0, - "errno": "Unauthorized", - }) + ctx.Status(401) return } var acc *service.Account acc, err = auth.Read(username) if err != nil { - ctx.JSON(500, gin.H{ - "ok": 0, - "errno": "Interval Server Error", - }) + _, _ = fmt.Fprintln(os.Stderr, err) + ctx.Status(500) return } @@ -46,10 +38,8 @@ func createDir(ctx *gin.Context) { var id string if id, err = privdir.Create(path); err != nil { - ctx.JSON(500, gin.H{ - "ok": 0, - "errno": fmt.Sprintf("'%s' directory is already registered", path), - }) + _, _ = fmt.Fprintln(os.Stderr, err) + ctx.Status(500) return } diff --git a/internal/routes/worker.go b/internal/routes/worker.go index 75275a7..6e07b3f 100644 --- a/internal/routes/worker.go +++ b/internal/routes/worker.go @@ -82,18 +82,12 @@ func downloadPath(ctx *gin.Context) { _, _ = fmt.Fprintln(os.Stderr, err) } - ctx.JSON(404, gin.H{ - "ok": 0, - "errno": fmt.Errorf("path %s is not exist", path), - }) + ctx.String(404, fmt.Sprintf("path '%s' is not exist", path)) return } if data.IsDir { - ctx.JSON(404, gin.H{ - "ok": 0, - "errno": "file is not exist", - }) + ctx.String(404, fmt.Sprintf("path '%s' is directory, you cannot download directory", path)) return } diff --git a/internal/service/auth.go b/internal/service/auth.go index a34b3ea..4d7c41b 100644 --- a/internal/service/auth.go +++ b/internal/service/auth.go @@ -6,6 +6,7 @@ import ( "encoding/base64" "encoding/hex" "fmt" + "git.wh64.net/devproje/kuma-archive/internal/util" "os" "strings" ) @@ -23,7 +24,7 @@ func NewAuthService() *AuthService { } func init() { - db, err := Open() + db, err := util.OpenDatabase() if err != nil { _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) return @@ -50,7 +51,7 @@ func init() { } func (s *AuthService) Create(data *Account) error { - db, err := Open() + db, err := util.OpenDatabase() if err != nil { return err } @@ -71,7 +72,7 @@ func (s *AuthService) Create(data *Account) error { } func (s *AuthService) Read(username string) (*Account, error) { - db, err := Open() + db, err := util.OpenDatabase() if err != nil { return nil, err } @@ -84,7 +85,7 @@ func (s *AuthService) Read(username string) (*Account, error) { defer stmt.Close() var account Account - if err := stmt.QueryRow(username).Scan(&account.Username, &account.Password, &account.Salt); err != nil { + if err = stmt.QueryRow(username).Scan(&account.Username, &account.Password, &account.Salt); err != nil { return nil, err } @@ -92,7 +93,7 @@ func (s *AuthService) Read(username string) (*Account, error) { } func (s *AuthService) Update(username, password string) error { - db, err := Open() + db, err := util.OpenDatabase() if err != nil { return err } @@ -113,7 +114,7 @@ func (s *AuthService) Update(username, password string) error { } func (s *AuthService) Delete(username string) error { - db, err := Open() + db, err := util.OpenDatabase() if err != nil { return err } diff --git a/internal/service/privdir.go b/internal/service/privdir.go index b2b2a3f..61ca6ac 100644 --- a/internal/service/privdir.go +++ b/internal/service/privdir.go @@ -2,6 +2,7 @@ package service import ( "fmt" + "git.wh64.net/devproje/kuma-archive/internal/util" "github.com/google/uuid" "os" "strings" @@ -25,7 +26,7 @@ type test interface { } func init() { - db, err := Open() + db, err := util.OpenDatabase() if err != nil { _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) return @@ -61,7 +62,7 @@ func NewPrivDirService(acc *Account) *PrivDirService { } func (sv *PrivDirService) Create(dirname string) (string, error) { - db, err := Open() + db, err := util.OpenDatabase() if err != nil { return "", err } @@ -79,7 +80,7 @@ func (sv *PrivDirService) Create(dirname string) (string, error) { } func (sv *PrivDirService) Read(dirname string) (*PrivDir, error) { - db, err := Open() + db, err := util.OpenDatabase() if err != nil { return nil, err } @@ -102,7 +103,7 @@ func (sv *PrivDirService) Read(dirname string) (*PrivDir, error) { } func (sv *PrivDirService) Delete(dirname string) error { - db, err := Open() + db, err := util.OpenDatabase() if err != nil { return err } @@ -123,7 +124,7 @@ func (sv *PrivDirService) Delete(dirname string) error { } func (sv *PrivDirService) Query() []PrivDir { - db, err := Open() + db, err := util.OpenDatabase() if err != nil { _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) return nil @@ -157,3 +158,39 @@ func (sv *PrivDirService) Query() []PrivDir { return dirs } + +func (sv *PrivDirService) QueryUser() []PrivDir { + db, err := util.OpenDatabase() + if err != nil { + _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) + return nil + } + defer db.Close() + + stmt, err := db.Prepare("select * from PrivDir where owner = ?;") + if err != nil { + _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) + return nil + } + defer stmt.Close() + + rows, err := stmt.Query(sv.acc.Username) + if err != nil { + _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) + return nil + } + defer rows.Close() + + var dirs []PrivDir + for rows.Next() { + var data PrivDir + if err = rows.Scan(&data.Id, &data.DirName, &data.Owner); err != nil { + _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) + return nil + } + + dirs = append(dirs, data) + } + + return dirs +} diff --git a/internal/service/database.go b/internal/util/database.go similarity index 79% rename from internal/service/database.go rename to internal/util/database.go index 35bc4f2..b25ddd4 100644 --- a/internal/service/database.go +++ b/internal/util/database.go @@ -1,4 +1,4 @@ -package service +package util import ( "database/sql" @@ -8,6 +8,6 @@ import ( _ "github.com/mattn/go-sqlite3" ) -func Open() (*sql.DB, error) { +func OpenDatabase() (*sql.DB, error) { return sql.Open("sqlite3", filepath.Join(config.ROOT_DIRECTORY, "data.db")) } diff --git a/package.json b/package.json index 73ddf30..9ec9f1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kuma-archive", - "version": "0.1.0-alpha.1", + "version": "0.1.0", "type": "module", "license": "MIT", "scripts": { diff --git a/src/components/settings/index.tsx b/src/components/settings/index.tsx index d650706..c3839c2 100644 --- a/src/components/settings/index.tsx +++ b/src/components/settings/index.tsx @@ -35,10 +35,10 @@ function Settings() {

General

- {/*

Private Directory

*/} - {/* */} - {/* TODO: create private directory setting */} - {/* */} +

Private Directory

+ + {/*<>*/} + ); }