今すぐv1をリリースすべきでしょうか?

Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>

git-svn-id: file:///srv/svn/repo/mai/trunk@63 e410bdd4-646f-c54f-a7ce-fffcc4f439ae
This commit is contained in:
yakumo.izuru
2024-01-21 03:23:44 +00:00
parent dc9a839f54
commit b10a5036d8
8 changed files with 87 additions and 2 deletions

View File

@@ -7,5 +7,6 @@ import (
func parseFlags() {
flag.StringVar(&configfile, "f", "", "Configuration file")
flag.BoolVar(&verbose, "v", false, "Verbose logging")
flag.Parse()
}

View File

@@ -2,13 +2,17 @@ package main
import (
"bytes"
"fmt"
"net/http"
"net/url"
"os"
"time"
"runtime"
"syscall"
"marisa.chaotic.ninja/mai"
"marisa.chaotic.ninja/mai/engines"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
"github.com/gofiber/fiber/v2/middleware/limiter"
@@ -16,17 +20,22 @@ import (
)
var (
configfile string
verbose bool
)
var conf struct {
group string
listen string
redisuri string
staticpath string
tmplpath string
user string
}
func main() {
parseFlags()
if configfile != "" {
if verbose {
fmt.Printf("[mai] Reading configuration file")
}
readConf(configfile)
}
@@ -34,6 +43,19 @@ func main() {
conf.listen = "127.0.0.1:5000"
conf.staticpath = "./static"
conf.tmplpath = "./views"
if conf.user != "" {
if verbose {
fmt.Printf("[mai] Dropping privileges to %s", conf.user)
}
uid, gid, err := usergroupids(conf.user, conf.group)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
syscall.Setuid(uid)
syscall.Setgid(gid)
}
engine := html.New(conf.tmplpath, ".html")
engine.AddFunc("inc", func(i int) int { return i + 1 })
@@ -265,4 +287,9 @@ func main() {
Browse: true,
})
app.Listen(conf.listen)
if verbose {
fmt.Printf("Starting mai %v\n", mai.FullVersion())
fmt.Printf("Listening on %s", conf.listen)
}
}

View File

@@ -11,9 +11,11 @@ func readConf(file string) error {
return err
}
conf.group = cfg.Section("mai").Key("group").String()
conf.listen = cfg.Section("mai").Key("listen").String()
conf.staticpath = cfg.Section("mai").Key("static").String()
conf.tmplpath = cfg.Section("mai").Key("templates").String()
conf.user = cfg.Section("mai").Key("user").String()
return nil
}

25
cmd/mai/usergroupids.go Normal file
View File

@@ -0,0 +1,25 @@
package main
import (
"os/user"
"strconv"
)
func usergroupids(username string, groupname string) (int, int, error) {
u, err := user.Lookup(username)
if err != nil {
return -1, -1, err
}
uid, _ := strconv.Atoi(u.Uid)
gid, _ := strconv.Atoi(u.Gid)
if conf.group != "" {
g, err := user.LookupGroup(groupname)
if err != nil {
return uid, -1, err
}
gid, _ = strconv.Atoi(g.Gid)
}
return uid, gid, nil
}