| import dbus |
| import dbus.service |
| from sepolicy.sedbus import SELinuxDBus |
| |
| def convert_customization(buf): |
| cust_dict = {} |
| cust_dict["fcontext-equiv"] = {} |
| for i in buf.split("\n"): |
| rec = i.split() |
| if len(rec) == 0: |
| continue |
| if rec[1] == "-D": |
| continue |
| if rec[0] not in cust_dict: |
| cust_dict[rec[0]] = {} |
| if rec[0] == "boolean": |
| cust_dict["boolean"][rec[-1]] = { "active": rec[2] == "-1" } |
| if rec[0] == "login": |
| cust_dict["login"][rec[-1]] = { "seuser": rec[3], "range": rec[5] } |
| if rec[0] == "interface": |
| cust_dict["login"][rec[-1]] = { "type": rec[3] } |
| if rec[0] == "user": |
| cust_dict["user"][rec[-1]] = { "level": rec[3], "range": rec[5], "role": rec[7] } |
| if rec[0] == "port": |
| cust_dict["port"][(rec[-1], rec[-2] )] = { "type": rec[3] } |
| if rec[0] == "node": |
| cust_dict["node"][rec[-1]] = { "mask": rec[3], "protocol":rec[5], "type": rec[7] } |
| if rec[0] == "fcontext": |
| if rec[2] == "-e": |
| cust_dict["fcontext-equiv"][(rec[-1])] = { "equiv": rec[3] } |
| else: |
| cust_dict["fcontext"][(rec[-1],rec[3])] = { "type": rec[5] } |
| if rec[0] == "module": |
| cust_dict["module"][rec[-1]] = { "enabled": rec[2] != "-d" } |
| |
| return cust_dict |
| if __name__ == "__main__": |
| try: |
| dbus_proxy = SELinuxDBus() |
| resp = dbus_proxy.customized() |
| print convert_customization(resp) |
| except dbus.DBusException, e: |
| print e |