package main import ( dwhttp "dwelling-files/internal/http" "dwelling-files/web" "flag" "fmt" "log" "net/http" "os" "os/signal" "syscall" "git.arav.su/Arav/httpr" ) var version string var listenAddress *string = flag.String("listen", "/var/run/dwelling-files/sock", "listen address (ip:port|unix_path)") var directoryPath *string = flag.String("path", "/srv/ftp", "path to file share") var enableFileHandler *bool = flag.Bool("file-handling", false, "enable file handling if it is handled by something else (e.g. NGiNX)") var showVersion *bool = flag.Bool("v", false, "show version") func main() { flag.Parse() log.SetFlags(0) if *showVersion { fmt.Println("dwelling-files ver.", version, "\nCopyright (c) 2023 Alexander \"Arav\" Andreev ") return } hand := dwhttp.New(directoryPath, !*enableFileHandler) r := httpr.New() r.ServeStatic("/assets/*filepath", web.Assets()) r.Handler(http.MethodGet, "/file/*filepath", hand.File) r.Handler(http.MethodGet, "/*filepath", hand.Index) r.Handler(http.MethodGet, "/", hand.Index) srv := dwhttp.NewHttpServer(r) if err := srv.Start(*listenAddress); err != nil { log.Fatalln(err) } doneSignal := make(chan os.Signal, 1) signal.Notify(doneSignal, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) <-doneSignal if err := srv.Stop(); err != nil { log.Fatalln(err) } }