diff options
-rw-r--r-- | go.mod | 2 | ||||
-rw-r--r-- | main.go | 6 | ||||
-rw-r--r-- | unveil.go | 32 | ||||
-rw-r--r-- | unveil_stub.go | 18 |
4 files changed, 36 insertions, 22 deletions
@@ -8,6 +8,7 @@ require ( github.com/dustin/go-humanize v1.0.0 github.com/go-git/go-git/v5 v5.5.1 github.com/sosedoff/gitkit v0.3.0 + golang.org/x/sys v0.3.0 gopkg.in/yaml.v3 v3.0.0 ) @@ -30,7 +31,6 @@ require ( golang.org/x/crypto v0.4.0 // indirect golang.org/x/mod v0.7.0 // indirect golang.org/x/net v0.4.0 // indirect - golang.org/x/sys v0.3.0 // indirect golang.org/x/tools v0.4.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) @@ -20,9 +20,9 @@ func main() { log.Fatal(err) } - // for path := range []string{c.Dirs.Static, c.Repo.ScanPath, c.Dirs.Templates} { - // Unveil(path, "r") - // } + if err = UnveilPaths([]string{c.Dirs.Static, c.Repo.ScanPath, c.Dirs.Templates}, "r"); err != nil { + log.Fatal(err) + } mux := routes.Handlers(c) addr := fmt.Sprintf("%s:%d", c.Server.Host, c.Server.Port) @@ -1,30 +1,26 @@ //go:build openbsd // +build openbsd -// Doesn't do anything yet. - package main -/* -#include <stdlib.h> -#include <unistd.h> -*/ -import "C" - import ( - "fmt" - "unsafe" + "golang.org/x/sys/unix" ) func Unveil(path string, perms string) error { - cpath := C.CString(path) - defer C.free(unsafe.Pointer(cpath)) - cperms := C.CString(perms) - defer C.free(unsafe.Pointer(cperms)) + return unix.Unveil(path, perms) +} + +func UnveilBlock() error { + return unix.UnveilBlock() +} - rv, err := C.unveil(cpath, cperms) - if rv != 0 { - return fmt.Errorf("unveil(%s, %s) failure (%d)", path, perms, err) +func UnveilPaths(paths []string, perms string) error { + for _, path := range paths { + err := Unveil(path, perms) + if err != nil { + return err + } } - return nil + return UnveilBlock() } diff --git a/unveil_stub.go b/unveil_stub.go new file mode 100644 index 0000000..dc72a7d --- /dev/null +++ b/unveil_stub.go @@ -0,0 +1,18 @@ +//go:build !openbsd +// +build !openbsd + +// Stub functions for GOOS that don't support unix.Unveil() + +package main + +func Unveil(path string, perms string) error { + return nil +} + +func UnveilBlock() error { + return nil +} + +func UnveilPaths(paths []string, perms string) error { + return nil +} |