WIP
This commit is contained in:
parent
78704bee78
commit
2cefb9db98
19 changed files with 691 additions and 627 deletions
cmd/tstor
|
@ -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")
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue