diff --git a/cmd/errors.go b/cmd/errors.go
index 3a73672..665a701 100644
--- a/cmd/errors.go
+++ b/cmd/errors.go
@@ -16,8 +16,9 @@ import (
)
var (
- ErrIncorrectRefreshInterval = errors.New("refresh interval must be a duration string >= 500ms")
- ErrNoMediaFound = errors.New("no supported media formats found which match all criteria")
+ ErrInvalidPort = errors.New("listen port must be an integer between 1 and 65535 inclusive")
+ ErrInvalidScanCount = errors.New("scan count must be a positive integer")
+ ErrNoMediaFound = errors.New("no supported media formats found which match all criteria")
)
func newErrorPage(title, body string) string {
diff --git a/cmd/files.go b/cmd/files.go
index 9297021..0d642d2 100644
--- a/cmd/files.go
+++ b/cmd/files.go
@@ -323,7 +323,7 @@ func walkPath(path string, fileChannel chan<- string, fileScans chan int, stats
errorChannel <- err
}
- if files > 0 && (files < int(MinFileCount)) || (files > int(MaxFileCount)) {
+ if files > 0 && (files < MinFileCount) || (files > MaxFileCount) {
// This count will not otherwise include the parent directory itself, so increment by one
stats.directoriesSkipped <- directories + 1
stats.filesSkipped <- files
diff --git a/cmd/info.go b/cmd/info.go
index b5a85de..3b7f7a0 100644
--- a/cmd/info.go
+++ b/cmd/info.go
@@ -36,8 +36,8 @@ func serveIndexHtml(args []string, cache *fileCache, paginate bool) httprouter.H
startIndex = 0
stopIndex = fileCount
} else {
- startIndex = ((page - 1) * int(PageLength))
- stopIndex = (startIndex + int(PageLength))
+ startIndex = ((page - 1) * PageLength)
+ stopIndex = (startIndex + PageLength)
}
if startIndex > (fileCount - 1) {
@@ -72,10 +72,10 @@ func serveIndexHtml(args []string, cache *fileCache, paginate bool) httprouter.H
var firstPage int = 1
var lastPage int
- if fileCount%int(PageLength) == 0 {
- lastPage = fileCount / int(PageLength)
+ if fileCount%PageLength == 0 {
+ lastPage = fileCount / PageLength
} else {
- lastPage = (fileCount / int(PageLength)) + 1
+ lastPage = (fileCount / PageLength) + 1
}
if paginate {
@@ -96,7 +96,7 @@ func serveIndexHtml(args []string, cache *fileCache, paginate bool) httprouter.H
nextPage := page + 1
if nextPage > lastPage {
- nextPage = fileCount / int(PageLength)
+ nextPage = fileCount / PageLength
}
htmlBody.WriteString(fmt.Sprintf("",
@@ -154,8 +154,8 @@ func serveIndexJson(args []string, index *fileCache, errorChannel chan<- error)
startIndex = 0
stopIndex = fileCount
} else {
- startIndex = ((page - 1) * int(PageLength))
- stopIndex = (startIndex + int(PageLength))
+ startIndex = ((page - 1) * PageLength)
+ stopIndex = (startIndex + PageLength)
}
if startIndex > (fileCount - 1) {
diff --git a/cmd/root.go b/cmd/root.go
index 6dd4cc7..0383071 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -5,14 +5,13 @@ Copyright © 2023 Seednode
package cmd
import (
- "errors"
"log"
"github.com/spf13/cobra"
)
const (
- ReleaseVersion string = "0.93.0"
+ ReleaseVersion string = "0.93.1"
)
var (
@@ -30,12 +29,12 @@ var (
Handlers bool
Images bool
Info bool
- MaxDirScans uint
- MaxFileScans uint
- MaxFileCount uint
- MinFileCount uint
- PageLength uint32
- Port uint16
+ MaxDirScans int
+ MaxFileScans int
+ MaxFileCount int
+ MinFileCount int
+ PageLength int
+ Port int
Prefix string
Profile bool
Recursive bool
@@ -52,12 +51,12 @@ var (
Short: "Serves random media from the specified directories.",
Args: cobra.MinimumNArgs(1),
PreRunE: func(cmd *cobra.Command, args []string) error {
- if MaxDirScans < 1 {
- return errors.New("max directory scan count must be a positive integer")
+ if MaxDirScans < 1 || MaxFileScans < 1 {
+ return ErrInvalidScanCount
}
- if MaxFileScans < 1 {
- return errors.New("max file scan count must be a positive integer")
+ if Port < 1 || Port > 65535 {
+ return ErrInvalidPort
}
return nil
@@ -95,12 +94,12 @@ func init() {
rootCmd.Flags().BoolVar(&Handlers, "handlers", false, "display registered handlers (for debugging)")
rootCmd.Flags().BoolVar(&Images, "images", false, "enable support for image files")
rootCmd.Flags().BoolVarP(&Info, "info", "i", false, "expose informational endpoints")
- rootCmd.Flags().UintVar(&MaxDirScans, "max-directory-scans", 32, "number of directories to scan at once")
- rootCmd.Flags().UintVar(&MaxFileScans, "max-file-scans", 256, "number of files to scan at once")
- rootCmd.Flags().UintVar(&MaxFileCount, "max-file-count", 1<<32-1, "skip directories with file counts above this value")
- rootCmd.Flags().UintVar(&MinFileCount, "min-file-count", 1, "skip directories with file counts below this value")
- rootCmd.Flags().Uint32Var(&PageLength, "page-length", 0, "pagination length for info pages")
- rootCmd.Flags().Uint16VarP(&Port, "port", "p", 8080, "port to listen on")
+ rootCmd.Flags().IntVar(&MaxDirScans, "max-directory-scans", 32, "number of directories to scan at once")
+ rootCmd.Flags().IntVar(&MaxFileScans, "max-file-scans", 256, "number of files to scan at once")
+ rootCmd.Flags().IntVar(&MaxFileCount, "max-file-count", 1<<32-1, "skip directories with file counts above this value")
+ rootCmd.Flags().IntVar(&MinFileCount, "min-file-count", 1, "skip directories with file counts below this value")
+ rootCmd.Flags().IntVar(&PageLength, "page-length", 0, "pagination length for info pages")
+ rootCmd.Flags().IntVarP(&Port, "port", "p", 8080, "port to listen on")
rootCmd.Flags().StringVar(&Prefix, "prefix", "/", "root path for http handlers (for reverse proxying)")
rootCmd.Flags().BoolVar(&Profile, "profile", false, "register net/http/pprof handlers")
rootCmd.Flags().BoolVarP(&Recursive, "recursive", "r", false, "recurse into subdirectories")
diff --git a/cmd/web.go b/cmd/web.go
index e8956f1..d915866 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -453,7 +453,7 @@ func ServePage(args []string) error {
mux := httprouter.New()
srv := &http.Server{
- Addr: net.JoinHostPort(Bind, strconv.Itoa(int(Port))),
+ Addr: net.JoinHostPort(Bind, strconv.Itoa(Port)),
Handler: mux,
IdleTimeout: 10 * time.Minute,
ReadTimeout: 5 * time.Second,