123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package main
- import (
- "context"
- "fmt"
- "git.swzry.com/zry/GoHiedaLogger/hieda_ginutil"
- "git.swzry.com/zry/GoHiedaLogger/hiedabke_console"
- "git.swzry.com/zry/GoHiedaLogger/hiedalog"
- "git.swzry.com/zry/afero2webdav/afero2webdav"
- ngvfs "git.swzry.com/zry/openNGVFS/openngvfs"
- "git.swzry.com/zry/pathutils"
- "github.com/gin-gonic/gin"
- "golang.org/x/net/webdav"
- "net/http"
- "os"
- "strings"
- "time"
- )
- func main() {
- root, err := pathutils.GetCurrentDirectory()
- if err != nil {
- panic(fmt.Errorf("failed to get executable directory: %v", err))
- }
- logger := hiedalog.NewHiedaLogger()
- consoleBke := hiedabke_console.NewConsoleBackend(os.Stderr)
- logger.AddBackend(consoleBke, logger.LevelFilter.NameToID(hiedalog.DLN_DEBUG))
- fs := ngvfs.NewOpenNagaeVFS(logger)
- ctx := context.Background()
- defer func() {
- err = fs.DeInit()
- if err != nil {
- fmt.Println("error deinitializing fs: ", err)
- }
- }()
- err = fs.Init(ctx, root, "test")
- if err != nil {
- fmt.Println("error initializing fs: ", err)
- return
- }
- err = fs.RunMount()
- if err != nil {
- fmt.Println("error in run auto-mount: ", err)
- return
- }
- wfs := afero2webdav.NewAfero2Webdav(fs)
- hdl := &webdav.Handler{
- Prefix: "/",
- FileSystem: wfs,
- LockSystem: webdav.NewMemLS(),
- Logger: func(request *http.Request, err error) {
- if err != nil {
- logger.LogComplex("webdav", hiedalog.DLN_WARN, map[string]string{
- "type": "webdav-error",
- "msg": err.Error(),
- })
- }
- },
- }
- websvr := gin.Default()
- websvr.Use(hieda_ginutil.GinLoggerWithComplexLogger(hieda_ginutil.GinLoggerConfig{
- Logger: logger,
- ModuleName: "web",
- LevelMapFunc: hieda_ginutil.GetDefaultLevelMapFunc(),
- }))
- websvr.Use(func(c *gin.Context) {
- if strings.HasPrefix(c.Request.URL.Path, hdl.Prefix) {
- c.Status(200)
- hdl.ServeHTTP(c.Writer, c.Request)
- c.Abort()
- }
- })
- err = websvr.Run(":5821")
- if err != nil {
- fmt.Println("error in http server: ", err)
- return
- }
- logger.LogString("main", hiedalog.DLN_INFO, "delay 100ms...")
- time.Sleep(time.Millisecond * 100)
- logger.LogString("main", hiedalog.DLN_INFO, "Done.")
- }
|