def main
import bend-osdev-apparmor@0.1.0.0/check.bend as Checkimport Base
import bend-osdev-apparmor@0.1.0.0/perm.bend as P
import bend-osdev-apparmor@0.1.0.0/options.bend as O
import bend-osdev-apparmor@0.1.0.0/transitions.bend as TR
import bend-osdev-apparmor@0.1.0.0/rule_file.bend as F
import bend-osdev-apparmor@0.1.0.0/example.bend as EX
import bend-osdev-apparmor@0.1.0.0/apparmor.bend as A
76def main() -> IO(Unit):
77 +big = A.Aa.load_default([EX.AaExample.source("big", big.text(300n))], o("big"))
78 do IO<Unit>:
79 IO.print("example: " ++ show.load(EX.AaExample.loaded()))
80 IO.print(show.d(EX.AaExample.file("/usr/bin/foo", "/etc/ld.so.cache", "r")))
81 IO.print(show.d(EX.AaExample.file("/usr/bin/foo", "/etc/ld.so.cache", "w")))
82 IO.print(show.d(EX.AaExample.file("/usr/bin/foo", "/lib/x86_64/libc.so.6", "mr")))
83 IO.print(show.d(EX.AaExample.file("/usr/bin/foo", "/home/bob/.foo_file", "rw")))
84 IO.print(show.d(EX.AaExample.file("/usr/bin/foo", "/etc/shadow", "r")))
85 IO.print(show.d(EX.AaExample.file("/usr/bin/foo", "/var/log/foo", "w")))
86 IO.print(show.d(EX.AaExample.file("/usr/bin/foo", "/tmp/foo.1", "l")))
87 IO.print(show.d(A.Aa.file(O.AaOptions.default(), pol(), o("/usr/bin/foo"), o("/proc/42/stat"), True{}, F.AaFile.perms("r"))))
88 IO.print(show.d(EX.AaExample.file("/usr/bin/foo", "/proc/42/stat", "r")))
89 IO.print(show.d(EX.AaExample.file("/usr/bin/foo//hat", "/var/spool/q", "rw")))
90 IO.print(show.d(EX.AaExample.file("bar", "/etc/anything", "r")))
91 IO.print(show.d(EX.AaExample.file("bar", "/etc/secret", "r")))
92 IO.print(show.d(A.Aa.file(O.AaOptions.with_complain_deny(O.AaOptions.default(), False{}), pol(), o("bar"), o("/etc/secret"), False{}, F.AaFile.perms("r"))))
93 IO.print(show.d(A.Aa.capability(O.AaOptions.default(), pol(), o("/usr/bin/foo"), 7)))
94 IO.print(show.d(A.Aa.capability(O.AaOptions.default(), pol(), o("/usr/bin/foo"), 21)))
95 IO.print(show.d(A.Aa.network(O.AaOptions.default(), pol(), o("/usr/bin/foo"), o("inet"), o("stream"), o("tcp"))))
96 IO.print(show.d(A.Aa.network(O.AaOptions.default(), pol(), o("/usr/bin/foo"), o("inet6"), o("stream"), o("tcp"))))
97 IO.print(show.d(A.Aa.signal(O.AaOptions.default(), pol(), o("/usr/bin/foo"), P.AaPerms.bit(0n), o("term"), o("/usr/bin/bar"))))
98 IO.print(show.d(A.Aa.signal(O.AaOptions.default(), pol(), o("/usr/bin/foo"), P.AaPerms.bit(1n), o("term"), o("/usr/bin/bar"))))
99 IO.print(EX.AaExample.exec("/usr/bin/foo", "/bin/mount"))
100 IO.print(EX.AaExample.exec("/usr/bin/foo", "/usr/bin/baz"))
101 IO.print(EX.AaExample.exec("/usr/bin/foo", "/usr/bin/bar"))
102 IO.print(EX.AaExample.exec("/usr/bin/foo", "/usr/bin/zzz"))
103 IO.print(EX.AaExample.exec("/usr/bin/foo", "/bin/sh"))
104 IO.print(EX.AaExample.exec("/usr/bin/foo//baz", "/bin/bash"))
105 IO.print(TR.AaExecResult.show(A.Aa.exec_unconfined(pol(), o("/usr/bin/bar"))))
106 IO.print(TR.AaExecResult.show(A.Aa.exec_unconfined(pol(), o("/usr/bin/other"))))
107 IO.print(load1("profile e { /x wa, }"))
108 IO.print(load1("profile e {\n /x r,\n /y ix px,\n}"))
109 IO.print(load1("profile e { capability bogus, }"))
110 IO.print(load1("profile e { @{NOPE}/x r, }"))
111 IO.print(load1("@{A} = /x\n@{A} = /y\nprofile e { }"))
112 IO.print(load1("profile e { /x ix, /x px, }"))
113 IO.print(load1("profile e { unix, }"))
114 IO.print(load1("profile e { include <missing> }"))
115 IO.print(load1("profile e { include if exists <missing> }"))
116 IO.print(load1("profile e { /x/{a} r, }"))
117 IO.print(load1("profile e flags=(complain,kill) { }"))
118 IO.print(load1("profile e { } profile e { }"))
119 IO.print(load1("profile e { /x r }"))
120 IO.print(g("/tmp/*", "/tmp/"))
121 IO.print(g("/tmp/**", "/tmp/a/b"))
122 IO.print(g("/a/{b,c{d,e}}/*", "/a/cd/x"))
123 IO.print(g("/a/[^b]c", "/a//c"))
124 IO.print(g("/a/**/b/**/c/**/d/**/e*", "/a/1/2/b/3/c/4/5/d/6/7/8/f/9/x/y/z/w/v/u/t/s/r/q/p/o/n/m/l"))
125 IO.print("big: " ++ show.load(big))
126 IO.print(big.query(big, "/data/d150/x", "r"))
127 IO.print(big.query(big, "/data/d150/secret", "w"))
128 IO.print(big.query(big, "/data/d300/x", "r"))
129 IO.print(big.query(big, big.path(200n), "r"))
Uses (31)
Used by (0)
No other definition uses this definition.