Initial commit: docker compose config
Release Docker multi arch / docker (push) Has been cancelled
Test Install Script / Test Script Syntax (push) Has been cancelled
Test Install Script / Test on almalinux-10 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-10 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (root) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (default) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (root) (push) Has been cancelled
Test Install Script / Test on debian-11 (default) (push) Has been cancelled
Test Install Script / Test on debian-11 (root) (push) Has been cancelled
Test Install Script / Test on debian-12 (default) (push) Has been cancelled
Test Install Script / Test on debian-12 (root) (push) Has been cancelled
Test Install Script / Test on debian-13 (default) (push) Has been cancelled
Test Install Script / Test on debian-13 (root) (push) Has been cancelled
Test Install Script / Test on fedora-latest (default) (push) Has been cancelled
Test Install Script / Test on fedora-latest (root) (push) Has been cancelled
Test Install Script / Test on rocky-10 (default) (push) Has been cancelled
Test Install Script / Test on rocky-10 (root) (push) Has been cancelled
Test Install Script / Test on rocky-8 (default) (push) Has been cancelled
Test Install Script / Test on rocky-8 (root) (push) Has been cancelled
Test Install Script / Test on rocky-9 (default) (push) Has been cancelled
Test Install Script / Test on rocky-9 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (root) (push) Has been cancelled
Release Docker multi arch / docker (push) Has been cancelled
Test Install Script / Test Script Syntax (push) Has been cancelled
Test Install Script / Test on almalinux-10 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-10 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (root) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (default) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (root) (push) Has been cancelled
Test Install Script / Test on debian-11 (default) (push) Has been cancelled
Test Install Script / Test on debian-11 (root) (push) Has been cancelled
Test Install Script / Test on debian-12 (default) (push) Has been cancelled
Test Install Script / Test on debian-12 (root) (push) Has been cancelled
Test Install Script / Test on debian-13 (default) (push) Has been cancelled
Test Install Script / Test on debian-13 (root) (push) Has been cancelled
Test Install Script / Test on fedora-latest (default) (push) Has been cancelled
Test Install Script / Test on fedora-latest (root) (push) Has been cancelled
Test Install Script / Test on rocky-10 (default) (push) Has been cancelled
Test Install Script / Test on rocky-10 (root) (push) Has been cancelled
Test Install Script / Test on rocky-8 (default) (push) Has been cancelled
Test Install Script / Test on rocky-8 (root) (push) Has been cancelled
Test Install Script / Test on rocky-9 (default) (push) Has been cancelled
Test Install Script / Test on rocky-9 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (root) (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
package torrfs
|
||||
|
||||
import (
|
||||
"io/fs"
|
||||
"path"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"server/torr"
|
||||
)
|
||||
|
||||
type RootDir struct {
|
||||
info fs.FileInfo
|
||||
}
|
||||
|
||||
func NewRootDir() *RootDir {
|
||||
return &RootDir{
|
||||
info: info{
|
||||
name: "/",
|
||||
size: 4096,
|
||||
mode: 0o555,
|
||||
mtime: time.Unix(477033600, 0),
|
||||
isDir: true,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (d *RootDir) Open(name string) (fs.File, error) {
|
||||
name = path.Clean(name)
|
||||
if !fs.ValidPath(name) {
|
||||
return nil, &fs.PathError{Path: name, Err: fs.ErrInvalid}
|
||||
}
|
||||
|
||||
if name == "." || name == "/" {
|
||||
return d, nil
|
||||
}
|
||||
|
||||
if !strings.HasPrefix(name, "/") {
|
||||
name = "/" + name
|
||||
}
|
||||
|
||||
return Open(d, name)
|
||||
}
|
||||
|
||||
func (d *RootDir) Stat() (fs.FileInfo, error) {
|
||||
return d.info, nil
|
||||
}
|
||||
|
||||
func (d *RootDir) ReadDir(n int) ([]fs.DirEntry, error) {
|
||||
torrs := torr.ListTorrent()
|
||||
cats := map[string]struct{}{}
|
||||
nodes := map[string]INode{}
|
||||
|
||||
for _, torrent := range torrs {
|
||||
cats[torrent.Category] = struct{}{}
|
||||
}
|
||||
|
||||
for cat := range cats {
|
||||
if cat == "" {
|
||||
cat = "other"
|
||||
}
|
||||
nodes[cat] = NewCategoryDir(cat)
|
||||
}
|
||||
|
||||
var entries []fs.DirEntry
|
||||
for _, c := range nodes {
|
||||
entries = append(entries, c)
|
||||
}
|
||||
if n > 0 && len(entries) > n {
|
||||
entries = entries[:n]
|
||||
}
|
||||
return entries, nil
|
||||
}
|
||||
|
||||
// INode
|
||||
func (d *RootDir) Parent() INode { return nil }
|
||||
func (d *RootDir) Torrent() *torr.Torrent { return nil }
|
||||
func (d *RootDir) SetTorrent(torr *torr.Torrent) {}
|
||||
|
||||
// DirEntry
|
||||
func (d *RootDir) Name() string { return d.info.Name() }
|
||||
func (d *RootDir) IsDir() bool { return true }
|
||||
func (d *RootDir) Type() fs.FileMode {
|
||||
s, _ := d.Stat()
|
||||
return s.Mode()
|
||||
}
|
||||
func (d *RootDir) Info() (fs.FileInfo, error) { return d.info, nil }
|
||||
|
||||
// File
|
||||
func (d *RootDir) Read(bytes []byte) (int, error) { return 0, fs.ErrInvalid }
|
||||
func (d *RootDir) Close() error { return nil }
|
||||
Reference in New Issue
Block a user