function insert($id) { $XML_FILE = $_SESSION['XML_FILE']; $rule = unserialize($_SESSION['rule']); $directive = unserialize($_SESSION['directive']); $tab_rules = $directive->rules; unset($_SESSION['rule']); list($id_dir, $id_rule, $id_father) = explode("-", $id); init_file($XML_FILE); if (!($dom = domxml_open_file($XML_FILE, DOMXML_LOAD_SUBSTITUTE_ENTITIES))) { echo "Error while parsing the document\n"; exit; } $directive = getDirectiveFromXML($dom, $id_dir); if ($id_father != 0) { $tab_rules[$id_father]->nb_child = $tab_rules[$id_father]->nb_child + 1; } if ($id == $tab_rules[$id_rule]->id || $id_rule > count($tab_rules)) { $tab_rules[$id_rule] = $rule; } else { for ($i = count($tab_rules); $i >= $id_rule; $i--) { list($id_dir, $id_rule2, $id_father2) = explode("-", $tab_rules[$i]->id); $new_id_rule = $i + 1; if ($id_father2 >= $id_rule) { $new_id_father = $id_father2 + 1; } else { $new_id_father = $idfather2; } $newid = $id_dir . "-" . $new_id_rule . "-" . $new_id_father; $tab_rules[$i]->id = $newid; $tab_rules[$i + 1] = $tab_rules[$i]; } $tab_rules[$id_rule] = $rule; } $direct = $directive->directive; $rules = $direct->child_nodes(); foreach ($rules as $rule) { $direct->remove_child($rule); } do_directive($directive, &$tab_rules, $dom); $dom->dump_file($XML_FILE); release_file($XML_FILE); $newlevel = $tab_rules[$id_rule]->level; echo "<html><body onload=\"window.open('../viewer/index.php?directive=" . $directive->id . "&level={$newlevel}','right')\"></body></html>"; }
$_SESSION['mini'] = $category_mini; } if (!empty($directive_id)) { if (is_free($directive_id, $XML_FILE) == "true") { $direct = unserialize($_SESSION['directive']); } else { $direct = getDirectiveFromXML($dom, $directive_id); $tab_rules = $direct->rules; } if ($direct->id != $directive_id) { echo "<center><span style='color:red'>" . _("The directive {$directive_id} doesn't exist in {$XML_FILE}") . "</span></center>"; exit; } $_SESSION['directive'] = serialize($direct); if ($XML_FILE != '/etc/ossim/server/directives.xml') { release_file($XML_FILE); } if (!empty($directive_id)) { $direct->printDirective($level, $directive_xml); } ?> </table> <?php $directive_name = Plugin_sid::get_name_by_idsid($conn, "1505", $directive_id); list($properties, $num_properties) = Compliance::get_category($conn, "AND category.sid={$directive_id}"); $iso_groups = ISO27001::get_groups($conn, "WHERE SIDSS_Ref LIKE '{$directive_id}' OR SIDSS_Ref LIKE '{$directive_id},%' OR SIDSS_Ref LIKE '%,{$directive_id}' OR SIDSS_Ref LIKE '%,{$directive_id},%'"); $pci_groups = PCI::get_groups($conn, "WHERE SIDSS_ref LIKE '{$directive_id}' OR SIDSS_ref LIKE '{$directive_id},%' OR SIDSS_ref LIKE '%,{$directive_id}' OR SIDSS_ref LIKE '%,{$directive_id},%'"); list($alarms, $num_alarms) = Alarm::get_list3($conn, "", "", 0, "", null, null, null, null, "", $directive_id); $kdocs = Repository::get_linked_by_directive($conn, $directive_id); ?> <table class="transparent" height="100%" width="100%">
function is_free($directive_id, $XML_FILE = "") { if ($XML_FILE == "") { $XML_FILE = get_directive_file($directive_id); } //if (!file_exists($XML_FILE)) return "false"; init_file($XML_FILE); $dom = domxml_open_file($XML_FILE, DOMXML_LOAD_SUBSTITUTE_ENTITIES); $count = 1; $free = "true"; foreach ($dom->get_elements_by_tagname('directive') as $directive) { $id = $directive->get_attribute('id'); $name = $directive->get_attribute('name'); $count++; if (strcmp($id, $directive_id) == 0) { $free = "false"; } } release_file($XML_FILE); return $free; }
for ($ind = 1; $ind <= count($tab_rules); $ind++) { $rule = $tab_rules[$ind]; list($id_dir, $id_rule, $id_father) = explode("-", $rule->id); if ($id_father == 0) { $new_node = $tab_rules[$id_rule]->getXMLNode($dom); $new_node = $new_directive->append_child($new_node); $tab_rules[$id_rule]->rule = $new_node; if ($tab_rules[$id_rule]->nb_child > 0) { do_rules($id_rule, &$tab_rules, $dom); } } } $parent = $directive->directive->parent_node(); $parent->append_child($new_directive); $dom->dump_file($file); release_file($file); sleep(0.5); echo "<html><body onload=\"top.frames['main'].document.location.href='../index.php?level=1&directive=" . $new_id . "&directive_xml=" . $_GET['directive_xml'] . "&category_mini={$mini}'\"></body></html>"; //echo "<html><body onload=\"top.frames['main'].document.location.href='../index.php?directive=" . $new_id . "&action=copy_directive&id=" . $new_id . "&xml_file=" . $_GET['directive_xml'] . "'\"></body></html>"; //echo "<html><body><a href=\"../index.php?directive=".$new_id."&action=copy_directive&id=".$new_id."\">test</a></body></html>"; } elseif ($query == "save_category") { $file = '/etc/ossim/server/categories.xml'; if (!($dom = domxml_open_file($file, DOMXML_LOAD_SUBSTITUTE_ENTITIES))) { echo _("Error while parsing the document") . "\n"; exit; } ossim_valid($_POST["xml_file"], OSS_ALPHA, OSS_DIGIT, OSS_DOT, OSS_SCORE, OSS_NULLABLE, 'illegal:' . _("xml file")); ossim_valid($_POST["name"], OSS_ALPHA, OSS_DIGIT, OSS_DOT, OSS_SCORE, OSS_NULLABLE, 'illegal:' . _("name")); if (ossim_error()) { die(ossim_error()); }