"Delete", 2 => "Copy", 3 => "Enable", 4 => "Disable", 5 => "Batch Copy" ); switch (get_request_var_request("action")) { case 'actions': form_actions(); break; case 'save': form_save(); break; case 'perm_remove': perm_remove(); break; case 'user_realms_edit': include_once("include/top_header.php"); user_edit(); include_once("include/bottom_footer.php"); break; case 'graph_settings_edit': include_once("include/top_header.php"); user_edit(); include_once("include/bottom_footer.php"); break; case 'graph_perms_edit': include_once("include/top_header.php"); user_edit(); include_once("include/bottom_footer.php"); break; case 'user_edit': include_once("include/top_header.php"); user_edit(); include_once("include/bottom_footer.php"); break; default: include_once("include/top_header.php"); user(); include_once("include/bottom_footer.php"); break; } /* -------------------------- Actions Function -------------------------- */ function form_actions() { global $colors, $user_actions, $auth_realms; /* if we are to save this form, instead of display it */ if (isset($_POST["selected_items"])) { if (get_request_var_post("drp_action") != "2") { $selected_items = unserialize(stripslashes(get_request_var_post("selected_items"))); } if (get_request_var_post("drp_action") == "1") { /* delete */ for ($i=0;($i get_request_var_post("new_fullname") ); if (strlen($new_username)) { if (sizeof(db_fetch_assoc("SELECT username FROM user_auth WHERE username = '" . $new_username . "' AND realm = " . $new_realm))) { raise_message(19); } else { if (user_copy($template_user["username"], $new_username, $template_user["realm"], $new_realm, false, $overwrite) === false) { raise_message(2); } else { raise_message(1); } } } } if (get_request_var_post("drp_action") == "3") { /* enable */ for ($i=0;($i"; } $user_array[$i] = $matches[1]; } $i++; } include_once("./include/top_header.php"); html_start_box("" . $user_actions[get_request_var_post("drp_action")] . "", "60%", $colors["header_panel"], "3", "center", ""); print "
\n"; if ((get_request_var_post("drp_action") == "1") && (sizeof($user_array))) { /* delete */ print "

Are you sure you want to delete the following users?

$user_list

\n"; } $user_id = ""; if ((get_request_var_post("drp_action") == "2") && (sizeof($user_array))) { /* copy */ $user_id = $user_array[0]; $user_realm = db_fetch_cell("SELECT realm FROM user_auth WHERE id = " . $user_id); print " Would you like to copy this user?

Template Username: " . db_fetch_cell("SELECT username FROM user_auth WHERE id=" . $user_id) . " New Username: "; print form_text_box("new_username", "", "", 25); print " New Full Name: "; print form_text_box("new_fullname", "", "", 35); print " New Realm: \n"; print form_dropdown("new_realm", $auth_realms, "", "", $user_realm, "", 0); print " \n"; } if ((get_request_var_post("drp_action") == "3") && (sizeof($user_array))) { /* enable */ print "

Are you sure you want to enable the following users?

$user_list

\n"; } if ((get_request_var_post("drp_action") == "4") && (sizeof($user_array))) { /* disable */ print "

Are you sure you want to disable the following users?

$user_list

\n"; } if ((get_request_var_post("drp_action") == "5") && (sizeof($user_array))) { /* batch copy */ $usernames = db_fetch_assoc("SELECT id,username FROM user_auth WHERE realm = 0 ORDER BY username"); print " Are you sure you want to overwrite the selected users with the selected template users settings and permissions? Original user Full Name, Password, Realm and Enable status will be retained all other fields will be overwritten from template user.

Template User: \n"; print form_dropdown("template_user", $usernames, "username", "id", "", "", 0); print "

Users to update: $user_list

\n"; } if (sizeof($user_array) == 0) { print "You must select at least one user.\n"; $save_html = "Cancel"; }else{ $save_html = "Cancel "; } print " "; if (get_request_var_post("drp_action") == "2") { /* copy */ print " \n"; }else{ print " \n"; } print " $save_html "; html_end_box(); include_once("./include/bottom_footer.php"); } /* -------------------------- Save Function -------------------------- */ function form_save() { global $settings_graphs; /* graph permissions */ if ((isset($_POST["save_component_graph_perms"])) && (!is_error_message())) { /* ================= input validation ================= */ input_validate_input_number(get_request_var_post("id")); input_validate_input_number(get_request_var_post("perm_graphs")); input_validate_input_number(get_request_var_post("perm_trees")); input_validate_input_number(get_request_var_post("perm_hosts")); input_validate_input_number(get_request_var_post("perm_graph_templates")); input_validate_input_number(get_request_var_post("policy_graphs")); input_validate_input_number(get_request_var_post("policy_trees")); input_validate_input_number(get_request_var_post("policy_hosts")); input_validate_input_number(get_request_var_post("policy_graph_templates")); /* ==================================================== */ $add_button_clicked = false; if (isset($_POST["add_graph_y"])) { db_execute("REPLACE INTO user_auth_perms (user_id,item_id,type) VALUES (" . get_request_var_post("id") . "," . get_request_var_post("perm_graphs") . ",1)"); $add_button_clicked = true; }elseif (isset($_POST["add_tree_y"])) { db_execute("REPLACE INTO user_auth_perms (user_id,item_id,type) VALUES (" . get_request_var_post("id") . "," . get_request_var_post("perm_trees") . ",2)"); $add_button_clicked = true; }elseif (isset($_POST["add_host_y"])) { db_execute("REPLACE INTO user_auth_perms (user_id,item_id,type) VALUES (" . get_request_var_post("id") . "," . get_request_var_post("perm_hosts") . ",3)"); $add_button_clicked = true; }elseif (isset($_POST["add_graph_template_y"])) { db_execute("REPLACE INTO user_auth_perms (user_id,item_id,type) VALUES (" . get_request_var_post("id") . "," . get_request_var_post("perm_graph_templates") . ",4)"); $add_button_clicked = true; } if ($add_button_clicked == true) { header("Location: user_admin.php?action=graph_perms_edit&id=" . get_request_var_post("id")); exit; } } /* user management save */ if (isset($_POST["save_component_user"])) { /* ================= input validation ================= */ input_validate_input_number(get_request_var_post("id")); input_validate_input_number(get_request_var_post("realm")); /* ==================================================== */ if ((get_request_var_post("password") == "") && (get_request_var_post("password_confirm") == "")) { $password = db_fetch_cell("SELECT password FROM user_auth WHERE id = " . get_request_var_post("id")); }else{ $password = md5(get_request_var_post("password")); } /* check duplicate username */ if (sizeof(db_fetch_row("select * from user_auth where realm = " . get_request_var_post("realm") . " and username = '" . get_request_var_post("username") . "' and id != " . get_request_var_post("id")))) { raise_message(12); } /* check to make sure the passwords match; if not error */ if (get_request_var_post("password") != get_request_var_post("password_confirm")) { raise_message(4); } form_input_validate(get_request_var_post("password"), "password", "" . preg_quote(get_request_var_post("password_confirm")) . "", true, 4); form_input_validate(get_request_var_post("password_confirm"), "password_confirm", "" . preg_quote(get_request_var_post("password")) . "", true, 4); $save["id"] = get_request_var_post("id"); $save["username"] = form_input_validate(get_request_var_post("username"), "username", "^[A-Za-z0-9\._\-]+$", false, 3); $save["full_name"] = form_input_validate(get_request_var_post("full_name"), "full_name", "", true, 3); $save["password"] = $password; $save["must_change_password"] = form_input_validate(get_request_var_post("must_change_password", ""), "must_change_password", "", true, 3); $save["show_tree"] = form_input_validate(get_request_var_post("show_tree", ""), "show_tree", "", true, 3); $save["show_list"] = form_input_validate(get_request_var_post("show_list", ""), "show_list", "", true, 3); $save["show_preview"] = form_input_validate(get_request_var_post("show_preview", ""), "show_preview", "", true, 3); $save["graph_settings"] = form_input_validate(get_request_var_post("graph_settings", ""), "graph_settings", "", true, 3); $save["login_opts"] = form_input_validate(get_request_var_post("login_opts"), "login_opts", "", true, 3); $save["policy_graphs"] = form_input_validate(get_request_var_post("policy_graphs", get_request_var_post("_policy_graphs")), "policy_graphs", "", true, 3); $save["policy_trees"] = form_input_validate(get_request_var_post("policy_trees", get_request_var_post("_policy_trees")), "policy_trees", "", true, 3); $save["policy_hosts"] = form_input_validate(get_request_var_post("policy_hosts", get_request_var_post("_policy_hosts")), "policy_hosts", "", true, 3); $save["policy_graph_templates"] = form_input_validate(get_request_var_post("policy_graph_templates", get_request_var_post("_policy_graph_templates")), "policy_graph_templates", "", true, 3); $save["realm"] = get_request_var_post("realm", 0); $save["enabled"] = form_input_validate(get_request_var_post("enabled", ""), "enabled", "", true, 3); if (!is_error_message()) { $user_id = sql_save($save, "user_auth"); if ($user_id) { raise_message(1); }else{ raise_message(2); } if (isset($_POST["save_component_realm_perms"])) { db_execute("DELETE FROM user_auth_realm WHERE user_id = " . $user_id); while (list($var, $val) = each($_POST)) { if (eregi("^[section]", $var)) { if (substr($var, 0, 7) == "section") { db_execute("REPLACE INTO user_auth_realm (user_id,realm_id) VALUES (" . $user_id . "," . substr($var, 7) . ")"); } } } }elseif (isset($_POST["save_component_graph_settings"])) { while (list($tab_short_name, $tab_fields) = each($settings_graphs)) { while (list($field_name, $field_array) = each($tab_fields)) { if ((isset($field_array["items"])) && (is_array($field_array["items"]))) { while (list($sub_field_name, $sub_field_array) = each($field_array["items"])) { db_execute("REPLACE INTO settings_graphs (user_id,name,value) VALUES (" . (!empty($user_id) ? $user_id : get_request_var_post("id")) . ",'$sub_field_name', '" . get_request_var_post($sub_field_name, "") . "')"); } }else{ db_execute("REPLACE INTO settings_graphs (user_id,name,value) VALUES (" . (!empty($user_id) ? $user_id : $_POST["id"]) . ",'$field_name', '" . get_request_var_post($field_name) . "')"); } } } /* reset local settings cache so the user sees the new settings */ kill_session_var("sess_graph_config_array"); }elseif (isset($_POST["save_component_graph_perms"])) { db_execute("UPDATE user_auth SET policy_graphs = " . get_request_var_post("policy_graphs") . ", policy_trees = " . get_request_var_post("policy_trees") . ", policy_hosts = " . get_request_var_post("policy_hosts") . ", policy_graph_templates = " . get_request_var_post("policy_graph_templates") . " WHERE id = " . get_request_var_post("id")); } } } /* redirect to the appropriate page */ if (is_error_message()) { header("Location: user_admin.php?action=user_edit&id=" . (empty($user_id) ? $_POST["id"] : $user_id)); }else{ header("Location: user_admin.php"); } } /* -------------------------- Graph Permissions -------------------------- */ function perm_remove() { /* ================= input validation ================= */ input_validate_input_number(get_request_var("id")); input_validate_input_number(get_request_var("user_id")); /* ==================================================== */ if (get_request_var("type") == "graph") { db_execute("DELETE FROM user_auth_perms WHERE type = 1 AND user_id = " . get_request_var("user_id") . " AND item_id = " . get_request_var("id")); }elseif (get_request_var("type") == "tree") { db_execute("DELETE FROM user_auth_perms WHERE type = 2 AND user_id = " . get_request_var("user_id") . " AND item_id = " . get_request_var("id")); }elseif (get_request_var("type") == "host") { db_execute("DELETE FROM user_auth_perms WHERE type = 3 AND user_id = " . get_request_var("user_id") . " AND item_id = " . get_request_var("id")); }elseif (get_request_var("type") == "graph_template") { db_execute("DELETE FROM user_auth_perms WHERE type = 4 AND user_id=" . get_request_var("user_id") . " and item_id = " . get_request_var("id")); } header("Location: user_admin.php?action=graph_perms_edit&id=" . get_request_var("user_id")); } function graph_perms_edit() { global $colors; /* ================= input validation ================= */ input_validate_input_number(get_request_var("id")); /* ==================================================== */ $graph_policy_array = array( 1 => "Allow", 2 => "Deny"); if (!empty($_GET["id"])) { $policy = db_fetch_row("SELECT policy_graphs,policy_trees,policy_hosts,policy_graph_templates FROM user_auth WHERE id = " . get_request_var("id")); $header_label = "[edit: " . db_fetch_cell("SELECT username FROM user_auth WHERE id = " . get_request_var("id")) . "]"; } ?>
Graph policies will be evaluated in the order shown until a match is found.
Graph Permissions (By Graph)", "100%", $colors["header"], "3", "center", ""); $graphs = db_fetch_assoc("SELECT graph_templates_graph.local_graph_id, graph_templates_graph.title_cache FROM graph_templates_graph LEFT JOIN user_auth_perms ON (graph_templates_graph.local_graph_id = user_auth_perms.item_id AND user_auth_perms.type = 1) WHERE graph_templates_graph.local_graph_id > 0 AND user_auth_perms.user_id = " . get_request_var("id", 0) . " ORDER BY graph_templates_graph.title_cache"); ?> "> Default Policy
The default allow/deny graph policy for this user. 0) { foreach ($graphs as $item) { $i++; print " \n"; } }else{ print ""; } ?>
$i) " . $item["title_cache"] . " Delete 
No Graphs
Add Graph:  0 ORDER BY title_cache"),"title_cache","local_graph_id","","","");?>  

Graph Permissions (By Device)", "100%", $colors["header"], "3", "center", ""); $hosts = db_fetch_assoc("SELECT host.id, CONCAT('',host.description,' (',host.hostname,')') as name FROM host LEFT JOIN user_auth_perms ON (host.id = user_auth_perms.item_id AND user_auth_perms.type = 3) WHERE user_auth_perms.user_id = " . get_request_var("id", 0) . " ORDER BY host.description,host.hostname"); ?> "> Default Policy
The default allow/deny graph policy for this user. 0) { foreach ($hosts as $item) { $i++; print " \n"; } }else{ print ""; } ?>
$i) " . $item["name"] . " Delete 
No Devices
Add Host:   

Graph Permissions (By Graph Template)", "100%", $colors["header"], "3", "center", ""); $graph_templates = db_fetch_assoc("SELECT graph_templates.id, graph_templates.name from graph_templates LEFT JOIN user_auth_perms ON (graph_templates.id = user_auth_perms.item_id AND user_auth_perms.type = 4) WHERE user_auth_perms.user_id = " . get_request_var("id", 0) . " ORDER BY graph_templates.name"); ?> "> Default Policy
The default allow/deny graph policy for this user. 0) { foreach ($graph_templates as $item) { $i++; print " \n"; } }else{ print ""; } ?>
$i) " . $item["name"] . " Delete 
No Graph Templates
Add Graph Template:   

