added cache only access server

This commit is contained in:
ston1th 2022-03-22 21:48:59 +01:00
commit b5ae5504a7
6 changed files with 217 additions and 8 deletions

View file

@ -27,6 +27,7 @@ var (
metadata string
listenHttp string
listenWebdav string
listenCache string
quota int64
log logr.Logger
@ -41,6 +42,7 @@ func main() {
flag.StringVar(&metadata, "data", "", "path to metadata file")
flag.StringVar(&listenHttp, "listen", "127.0.0.1:8080", "listen addr:port")
flag.StringVar(&listenWebdav, "webdav", "", "listen addr:port for webdav")
flag.StringVar(&listenCache, "cache", "", "listen addr:port for cache only")
flag.Int64Var(&quota, "quota", 1, "max disk usage quota in GiB")
flag.Parse()
@ -51,14 +53,23 @@ func main() {
if err != nil {
klog.Fatalf("init failed: %s", err)
}
s := &http.Server{Addr: listenHttp, Handler: srv.NewFileServer(filesystem, klogr.New().WithName("server"))}
s := &http.Server{
Addr: listenHttp,
Handler: srv.NewFileServer(
filesystem,
klogr.New().WithName("server"),
),
}
go func() {
err := s.ListenAndServe()
if err != nil && err != http.ErrServerClosed {
klog.Fatalf("init failed: %s", err)
}
}()
var dav *http.Server
var (
dav *http.Server
cache *http.Server
)
if listenWebdav != "" {
dav = &http.Server{
Addr: listenWebdav,
@ -74,6 +85,21 @@ func main() {
}
}()
}
if listenCache != "" {
cache = &http.Server{
Addr: listenCache,
Handler: srv.NewCacheServer(
filesystem,
klogr.New().WithName("cache"),
),
}
go func() {
err := cache.ListenAndServe()
if err != nil && err != http.ErrServerClosed {
klog.Fatalf("init failed: %s", err)
}
}()
}
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
<-sigs
@ -86,6 +112,11 @@ func main() {
dav.Shutdown(ctx)
cancel()
}
if cache != nil {
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
cache.Shutdown(ctx)
cancel()
}
filesystem.Close()
log.Info("cachefs shutdown completed")
os.Exit(0)