From 306b90399c2916fead2d8cb73d476228616fdcb6 Mon Sep 17 00:00:00 2001 From: Noah Hsu Date: Sat, 25 Jun 2022 20:38:02 +0800 Subject: [PATCH] chore: move conf package --- bootstrap/config.go | 30 ++++++++++++++--------------- bootstrap/log.go | 2 +- cmd/alist.go | 5 +++-- go.mod | 1 + go.sum | 17 ++++++++++++++++ internal/aria2/add.go | 2 +- internal/aria2/aria2_test.go | 6 +++--- {conf => internal/conf}/config.go | 0 {conf => internal/conf}/const.go | 0 {conf => internal/conf}/var.go | 0 internal/errs/object.go | 2 +- internal/model/user.go | 13 ++++++------- internal/operations/fs.go | 2 +- internal/server/controllers/user.go | 1 + internal/server/router.go | 16 +++++++++++++++ internal/store/util.go | 2 +- pkg/utils/file.go | 2 +- pkg/utils/random.go | 23 ++++++++++++++++++++++ 18 files changed, 91 insertions(+), 33 deletions(-) rename {conf => internal/conf}/config.go (100%) rename {conf => internal/conf}/const.go (100%) rename {conf => internal/conf}/var.go (100%) create mode 100644 internal/server/controllers/user.go create mode 100644 pkg/utils/random.go diff --git a/bootstrap/config.go b/bootstrap/config.go index 8b80e0c3..2125eab4 100644 --- a/bootstrap/config.go +++ b/bootstrap/config.go @@ -1,12 +1,12 @@ package bootstrap import ( + conf2 "github.com/alist-org/alist/v3/internal/conf" "io/ioutil" "os" "path/filepath" "github.com/alist-org/alist/v3/cmd/args" - "github.com/alist-org/alist/v3/conf" "github.com/alist-org/alist/v3/pkg/utils" "github.com/caarlos0/env/v6" log "github.com/sirupsen/logrus" @@ -20,8 +20,8 @@ func InitConfig() { if err != nil { log.Fatalf("failed to create config file: %+v", err) } - conf.Conf = conf.DefaultConfig() - if !utils.WriteToJson(args.Config, conf.Conf) { + conf2.Conf = conf2.DefaultConfig() + if !utils.WriteToJson(args.Config, conf2.Conf) { log.Fatalf("failed to create default config file") } } else { @@ -29,14 +29,14 @@ func InitConfig() { if err != nil { log.Fatalf("reading config file error:%s", err.Error()) } - conf.Conf = conf.DefaultConfig() - err = utils.Json.Unmarshal(configBytes, conf.Conf) + conf2.Conf = conf2.DefaultConfig() + err = utils.Json.Unmarshal(configBytes, conf2.Conf) if err != nil { log.Fatalf("load config error: %s", err.Error()) } - log.Debugf("config:%+v", conf.Conf) + log.Debugf("config:%+v", conf2.Conf) // update config.json struct - confBody, err := utils.Json.MarshalIndent(conf.Conf, "", " ") + confBody, err := utils.Json.MarshalIndent(conf2.Conf, "", " ") if err != nil { log.Fatalf("marshal config error:%s", err.Error()) } @@ -45,28 +45,28 @@ func InitConfig() { log.Fatalf("update config struct error: %s", err.Error()) } } - if !conf.Conf.Force { + if !conf2.Conf.Force { confFromEnv() } // convert abs path var absPath string var err error - if !filepath.IsAbs(conf.Conf.TempDir) { - absPath, err = filepath.Abs(conf.Conf.TempDir) + if !filepath.IsAbs(conf2.Conf.TempDir) { + absPath, err = filepath.Abs(conf2.Conf.TempDir) if err != nil { log.Fatalf("get abs path error: %s", err.Error()) } } - conf.Conf.TempDir = absPath - err = os.RemoveAll(filepath.Join(conf.Conf.TempDir)) + conf2.Conf.TempDir = absPath + err = os.RemoveAll(filepath.Join(conf2.Conf.TempDir)) if err != nil { log.Errorln("failed delete temp file:", err) } - err = os.MkdirAll(conf.Conf.TempDir, 0700) + err = os.MkdirAll(conf2.Conf.TempDir, 0700) if err != nil { log.Fatalf("create temp dir error: %s", err.Error()) } - log.Debugf("config: %+v", conf.Conf) + log.Debugf("config: %+v", conf2.Conf) } func confFromEnv() { @@ -75,7 +75,7 @@ func confFromEnv() { prefix = "" } log.Infof("load config from env with prefix: %s", prefix) - if err := env.Parse(conf.Conf, env.Options{ + if err := env.Parse(conf2.Conf, env.Options{ Prefix: prefix, }); err != nil { log.Fatalf("load config from env error: %s", err.Error()) diff --git a/bootstrap/log.go b/bootstrap/log.go index 52838fad..b806ede7 100644 --- a/bootstrap/log.go +++ b/bootstrap/log.go @@ -1,11 +1,11 @@ package bootstrap import ( + "github.com/alist-org/alist/v3/internal/conf" "log" "time" "github.com/alist-org/alist/v3/cmd/args" - "github.com/alist-org/alist/v3/conf" rotatelogs "github.com/lestrrat-go/file-rotatelogs" "github.com/sirupsen/logrus" ) diff --git a/cmd/alist.go b/cmd/alist.go index 3faa3576..2da40eb7 100644 --- a/cmd/alist.go +++ b/cmd/alist.go @@ -3,11 +3,12 @@ package main import ( "flag" "fmt" + "github.com/alist-org/alist/v3/internal/conf" + "github.com/alist-org/alist/v3/internal/server" "os" "github.com/alist-org/alist/v3/bootstrap" "github.com/alist-org/alist/v3/cmd/args" - "github.com/alist-org/alist/v3/conf" _ "github.com/alist-org/alist/v3/drivers" "github.com/gin-gonic/gin" log "github.com/sirupsen/logrus" @@ -38,7 +39,7 @@ func main() { } r := gin.New() r.Use(gin.LoggerWithWriter(log.StandardLogger().Out), gin.RecoveryWithWriter(log.StandardLogger().Out)) - // TODO: setup router + server.Init(r) base := fmt.Sprintf("%s:%d", conf.Conf.Address, conf.Conf.Port) log.Infof("start server @ %s", base) var err error diff --git a/go.mod b/go.mod index 8564ffd4..fea49d5a 100644 --- a/go.mod +++ b/go.mod @@ -15,6 +15,7 @@ require ( ) require ( + github.com/gin-contrib/cors v1.3.1 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect diff --git a/go.sum b/go.sum index 8e1ab040..4676a86d 100644 --- a/go.sum +++ b/go.sum @@ -6,20 +6,26 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gin-contrib/cors v1.3.1 h1:doAsuITavI4IOcd0Y19U4B+O0dNWihRyX//nn4sEmgA= +github.com/gin-contrib/cors v1.3.1/go.mod h1:jjEJ4268OPZUcU7k9Pm653S7lXUGcqMADzFA61xsmDk= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= github.com/gin-gonic/gin v1.8.0 h1:4WFH5yycBMA3za5Hnl425yd9ymdw1XPm4666oab+hv4= github.com/gin-gonic/gin v1.8.0/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/validator/v10 v10.11.0 h1:0W+xRM511GY47Yy3bZUbJVitCNg2BOGlCyvTqsp/xIw= github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/goccy/go-json v0.9.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM= github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -35,6 +41,7 @@ github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jonboulle/clockwork v0.3.0 h1:9BSCMi8C+0qdApAp4auwX0RkLGUjs956h0EkuQymUhg= github.com/jonboulle/clockwork v0.3.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -45,6 +52,7 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc h1:RKf14vYWi2ttpEmkA4aQ3j4u9dStX2t4M8UM6qqNsG8= @@ -53,6 +61,7 @@ github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkL github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA= github.com/lestrrat-go/strftime v1.0.6 h1:CFGsDEt1pOpFNU+TJB0nhz9jl+K0hZSLE205AhTIGQQ= github.com/lestrrat-go/strftime v1.0.6/go.mod h1:f7jQKgV5nnJpYgdEasS+/y7EsTb8ykN2z68n3TtcTaw= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= @@ -61,6 +70,7 @@ github.com/mattn/go-sqlite3 v1.14.13/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU= @@ -78,11 +88,14 @@ github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= @@ -91,6 +104,7 @@ golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220531201128-c960675eff93 h1:MYimHLfoXEpOhqd/zgoA/uoXzHB86AEky4LAx5ij9xA= golang.org/x/net v0.0.0-20220531201128-c960675eff93/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -114,6 +128,9 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= +gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/aria2/add.go b/internal/aria2/add.go index bdf5e565..1fb897cc 100644 --- a/internal/aria2/add.go +++ b/internal/aria2/add.go @@ -3,7 +3,7 @@ package aria2 import ( "context" "fmt" - "github.com/alist-org/alist/v3/conf" + "github.com/alist-org/alist/v3/internal/conf" "github.com/alist-org/alist/v3/internal/errs" "github.com/alist-org/alist/v3/internal/operations" "github.com/alist-org/alist/v3/pkg/task" diff --git a/internal/aria2/aria2_test.go b/internal/aria2/aria2_test.go index 5303ff78..6ef04cea 100644 --- a/internal/aria2/aria2_test.go +++ b/internal/aria2/aria2_test.go @@ -2,8 +2,8 @@ package aria2 import ( "context" - "github.com/alist-org/alist/v3/conf" _ "github.com/alist-org/alist/v3/drivers" + conf2 "github.com/alist-org/alist/v3/internal/conf" "github.com/alist-org/alist/v3/internal/model" "github.com/alist-org/alist/v3/internal/operations" "github.com/alist-org/alist/v3/internal/store" @@ -16,12 +16,12 @@ import ( ) func init() { - conf.Conf = conf.DefaultConfig() + conf2.Conf = conf2.DefaultConfig() absPath, err := filepath.Abs("../../data/temp") if err != nil { panic(err) } - conf.Conf.TempDir = absPath + conf2.Conf.TempDir = absPath db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{}) if err != nil { panic("failed to connect database") diff --git a/conf/config.go b/internal/conf/config.go similarity index 100% rename from conf/config.go rename to internal/conf/config.go diff --git a/conf/const.go b/internal/conf/const.go similarity index 100% rename from conf/const.go rename to internal/conf/const.go diff --git a/conf/var.go b/internal/conf/var.go similarity index 100% rename from conf/var.go rename to internal/conf/var.go diff --git a/internal/errs/object.go b/internal/errs/object.go index 5c0b339a..0f76efdf 100644 --- a/internal/errs/object.go +++ b/internal/errs/object.go @@ -12,5 +12,5 @@ var ( ) func IsObjectNotFound(err error) bool { - return pkgerr.Cause(err) == ObjectNotFound + return errors.Is(pkgerr.Cause(err), ObjectNotFound) } diff --git a/internal/model/user.go b/internal/model/user.go index 6c78aac8..69bd4d06 100644 --- a/internal/model/user.go +++ b/internal/model/user.go @@ -7,13 +7,12 @@ const ( ) type User struct { - ID uint `json:"id" gorm:"primaryKey"` // unique key - Name string `json:"name" gorm:"unique"` // username - Password string `json:"password"` // password - BasePath string `json:"base_path"` // base path - AllowUpload bool `json:"allow_upload"` // allow upload - Role int `json:"role"` // user's role - //OfflineDownload bool `json:"offline_download"` // TODO? allow offline download + ID uint `json:"id" gorm:"primaryKey"` // unique key + Name string `json:"name" gorm:"unique"` // username + Password string `json:"password"` // password + BasePath string `json:"base_path"` // base path + ReadOnly bool `json:"read_only"` // allow upload + Role int `json:"role"` // user's role } func (u User) IsGuest() bool { diff --git a/internal/operations/fs.go b/internal/operations/fs.go index 39a291b6..bbf8557c 100644 --- a/internal/operations/fs.go +++ b/internal/operations/fs.go @@ -2,13 +2,13 @@ package operations import ( "context" + "github.com/alist-org/alist/v3/internal/conf" "github.com/alist-org/alist/v3/internal/errs" log "github.com/sirupsen/logrus" stdpath "path" "time" "github.com/Xhofe/go-cache" - "github.com/alist-org/alist/v3/conf" "github.com/alist-org/alist/v3/internal/driver" "github.com/alist-org/alist/v3/internal/model" "github.com/alist-org/alist/v3/pkg/singleflight" diff --git a/internal/server/controllers/user.go b/internal/server/controllers/user.go new file mode 100644 index 00000000..2d329367 --- /dev/null +++ b/internal/server/controllers/user.go @@ -0,0 +1 @@ +package controllers diff --git a/internal/server/router.go b/internal/server/router.go index abb4e431..8a0ec218 100644 --- a/internal/server/router.go +++ b/internal/server/router.go @@ -1 +1,17 @@ package server + +import ( + "github.com/gin-contrib/cors" + "github.com/gin-gonic/gin" +) + +func Init(r *gin.Engine) { + Cors(r) +} + +func Cors(r *gin.Engine) { + config := cors.DefaultConfig() + config.AllowAllOrigins = true + config.AllowHeaders = append(config.AllowHeaders, "Authorization", "range") + r.Use(cors.New(config)) +} diff --git a/internal/store/util.go b/internal/store/util.go index 6ee40079..1a2f32ef 100644 --- a/internal/store/util.go +++ b/internal/store/util.go @@ -2,7 +2,7 @@ package store import ( "fmt" - "github.com/alist-org/alist/v3/conf" + "github.com/alist-org/alist/v3/internal/conf" ) func columnName(name string) string { diff --git a/pkg/utils/file.go b/pkg/utils/file.go index d836aeee..dcd95c8d 100644 --- a/pkg/utils/file.go +++ b/pkg/utils/file.go @@ -1,12 +1,12 @@ package utils import ( + "github.com/alist-org/alist/v3/internal/conf" "io" "io/ioutil" "os" "path/filepath" - "github.com/alist-org/alist/v3/conf" log "github.com/sirupsen/logrus" ) diff --git a/pkg/utils/random.go b/pkg/utils/random.go new file mode 100644 index 00000000..5bd086c5 --- /dev/null +++ b/pkg/utils/random.go @@ -0,0 +1,23 @@ +package utils + +import ( + "math/rand" + "time" +) + +var Rand *rand.Rand + +const letterBytes = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" + +func RandomStr(n int) string { + b := make([]byte, n) + for i := range b { + b[i] = letterBytes[Rand.Intn(len(letterBytes))] + } + return string(b) +} + +func init() { + s := rand.NewSource(time.Now().UnixNano()) + Rand = rand.New(s) +}