Tree Permissions", "100%", $colors["header"], "3", "center", ""); $trees = db_fetch_assoc("SELECT graph_tree.id, graph_tree.name from graph_tree LEFT JOIN user_auth_perms ON (graph_tree.id = user_auth_perms.item_id AND user_auth_perms.type = 2) WHERE user_auth_perms.user_id = " . get_request_var("id", 0) . " ORDER BY graph_tree.name"); ?> "> Default Policy
The default allow/deny graph policy for this user. 0) { foreach ($trees as $item) { $i++; print " \n"; } }else{ print ""; } ?>
$i) " . $item["name"] . " Delete 
No Trees
Add Tree:   

Realm permissions control which sections of Cacti this user will have access to.
Realm Permissions \n \n"; ?>
0) { $old_value = "on"; }else{ $old_value = ""; } $column1 = floor((sizeof($user_auth_realms) / 2) + (sizeof($user_auth_realms) % 2)); if ($i == $column1) { print ""; } form_checkbox("section" . $realm_id, $old_value, $realm_name, "", (!empty($_GET["id"]) ? 1 : 0)); print "
"; $i++; } ?>
Graph settings control how graphs are displayed for this user.
Graph Settings", "100%", $colors["header"], "3", "center", ""); while (list($tab_short_name, $tab_fields) = each($settings_graphs)) { ?> $tab_fields[$field_name]); if ((isset($field_array["items"])) && (is_array($field_array["items"]))) { while (list($sub_field_name, $sub_field_array) = each($field_array["items"])) { if (graph_config_value_exists($sub_field_name, $_GET["id"])) { $form_array[$field_name]["items"][$sub_field_name]["form_id"] = 1; } $form_array[$field_name]["items"][$sub_field_name]["value"] = db_fetch_cell("SELECT value FROM settings_graphs WHERE name = '" . $sub_field_name . "' AND user_id = " . get_request_var("id")); } }else{ if (graph_config_value_exists($field_name, $_GET["id"])) { $form_array[$field_name]["form_id"] = 1; } $form_array[$field_name]["value"] = db_fetch_cell("select value from settings_graphs where name='$field_name' and user_id=" . $_GET["id"]); } } draw_edit_form( array( "config" => array( "no_form_tag" => true ), "fields" => $form_array ) ); } html_end_box(); form_hidden_box("save_component_graph_settings","1",""); } /* -------------------------- User Administration -------------------------- */ function user_edit() { global $colors, $fields_user_user_edit_host; /* ================= input validation ================= */ input_validate_input_number(get_request_var("id")); /* ==================================================== */ if (!empty($_GET["id"])) { $user = db_fetch_row("SELECT * FROM user_auth WHERE id = " . get_request_var("id")); $header_label = "[edit: " . $user["username"] . "]"; }else{ $header_label = "[new]"; } html_start_box("User Management $header_label", "100%", $colors["header"], "3", "center", ""); draw_edit_form(array( "config" => array("form_name" => "chk"), "fields" => inject_form_variables($fields_user_user_edit_host, (isset($user) ? $user : array())) )); html_end_box(); if (!empty($_GET["id"])) { /* draw user admin nav tabs */ ?>
nowrap='nowrap' width='150' align='center' class='tab'> Realm Permissions nowrap='nowrap' width='150' align='center' class='tab'> Graph Permissions nowrap='nowrap' width='130' align='center' class='tab'> Graph Settings
User Management", "100%", $colors["header"], "3", "center", "user_admin.php?action=user_edit"); include("./include/html/inc_user_admin_filter_table.php"); html_end_box(); /* form the 'where' clause for our main sql query */ if (strlen($_REQUEST["filter"])) { $sql_where = "WHERE (user_auth.username LIKE '%" . get_request_var_request("filter") . "%' OR user_auth.full_name LIKE '%" . get_request_var_request("filter") . "%')"; }else{ $sql_where = ""; } html_start_box("", "100%", $colors["header"], "3", "center", ""); $total_rows = db_fetch_cell("SELECT COUNT(user_auth.id) FROM user_auth $sql_where"); $user_list = db_fetch_assoc("SELECT id, user_auth.username, full_name, realm, enabled, policy_graphs, time, max(time) as dtime FROM user_auth LEFT JOIN user_log ON (user_auth.id = user_log.user_id) $sql_where GROUP BY id ORDER BY " . get_request_var_request("sort_column") . " " . get_request_var_request("sort_direction") . " LIMIT " . (read_config_option("num_rows_device") * (get_request_var_request("page") - 1)) . "," . read_config_option("num_rows_device")); /* generate page list */ $url_page_select = get_page_list(get_request_var_request("page"), MAX_DISPLAY_PAGES, read_config_option("num_rows_device"), $total_rows, "user_admin.php?filter=" . get_request_var_request("filter")); $nav = " \n \n \n
<< "; if (get_request_var_request("page") > 1) { $nav .= ""; } $nav .= "Previous"; if (get_request_var_request("page") > 1) { $nav .= ""; } $nav .= " Showing Rows " . ((read_config_option("num_rows_device") * (get_request_var_request("page") - 1)) + 1) . " to " . ((($total_rows < read_config_option("num_rows_device")) || ($total_rows < (read_config_option("num_rows_device") * get_request_var_request("page")))) ? $total_rows : (read_config_option("num_rows_device") * get_request_var_request("page"))) . " of $total_rows [$url_page_select] "; if ((get_request_var_request("page") * read_config_option("num_rows_device")) < $total_rows) { $nav .= ""; } $nav .= "Next"; if ((get_request_var_request("page") * read_config_option("num_rows_device")) < $total_rows) { $nav .= ""; } $nav .= " >>
\n"; print $nav; $display_text = array( "username" => array("User Name", "ASC"), "full_name" => array("Full Name", "ASC"), "enabled" => array("Enabled", "ASC"), "realm" => array("Realm", "ASC"), "policy_graphs" => array("Default Graph Policy", "ASC"), "dtime" => array("Last Login", "DESC")); html_header_sort_checkbox($display_text, get_request_var_request("sort_column"), get_request_var_request("sort_direction")); $i = 0; if (sizeof($user_list) > 0) { foreach ($user_list as $user) { if (empty($user["dtime"]) || ($user["dtime"] == "12/31/1969")) { $last_login = "N/A"; }else{ $last_login = strftime("%A, %B %d, %Y %H:%M:%S ", strtotime($user["dtime"]));; } if ($user["enabled"] == "on") { $enabled = "Yes"; }else{ $enabled = "No"; } form_alternate_row_color($colors["alternate"],$colors["light"],$i,$user["id"]); $i++; form_selectable_cell("" . (strlen(get_request_var_request("filter")) ? eregi_replace("(" . preg_quote(get_request_var_request("filter")) . ")", "\\1", $user["username"]) : $user["username"]) , $user["id"]); form_selectable_cell((strlen(get_request_var_request("filter")) ? eregi_replace("(" . preg_quote(get_request_var_request("filter")) . ")", "\\1", $user["full_name"]) : $user["full_name"]), $user["id"]); form_selectable_cell($enabled, $user["id"]); form_selectable_cell($auth_realms[$user["realm"]], $user["id"]); if ($user["policy_graphs"] == "1") { form_selectable_cell("ALLOW", $user["id"]); }else{ form_selectable_cell("DENY", $user["id"]); } form_selectable_cell($last_login, $user["id"]); form_checkbox_cell($user["username"], $user["id"]); form_end_row(); } print $nav; }else{ print "No Users"; } html_end_box(false); draw_actions_dropdown($user_actions); } ?>