chore: refactoring and optimized code

This commit is contained in:
Project_IO 2025-03-24 12:14:58 +09:00
parent 0350cf4de9
commit e36797c52d
10 changed files with 103 additions and 100 deletions

View file

@ -43,65 +43,43 @@ func WorkerRoute(ctx *gin.Context) {
username, password, ok := ctx.Request.BasicAuth() username, password, ok := ctx.Request.BasicAuth()
if !ok { if !ok {
ctx.JSON(401, gin.H{ ctx.AbortWithStatus(401)
"ok": 0,
"errno": "Unauthorized",
})
ctx.Abort()
return return
} }
ok, err = auth.VerifyToken(username, password) ok, err = auth.VerifyToken(username, password)
if err != nil { if err != nil {
_, _ = fmt.Fprintln(os.Stderr, err) _, _ = fmt.Fprintln(os.Stderr, err)
ctx.JSON(401, gin.H{
"ok": 0, ctx.AbortWithStatus(401)
"errno": "Unauthorized", return
}) }
ctx.Abort()
if !ok {
ctx.AbortWithStatus(401)
return return
} }
var acc *service.Account var acc *service.Account
acc, err = auth.Read(username) acc, err = auth.Read(username)
if err != nil { if err != nil {
ctx.JSON(500, gin.H{ _, _ = fmt.Fprintln(os.Stderr, err)
"ok": 0,
"errno": "Internal Server Error",
})
ctx.Abort() ctx.AbortWithStatus(500)
return return
} }
privdir = service.NewPrivDirService(acc) privdir = service.NewPrivDirService(acc)
if !ok {
ctx.JSON(401, gin.H{
"ok": 0,
"errno": "Unauthorized",
})
ctx.Abort()
return
}
var d *service.PrivDir var d *service.PrivDir
d, err = privdir.Read(target) d, err = privdir.Read(target)
if err != nil { if err != nil {
ctx.JSON(500, gin.H{ ctx.AbortWithStatus(500)
"ok": 0,
"errno": "Internal Server Error",
})
ctx.Abort()
return return
} }
if d == nil { if d == nil {
ctx.JSON(401, gin.H{ ctx.AbortWithStatus(401)
"ok": 0,
"errno": "Unauthorized",
})
ctx.Abort()
return return
} }

View file

@ -3,6 +3,6 @@ package middleware
import "github.com/gin-gonic/gin" import "github.com/gin-gonic/gin"
func Header(ctx *gin.Context) { func Header(ctx *gin.Context) {
ctx.Header("X-Powered-By", "Golang") ctx.Header("Server", "Golang,Gin")
ctx.Next() ctx.Next()
} }

View file

@ -18,17 +18,12 @@ func readAcc(ctx *gin.Context) {
ok, err := auth.VerifyToken(username, password) ok, err := auth.VerifyToken(username, password)
if err != nil { if err != nil {
ctx.JSON(500, gin.H{ _, _ = fmt.Fprintln(os.Stderr, err)
"ok": 0, ctx.Status(500)
"errno": "internal server error!",
})
} }
if !ok { if !ok {
ctx.JSON(401, gin.H{ ctx.Status(401)
"ok": 0,
"errno": "unauthorized",
})
return return
} }
@ -49,14 +44,18 @@ func updateAcc(ctx *gin.Context) {
} }
ok, err := auth.Verify(username, old) ok, err := auth.Verify(username, old)
if err != nil || !ok { if !ok {
if err != nil {
_, _ = fmt.Fprintln(os.Stderr, err)
}
ctx.Status(401) ctx.Status(401)
return return
} }
if err = auth.Update(username, pass); err != nil { if err = auth.Update(username, pass); err != nil {
ctx.Status(500)
_, _ = fmt.Fprintln(os.Stderr, err) _, _ = fmt.Fprintln(os.Stderr, err)
ctx.Status(500)
return return
} }
@ -73,8 +72,8 @@ func deleteAcc(ctx *gin.Context) {
ok, err := auth.VerifyToken(username, password) ok, err := auth.VerifyToken(username, password)
if err != nil { if err != nil {
ctx.Status(500)
_, _ = fmt.Fprintln(os.Stderr, err) _, _ = fmt.Fprintln(os.Stderr, err)
ctx.Status(500)
return return
} }
@ -84,8 +83,8 @@ func deleteAcc(ctx *gin.Context) {
} }
if err = auth.Delete(username); err != nil { if err = auth.Delete(username); err != nil {
ctx.Status(500)
_, _ = fmt.Fprintln(os.Stderr, err) _, _ = fmt.Fprintln(os.Stderr, err)
ctx.Status(500)
return return
} }
@ -99,19 +98,19 @@ func login(ctx *gin.Context) {
acc, err := auth.Read(username) acc, err := auth.Read(username)
if err != nil { if err != nil {
ctx.JSON(401, gin.H{ _, _ = fmt.Fprintln(os.Stderr, err)
"ok": 0, ctx.Status(401)
"errno": "username or password not invalid",
})
return return
} }
ok, err := auth.Verify(username, password) var ok bool
if err != nil || !ok { ok, err = auth.Verify(username, password)
ctx.JSON(401, gin.H{ if !ok {
"ok": 0, if err != nil {
"errno": "username or password not invalid", _, _ = fmt.Fprintln(os.Stderr, err)
}) }
ctx.Status(401)
return return
} }
@ -130,7 +129,11 @@ func check(ctx *gin.Context) {
} }
ok, err := auth.VerifyToken(username, password) ok, err := auth.VerifyToken(username, password)
if err != nil || !ok { if !ok {
if err != nil {
_, _ = fmt.Fprintln(os.Stderr, err)
}
ctx.Status(401) ctx.Status(401)
return return
} }

View file

@ -12,10 +12,7 @@ func createDir(ctx *gin.Context) {
auth := service.NewAuthService() auth := service.NewAuthService()
username, password, ok := ctx.Request.BasicAuth() username, password, ok := ctx.Request.BasicAuth()
if !ok { if !ok {
ctx.JSON(401, gin.H{ ctx.Status(401)
"ok": 0,
"errno": "Unauthorized",
})
return return
} }
@ -24,20 +21,15 @@ func createDir(ctx *gin.Context) {
_, _ = fmt.Fprintln(os.Stderr, err) _, _ = fmt.Fprintln(os.Stderr, err)
} }
ctx.JSON(401, gin.H{ ctx.Status(401)
"ok": 0,
"errno": "Unauthorized",
})
return return
} }
var acc *service.Account var acc *service.Account
acc, err = auth.Read(username) acc, err = auth.Read(username)
if err != nil { if err != nil {
ctx.JSON(500, gin.H{ _, _ = fmt.Fprintln(os.Stderr, err)
"ok": 0, ctx.Status(500)
"errno": "Interval Server Error",
})
return return
} }
@ -46,10 +38,8 @@ func createDir(ctx *gin.Context) {
var id string var id string
if id, err = privdir.Create(path); err != nil { if id, err = privdir.Create(path); err != nil {
ctx.JSON(500, gin.H{ _, _ = fmt.Fprintln(os.Stderr, err)
"ok": 0, ctx.Status(500)
"errno": fmt.Sprintf("'%s' directory is already registered", path),
})
return return
} }

View file

@ -82,18 +82,12 @@ func downloadPath(ctx *gin.Context) {
_, _ = fmt.Fprintln(os.Stderr, err) _, _ = fmt.Fprintln(os.Stderr, err)
} }
ctx.JSON(404, gin.H{ ctx.String(404, fmt.Sprintf("path '%s' is not exist", path))
"ok": 0,
"errno": fmt.Errorf("path %s is not exist", path),
})
return return
} }
if data.IsDir { if data.IsDir {
ctx.JSON(404, gin.H{ ctx.String(404, fmt.Sprintf("path '%s' is directory, you cannot download directory", path))
"ok": 0,
"errno": "file is not exist",
})
return return
} }

