mirror of
https://github.com/restic/rest-server.git
synced 2025-10-19 07:33:21 +00:00
reload htpasswd on SIGHUP
This commit is contained in:
parent
a87d968870
commit
f18a5c16be
1 changed files with 15 additions and 0 deletions
15
htpasswd.go
15
htpasswd.go
|
@ -30,8 +30,10 @@ import (
|
|||
"encoding/csv"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"regexp"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
|
@ -54,6 +56,8 @@ type HtpasswdFile struct {
|
|||
// NewHtpasswdFromFile reads the users and passwords from a htpasswd file and returns them. If an error is encountered,
|
||||
// it is returned, together with a nil-Pointer for the HtpasswdFile.
|
||||
func NewHtpasswdFromFile(path string) (*HtpasswdFile, error) {
|
||||
c := make(chan os.Signal, 1)
|
||||
signal.Notify(c, syscall.SIGHUP)
|
||||
stat, err := os.Stat(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -73,6 +77,17 @@ func NewHtpasswdFromFile(path string) (*HtpasswdFile, error) {
|
|||
// Start a goroutine that limits reload checks to once per CheckInterval
|
||||
go h.throttleTimer()
|
||||
|
||||
go func() {
|
||||
for range c {
|
||||
err := h.Reload()
|
||||
if err == nil {
|
||||
log.Printf("Reloaded htpasswd file")
|
||||
} else {
|
||||
log.Printf("Could not reload htpasswd file: %v", err)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
return h, nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue