From 249d461f23979aee89e1924fe117f70d1385c672 Mon Sep 17 00:00:00 2001 From: Chris PeBenito Date: Fri, 8 Jul 2005 21:02:59 +0000 Subject: [PATCH] initial global booleans and tunables support. also fix index building, as it was being rebuilt for every module, rather then once after all modules are loaded. --- refpolicy/doc/templates/global_bool_list.html | 8 ++ refpolicy/doc/templates/global_tun_list.html | 8 ++ refpolicy/doc/templates/menu.html | 8 +- refpolicy/support/sedoctool.py | 121 ++++++++++++++---- 4 files changed, 115 insertions(+), 30 deletions(-) create mode 100644 refpolicy/doc/templates/global_bool_list.html create mode 100644 refpolicy/doc/templates/global_tun_list.html diff --git a/refpolicy/doc/templates/global_bool_list.html b/refpolicy/doc/templates/global_bool_list.html new file mode 100644 index 00000000..4272ddd1 --- /dev/null +++ b/refpolicy/doc/templates/global_bool_list.html @@ -0,0 +1,8 @@ +

Global booleans:

+ +[[for bool in booleans]] +
+Name: [[bool['bool_name']]]

+Default Value: [[bool['def_val']]]

+

+[[end]] diff --git a/refpolicy/doc/templates/global_tun_list.html b/refpolicy/doc/templates/global_tun_list.html new file mode 100644 index 00000000..9a8c62e1 --- /dev/null +++ b/refpolicy/doc/templates/global_tun_list.html @@ -0,0 +1,8 @@ +

Global tunables:

+ +[[for tun in tunables]] +
+Name: [[tun['tun_name']]]

+Default Value: [[tun['def_val']]]

+

+[[end]] diff --git a/refpolicy/doc/templates/menu.html b/refpolicy/doc/templates/menu.html index 7a903a3d..6d2cce35 100644 --- a/refpolicy/doc/templates/menu.html +++ b/refpolicy/doc/templates/menu.html @@ -10,9 +10,13 @@ [[end]]

+ * Global Booleans  +

+ * Global Tunables  +


* Layer Index

- * Interface Index + * Interface Index

- * Template Index + * Template Index diff --git a/refpolicy/support/sedoctool.py b/refpolicy/support/sedoctool.py index 5e7bf83c..d0d981b3 100755 --- a/refpolicy/support/sedoctool.py +++ b/refpolicy/support/sedoctool.py @@ -184,7 +184,20 @@ def temp_cmp(a, b): """ return cmp(a["template_name"], b["template_name"]) - + +def tun_cmp(a, b): + """ + Compares two tunables. + """ + + return cmp(a["tun_name"], b["tun_name"]) +def bool_cmp(a, b): + """ + Compares two booleans. + """ + + return cmp(a["bool_name"], b["bool_name"]) + def gen_doc_menu(mod_layer, module_list): """ Generates the HTML document menu. @@ -277,6 +290,12 @@ def gen_docs(doc, working_dir, templatedir): templistfile = open(templatedir + "/temp_list.html", "r") templistdata = templistfile.read() templistfile.close() + boollistfile = open(templatedir + "/global_bool_list.html", "r") + boollistdata = boollistfile.read() + boollistfile.close() + tunlistfile = open(templatedir + "/global_tun_list.html", "r") + tunlistdata = tunlistfile.read() + tunlistfile.close() except: error("Could not open templates") @@ -504,40 +523,86 @@ def gen_docs(doc, working_dir, templatedir): module_fh.close() - menu = gen_doc_menu(None, module_list) - menu_args = { "menulist" : menu, - "mod_layer" : None } - menu_tpl = pyplate.Template(menudata) - menu_buf = menu_tpl.execute_string(menu_args) + menu = gen_doc_menu(None, module_list) + menu_args = { "menulist" : menu, + "mod_layer" : None } + menu_tpl = pyplate.Template(menudata) + menu_buf = menu_tpl.execute_string(menu_args) - #build the interface index - all_interfaces.sort(int_cmp) - interface_tpl = pyplate.Template(intlistdata) - interface_buf = interface_tpl.execute_string({"interfaces" : all_interfaces}) - int_file = "interfaces.html" - int_fh = open(int_file, "w") - body_tpl = pyplate.Template(bodydata) + #build the interface index + all_interfaces.sort(int_cmp) + interface_tpl = pyplate.Template(intlistdata) + interface_buf = interface_tpl.execute_string({"interfaces" : all_interfaces}) + int_file = "interfaces.html" + int_fh = open(int_file, "w") + body_tpl = pyplate.Template(bodydata) - body_args = { "menu" : menu_buf, - "content" : interface_buf } + body_args = { "menu" : menu_buf, + "content" : interface_buf } - body_tpl.execute(int_fh, body_args) - int_fh.close() + body_tpl.execute(int_fh, body_args) + int_fh.close() - #build the template index - all_templates.sort(temp_cmp) - template_tpl = pyplate.Template(templistdata) - template_buf = template_tpl.execute_string({"templates" : all_templates}) - temp_file = "templates.html" - temp_fh = open(temp_file, "w") - body_tpl = pyplate.Template(bodydata) + #build the template index + all_templates.sort(temp_cmp) + template_tpl = pyplate.Template(templistdata) + template_buf = template_tpl.execute_string({"templates" : all_templates}) + temp_file = "templates.html" + temp_fh = open(temp_file, "w") + body_tpl = pyplate.Template(bodydata) + + body_args = { "menu" : menu_buf, + "content" : template_buf } + + body_tpl.execute(temp_fh, body_args) + temp_fh.close() + + + #build the global tunable index + global_tun_buf = [] + for tunable in doc.getElementsByTagName("tunable"): + if tunable.parentNode.nodeName == "policy": + tunable_name = tunable.getAttribute("name") + default_value = tunable.getAttribute("dftval") + global_tun_buf.append( { "tun_name" : tunable_name, + "def_val" : default_value } ) + global_tun_buf.sort(tun_cmp) + global_tun_tpl = pyplate.Template(tunlistdata) + global_tun_buf = global_tun_tpl.execute_string({"tunables" : global_tun_buf}) + global_tun_file = "global_tunables.html" + global_tun_fh = open(global_tun_file, "w") + body_tpl = pyplate.Template(bodydata) + + body_args = { "menu" : menu_buf, + "content" : global_tun_buf } + + body_tpl.execute(global_tun_fh, body_args) + global_tun_fh.close() + + + #build the global boolean index + global_bool_buf = [] + for boolean in doc.getElementsByTagName("boolean"): + if boolean.parentNode.nodeName == "policy": + bool_name = boolean.getAttribute("name") + default_value = boolean.getAttribute("dftval") + global_bool_buf.append( { "bool_name" : bool_name, + "def_val" : default_value } ) + global_bool_buf.sort(bool_cmp) + global_bool_tpl = pyplate.Template(boollistdata) + global_bool_buf = global_bool_tpl.execute_string({"booleans" : global_bool_buf}) + global_bool_file = "global_booleans.html" + global_bool_fh = open(global_bool_file, "w") + body_tpl = pyplate.Template(bodydata) + + body_args = { "menu" : menu_buf, + "content" : global_bool_buf } + + body_tpl.execute(global_bool_fh, body_args) + global_bool_fh.close() - body_args = { "menu" : menu_buf, - "content" : template_buf } - body_tpl.execute(temp_fh, body_args) - temp_fh.close() def error(error): """