Restructure seinfo

* Restructure queries to only have one output
* Fix portcon help info to be clearer about specifying ports
* Cover all functions with exception handling
This commit is contained in:
Chris PeBenito 2014-11-30 09:34:59 -05:00
parent bf8d60e1e5
commit 16f2eab30c

147
seinfo
View File

@ -59,7 +59,7 @@ queries.add_argument("--netifcon", help="Print netifcon statements.",
queries.add_argument("--nodecon", help="Print nodecon statements.",
dest="nodeconquery", default="", nargs='?', const=True, metavar="ADDR")
queries.add_argument("--portcon", help="Print portcon statements.",
dest="portconquery", default="", nargs='?', const=True, metavar="PORT_RANGE")
dest="portconquery", default="", nargs='?', const=True, metavar="PORTNUM[-PORTNUM]")
queries.add_argument("--permissive", help="Print permissive statements.",
dest="permissivequery", default="", nargs='?', const=True, metavar="TYPE")
queries.add_argument("--polcap", help="Print policy capabilities.",
@ -69,21 +69,6 @@ args = parser.parse_args()
try:
p = setools.SELinuxPolicy(args.policy)
except Exception as err:
print(err)
sys.exit(-1)
if args.typequery:
if isinstance(args.typequery, str):
q = setools.typequery.TypeQuery(p, name=args.typequery)
else:
q = setools.typequery.TypeQuery(p)
for t in sorted(q.results()):
if args.expand:
print(t.statement())
else:
print(t)
if args.boolquery:
if isinstance(args.boolquery, str):
@ -91,121 +76,49 @@ if args.boolquery:
else:
q = setools.boolquery.BoolQuery(p)
for b in sorted(q.results()):
if args.expand:
print(b.statement())
else:
print(b)
if args.polcapquery:
if isinstance(args.polcapquery, str):
q = setools.polcapquery.PolCapQuery(p, name=args.polcapquery)
else:
q = setools.polcapquery.PolCapQuery(p)
for cap in sorted(q.results()):
if args.expand:
print(cap.statement())
else:
print(cap)
if args.userquery:
if isinstance(args.userquery, str):
q = setools.userquery.UserQuery(p, name=args.userquery)
else:
q = setools.userquery.UserQuery(p)
for u in sorted(q.results()):
if args.expand:
print(u.statement())
else:
print(u)
if args.rolequery:
if isinstance(args.rolequery, str):
q = setools.rolequery.RoleQuery(p, name=args.rolequery)
else:
q = setools.rolequery.RoleQuery(p)
for r in sorted(q.results()):
if args.expand:
print(r.statement())
else:
print(r)
if args.classquery:
elif args.classquery:
if isinstance(args.classquery, str):
q = setools.objclassquery.ObjClassQuery(p, name=args.classquery)
else:
q = setools.objclassquery.ObjClassQuery(p)
for c in sorted(q.results()):
if args.expand:
print(c.statement())
else:
print(c)
if args.initialsidquery:
if isinstance(args.initialsidquery, str):
q = setools.initsidquery.InitialSIDQuery(p, name=args.initialsidquery)
else:
q = setools.initsidquery.InitialSIDQuery(p)
for i in sorted(q.results()):
if args.expand:
print(i.statement())
else:
print(i)
if args.fsusequery:
elif args.fsusequery:
if isinstance(args.fsusequery, str):
q = setools.fsusequery.FSUseQuery(p, fs=args.fsusequery)
else:
q = setools.fsusequery.FSUseQuery(p)
for f in sorted(q.results()):
if args.expand:
print(f.statement())
else:
print(f)
if args.genfsconquery:
elif args.genfsconquery:
if isinstance(args.genfsconquery, str):
q = setools.genfsconquery.GenfsconQuery(p, fs=args.genfsconquery)
else:
q = setools.genfsconquery.GenfsconQuery(p)
for g in sorted(q.results()):
if args.expand:
print(g.statement())
elif args.initialsidquery:
if isinstance(args.initialsidquery, str):
q = setools.initsidquery.InitialSIDQuery(p, name=args.initialsidquery)
else:
print(g)
q = setools.initsidquery.InitialSIDQuery(p)
if args.netifconquery:
elif args.netifconquery:
if isinstance(args.netifconquery, str):
q = setools.netifconquery.NetifconQuery(p, name=args.netifconquery)
else:
q = setools.netifconquery.NetifconQuery(p)
for n in sorted(q.results()):
if args.expand:
print(n.statement())
else:
print(n)
if args.nodeconquery:
elif args.nodeconquery:
if isinstance(args.nodeconquery, str):
q = setools.nodeconquery.NodeconQuery(p, net=args.nodeconquery)
else:
q = setools.nodeconquery.NodeconQuery(p)
for n in sorted(q.results()):
if args.expand:
print(n.statement())
elif args.polcapquery:
if isinstance(args.polcapquery, str):
q = setools.polcapquery.PolCapQuery(p, name=args.polcapquery)
else:
print(n)
q = setools.polcapquery.PolCapQuery(p)
if args.portconquery:
elif args.portconquery:
if isinstance(args.portconquery, str):
q = setools.portconquery.PortconQuery(p)
@ -224,8 +137,30 @@ if args.portconquery:
else:
q = setools.portconquery.PortconQuery(p)
for port in sorted(q.results()):
if args.expand:
print(port.statement())
elif args.rolequery:
if isinstance(args.rolequery, str):
q = setools.rolequery.RoleQuery(p, name=args.rolequery)
else:
print(port)
q = setools.rolequery.RoleQuery(p)
elif args.typequery:
if isinstance(args.typequery, str):
q = setools.typequery.TypeQuery(p, name=args.typequery)
else:
q = setools.typequery.TypeQuery(p)
elif args.userquery:
if isinstance(args.userquery, str):
q = setools.userquery.UserQuery(p, name=args.userquery)
else:
q = setools.userquery.UserQuery(p)
for item in sorted(q.results()):
if args.expand:
print(item.statement())
else:
print(item)
except Exception as err:
print(err)
sys.exit(-1)