Compare commits
2 Commits
35958f2ade
...
571ffca339
Author | SHA1 | Date | |
---|---|---|---|
571ffca339 | |||
9b0d448698 |
5
go.mod
5
go.mod
@ -1,8 +1,3 @@
|
||||
module lts
|
||||
|
||||
go 1.24.3
|
||||
|
||||
require (
|
||||
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
||||
golang.org/x/sys v0.13.0 // indirect
|
||||
)
|
||||
|
4
go.sum
4
go.sum
@ -1,4 +0,0 @@
|
||||
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
|
||||
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
|
||||
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
|
||||
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
|
53
lts.go
53
lts.go
@ -18,8 +18,6 @@ import (
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/fsnotify/fsnotify"
|
||||
)
|
||||
|
||||
var LISTEN_ADDR string
|
||||
@ -122,6 +120,7 @@ type Cleaner struct {
|
||||
}
|
||||
|
||||
var cleaners map[string]Cleaner = map[string]Cleaner{}
|
||||
var cleanersMutex sync.Mutex
|
||||
|
||||
func handleUpload(w http.ResponseWriter, r *http.Request) {
|
||||
limit := int64(10737418240) // 10GiB
|
||||
@ -188,10 +187,12 @@ func handleUpload(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
log.Println("Could not start cleaner daemon: ", err)
|
||||
}
|
||||
cleanersMutex.Lock()
|
||||
cleaners[bare_name] = Cleaner{
|
||||
Timeout: Timeout{ H: hours, M: mins, S: secs },
|
||||
SpawnTime: time.Now().Unix(),
|
||||
}
|
||||
cleanersMutex.Unlock()
|
||||
}
|
||||
|
||||
func handleHome(w http.ResponseWriter, r *http.Request) {
|
||||
@ -231,11 +232,12 @@ func handleBrowse(w http.ResponseWriter, r *http.Request) {
|
||||
info.ModTime().Day(), info.ModTime().Month().String(), info.ModTime().Year(),
|
||||
info.ModTime().Hour(), info.ModTime().Minute(), info.ModTime().Second(),
|
||||
)
|
||||
cleanersMutex.Lock()
|
||||
cleaner, _ := cleaners[e.Name()]
|
||||
total := cleaner.Timeout.S + cleaner.Timeout.M*60 + cleaner.Timeout.H*60*60
|
||||
now := time.Now().Unix()
|
||||
fmt.Println(cleaner.SpawnTime + total - now)
|
||||
timeleft_unix := time.Unix(cleaner.SpawnTime + total - now, 0)
|
||||
cleanersMutex.Unlock()
|
||||
timeleft := fmt.Sprintf("time left %02d:%02d:%02d",
|
||||
timeleft_unix.Hour() - 1, timeleft_unix.Minute(), timeleft_unix.Second(),
|
||||
)
|
||||
@ -254,7 +256,7 @@ func handleBrowse(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
func reloadAllowedUsers() {
|
||||
func loadAllowedUsers() {
|
||||
log.Println("loading ALLOWED_USERS.txt")
|
||||
allowedUsersTxt, err := ioutil.ReadFile("./ALLOWED_USERS.txt")
|
||||
if err != nil {
|
||||
@ -271,47 +273,8 @@ func reloadAllowedUsers() {
|
||||
allowedUsersMutex.Unlock()
|
||||
}
|
||||
|
||||
func watchAllowedUsers() chan bool {
|
||||
watcher, err := fsnotify.NewWatcher()
|
||||
if err != nil {
|
||||
log.Fatal("Error creating new watcher: ", err)
|
||||
}
|
||||
defer watcher.Close()
|
||||
|
||||
done := make(chan bool)
|
||||
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case event, ok := <-watcher.Events:
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if event.Has(fsnotify.Chmod | fsnotify.Rename) {
|
||||
reloadAllowedUsers()
|
||||
}
|
||||
case err, ok := <-watcher.Errors:
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
log.Println("Watcher error: ", err)
|
||||
case <-done:
|
||||
break
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
err = watcher.Add("./ALLOWED_USERS.txt")
|
||||
if err != nil {
|
||||
log.Fatal("Error adding ALLOWED_USERS.txt to watcher: ", err)
|
||||
}
|
||||
|
||||
return done
|
||||
}
|
||||
|
||||
func main() {
|
||||
reloadAllowedUsers()
|
||||
doneWatching := watchAllowedUsers()
|
||||
loadAllowedUsers()
|
||||
|
||||
http.HandleFunc("/", handleHome)
|
||||
http.HandleFunc("/browse", handleBrowse)
|
||||
@ -331,6 +294,4 @@ func main() {
|
||||
if err != nil {
|
||||
log.Fatal("Error in serving: ", err)
|
||||
}
|
||||
|
||||
doneWatching<-true
|
||||
}
|
||||
|
Reference in New Issue
Block a user