From 7759f63c9d0ed48702c5a0948edd1c723fdf2481 Mon Sep 17 00:00:00 2001 From: markjcrane Date: Wed, 12 Aug 2015 23:09:07 -0600 Subject: [PATCH] Add the Access Controls as the new interface for ACL Lists. --- app/access_controls/access_control_delete.php | 38 +++ app/access_controls/access_control_edit.php | 208 +++++++++++++++ .../access_control_node_delete.php | 39 +++ .../access_control_node_edit.php | 230 ++++++++++++++++ app/access_controls/access_control_nodes.php | 146 +++++++++++ app/access_controls/access_controls.php | 152 +++++++++++ app/access_controls/app_config.php | 122 +++++++++ app/access_controls/app_defaults.php | 121 +++++++++ app/access_controls/app_languages.php | 245 ++++++++++++++++++ app/access_controls/app_menu.php | 10 + app/access_controls/root.php | 50 ++++ 11 files changed, 1361 insertions(+) create mode 100644 app/access_controls/access_control_delete.php create mode 100644 app/access_controls/access_control_edit.php create mode 100644 app/access_controls/access_control_node_delete.php create mode 100644 app/access_controls/access_control_node_edit.php create mode 100644 app/access_controls/access_control_nodes.php create mode 100644 app/access_controls/access_controls.php create mode 100644 app/access_controls/app_config.php create mode 100644 app/access_controls/app_defaults.php create mode 100644 app/access_controls/app_languages.php create mode 100644 app/access_controls/app_menu.php create mode 100644 app/access_controls/root.php diff --git a/app/access_controls/access_control_delete.php b/app/access_controls/access_control_delete.php new file mode 100644 index 0000000000..6027acf1e7 --- /dev/null +++ b/app/access_controls/access_control_delete.php @@ -0,0 +1,38 @@ + $value) { + $text[$key] = $value[$_SESSION['domain']['language']['code']]; + } + +//get the id + if (count($_GET)>0) { + $id = check_str($_GET["id"]); + } + +if (strlen($id)>0) { + //delete access_control + $sql = "delete from v_access_controls "; + $sql .= "where access_control_uuid = '$id' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + unset($sql); +} + +//redirect the user + $_SESSION['message'] = $text['message-delete']; + header('Location: access_controls.php'); + + +?> \ No newline at end of file diff --git a/app/access_controls/access_control_edit.php b/app/access_controls/access_control_edit.php new file mode 100644 index 0000000000..d6e22d0f78 --- /dev/null +++ b/app/access_controls/access_control_edit.php @@ -0,0 +1,208 @@ + $value) { + $text[$key] = $value[$_SESSION['domain']['language']['code']]; + } + +//action add or update + if (isset($_REQUEST["id"])) { + $action = "update"; + $access_control_uuid = check_str($_REQUEST["id"]); + } + else { + $action = "add"; + } + +//get http post variables and set them to php variables + if (count($_POST)>0) { + $access_control_name = check_str($_POST["access_control_name"]); + $access_control_default = check_str($_POST["access_control_default"]); + $access_control_description = check_str($_POST["access_control_description"]); + } + +if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { + + $msg = ''; + if ($action == "update") { + $access_control_uuid = check_str($_POST["access_control_uuid"]); + } + + //check for all required data + if (strlen($access_control_name) == 0) { $msg .= $text['message-required']." ".$text['label-access_control_name']."
\n"; } + if (strlen($access_control_default) == 0) { $msg .= $text['message-required']." ".$text['label-access_control_default']."
\n"; } + if (strlen($access_control_description) == 0) { $msg .= $text['message-required']." ".$text['label-access_control_description']."
\n"; } + if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { + require_once "resources/header.php"; + require_once "resources/persist_form_var.php"; + echo "
\n"; + echo "
\n"; + echo $msg."
"; + echo "
\n"; + persistformvar($_POST); + echo "
\n"; + require_once "resources/footer.php"; + return; + } + + //add or update the database + if ($_POST["persistformvar"] != "true") { + if ($action == "add" && permission_exists('access_control_add')) { + $sql = "insert into v_access_controls "; + $sql .= "("; + $sql .= "access_control_uuid, "; + $sql .= "access_control_name, "; + $sql .= "access_control_default, "; + $sql .= "access_control_description "; + $sql .= ")"; + $sql .= "values "; + $sql .= "("; + $sql .= "'".uuid()."', "; + $sql .= "'$access_control_name', "; + $sql .= "'$access_control_default', "; + $sql .= "'$access_control_description' "; + $sql .= ")"; + $db->exec(check_sql($sql)); + unset($sql); + + $_SESSION['message'] = $text['message-add']; + header('Location: access_controls.php'); + return; + + } //if ($action == "add") + + if ($action == "update" && permission_exists('access_control_edit')) { + $sql = "update v_access_controls set "; + $sql .= "access_control_name = '$access_control_name', "; + $sql .= "access_control_default = '$access_control_default', "; + $sql .= "access_control_description = '$access_control_description' "; + $sql .= "where access_control_uuid = '$access_control_uuid'"; + $db->exec(check_sql($sql)); + unset($sql); + + $_SESSION['message'] = $text['message-update']; + header('Location: access_controls.php'); + return; + + } //if ($action == "update") + } //if ($_POST["persistformvar"] != "true") +} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) + +//pre-populate the form + if (count($_GET)>0 && $_POST["persistformvar"] != "true") { + $access_control_uuid = check_str($_GET["id"]); + $sql = "select * from v_access_controls "; + $sql .= "where access_control_uuid = '$access_control_uuid' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + foreach ($result as &$row) { + $access_control_name = $row["access_control_name"]; + $access_control_default = $row["access_control_default"]; + $access_control_description = $row["access_control_description"]; + break; //limit to 1 row + } + unset ($prep_statement); + } + +//show the header + require_once "resources/header.php"; + +//show the content + echo "
"; + echo "\n"; + echo "\n"; + echo " "; + echo " "; + echo "
\n"; + echo "
"; + + echo "
\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo " "; + echo "
".$text['title-access_control']."\n"; + echo " "; + echo " "; + echo "
\n"; + echo " ".$text['label-access_control_name']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-access_control_name']."\n"; + echo "
\n"; + echo " ".$text['label-access_control_default']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-access_control_default']."\n"; + echo "
\n"; + echo " ".$text['label-access_control_description']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-access_control_description']."\n"; + echo "
\n"; + if ($action == "update") { + echo " \n"; + } + echo " \n"; + echo "
"; + echo ""; + + if ($action == "update") { + require "access_control_nodes.php"; + } + + echo "
"; + echo "
"; + +//include the footer + require_once "resources/footer.php"; +?> \ No newline at end of file diff --git a/app/access_controls/access_control_node_delete.php b/app/access_controls/access_control_node_delete.php new file mode 100644 index 0000000000..b89def7ad0 --- /dev/null +++ b/app/access_controls/access_control_node_delete.php @@ -0,0 +1,39 @@ + $value) { + $text[$key] = $value[$_SESSION['domain']['language']['code']]; + } + +//get the id + if (count($_GET)>0) { + $id = check_str($_GET["id"]); + $access_control_uuid = check_str($_GET["access_control_uuid"]); + } + +if (strlen($id)>0) { + //delete access_control_node + $sql = "delete from v_access_control_nodes "; + $sql .= "where access_control_node_uuid = '$id' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + unset($sql); +} + +//redirect the user + $_SESSION['message'] = $text['message-delete']; + header('Location: access_control_node_edit.php?id='.$access_control_uuid); + + +?> \ No newline at end of file diff --git a/app/access_controls/access_control_node_edit.php b/app/access_controls/access_control_node_edit.php new file mode 100644 index 0000000000..e399459d52 --- /dev/null +++ b/app/access_controls/access_control_node_edit.php @@ -0,0 +1,230 @@ + $value) { + $text[$key] = $value[$_SESSION['domain']['language']['code']]; + } + +//action add or update + if (isset($_REQUEST["id"])) { + $action = "update"; + $access_control_node_uuid = check_str($_REQUEST["id"]); + } + else { + $action = "add"; + } + +//set the parent uuid + if (strlen($_GET["access_control_uuid"]) > 0) { + $access_control_uuid = check_str($_GET["access_control_uuid"]); + } + +//get http post variables and set them to php variables + if (count($_POST)>0) { + $node_type = check_str($_POST["node_type"]); + $node_cidr = check_str($_POST["node_cidr"]); + $node_domain = check_str($_POST["node_domain"]); + $node_description = check_str($_POST["node_description"]); + } + +if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { + + $msg = ''; + if ($action == "update") { + $access_control_node_uuid = check_str($_POST["access_control_node_uuid"]); + } + + //check for all required data + if (strlen($node_type) == 0) { $msg .= $text['message-required']." ".$text['label-node_type']."
\n"; } + //if (strlen($node_cidr) == 0) { $msg .= $text['message-required']." ".$text['label-node_cidr']."
\n"; } + //if (strlen($node_domain) == 0) { $msg .= $text['message-required']." ".$text['label-node_domain']."
\n"; } + //if (strlen($node_description) == 0) { $msg .= $text['message-required']." ".$text['label-node_description']."
\n"; } + if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { + require_once "resources/header.php"; + require_once "resources/persist_form_var.php"; + echo "
\n"; + echo "
\n"; + echo $msg."
"; + echo "
\n"; + persistformvar($_POST); + echo "
\n"; + require_once "resources/footer.php"; + return; + } + + //add or update the database + if ($_POST["persistformvar"] != "true") { + if ($action == "add" && permission_exists('access_control_node_add')) { + $sql = "insert into v_access_control_nodes "; + $sql .= "("; + $sql .= "access_control_node_uuid, "; + $sql .= "access_control_uuid, "; + $sql .= "node_type, "; + $sql .= "node_cidr, "; + $sql .= "node_domain, "; + $sql .= "node_description "; + $sql .= ")"; + $sql .= "values "; + $sql .= "("; + $sql .= "'".uuid()."', "; + $sql .= "'$access_control_uuid', "; + $sql .= "'$node_type', "; + $sql .= "'$node_cidr', "; + $sql .= "'$node_domain', "; + $sql .= "'$node_description' "; + $sql .= ")"; + $db->exec(check_sql($sql)); + unset($sql); + + $_SESSION['message'] = $text['message-add']; + header('Location: access_control_edit.php?id='.$access_control_uuid); + return; + + } //if ($action == "add") + + if ($action == "update" && permission_exists('access_control_node_edit')) { + $sql = "update v_access_control_nodes set "; + $sql .= "access_control_uuid = '$access_control_uuid', "; + $sql .= "node_type = '$node_type', "; + $sql .= "node_cidr = '$node_cidr', "; + $sql .= "node_domain = '$node_domain', "; + $sql .= "node_description = '$node_description' "; + $sql .= "where access_control_node_uuid = '$access_control_node_uuid'"; + $db->exec(check_sql($sql)); + unset($sql); + + $_SESSION['message'] = $text['message-update']; + header('Location: access_control_edit.php?id='.$access_control_uuid); + return; + + } //if ($action == "update") + } //if ($_POST["persistformvar"] != "true") +} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) + +//pre-populate the form + if (count($_GET)>0 && $_POST["persistformvar"] != "true") { + $access_control_node_uuid = check_str($_GET["id"]); + $sql = "select * from v_access_control_nodes "; + $sql .= "where access_control_node_uuid = '$access_control_node_uuid' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + foreach ($result as &$row) { + $node_type = $row["node_type"]; + $node_cidr = $row["node_cidr"]; + $node_domain = $row["node_domain"]; + $node_description = $row["node_description"]; + break; //limit to 1 row + } + unset ($prep_statement); + } + +//show the header + require_once "resources/header.php"; + +//show the content + echo "
"; + echo "\n"; + echo "\n"; + echo " "; + echo " "; + echo "
\n"; + echo "
"; + + echo "
\n"; + echo "
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo " "; + echo "
".$text['title-access_control_node']."\n"; + echo " "; + echo " "; + echo "
\n"; + echo " ".$text['label-node_type']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-node_type']."\n"; + echo "
\n"; + echo " ".$text['label-node_cidr']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-node_cidr']."\n"; + echo "
\n"; + echo " ".$text['label-node_domain']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-node_domain']."\n"; + echo "
\n"; + echo " ".$text['label-node_description']."\n"; + echo "\n"; + echo " \n"; + echo "
\n"; + echo $text['description-node_description']."\n"; + echo "
\n"; + echo " \n"; + if ($action == "update") { + echo " \n"; + } + echo " \n"; + echo "
"; + echo ""; + + echo "
"; + echo "
"; + +//include the footer + require_once "resources/footer.php"; +?> \ No newline at end of file diff --git a/app/access_controls/access_control_nodes.php b/app/access_controls/access_control_nodes.php new file mode 100644 index 0000000000..42330e047e --- /dev/null +++ b/app/access_controls/access_control_nodes.php @@ -0,0 +1,146 @@ +"; + echo "\n"; + echo "\n"; + echo " "; + echo ""; + echo "
\n"; + echo "
"; + + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
".$text['title-access_control_nodes']." 
\n"; + + //prepare to page the results + $sql = "select count(*) as num_rows from v_access_control_nodes "; + $sql .= "where access_control_uuid = '$access_control_uuid' "; + if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; } + $prep_statement = $db->prepare($sql); + if ($prep_statement) { + $prep_statement->execute(); + $row = $prep_statement->fetch(PDO::FETCH_ASSOC); + if ($row['num_rows'] > 0) { + $num_rows = $row['num_rows']; + } + else { + $num_rows = '0'; + } + } + + //prepare to page the results + $rows_per_page = 10; + $param = ""; + $page = $_GET['page']; + if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } + list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page); + $offset = $rows_per_page * $page; + + //get the list + $sql = "select * from v_access_control_nodes "; + $sql .= "where access_control_uuid = '$access_control_uuid' "; + if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; } + $sql .= "limit $rows_per_page offset $offset "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $result_count = count($result); + unset ($prep_statement, $sql); + + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo th_order_by('node_type', $text['label-node_type'], $order_by, $order); + echo th_order_by('node_cidr', $text['label-node_cidr'], $order_by, $order); + echo th_order_by('node_domain', $text['label-node_domain'], $order_by, $order); + echo th_order_by('node_description', $text['label-node_description'], $order_by, $order); + echo "\n"; + echo "\n"; + + if ($result_count > 0) { + foreach($result as $row) { + if (permission_exists('access_control_node_edit')) { + $tr_link = "href='access_control_node_edit.php?access_control_uuid=".$row['access_control_uuid']."&id=".$row['access_control_node_uuid']."'"; + } + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "\n"; + if ($c==0) { $c=1; } else { $c=0; } + } //end foreach + unset($sql, $result, $row_count); + } //end if results + + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
"; + if (permission_exists('access_control_node_add')) { + echo "$v_link_label_add"; + } + else { + echo " \n"; + } + echo "
".$row['node_type']." ".$row['node_cidr']." ".$row['node_domain']." ".$row['node_description']." "; + if (permission_exists('access_control_node_edit')) { + echo "$v_link_label_edit"; + } + if (permission_exists('access_control_node_delete')) { + echo "$v_link_label_delete"; + } + echo "
\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
 $paging_controls"; + if (permission_exists('access_control_node_add')) { + echo "$v_link_label_add"; + } + else { + echo " "; + } + echo "
\n"; + echo "
"; + echo "
"; + echo "

"; + + echo "
"; + echo ""; + echo "

"; + +//include the footer + require_once "resources/footer.php"; +?> \ No newline at end of file diff --git a/app/access_controls/access_controls.php b/app/access_controls/access_controls.php new file mode 100644 index 0000000000..af9c1fb7cb --- /dev/null +++ b/app/access_controls/access_controls.php @@ -0,0 +1,152 @@ + $value) { + $text[$key] = $value[$_SESSION['domain']['language']['code']]; + } + +//get variables used to control the order + $order_by = $_GET["order_by"]; + $order = $_GET["order"]; + +//additional includes + require_once "resources/header.php"; + require_once "resources/paging.php"; + +//show the content + echo "
"; + echo "\n"; + echo "\n"; + echo " "; + echo ""; + echo "
\n"; + echo "
"; + + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
".$text['title-access_controls']." 
\n"; + echo " ".$text['description-access_control']."

\n"; + echo "
\n"; + + //prepare to page the results + $sql = "select count(*) as num_rows from v_access_controls "; + if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; } + $prep_statement = $db->prepare($sql); + if ($prep_statement) { + $prep_statement->execute(); + $row = $prep_statement->fetch(PDO::FETCH_ASSOC); + if ($row['num_rows'] > 0) { + $num_rows = $row['num_rows']; + } + else { + $num_rows = '0'; + } + } + + //prepare to page the results + $rows_per_page = 10; + $param = ""; + $page = $_GET['page']; + if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } + list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page); + $offset = $rows_per_page * $page; + + //get the list + $sql = "select * from v_access_controls "; + if (strlen($order_by)> 0) { $sql .= "order by $order_by $order "; } + $sql .= "limit $rows_per_page offset $offset "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $result_count = count($result); + unset ($prep_statement, $sql); + + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + + echo "
\n"; + echo "\n"; + echo "\n"; + echo th_order_by('access_control_name', $text['label-access_control_name'], $order_by, $order); + echo th_order_by('access_control_default', $text['label-access_control_default'], $order_by, $order); + echo th_order_by('access_control_description', $text['label-access_control_description'], $order_by, $order); + echo "\n"; + echo "\n"; + + if ($result_count > 0) { + foreach($result as $row) { + if (permission_exists('access_control_edit')) { + $tr_link = "href='access_control_edit.php?id=".$row['access_control_uuid']."'"; + } + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "\n"; + if ($c==0) { $c=1; } else { $c=0; } + } //end foreach + unset($sql, $result, $row_count); + } //end if results + + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
"; + if (permission_exists('access_control_add')) { + echo "$v_link_label_add"; + } + else { + echo " \n"; + } + echo "
".$row['access_control_name']." ".$row['access_control_default']." ".$row['access_control_description']." "; + if (permission_exists('access_control_edit')) { + echo "$v_link_label_edit"; + } + if (permission_exists('access_control_delete')) { + echo "$v_link_label_delete"; + } + echo "
\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
 $paging_controls"; + if (permission_exists('access_control_add')) { + echo "$v_link_label_add"; + } + else { + echo " "; + } + echo "
\n"; + echo "
"; + echo "
"; + echo "

"; + + echo "
"; + echo "
"; + echo "

"; + +//include the footer + require_once "resources/footer.php"; +?> \ No newline at end of file diff --git a/app/access_controls/app_config.php b/app/access_controls/app_config.php new file mode 100644 index 0000000000..35717833c0 --- /dev/null +++ b/app/access_controls/app_config.php @@ -0,0 +1,122 @@ + \ No newline at end of file diff --git a/app/access_controls/app_defaults.php b/app/access_controls/app_defaults.php new file mode 100644 index 0000000000..58cf716a52 --- /dev/null +++ b/app/access_controls/app_defaults.php @@ -0,0 +1,121 @@ + + Portions created by the Initial Developer are Copyright (C) 2015 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +//if the number of rows is 0 then read the acl xml into the database + if ($domains_processed == 1) { + + //add the access control list to the database + $sql = "select count(*) as num_rows from v_access_controls "; + $prep_statement = $db->prepare($sql); + if ($prep_statement) { + $prep_statement->execute(); + $row = $prep_statement->fetch(PDO::FETCH_ASSOC); + if ($row['num_rows'] == 0) { + //find the file + if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf/autoload_configs')) { + $xml_file = '/usr/share/examples/fusionpbx/resources/templates/conf/autload_configs/acl.conf.xml'; + } + elseif (file_exists('/usr/local/share/fusionpbx/resources/templates/conf/autoload_configs')) { + $xml_file = '/usr/local/share/fusionpbx/resources/templates/conf/autoload_configs/acl.conf.xml'; + } + else { + $xml_file = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/templates/conf/autoload_configs/acl.conf.xml'; + } + + //load the xml and save it into an array + $xml_string = file_get_contents($xml_file); + $xml_object = simplexml_load_string($xml_string); + $json = json_encode($xml_object); + $conf_array = json_decode($json, true); + + //process the array + foreach($conf_array['network-lists']['list'] as $list) { + //get the attributes + $access_control_name = $list['@attributes']['name']; + $access_control_default = $list['@attributes']['default']; + + //insert the name, description + $access_control_uuid = uuid(); + $sql = "insert into v_access_controls "; + $sql .= "("; + $sql .= "access_control_uuid, "; + $sql .= "access_control_name, "; + $sql .= "access_control_default "; + $sql .= ") "; + $sql .= "values "; + $sql .= "( "; + $sql .= "'".$access_control_uuid."', "; + $sql .= "'".check_str($access_control_name)."', "; + $sql .= "'".check_str($access_control_default)."' "; + $sql .= ")"; + //echo $sql."\n"; + $db->exec(check_sql($sql)); + unset($sql); + + //normalize the array - needed because the array is inconsistent when there is only one row vs multiple + if (strlen($list['node']['@attributes']['type']) > 0) { + $list['node'][]['@attributes'] = $list['node']['@attributes']; + unset($list['node']['@attributes']); + } + + //add the nodes + foreach ($list['node'] as $row) { + //get the name and value pair + $node_type = $row['@attributes']['type']; + $node_cidr = $row['@attributes']['cidr']; + $node_domain = $row['@attributes']['domain']; + //replace $${domain} + if (strlen($node_domain) > 0) { + $node_domain = str_replace("\$\${domain}", $domain_name, $node_domain); + } + //add the profile settings into the database + $access_control_node_uuid = uuid(); + $sql = "insert into v_access_control_nodes "; + $sql .= "("; + $sql .= "access_control_node_uuid, "; + $sql .= "access_control_uuid, "; + $sql .= "node_type, "; + $sql .= "node_cidr, "; + $sql .= "node_domain "; + $sql .= ") "; + $sql .= "values "; + $sql .= "( "; + $sql .= "'".$access_control_node_uuid."', "; + $sql .= "'".$access_control_uuid."', "; + $sql .= "'".$node_type."', "; + $sql .= "'".$node_cidr."', "; + $sql .= "'".$node_domain."' "; + $sql .= ")"; + //echo $sql."\n"; + $db->exec(check_sql($sql)); + } + } + unset($prep_statement); + } + } + } + +?> \ No newline at end of file diff --git a/app/access_controls/app_languages.php b/app/access_controls/app_languages.php new file mode 100644 index 0000000000..9d01134714 --- /dev/null +++ b/app/access_controls/app_languages.php @@ -0,0 +1,245 @@ + \ No newline at end of file diff --git a/app/access_controls/app_menu.php b/app/access_controls/app_menu.php new file mode 100644 index 0000000000..726abe90f4 --- /dev/null +++ b/app/access_controls/app_menu.php @@ -0,0 +1,10 @@ + diff --git a/app/access_controls/root.php b/app/access_controls/root.php new file mode 100644 index 0000000000..7b882438ea --- /dev/null +++ b/app/access_controls/root.php @@ -0,0 +1,50 @@ + + Portions created by the Initial Developer are Copyright (C) 2008-2012 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +// make sure the PATH_SEPARATOR is defined + if (!defined("PATH_SEPARATOR")) { + if ( strpos( $_ENV[ "OS" ], "Win" ) !== false ) { define("PATH_SEPARATOR", ";"); } else { define("PATH_SEPARATOR", ":"); } + } + +// make sure the document_root is set + $_SERVER["SCRIPT_FILENAME"] = str_replace("\\", "/", $_SERVER["SCRIPT_FILENAME"]); + $_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]); + $_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]); + //echo "DOCUMENT_ROOT: ".$_SERVER["DOCUMENT_ROOT"]."
\n"; + //echo "PHP_SELF: ".$_SERVER["PHP_SELF"]."
\n"; + //echo "SCRIPT_FILENAME: ".$_SERVER["SCRIPT_FILENAME"]."
\n"; + +// if the project directory exists then add it to the include path otherwise add the document root to the include path + if (is_dir($_SERVER["DOCUMENT_ROOT"].'/fusionpbx')){ + if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', '/fusionpbx'); } + set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER["DOCUMENT_ROOT"].'/fusionpbx' ); + } + else { + if(!defined('PROJECT_PATH')) { define('PROJECT_PATH', ''); } + set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] ); + } + +?> \ No newline at end of file