* use http.FileServer insetead of custom middleware * fixed behavior under reverse proxy * enabled reverse proxy subfolder as "domain value" * domain validation * code refactoring * code refactoring * updated translation
68 lines
1.5 KiB
Go
68 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"embed"
|
|
"flag"
|
|
"io/fs"
|
|
"log"
|
|
"runtime"
|
|
|
|
"github.com/marcopeocchi/yt-dlp-web-ui/server"
|
|
"github.com/marcopeocchi/yt-dlp-web-ui/server/cli"
|
|
"github.com/marcopeocchi/yt-dlp-web-ui/server/config"
|
|
)
|
|
|
|
var (
|
|
port int
|
|
queueSize int
|
|
configFile string
|
|
downloadPath string
|
|
downloaderPath string
|
|
|
|
requireAuth bool
|
|
rpcSecret string
|
|
|
|
//go:embed frontend/dist/index.html
|
|
//go:embed frontend/dist/assets/*
|
|
frontend embed.FS
|
|
)
|
|
|
|
func init() {
|
|
flag.IntVar(&port, "port", 3033, "Port where server will listen at")
|
|
flag.IntVar(&queueSize, "qs", runtime.NumCPU(), "Download queue size")
|
|
|
|
flag.StringVar(&configFile, "conf", "./config.yml", "Config file path")
|
|
flag.StringVar(&downloadPath, "out", ".", "Where files will be saved")
|
|
flag.StringVar(&downloaderPath, "driver", "yt-dlp", "yt-dlp executable path")
|
|
|
|
flag.BoolVar(&requireAuth, "auth", false, "Enable RPC authentication")
|
|
flag.StringVar(&rpcSecret, "secret", "", "Secret required for auth")
|
|
|
|
flag.Parse()
|
|
}
|
|
|
|
func main() {
|
|
frontend, err := fs.Sub(frontend, "frontend/dist")
|
|
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
c := config.Instance()
|
|
|
|
c.SetPort(port)
|
|
c.QueueSize(queueSize)
|
|
c.DownloadPath(downloadPath)
|
|
c.DownloaderPath(downloaderPath)
|
|
|
|
c.RequireAuth(requireAuth)
|
|
c.RPCSecret(rpcSecret)
|
|
|
|
// if config file is found it will be merged with the current config struct
|
|
if _, err := c.TryLoadFromFile(configFile); err != nil {
|
|
log.Println(cli.BgRed, "config", cli.Reset, "no config file found")
|
|
}
|
|
|
|
server.RunBlocking(port, frontend)
|
|
}
|