View file

@ -6,6 +6,7 @@ import (
"encoding/base64" "encoding/base64"
"encoding/hex" "encoding/hex"
"fmt" "fmt"
"git.wh64.net/devproje/kuma-archive/internal/util"
"os" "os"
"strings" "strings"
) )
@ -23,7 +24,7 @@ func NewAuthService() *AuthService {
} }
func init() { func init() {
db, err := Open() db, err := util.OpenDatabase()
if err != nil { if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "%v\n", err) _, _ = fmt.Fprintf(os.Stderr, "%v\n", err)
return return
@ -50,7 +51,7 @@ func init() {
} }
func (s *AuthService) Create(data *Account) error { func (s *AuthService) Create(data *Account) error {
db, err := Open() db, err := util.OpenDatabase()
if err != nil { if err != nil {
return err return err
} }
@ -71,7 +72,7 @@ func (s *AuthService) Create(data *Account) error {
} }
func (s *AuthService) Read(username string) (*Account, error) { func (s *AuthService) Read(username string) (*Account, error) {
db, err := Open() db, err := util.OpenDatabase()
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -84,7 +85,7 @@ func (s *AuthService) Read(username string) (*Account, error) {
defer stmt.Close() defer stmt.Close()
var account Account 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 return nil, err
} }
@ -92,7 +93,7 @@ func (s *AuthService) Read(username string) (*Account, error) {
} }
func (s *AuthService) Update(username, password string) error { func (s *AuthService) Update(username, password string) error {
db, err := Open() db, err := util.OpenDatabase()
if err != nil { if err != nil {
return err return err
} }
@ -113,7 +114,7 @@ func (s *AuthService) Update(username, password string) error {
} }
func (s *AuthService) Delete(username string) error { func (s *AuthService) Delete(username string) error {
db, err := Open() db, err := util.OpenDatabase()
if err != nil { if err != nil {
return err return err
} }

View file

@ -2,6 +2,7 @@ package service
import ( import (
"fmt" "fmt"
"git.wh64.net/devproje/kuma-archive/internal/util"
"github.com/google/uuid" "github.com/google/uuid"
"os" "os"
"strings" "strings"
@ -25,7 +26,7 @@ type test interface {
} }
func init() { func init() {
db, err := Open() db, err := util.OpenDatabase()
if err != nil { if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "%v\n", err) _, _ = fmt.Fprintf(os.Stderr, "%v\n", err)
return return
@ -61,7 +62,7 @@ func NewPrivDirService(acc *Account) *PrivDirService {
} }
func (sv *PrivDirService) Create(dirname string) (string, error) { func (sv *PrivDirService) Create(dirname string) (string, error) {
db, err := Open() db, err := util.OpenDatabase()
if err != nil { if err != nil {
return "", err return "", err
} }
@ -79,7 +80,7 @@ func (sv *PrivDirService) Create(dirname string) (string, error) {
} }
func (sv *PrivDirService) Read(dirname string) (*PrivDir, error) { func (sv *PrivDirService) Read(dirname string) (*PrivDir, error) {
db, err := Open() db, err := util.OpenDatabase()
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -102,7 +103,7 @@ func (sv *PrivDirService) Read(dirname string) (*PrivDir, error) {
} }
func (sv *PrivDirService) Delete(dirname string) error { func (sv *PrivDirService) Delete(dirname string) error {
db, err := Open() db, err := util.OpenDatabase()
if err != nil { if err != nil {
return err return err
} }
@ -123,7 +124,7 @@ func (sv *PrivDirService) Delete(dirname string) error {
} }
func (sv *PrivDirService) Query() []PrivDir { func (sv *PrivDirService) Query() []PrivDir {
db, err := Open() db, err := util.OpenDatabase()
if err != nil { if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "%v\n", err) _, _ = fmt.Fprintf(os.Stderr, "%v\n", err)
return nil return nil
@ -157,3 +158,39 @@ func (sv *PrivDirService) Query() []PrivDir {
return dirs 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
}

View file

@ -1,4 +1,4 @@
package service package util
import ( import (
"database/sql" "database/sql"
@ -8,6 +8,6 @@ import (
_ "github.com/mattn/go-sqlite3" _ "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")) return sql.Open("sqlite3", filepath.Join(config.ROOT_DIRECTORY, "data.db"))
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "kuma-archive", "name": "kuma-archive",
"version": "0.1.0-alpha.1", "version": "0.1.0",
"type": "module", "type": "module",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {

View file

@ -35,10 +35,10 @@ function Settings() {
<h2 className="ka-title">General</h2> <h2 className="ka-title">General</h2>
<AccountSetting auth={auth} /> <AccountSetting auth={auth} />
{/* <h2 className="ka-title">Private Directory</h2> */} <h2 className="ka-title">Private Directory</h2>
{/* <SettingBox> */} <SettingBox>
{/* TODO: create private directory setting */} {/*<></>*/}
{/* </SettingBox> */} </SettingBox>
</div> </div>
); );
} }