aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/fpkg/bundle.go12
-rw-r--r--cmd/fpkg/install.go38
-rw-r--r--cmd/fpkg/main.go14
-rw-r--r--cmd/fpkg/paths.go10
-rw-r--r--cmd/fpkg/proc.go21
-rw-r--r--cmd/fpkg/start.go9
-rw-r--r--cmd/fpkg/with.go4
7 files changed, 51 insertions, 57 deletions
diff --git a/cmd/fpkg/bundle.go b/cmd/fpkg/bundle.go
index 5c9db725..5692d5cb 100644
--- a/cmd/fpkg/bundle.go
+++ b/cmd/fpkg/bundle.go
@@ -2,10 +2,10 @@ package main
import (
"encoding/json"
+ "log"
"os"
"git.gensokyo.uk/security/fortify/dbus"
- "git.gensokyo.uk/security/fortify/internal/fmsg"
"git.gensokyo.uk/security/fortify/internal/system"
)
@@ -63,18 +63,18 @@ func loadBundleInfo(name string, beforeFail func()) *bundleInfo {
bundle := new(bundleInfo)
if f, err := os.Open(name); err != nil {
beforeFail()
- fmsg.Fatalf("cannot open bundle: %v", err)
+ log.Fatalf("cannot open bundle: %v", err)
} else if err = json.NewDecoder(f).Decode(&bundle); err != nil {
beforeFail()
- fmsg.Fatalf("cannot parse bundle metadata: %v", err)
+ log.Fatalf("cannot parse bundle metadata: %v", err)
} else if err = f.Close(); err != nil {
- fmsg.Printf("cannot close bundle metadata: %v", err)
+ log.Printf("cannot close bundle metadata: %v", err)
// not fatal
}
if bundle.ID == "" {
beforeFail()
- fmsg.Fatal("application identifier must not be empty")
+ log.Fatal("application identifier must not be empty")
}
return bundle
@@ -82,7 +82,7 @@ func loadBundleInfo(name string, beforeFail func()) *bundleInfo {
func formatHostname(name string) string {
if h, err := os.Hostname(); err != nil {
- fmsg.Printf("cannot get hostname: %v", err)
+ log.Printf("cannot get hostname: %v", err)
return "fortify-" + name
} else {
return h + "-" + name
diff --git a/cmd/fpkg/install.go b/cmd/fpkg/install.go
index 7c06461d..d1643b40 100644
--- a/cmd/fpkg/install.go
+++ b/cmd/fpkg/install.go
@@ -3,10 +3,12 @@ package main
import (
"encoding/json"
"flag"
+ "log"
"os"
"path"
"git.gensokyo.uk/security/fortify/fst"
+ "git.gensokyo.uk/security/fortify/internal"
"git.gensokyo.uk/security/fortify/internal/fmsg"
)
@@ -25,12 +27,12 @@ func actionInstall(args []string) {
args = set.Args()
if len(args) != 1 {
- fmsg.Fatal("invalid argument")
+ log.Fatal("invalid argument")
}
pkgPath := args[0]
if !path.IsAbs(pkgPath) {
if dir, err := os.Getwd(); err != nil {
- fmsg.Fatalf("cannot get current directory: %v", err)
+ log.Fatalf("cannot get current directory: %v", err)
} else {
pkgPath = path.Join(dir, pkgPath)
}
@@ -54,7 +56,7 @@ func actionInstall(args []string) {
var workDir string
if p, err := os.MkdirTemp("", "fpkg.*"); err != nil {
- fmsg.Fatalf("cannot create temporary directory: %v", err)
+ log.Fatalf("cannot create temporary directory: %v", err)
} else {
workDir = p
}
@@ -78,19 +80,17 @@ func actionInstall(args []string) {
if s, err := os.Stat(pathSet.metaPath); err != nil {
if !os.IsNotExist(err) {
cleanup()
- fmsg.Fatalf("cannot access %q: %v", pathSet.metaPath, err)
- panic("unreachable")
+ log.Fatalf("cannot access %q: %v", pathSet.metaPath, err)
}
// did not modify app, clean installation condition met later
} else if s.IsDir() {
cleanup()
- fmsg.Fatalf("metadata path %q is not a file", pathSet.metaPath)
- panic("unreachable")
+ log.Fatalf("metadata path %q is not a file", pathSet.metaPath)
} else {
app = loadBundleInfo(pathSet.metaPath, cleanup)
if app.ID != bundle.ID {
cleanup()
- fmsg.Fatalf("app %q claims to have identifier %q", bundle.ID, app.ID)
+ log.Fatalf("app %q claims to have identifier %q", bundle.ID, app.ID)
}
// sec: should verify credentials
}
@@ -102,21 +102,20 @@ func actionInstall(args []string) {
app.Launcher == bundle.Launcher &&
app.ActivationPackage == bundle.ActivationPackage {
cleanup()
- fmsg.Printf("package %q is identical to local application %q", pkgPath, app.ID)
- fmsg.Exit(0)
+ log.Printf("package %q is identical to local application %q", pkgPath, app.ID)
+ internal.Exit(0)
}
// AppID determines uid
if app.AppID != bundle.AppID {
cleanup()
- fmsg.Fatalf("package %q app id %d differs from installed %d", pkgPath, bundle.AppID, app.AppID)
- panic("unreachable")
+ log.Fatalf("package %q app id %d differs from installed %d", pkgPath, bundle.AppID, app.AppID)
}
// sec: should compare version string
- fmsg.VPrintf("installing application %q version %q over local %q", bundle.ID, bundle.Version, app.Version)
+ fmsg.Verbosef("installing application %q version %q over local %q", bundle.ID, bundle.Version, app.Version)
} else {
- fmsg.VPrintf("application %q clean installation", bundle.ID)
+ fmsg.Verbosef("application %q clean installation", bundle.ID)
// sec: should install credentials
}
@@ -174,21 +173,18 @@ func actionInstall(args []string) {
// serialise metadata to ensure consistency
if f, err := os.OpenFile(pathSet.metaPath+"~", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644); err != nil {
cleanup()
- fmsg.Fatalf("cannot create metadata file: %v", err)
- panic("unreachable")
+ log.Fatalf("cannot create metadata file: %v", err)
} else if err = json.NewEncoder(f).Encode(bundle); err != nil {
cleanup()
- fmsg.Fatalf("cannot write metadata: %v", err)
- panic("unreachable")
+ log.Fatalf("cannot write metadata: %v", err)
} else if err = f.Close(); err != nil {
- fmsg.Printf("cannot close metadata file: %v", err)
+ log.Printf("cannot close metadata file: %v", err)
// not fatal
}
if err := os.Rename(pathSet.metaPath+"~", pathSet.metaPath); err != nil {
cleanup()
- fmsg.Fatalf("cannot rename metadata file: %v", err)
- panic("unreachable")
+ log.Fatalf("cannot rename metadata file: %v", err)
}
cleanup()
diff --git a/cmd/fpkg/main.go b/cmd/fpkg/main.go
index f348cb5e..e95a36cb 100644
--- a/cmd/fpkg/main.go
+++ b/cmd/fpkg/main.go
@@ -2,8 +2,10 @@ package main
import (
"flag"
+ "log"
"os"
+ "git.gensokyo.uk/security/fortify/internal"
"git.gensokyo.uk/security/fortify/internal/fmsg"
)
@@ -11,7 +13,7 @@ const shell = "/run/current-system/sw/bin/bash"
func init() {
if err := os.Setenv("SHELL", shell); err != nil {
- fmsg.Fatalf("cannot set $SHELL: %v", err)
+ log.Fatalf("cannot set $SHELL: %v", err)
}
}
@@ -24,14 +26,14 @@ func init() {
}
func main() {
- fmsg.SetPrefix("fpkg")
+ fmsg.Prepare("fpkg")
flag.Parse()
- fmsg.SetVerbose(flagVerbose)
+ fmsg.Store(flagVerbose)
args := flag.Args()
if len(args) < 1 {
- fmsg.Fatal("invalid argument")
+ log.Fatal("invalid argument")
}
switch args[0] {
@@ -41,8 +43,8 @@ func main() {
actionStart(args[1:])
default:
- fmsg.Fatal("invalid argument")
+ log.Fatal("invalid argument")
}
- fmsg.Exit(0)
+ internal.Exit(0)
}
diff --git a/cmd/fpkg/paths.go b/cmd/fpkg/paths.go
index cf36c096..231388e5 100644
--- a/cmd/fpkg/paths.go
+++ b/cmd/fpkg/paths.go
@@ -1,6 +1,7 @@
package main
import (
+ "log"
"os"
"os/exec"
"path"
@@ -25,8 +26,8 @@ func init() {
func lookPath(file string) string {
if p, err := exec.LookPath(file); err != nil {
- fmsg.Fatalf("%s: command not found", file)
- panic("unreachable")
+ log.Fatalf("%s: command not found", file)
+ return ""
} else {
return p
}
@@ -35,15 +36,14 @@ func lookPath(file string) string {
var beforeRunFail = new(atomic.Pointer[func()])
func mustRun(name string, arg ...string) {
- fmsg.VPrintf("spawning process: %q %q", name, arg)
+ fmsg.Verbosef("spawning process: %q %q", name, arg)
cmd := exec.Command(name, arg...)
cmd.Stdin, cmd.Stdout, cmd.Stderr = os.Stdin, os.Stdout, os.Stderr
if err := cmd.Run(); err != nil {
if f := beforeRunFail.Swap(nil); f != nil {
(*f)()
}
- fmsg.Fatalf("%s: %v", name, err)
- panic("unreachable")
+ log.Fatalf("%s: %v", name, err)
}
}
diff --git a/cmd/fpkg/proc.go b/cmd/fpkg/proc.go
index 7fa6df5a..4413496a 100644
--- a/cmd/fpkg/proc.go
+++ b/cmd/fpkg/proc.go
@@ -4,6 +4,7 @@ import (
"encoding/json"
"errors"
"io"
+ "log"
"os"
"os/exec"
@@ -25,14 +26,12 @@ func fortifyApp(config *fst.Config, beforeFail func()) {
)
if p, ok := internal.Path(Fmain); !ok {
beforeFail()
- fmsg.Fatal("invalid fortify path, this copy of fpkg is not compiled correctly")
- panic("unreachable")
+ log.Fatal("invalid fortify path, this copy of fpkg is not compiled correctly")
} else if r, w, err := os.Pipe(); err != nil {
beforeFail()
- fmsg.Fatalf("cannot pipe: %v", err)
- panic("unreachable")
+ log.Fatalf("cannot pipe: %v", err)
} else {
- if fmsg.Verbose() {
+ if fmsg.Load() {
cmd = exec.Command(p, "-v", "app", "3")
} else {
cmd = exec.Command(p, "app", "3")
@@ -45,26 +44,22 @@ func fortifyApp(config *fst.Config, beforeFail func()) {
go func() {
if err := json.NewEncoder(st).Encode(config); err != nil {
beforeFail()
- fmsg.Fatalf("cannot send configuration: %v", err)
- panic("unreachable")
+ log.Fatalf("cannot send configuration: %v", err)
}
}()
if err := cmd.Start(); err != nil {
beforeFail()
- fmsg.Fatalf("cannot start fortify: %v", err)
- panic("unreachable")
+ log.Fatalf("cannot start fortify: %v", err)
}
if err := cmd.Wait(); err != nil {
var exitError *exec.ExitError
if errors.As(err, &exitError) {
beforeFail()
- fmsg.Exit(exitError.ExitCode())
- panic("unreachable")
+ internal.Exit(exitError.ExitCode())
} else {
beforeFail()
- fmsg.Fatalf("cannot wait: %v", err)
- panic("unreachable")
+ log.Fatalf("cannot wait: %v", err)
}
}
}
diff --git a/cmd/fpkg/start.go b/cmd/fpkg/start.go
index 4a882110..71e00281 100644
--- a/cmd/fpkg/start.go
+++ b/cmd/fpkg/start.go
@@ -2,11 +2,12 @@ package main
import (
"flag"
+ "log"
"path"
"git.gensokyo.uk/security/fortify/fst"
"git.gensokyo.uk/security/fortify/helper/bwrap"
- "git.gensokyo.uk/security/fortify/internal/fmsg"
+ "git.gensokyo.uk/security/fortify/internal"
)
func actionStart(args []string) {
@@ -26,7 +27,7 @@ func actionStart(args []string) {
args = set.Args()
if len(args) < 1 {
- fmsg.Fatal("invalid argument")
+ log.Fatal("invalid argument")
}
/*
@@ -37,7 +38,7 @@ func actionStart(args []string) {
pathSet := pathSetByApp(id)
app := loadBundleInfo(pathSet.metaPath, func() {})
if app.ID != id {
- fmsg.Fatalf("app %q claims to have identifier %q", id, app.ID)
+ log.Fatalf("app %q claims to have identifier %q", id, app.ID)
}
/*
@@ -144,7 +145,7 @@ func actionStart(args []string) {
*/
fortifyApp(config, func() {})
- fmsg.Exit(0)
+ internal.Exit(0)
}
func appendGPUFilesystem(config *fst.Config) {
diff --git a/cmd/fpkg/with.go b/cmd/fpkg/with.go
index 03718dd0..6f5b225e 100644
--- a/cmd/fpkg/with.go
+++ b/cmd/fpkg/with.go
@@ -6,7 +6,7 @@ import (
"git.gensokyo.uk/security/fortify/fst"
"git.gensokyo.uk/security/fortify/helper/bwrap"
- "git.gensokyo.uk/security/fortify/internal/fmsg"
+ "git.gensokyo.uk/security/fortify/internal"
)
func withNixDaemon(
@@ -95,7 +95,7 @@ func fortifyAppDropShell(config *fst.Config, dropShell bool, beforeFail func())
config.Command = []string{shell, "-l"}
fortifyApp(config, beforeFail)
beforeFail()
- fmsg.Exit(0)
+ internal.Exit(0)
}
fortifyApp(config, beforeFail)
}