chore: refactoring and optimized code
This commit is contained in:
parent
0350cf4de9
commit
e36797c52d
10 changed files with 103 additions and 100 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
|
@ -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"))
|
||||||
}
|
}
|
|
@ -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": {
|
||||||
|
|
|
@ -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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue