diff --git a/Makefile b/Makefile index f8b8096..416a025 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CC=go -BUILD=build -a -v -trimpath +BUILD=build -v -trimpath VERSION=$(shell cat VERSION) GCFLAGS=-gcflags '-e' LDFLAGS=-ldflags '-buildid= -X main.version=$(VERSION) -s -w' diff --git a/pkg/cmd/cmd.go b/pkg/cmd/cmd.go index a368a42..403a503 100644 --- a/pkg/cmd/cmd.go +++ b/pkg/cmd/cmd.go @@ -42,12 +42,12 @@ var ( configFile string ) -func initServer(cfg core.Config) (err error) { +func initServer(cfg *core.Config) (err error) { // remove initial pledge due to violation with go1.12 // sysctl kern.somaxconn - //if err = godrop.PledgePromises("stdio rpath wpath cpath inet fattr flock proc exec id unveil"); err != nil { - // return - //} + // if err = godrop.PledgePromises("stdio rpath wpath cpath inet fattr flock proc exec id unveil"); err != nil { + // return + // } dropCfg := godrop.Config{ User: cfg.User, Group: cfg.Group, @@ -169,7 +169,7 @@ func Run(version string) { stdlog.Fatal("server: ", err) } config.Version = app.Version - if err := initServer(config); err != nil { + if err := initServer(&config); err != nil { stdlog.Fatal("server: ", err) } return nil @@ -183,7 +183,7 @@ func Run(version string) { if err := loadConfig(); err != nil { stdlog.Fatal("reset: ", err) } - DB, err := db.NewPlain(config) + DB, err := db.NewPlain(&config) if err != nil { stdlog.Fatal("reset: ", err) } @@ -222,12 +222,12 @@ func Run(version string) { stdlog.Fatal("dump: ", err) } if dumpFile != "-" { - file, err = os.OpenFile(dumpFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0640) + file, err = os.OpenFile(dumpFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o640) if err != nil { stdlog.Fatal("dump: ", err) } } - DB, err := db.NewPlain(config) + DB, err := db.NewPlain(&config) if err != nil { stdlog.Fatal("dump: ", err) } @@ -260,7 +260,7 @@ func Run(version string) { stdlog.Fatal("restore: ", err) } } - DB, err := db.NewPlain(config) + DB, err := db.NewPlain(&config) if err != nil { stdlog.Fatal("restore: ", err) } diff --git a/pkg/db/db.go b/pkg/db/db.go index f0c49b6..dddabe7 100644 --- a/pkg/db/db.go +++ b/pkg/db/db.go @@ -24,7 +24,7 @@ type DB struct { Index *index.Index } -func New(cfg core.Config) (db *DB, err error) { +func New(cfg *core.Config) (db *DB, err error) { db, err = NewPlain(cfg) if err != nil { return @@ -48,7 +48,7 @@ func New(cfg core.Config) (db *DB, err error) { return } -func NewPlain(cfg core.Config) (db *DB, err error) { +func NewPlain(cfg *core.Config) (db *DB, err error) { db = new(DB) dbFile := filepath.Join(cfg.RunDir, storeFile) db.store, err = store.NewBoltStore(dbFile, nil) diff --git a/pkg/db/mutex.go b/pkg/db/mutex.go index 0328710..56eaba9 100644 --- a/pkg/db/mutex.go +++ b/pkg/db/mutex.go @@ -10,7 +10,7 @@ type countMutex struct { c uint64 } -func (cm *countMutex) Lock() (uint64, uint64, bool) { +func (cm *countMutex) Lock() (max, c uint64, ok bool) { if atomic.CompareAndSwapUint64(&cm.mu, 0, 1) { return 0, 0, true } diff --git a/pkg/fs/fs.go b/pkg/fs/fs.go index fc4eae9..7a65052 100644 --- a/pkg/fs/fs.go +++ b/pkg/fs/fs.go @@ -14,8 +14,8 @@ import ( ) const ( - DirMode = 0750 - FileMode = 0640 + DirMode = 0o750 + FileMode = 0o640 ) // Directory represents a directory and its contents diff --git a/pkg/log/log.go b/pkg/log/log.go index a5eb5b0..184e782 100644 --- a/pkg/log/log.go +++ b/pkg/log/log.go @@ -14,12 +14,12 @@ var ( debug = false ) -func InitLogger(cfg core.Config) { +func InitLogger(cfg *core.Config) { debug = cfg.Debug if cfg.LogFile == "-" { return } - f, err := os.OpenFile(filepath.Join(cfg.DataDir, cfg.LogFile), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0640) + f, err := os.OpenFile(filepath.Join(cfg.DataDir, cfg.LogFile), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0o640) if err != nil { stdlog.Fatal(err) } diff --git a/pkg/log/scanlog.go b/pkg/log/scanlog.go index 437b9a2..aedcb54 100644 --- a/pkg/log/scanlog.go +++ b/pkg/log/scanlog.go @@ -13,7 +13,7 @@ const defaultSize = 500 type ScanLog struct { // protects logs - sync.RWMutex + mu sync.RWMutex size int logs []string @@ -30,20 +30,20 @@ func (l *ScanLog) Printf(f string, v ...interface{}) { s := fmt.Sprintf(f, v...) Println(s) s = core.LogTime() + s - l.Lock() + l.mu.Lock() llen := len(l.logs) if llen < l.size { l.logs = append(l.logs, s) } else if llen == l.size { l.logs = append(l.logs[1:], s) } - l.Unlock() + l.mu.Unlock() } func (l *ScanLog) Logs() (logs string) { - l.RLock() + l.mu.RLock() logs = reverseJoin(l.logs, "\n") - l.RUnlock() + l.mu.RUnlock() return } diff --git a/pkg/scan/scanner.go b/pkg/scan/scanner.go index def248e..6128f3e 100644 --- a/pkg/scan/scanner.go +++ b/pkg/scan/scanner.go @@ -38,7 +38,7 @@ type Tesseract struct { var ( wsr = regexp.MustCompile(`[\t\f ]+`) - nlr = regexp.MustCompile(`[\n]{3,}`) + nlr = regexp.MustCompile(`\n{3,}`) ws = []byte(" ") nl = []byte("\n") ) @@ -50,7 +50,7 @@ type Scanner struct { p PDF } -func New(c core.Config) (s *Scanner, err error) { +func New(c *core.Config) (s *Scanner, err error) { var ( tcmd string pcmd string diff --git a/pkg/server/handler.go b/pkg/server/handler.go index f637bab..d98ac3e 100644 --- a/pkg/server/handler.go +++ b/pkg/server/handler.go @@ -416,8 +416,7 @@ func deleteHandler(ctx *Context) { func dirHandler(ctx *Context) { ctx.Template("dirHandler") path := ctx.Path() - switch ctx.Method() { - case "GET": + if ctx.Method() == "GET" { mode, enoent, err := ctx.Srv.FS.Mode(path) if !enoent && err != nil { ctx.Error(err) @@ -439,7 +438,7 @@ func dirHandler(ctx *Context) { Title: "Document Viewer | " + path, } ctx.Template("fileHandler") - //f := ctx.Srv.DB.IsIndexed(path) + // f := ctx.Srv.DB.IsIndexed(path) id, err := ctx.Srv.DB.GetID(path) f := err == nil if id != "" { @@ -701,8 +700,7 @@ func logsHandler(ctx *Context) { Title: "Logs", BodyTitle: "Logs", } - switch ctx.Method() { - case "GET": + if ctx.Method() == "GET" { ctx.Data.Data = ctx.Srv.Log.Logs() ctx.Exec() } @@ -714,8 +712,7 @@ func tagsHandler(ctx *Context) { Title: "Tags", BodyTitle: "Tags", } - switch ctx.Method() { - case "GET": + if ctx.Method() == "GET" { t, err := ctx.Srv.DB.GetAllTags() if err != nil { ctx.Error(err) @@ -828,8 +825,7 @@ func statsHandler(ctx *Context) { Title: "Stats", BodyTitle: "Stats", } - switch ctx.Method() { - case "GET": + if ctx.Method() == "GET" { ctx.Data.Data = getStats(ctx.Srv.DB.Index) ctx.Exec() } diff --git a/pkg/server/server.go b/pkg/server/server.go index 9d47986..2537b85 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -28,7 +28,7 @@ const ( ) type HTTPServer struct { - Config core.Config + Config *core.Config listener net.Listener srv *http.Server @@ -44,7 +44,7 @@ type HTTPServer struct { res map[string][]byte } -func NewHTTPServer(cfg core.Config, l net.Listener, s *scan.Scanner) (srv *HTTPServer) { +func NewHTTPServer(cfg *core.Config, l net.Listener, s *scan.Scanner) (srv *HTTPServer) { srv = &HTTPServer{ Config: cfg, listener: l, @@ -115,9 +115,9 @@ func (s *HTTPServer) buildRoutes() http.Handler { r := mux.NewRouter() r.NotFoundHandler = ¬FoundHandler{s} if s.Config.WebDav { - fs := authdav.NewWriteOnlyOnceFileSystem(webdav.Dir(s.Config.DataDir)) - fs.Filters = []authdav.Filter{authdav.NewMacOSFilter()} - h := authdav.NewWebdavBasicAuth(core.WebDavPrefix, fs, nil, webdavLogger, s.DB, "DocStore WebDav") + dav := authdav.NewWriteOnlyOnceFileSystem(webdav.Dir(s.Config.DataDir)) + dav.Filters = []authdav.Filter{authdav.NewMacOSFilter()} + h := authdav.NewWebdavBasicAuth(core.WebDavPrefix, dav, nil, webdavLogger, s.DB, "DocStore WebDav") r.PathPrefix(core.WebDavPrefix).Handler(h) } r.Handle("/static/{file}", http.StripPrefix("/", http.FileServer(http.FS(static)))) diff --git a/pkg/store/boltstore.go b/pkg/store/boltstore.go index 47e53a1..5251785 100644 --- a/pkg/store/boltstore.go +++ b/pkg/store/boltstore.go @@ -10,7 +10,7 @@ import ( const ( defaultBoltBucket = "default" - fileMode = 0640 + fileMode = 0o640 ) type BoltStore struct { @@ -26,7 +26,7 @@ func NewBoltStore(file string, m Marshaler) (Store, error) { if err != nil { return nil, err } - if err = db.Update(func(tx *bolt.Tx) (err error) { + if err := db.Update(func(tx *bolt.Tx) (err error) { _, err = tx.CreateBucketIfNotExists([]byte(defaultBoltBucket)) return }); err != nil {