Working config & permissions

This commit is contained in:
2025-03-27 23:28:12 +08:00
parent 5896d5fcd2
commit 5d7e37ab7c
7 changed files with 148 additions and 17 deletions

59
main.go
View File

@@ -1,29 +1,84 @@
package main
import (
"encoding/json"
"fmt"
"log"
"net"
"os"
"os/signal"
"syscall"
"edgaru089.ink/go/regolith/internal/conf"
"edgaru089.ink/go/regolith/internal/http"
"edgaru089.ink/go/regolith/internal/perm"
)
func main() {
var s *http.Server
listener, err := net.Listen("tcp", ":3128")
{
perm_buf, err := os.ReadFile("perm.json")
if err != nil {
panic(err)
}
perm_json := make(map[string]perm.Config)
err = json.Unmarshal(perm_buf, &perm_json)
if err != nil {
panic(err)
}
s = &http.Server{
Perm: perm.New(perm_json),
}
}
var conf conf.Config
{
conf_buf, err := os.ReadFile("config.json")
if err != nil {
panic(err)
}
err = json.Unmarshal(conf_buf, &conf)
if err != nil {
panic(err)
}
}
listener, err := net.Listen(conf.ListenType, conf.ListenAddress)
if err != nil {
panic(err)
}
log.Printf("listeneing on [%s], type %s", conf.ListenAddress, conf.ListenType)
sigint_chan := make(chan os.Signal, 1)
signal.Notify(sigint_chan, os.Interrupt)
go func() {
<-sigint_chan
log.Printf("SIGINT received, quitting")
listener.Close()
}()
s := &http.Server{}
sighup_chan := make(chan os.Signal, 1)
signal.Notify(sighup_chan, syscall.SIGHUP)
go func() {
for {
<-sighup_chan
log.Printf("SIGHUP received, reloading permissions")
perm_buf, err := os.ReadFile("perm.json")
if err != nil {
log.Printf("skipping reload: error opening perm.json: %e", err)
continue
}
perm_json := make(map[string]perm.Config)
err = json.Unmarshal(perm_buf, &perm_json)
if err != nil {
log.Printf("skipping reload: error unmarshaling perm.json: %e", err)
continue
}
s.Perm.Load(perm_json)
}
}()
err = s.Serve(listener)
if err != nil {
fmt.Println(err)