aboutsummaryrefslogtreecommitdiffhomepage
path: root/main.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2024-12-21 18:16:31 +0900
committerOphestra <cat@gensokyo.uk>2024-12-21 18:33:30 +0900
commitdf7f692e6158d7fd19960c8a4f4dadaaabdc88b6 (patch)
treeb259b530f332026002ae654dd460c6a6dc39a35c /main.go
parent7a8b625a57c496b880d6ea0d497b8fd0bb066bc6 (diff)
fortify: move show formatting out of main
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'main.go')
-rw-r--r--main.go134
1 files changed, 1 insertions, 133 deletions
diff --git a/main.go b/main.go
index f773bd99..d7786fd6 100644
--- a/main.go
+++ b/main.go
@@ -10,7 +10,6 @@ import (
"strings"
"sync"
"text/tabwriter"
- "time"
"git.gensokyo.uk/security/fortify/dbus"
"git.gensokyo.uk/security/fortify/fst"
@@ -190,138 +189,7 @@ func main() {
}
}
- if flagJSON {
- v := interface{}(config)
- if instance != nil {
- v = instance
- }
-
- if s, err := json.MarshalIndent(v, "", " "); err != nil {
- fmsg.Fatalf("cannot serialise as JSON: %v", err)
- panic("unreachable")
- } else {
- fmt.Println(string(s))
- }
- } else {
- buf := new(strings.Builder)
- w := tabwriter.NewWriter(buf, 0, 1, 4, ' ', 0)
- printf := func(format string, a ...any) {
- if _, err := w.Write([]byte(fmt.Sprintf(format, a...))); err != nil {
- fmsg.Fatalf("cannot write to buffer: %v", err)
- }
- }
-
- if instance != nil {
- printf("State\n")
- printf(" Instance:\t%s (%d)\n", instance.ID.String(), instance.PID)
- printf(" Uptime:\t%s\n", time.Now().Sub(instance.Time).Round(time.Second).String())
- printf("\n")
- }
-
- printf("App\n")
- if config.ID != "" {
- printf(" ID:\t%d (%s)\n", config.Confinement.AppID, config.ID)
- } else {
- printf(" ID:\t%d\n", config.Confinement.AppID)
- }
- printf(" Enablements:\t%s\n", config.Confinement.Enablements.String())
- if len(config.Confinement.Groups) > 0 {
- printf(" Groups:\t%q\n", config.Confinement.Groups)
- }
- printf(" Directory:\t%s\n", config.Confinement.Outer)
- if config.Confinement.Sandbox != nil {
- sandbox := config.Confinement.Sandbox
- if sandbox.Hostname != "" {
- printf(" Hostname:\t%q\n", sandbox.Hostname)
- }
- flags := make([]string, 0, 7)
- writeFlag := func(name string, value bool) {
- if value {
- flags = append(flags, name)
- }
- }
- writeFlag("userns", sandbox.UserNS)
- writeFlag("net", sandbox.Net)
- writeFlag("dev", sandbox.Dev)
- writeFlag("tty", sandbox.NoNewSession)
- writeFlag("mapuid", sandbox.MapRealUID)
- writeFlag("directwl", sandbox.DirectWayland)
- writeFlag("autoetc", sandbox.AutoEtc)
- if len(flags) == 0 {
- flags = append(flags, "none")
- }
- printf(" Flags:\t%s\n", strings.Join(flags, " "))
- printf(" Overrides:\t%s\n", strings.Join(sandbox.Override, " "))
-
- // Env map[string]string `json:"env"`
- // Link [][2]string `json:"symlink"`
- } else {
- // this gets printed before everything else
- fmt.Println("WARNING: current configuration uses permissive defaults!")
- }
- printf(" Command:\t%s\n", strings.Join(config.Command, " "))
- printf("\n")
-
- if config.Confinement.Sandbox != nil && len(config.Confinement.Sandbox.Filesystem) > 0 {
- printf("Filesystem:\n")
- for _, f := range config.Confinement.Sandbox.Filesystem {
- expr := new(strings.Builder)
- if f.Device {
- expr.WriteString(" d")
- } else if f.Write {
- expr.WriteString(" w")
- } else {
- expr.WriteString(" ")
- }
- if f.Must {
- expr.WriteString("*")
- } else {
- expr.WriteString("+")
- }
- expr.WriteString(f.Src)
- if f.Dst != "" {
- expr.WriteString(":" + f.Dst)
- }
- printf("%s\n", expr.String())
- }
- printf("\n")
- }
-
- printDBus := func(c *dbus.Config) {
- printf(" Filter:\t%v\n", c.Filter)
- if len(c.See) > 0 {
- printf(" See:\t%q\n", c.See)
- }
- if len(c.Talk) > 0 {
- printf(" Talk:\t%q\n", c.Talk)
- }
- if len(c.Own) > 0 {
- printf(" Own:\t%q\n", c.Own)
- }
- if len(c.Call) > 0 {
- printf(" Call:\t%q\n", c.Call)
- }
- if len(c.Broadcast) > 0 {
- printf(" Broadcast:\t%q\n", c.Broadcast)
- }
- }
- if config.Confinement.SessionBus != nil {
- printf("Session bus\n")
- printDBus(config.Confinement.SessionBus)
- printf("\n")
- }
- if config.Confinement.SystemBus != nil {
- printf("System bus\n")
- printDBus(config.Confinement.SystemBus)
- printf("\n")
- }
-
- if err := w.Flush(); err != nil {
- fmsg.Fatalf("cannot flush tabwriter: %v", err)
- }
- fmt.Print(buf.String())
- }
-
+ printShow(instance, config)
fmsg.Exit(0)
case "app": // launch app from configuration file
if len(args) < 2 {