This commit is contained in:
royalcat 2024-01-07 20:09:56 +03:00
parent 78704bee78
commit 2cefb9db98
19 changed files with 691 additions and 627 deletions
cmd/tstor

View file

@ -16,7 +16,6 @@ import (
"git.kmsign.ru/royalcat/tstor/src/host"
"git.kmsign.ru/royalcat/tstor/src/host/service"
"git.kmsign.ru/royalcat/tstor/src/host/storage"
"git.kmsign.ru/royalcat/tstor/src/host/vfs"
"github.com/rs/zerolog/log"
"github.com/urfave/cli/v2"
wnfs "github.com/willscott/go-nfs"
@ -67,7 +66,9 @@ func run(configPath string) error {
}
dlog.Load(&conf.Log)
log := log.Logger.With().Str("conponent", "run").Logger()
// TODO make optional
err = syscall.Setpriority(syscall.PRIO_PGRP, 0, 19)
if err != nil {
log.Err(err).Msg("set priority failed")
@ -94,7 +95,7 @@ func run(configPath string) error {
}
defer st.Close()
rep, err := storage.NewTorrentMetaRepository(conf.TorrentClient.MetadataFolder, st)
rep, err := storage.NewExcludedFiles(conf.TorrentClient.MetadataFolder, st)
if err != nil {
return err
}
@ -108,14 +109,49 @@ func run(configPath string) error {
ts := service.NewService(c, rep, conf.TorrentClient.AddTimeout, conf.TorrentClient.ReadTimeout)
if err := os.MkdirAll(conf.DataFolder, 0744); err != nil {
if err := os.MkdirAll(conf.SourceDir, 0744); err != nil {
return fmt.Errorf("error creating data folder: %w", err)
}
cfs := host.NewStorage(conf.DataFolder, ts)
sfs := host.NewTorrentStorage(conf.SourceDir, ts)
// TODO make separate function
// {
// if st, ok := st.(storage.FileStorageDeleter); ok {
// log.Info().Msg("listing files")
// files, err := listFilesRecursive(conf.SourceDir)
// if err != nil {
// return fmt.Errorf("error listing files: %w", err)
// }
// torrentFiles := []string{}
// for _, v := range files {
// if strings.HasSuffix(v, ".torrent") {
// torrentFiles = append(torrentFiles, v)
// }
// }
// log.Info().Int("count", len(torrentFiles)).Msg("loading torrent files")
// torrentList := []*torrent.Torrent{}
// for _, tf := range torrentFiles {
// t, err := c.AddTorrentFromFile(tf)
// if err != nil {
// return err
// }
// <-t.GotInfo()
// torrentList = append(torrentList, t)
// }
// log.Info().Msg("staring cleanup")
// err = st.Cleanup(torrentList)
// if err != nil {
// return fmt.Errorf("cleanup error: %w", err)
// }
// }
// }
if conf.Mounts.Fuse.Enabled {
mh := fuse.NewHandler(conf.Mounts.Fuse.AllowOther, conf.Mounts.Fuse.Path)
err := mh.Mount(cfs)
err := mh.Mount(sfs)
if err != nil {
return fmt.Errorf("mount fuse error: %w", err)
}
@ -124,7 +160,7 @@ func run(configPath string) error {
if conf.Mounts.WebDAV.Enabled {
go func() {
if err := webdav.NewWebDAVServer(cfs, conf.Mounts.WebDAV.Port, conf.Mounts.WebDAV.User, conf.Mounts.WebDAV.Pass); err != nil {
if err := webdav.NewWebDAVServer(sfs, conf.Mounts.WebDAV.Port, conf.Mounts.WebDAV.User, conf.Mounts.WebDAV.Pass); err != nil {
log.Error().Err(err).Msg("error starting webDAV")
}
@ -133,7 +169,7 @@ func run(configPath string) error {
}
if conf.Mounts.HttpFs.Enabled {
go func() {
httpfs := httpfs.NewHTTPFS(cfs)
httpfs := httpfs.NewHTTPFS(sfs)
err = nethttp.ListenAndServe(fmt.Sprintf("0.0.0.0:%d", conf.Mounts.HttpFs.Port), nethttp.FileServer(httpfs))
if err != nil {
log.Error().Err(err).Msg("error starting HTTPFS")
@ -157,16 +193,14 @@ func run(configPath string) error {
listener, err := net.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", conf.Mounts.NFS.Port))
panicOnErr(err, "starting TCP listener")
log.Info().Str("host", listener.Addr().String()).Msg("starting NFS server")
handler, err := nfs.NewNFSv3Handler(cfs)
handler, err := nfs.NewNFSv3Handler(sfs)
panicOnErr(err, "creating NFS handler")
panicOnErr(wnfs.Serve(listener, handler), "serving nfs")
}()
}
dataFS := vfs.NewOsFs(conf.DataFolder)
go func() {
if err := webdav.NewWebDAVServer(dataFS, 36912, conf.Mounts.WebDAV.User, conf.Mounts.WebDAV.Pass); err != nil {
if err := webdav.NewDirServer(conf.SourceDir, 36912, conf.Mounts.WebDAV.User, conf.Mounts.WebDAV.Pass); err != nil {
log.Error().Err(err).Msg("error starting webDAV")
}