123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package main
- import (
- "embed"
- "flag"
- "fmt"
- "io/fs"
- "net/http"
- "os"
- "imuslab.com/bokofs/bokofsd/mod/bokofs"
- "imuslab.com/bokofs/bokofsd/mod/bokofs/bokoworker"
- )
- //go:embed web/*
- var embeddedFiles embed.FS
- func main() {
- flag.Parse()
- var fileSystem http.FileSystem
- if *devMode {
- fmt.Println("Development mode enabled. Serving files from ./web directory.")
- fileSystem = http.Dir("./web")
- } else {
- fmt.Println("Production mode enabled. Serving files from embedded filesystem.")
- subFS, err := fs.Sub(embeddedFiles, "web")
- if err != nil {
- fmt.Fprintf(os.Stderr, "Error accessing embedded subdirectory: %v\n", err)
- os.Exit(1)
- }
- fileSystem = http.FS(subFS)
- }
- configFolderPath := "./config"
- if *config != "" {
- configFolderPath = *config
- }
- if _, err := os.Stat(configFolderPath); os.IsNotExist(err) {
- fmt.Printf("Config folder does not exist. Creating folder at %s\n", configFolderPath)
- if err := os.Mkdir(configFolderPath, os.ModePerm); err != nil {
- fmt.Fprintf(os.Stderr, "Error creating config folder: %v\n", err)
- os.Exit(1)
- }
- }
- //DEBUG
- wds, err := bokofs.NewWebdavInterfaceServer("/disk/", "/thumb/")
- if err != nil {
- panic(err)
- }
- test, err := bokoworker.NewFSWorker(&bokoworker.Options{
- NodeName: "test",
- ServePath: "./test",
- ThumbnailStore: "./tmp/test/",
- })
- if err != nil {
- panic(err)
- }
- wds.AddWorker(test)
- test2, err := bokoworker.NewFSWorker(&bokoworker.Options{
- NodeName: "test2",
- ServePath: "./mod",
- ThumbnailStore: "./tmp/mod/",
- })
- if err != nil {
- panic(err)
- }
- wds.AddWorker(test2)
- //END DEBUG
- http.Handle("/", http.FileServer(fileSystem))
- /* WebDAV Handlers */
- http.Handle("/disk/", wds.FsHandler()) //Note the trailing slash
- http.Handle("/thumb/", wds.ThumbHandler()) //Note the trailing slash
- /* REST API Handlers */
- http.Handle("/meta", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- // TODO: Implement handler logic for /meta
- fmt.Fprintln(w, "Meta handler not implemented yet")
- }))
- addr := fmt.Sprintf(":%d", *httpPort)
- fmt.Printf("Starting static web server on %s\n", addr)
- if err := http.ListenAndServe(addr, nil); err != nil {
- fmt.Fprintf(os.Stderr, "Error starting server: %v\n", err)
- os.Exit(1)
- }
- }
|