'Delete', 3 => 'Enable', 4 => 'Disable' ); $href_options = array( 3 => array( 'radio_value' => '4', 'radio_caption' => 'Defer to the Users Setting' ), 0 => array( 'radio_value' => '1', 'radio_caption' => 'Show the Page that the User pointed their browser to' ), 1 => array( 'radio_value' => '2', 'radio_caption' => 'Show the Console' ), 2 => array( 'radio_value' => '3', 'radio_caption' => 'Show the default Graph Screen' ) ); $gperm_options = array( 0 => array( 'radio_value' => '1', 'radio_caption' => 'Defer to the Users Setting' ), 1 => array( 'radio_value' => '2', 'radio_caption' => 'Grant Access' ), 2 => array( 'radio_value' => '3', 'radio_caption' => 'Restrict Access' ) ); //if (isset($_REQUEST['id']) && !group_group_console_allowed($_REQUEST['id'])) { // unset($href_options[1]); //} $fields_user_group_edit = array( 'name' => array( 'method' => 'textbox', 'friendly_name' => 'Group Name', 'description' => 'The name of this Group.', 'value' => '|arg1:name|', 'max_length' => '255' ), 'description' => array( 'method' => 'textbox', 'friendly_name' => 'Group Description', 'description' => 'A more descriptive name for this group, that can include spaces or special characters.', 'value' => '|arg1:description|', 'max_length' => '255' ), 'enabled' => array( 'method' => 'checkbox', 'friendly_name' => 'Enabled', 'description' => 'Determines if user is able to login.', 'value' => '|arg1:enabled|', 'default' => '' ), 'grp1' => array( 'friendly_name' => 'General Group Options', 'method' => 'checkbox_group', 'description' => 'Set any user account-specific options here.', 'items' => array( 'graph_settings' => array( 'value' => '|arg1:graph_settings|', 'friendly_name' => 'Allow Users of this Group to keep custom User Settings', 'form_id' => '|arg1:id|', 'default' => 'on' ) ) ), 'show_tree' => array( 'friendly_name' => 'Graph Tree Rights', 'method' => 'radio', 'description' => 'Should Users of this Group have access to the Tree?', 'value' => '|arg1:show_tree|', 'default' => '1', 'items' => $gperm_options ), 'show_list' => array( 'friendly_name' => 'Graph List Rights', 'method' => 'radio', 'description' => 'Should Users of this Group have access to the Graph List?', 'value' => '|arg1:show_list|', 'default' => '1', 'items' => $gperm_options ), 'show_preview' => array( 'friendly_name' => 'Graph Preview Rights', 'method' => 'radio', 'description' => 'Should Users of this Group have access to the Graph Preview?', 'value' => '|arg1:show_preview|', 'default' => '1', 'items' => $gperm_options ), 'login_opts' => array( 'friendly_name' => 'Login Options', 'method' => 'radio', 'default' => '1', 'description' => 'What to do when a User from this User Group logs in.', 'value' => '|arg1:login_opts|', 'items' => $href_options ), 'id' => array( 'method' => 'hidden_zero', 'value' => '|arg1:id|' ), '_policy_graphs' => array( 'method' => 'hidden', 'default' => '2', 'value' => '|arg1:policy_graphs|' ), '_policy_trees' => array( 'method' => 'hidden', 'default' => '2', 'value' => '|arg1:policy_trees|' ), '_policy_hosts' => array( 'method' => 'hidden', 'default' => '2', 'value' => '|arg1:policy_hosts|' ), '_policy_graph_templates' => array( 'method' => 'hidden', 'default' => '2', 'value' => '|arg1:policy_graph_templates|' ), 'save_component_group' => array( 'method' => 'hidden', 'value' => '1' ) ); if (isset_request_var('update_policy')) { update_policies(); }else{ switch (get_request_var('action')) { case 'actions': form_actions(); break; case 'save': form_save(); break; case 'perm_remove': perm_remove(); break; case 'edit': top_header(); group_edit(); bottom_footer(); break; default: if (!api_plugin_hook_function('user_group_admin_action', get_request_var('action'))) { top_header(); user_group(); bottom_footer(); } break; } } /* -------------------------- Actions Function -------------------------- */ function user_group_disable($id) { db_execute_prepared("UPDATE user_auth_group SET enabled = '' WHERE id = ?", array($id)); } function user_group_enable($id) { db_execute_prepared("UPDATE user_auth_group SET enabled = 'on' WHERE id = ?", array($id)); } function user_group_remove($id) { db_execute_prepared('DELETE FROM user_auth_group WHERE id = ?', array($id)); db_execute_prepared('DELETE FROM user_auth_group_members WHERE group_id = ?', array($id)); db_execute_prepared('DELETE FROM user_auth_group_realm WHERE group_id = ?', array($id)); db_execute_prepared('DELETE FROM user_auth_group_perms WHERE group_id = ?', array($id)); } function update_policies() { $set = ''; $set .= isset_request_var('policy_graphs') ? 'policy_graphs=' . get_nfilter_request_var('policy_graphs'):''; $set .= isset_request_var('policy_trees') ? (strlen($set) ? ',':'') . 'policy_trees=' . get_nfilter_request_var('policy_trees'):''; $set .= isset_request_var('policy_hosts') ? (strlen($set) ? ',':'') . 'policy_hosts=' . get_nfilter_request_var('policy_hosts'):''; $set .= isset_request_var('policy_graph_templates') ? (strlen($set) ? ',':'') . 'policy_graph_templates=' . get_nfilter_request_var('policy_graph_templates'):''; if (strlen($set)) { db_execute_prepared("UPDATE user_auth_group SET $set WHERE id = ?", array(get_nfilter_request_var('id'))); } header('Location: user_group_admin.php?action=edit&header=false&tab=' . get_nfilter_request_var('tab') . '&id=' . get_nfilter_request_var('id')); exit; } function form_actions() { global $group_actions, $user_auth_realms; /* if we are to save this form, instead of display it */ if (isset_request_var('associate_host')) { while (list($var,$val) = each($_POST)) { if (preg_match('/^chk_([0-9]+)$/', $var, $matches)) { /* ================= input validation ================= */ input_validate_input_number($matches[1]); /* ==================================================== */ if (get_nfilter_request_var('drp_action') == '1') { db_execute_prepared('REPLACE INTO user_auth_group_perms (group_id, item_id, type) VALUES (?, ?, 3)', array(get_nfilter_request_var('id'), $matches[1])); }else{ db_execute_prepared('DELETE FROM user_auth_group_perms WHERE group_id = ? AND item_id = ? AND type = 3', array(get_nfilter_request_var('id'), $matches[1])); } } } header('Location: user_group_admin.php?action=edit&header=false&tab=permsd&id=' . get_nfilter_request_var('id')); exit; }elseif (isset_request_var('associate_graph')) { while (list($var,$val) = each($_POST)) { if (preg_match('/^chk_([0-9]+)$/', $var, $matches)) { /* ================= input validation ================= */ input_validate_input_number($matches[1]); /* ==================================================== */ if (get_nfilter_request_var('drp_action') == '1') { db_execute_prepared('REPLACE INTO user_auth_group_perms (group_id, item_id, type) VALUES (?, ?, 1)', array(get_nfilter_request_var('id'), $matches[1])); }else{ db_execute_prepared('DELETE FROM user_auth_group_perms WHERE group_id = ? AND item_id = ? AND type = 1', array(get_nfilter_request_var('id'), $matches[1])); } } } header('Location: user_group_admin.php?action=edit&header=false&tab=permsg&id=' . get_nfilter_request_var('id')); exit; }elseif (isset_request_var('associate_template')) { while (list($var,$val) = each($_POST)) { if (preg_match('/^chk_([0-9]+)$/', $var, $matches)) { /* ================= input validation ================= */ input_validate_input_number($matches[1]); /* ==================================================== */ if (get_nfilter_request_var('drp_action') == '1') { db_execute_prepared('REPLACE INTO user_auth_group_perms (group_id, item_id, type) VALUES (?, ?, 4)', array(get_nfilter_request_var('id'), $matches[1])); }else{ db_execute_prepared('DELETE FROM user_auth_group_perms WHERE group_id = ? AND item_id = ? AND type = 4', array(get_nfilter_request_var('id'), $matches[1])); } } } header('Location: user_group_admin.php?action=edit&header=false&tab=permste&id=' . get_nfilter_request_var('id')); exit; }elseif (isset_request_var('associate_tree')) { while (list($var,$val) = each($_POST)) { if (preg_match('/^chk_([0-9]+)$/', $var, $matches)) { /* ================= input validation ================= */ input_validate_input_number($matches[1]); /* ==================================================== */ if (get_nfilter_request_var('drp_action') == '1') { db_execute_prepared('REPLACE INTO user_auth_group_perms (group_id, item_id, type) VALUES (?, ?, 2)', array(get_nfilter_request_var('id'), $matches[1])); }else{ db_execute_prepared('DELETE FROM user_auth_group_perms WHERE group_id = ? AND item_id = ? AND type = 2', array(get_nfilter_request_var('id'), $matches[1])); } } } header('Location: user_group_admin.php?action=edit&header=false&tab=permstr&id=' . get_nfilter_request_var('id')); exit; }elseif (isset_request_var('associate_member')) { while (list($var,$val) = each($_POST)) { if (preg_match('/^chk_([0-9]+)$/', $var, $matches)) { /* ================= input validation ================= */ input_validate_input_number($matches[1]); /* ==================================================== */ if (get_nfilter_request_var('drp_action') == '1') { db_execute_prepared('REPLACE INTO user_auth_group_members (group_id, user_id) VALUES (?, ?)', array(get_nfilter_request_var('id'), $matches[1])); }else{ db_execute_prepared('DELETE FROM user_auth_group_members WHERE group_id = ? AND user_id = ?', array(get_nfilter_request_var('id'), $matches[1])); } } } header('Location: user_group_admin.php?action=edit&header=false&tab=members&id=' . get_nfilter_request_var('id')); exit; }elseif (isset_request_var('selected_items')) { $selected_items = sanitize_unserialize_selected_items(get_nfilter_request_var('selected_items')); if ($selected_items != false) { if (get_nfilter_request_var('drp_action') == '1') { /* delete */ for ($i=0;($i'; } $group_array[$i] = $matches[1]; $i++; } } top_header(); form_start('user_group_admin.php'); html_start_box($group_actions[get_nfilter_request_var('drp_action')], '60%', '', '3', 'center', ''); if (isset($group_array) && sizeof($group_array)) { if ((get_nfilter_request_var('drp_action') == '1') && (sizeof($group_array))) { /* delete */ print "

Click 'Continue' and the the selected User Group(s).

\n"; $save_html = " "; } $group_id = ''; if ((get_nfilter_request_var('drp_action') == '3') && (sizeof($group_array))) { /* enable */ print "

Click 'Continue' to enable the selected User Group(s).

\n"; $save_html = " "; } if ((get_nfilter_request_var('drp_action') == '4') && (sizeof($group_array))) { /* disable */ print "

Click 'Continue' to disable the selected User Group(s).

\n"; $save_html = " "; } }else{ print "You must select at least one Group.\n"; $save_html = ""; } print " "; if (get_nfilter_request_var('drp_action') == '2') { /* copy */ print "\n"; }else{ print "\n"; } print " $save_html \n"; html_end_box(); form_end(); bottom_footer(); } /* -------------------------- Save Function -------------------------- */ function form_save() { global $settings_user; if (isset_request_var('save_component_group')) { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('realm'); /* ==================================================== */ /* check duplicate group */ if (sizeof(db_fetch_row_prepared('SELECT * FROM user_auth_group WHERE name = ? AND id != ?', array(get_nfilter_request_var('name'), get_nfilter_request_var('id'))))) { raise_message(12); } $save['id'] = get_nfilter_request_var('id'); $save['name'] = form_input_validate(get_nfilter_request_var('name'), 'name', "^[A-Za-z0-9\._\\\@\ -]+$", false, 3); $save['description'] = form_input_validate(get_nfilter_request_var('description'), 'description', '', true, 3); $save['show_tree'] = form_input_validate(get_nfilter_request_var('show_tree', ''), 'show_tree', '', true, 3); $save['show_list'] = form_input_validate(get_nfilter_request_var('show_list', ''), 'show_list', '', true, 3); $save['show_preview'] = form_input_validate(get_nfilter_request_var('show_preview', ''), 'show_preview', '', true, 3); $save['graph_settings'] = form_input_validate(get_nfilter_request_var('graph_settings', ''), 'graph_settings', '', true, 3); $save['login_opts'] = form_input_validate(get_nfilter_request_var('login_opts'), 'login_opts', '', true, 3); $save['enabled'] = form_input_validate(get_nfilter_request_var('enabled', ''), 'enabled', '', true, 3); $save = api_plugin_hook_function('user_group_admin_setup_sql_save', $save); if (!is_error_message()) { $group_id = sql_save($save, 'user_auth_group'); if ($group_id) { reset_group_perms($group_id); raise_message(1); }else{ raise_message(2); } } header('Location: user_group_admin.php?action=edit&header=false&tab=general&id=' . (isset($group_id) && $group_id > 0 ? $group_id : get_nfilter_request_var('id'))); exit; }elseif (isset_request_var('save_component_realm_perms')) { db_execute_prepared('DELETE FROM user_auth_group_realm WHERE group_id = ?', array(get_filter_request_var('id'))); while (list($var, $val) = each($_POST)) { if (preg_match('/^[section]/i', $var)) { if (substr($var, 0, 7) == 'section') { db_execute_prepared('REPLACE INTO user_auth_group_realm (group_id, realm_id) VALUES (?, ?)', array(get_request_var('id'), substr($var, 7))); } } } reset_group_perms(get_request_var('id')); raise_message(1); header('Location: user_group_admin.php?action=edit&header=false&tab=realms&id=' . get_request_var('id')); exit; }elseif (isset_request_var('save_component_graph_settings')) { while (list($tab_short_name, $tab_fields) = each($settings_user)) { 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_prepared('REPLACE INTO settings_user_group (group_id, name, value) VALUES (?, ?, ?)', array(get_filter_request_var('id'), $sub_field_name, get_nfilter_request_var($sub_field_name, ''))); } }else{ db_execute_prepared('REPLACE INTO settings_user_group (group_id, name, value) VALUES (?, ?, ?)', array(get_request_var('id'), $field_name, get_nfilter_request_var($field_name))); } } } /* reset local settings cache so the user sees the new settings */ kill_session_var('sess_graph_config_array'); reset_group_perms(get_request_var('id')); raise_message(1); header('Location: user_group_admin.php?action=edit&header=false&tab=settings&id=' . get_nfilter_request_var('id')); exit; } else { api_plugin_hook('user_group_admin_save'); } /* redirect to the appropriate page */ header('Location: user_group_admin.php?action=edit&header=false&tab=general&id=' . get_nfilter_request_var('id')); } /* -------------------------- Graph Permissions -------------------------- */ function perm_remove() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('group_id'); /* ==================================================== */ if (get_request_var('type') == 'graph') { db_execute_prepared('DELETE FROM user_auth_group_perms WHERE type=1 AND group_id = ? AND item_id = ?', array(get_request_var('group_id'), get_request_var('id'))); }elseif (get_request_var('type') == 'tree') { db_execute_prepared('DELETE FROM user_auth_group_perms WHERE type=2 AND group_id = ? AND item_id = ?', array(get_request_var('group_id'), get_request_var('id'))); }elseif (get_request_var('type') == 'host') { db_execute_prepared('DELETE FROM user_auth_group_perms WHERE type=3 AND group_id = ? AND item_id = ?', array(get_request_var('group_id'), get_request_var('id'))); }elseif (get_request_var('type') == 'graph_template') { db_execute_prepared('DELETE FROM user_auth_group_perms WHERE type=4 AND group_id = ? AND item_id = ?', array(get_request_var('group_id'), get_request_var('id'))); } header('Location: user_group_admin.php?action=edit&header=false&tab=gperms&id=' . get_request_var('group_id')); } function user_group_members_edit($header_label) { global $config, $auth_realms; process_member_request_vars(); member_filter($header_label); /* if the number of rows is -1, set it to the default */ if (get_request_var('rows') == -1) { $rows = read_config_option('num_rows_table'); }else{ $rows = get_request_var('rows'); } /* form the 'where' clause for our main sql query */ if (strlen(get_request_var('filter'))) { $sql_where = "WHERE (username LIKE '%" . get_request_var('filter') . "%' OR full_name LIKE '%" . get_request_var('filter') . "%')"; } else { $sql_where = ''; } if (get_request_var('associated') == 'false') { /* Show all items */ } else { $sql_where .= (strlen($sql_where) ? ' AND ':'WHERE ') . ' (user_auth_group_members.group_id=' . get_request_var('id', 0) . ')'; } $total_rows = db_fetch_cell("SELECT COUNT(ua.id) FROM user_auth AS ua LEFT JOIN user_auth_group_members ON (ua.id = user_auth_group_members.user_id) $sql_where"); $sql_query = "SELECT DISTINCT ua.id, ua.username, ua.full_name, ua.enabled, ua.realm FROM user_auth AS ua LEFT JOIN user_auth_group_members ON (ua.id = user_auth_group_members.user_id) $sql_where ORDER BY username, full_name LIMIT " . ($rows*(get_request_var('page')-1)) . ',' . $rows; $members = db_fetch_assoc($sql_query); form_start(htmlspecialchars('user_group_admin.php?tab=members&id=' . get_request_var('id')), 'chk'); html_start_box('', '100%', '', '3', 'center', ''); $nav = html_nav_bar('user_group_admin.php?action=edit&tab=members&id=' . get_request_var('id'), MAX_DISPLAY_PAGES, get_request_var('page'), $rows, $total_rows, 7, 'Users', 'page', 'main'); print $nav; $display_text = array('Login Name', 'Full Name', 'ID', 'Membership', 'Enabled', 'Realm'); html_header_checkbox($display_text, false); if (sizeof($members)) { foreach ($members as $g) { form_alternate_row('line' . $g['id'], true); form_selectable_cell('' . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter')) . ')/i', "\\1", htmlspecialchars($g['username'])) : htmlspecialchars($g['username'])) . '', $g['id']); form_selectable_cell((strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter')) . ')/i', "\\1", htmlspecialchars($g['full_name'])) : htmlspecialchars($g['full_name'])), $g['id']); form_selectable_cell($g['id'], $g['id']); if (user_group_is_member($g['id'], get_request_var('id'))) { form_selectable_cell('Group Member', $g['id']); }else{ form_selectable_cell('Non Member', $g['id']); } form_selectable_cell(($g['enabled'] == 'on' ? 'Enabled':'Disabled'), $g['id']); form_selectable_cell((isset($auth_realms[$g['realm']]) ? $auth_realms[$g['realm']]:'Unknown'), $g['id']); form_checkbox_cell($g['full_name'], $g['id']); form_end_row(); } /* put the nav bar on the bottom as well */ print $nav; } else { print 'No Matching Group Members Found'; } html_end_box(false); form_hidden_box('tab', 'members', ''); form_hidden_box('id', get_request_var('id'), ''); form_hidden_box('associate_member', '1', ''); $assoc_actions = array( 1 => 'Add to Group', 2 => 'Remove from Group' ); /* draw the dropdown containing a list of available actions for this form */ draw_actions_dropdown($assoc_actions); form_end(); } function user_group_graph_perms_edit($tab, $header_label) { global $config, $assoc_actions; /* ================= input validation ================= */ get_filter_request_var('id'); /* ==================================================== */ $policy_array = array( 1 => 'Allow', 2 => 'Deny'); if (!isempty_request_var('id')) { $policy = db_fetch_row_prepared('SELECT policy_graphs, policy_trees, policy_hosts, policy_graph_templates FROM user_auth_group WHERE id = ?', array(get_request_var('id'))); } switch($tab) { case 'permsg': process_graph_request_vars(); graph_filter($header_label); form_start('user_group_admin.php', 'policy'); /* box: device permissions */ html_start_box('Default Graph Policy', '100%', '', '3', 'center', ''); ?>
Default Graph policy for this User Group '>
0)"; } else { $sql_where = 'WHERE (gtg.local_graph_id>0)'; } if (get_request_var('graph_template_id') == '-1') { /* Show all items */ }elseif (get_request_var('graph_template_id') == '0') { $sql_where .= (strlen($sql_where) ? ' AND ':'WHERE ') . ' gtg.graph_template_id=0'; }elseif (!isempty_request_var('graph_template_id')) { $sql_where .= (strlen($sql_where) ? ' AND ':'WHERE ') . ' gtg.graph_template_id=' . get_request_var('graph_template_id'); } if (get_request_var('associated') == 'false') { /* Show all items */ } else { $sql_where .= (strlen($sql_where) ? ' AND ':'WHERE ') . ' (user_auth_group_perms.type=1 AND user_auth_group_perms.group_id=' . get_request_var('id', 0) . ')'; } form_start(htmlspecialchars('user_group_admin.php?tab=permsg&id=' . get_request_var('id')), 'chk'); html_start_box('', '100%', '', '3', 'center', ''); $total_rows = db_fetch_cell("select COUNT(gtg.id) FROM graph_templates_graph AS gtg LEFT JOIN user_auth_group_perms ON (gtg.local_graph_id = user_auth_group_perms.item_id AND user_auth_group_perms.type = 1 AND user_auth_group_perms.group_id = " . get_request_var('id') . ") $sql_where"); $sql_query = "SELECT gtg.local_graph_id, gtg.title_cache, user_auth_group_perms.group_id FROM graph_templates_graph AS gtg LEFT JOIN user_auth_group_perms ON (gtg.local_graph_id=user_auth_group_perms.item_id AND user_auth_group_perms.type=1 AND user_auth_group_perms.group_id = " . get_request_var('id') . ") $sql_where ORDER BY title_cache LIMIT " . ($rows*(get_request_var('page')-1)) . ',' . $rows; $graphs = db_fetch_assoc($sql_query); $nav = html_nav_bar('user_group_admin.php?action=edit&tab=permsg&id=' . get_request_var('id'), MAX_DISPLAY_PAGES, get_request_var('page'), $rows, $total_rows, 7, 'Graphs', 'page', 'main'); print $nav; $display_text = array('Graph Title', 'ID', 'Effective Policy'); html_header_checkbox($display_text, false); if (sizeof($graphs)) { foreach ($graphs as $g) { form_alternate_row('line' . $g['local_graph_id'], true); form_selectable_cell((strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter')) . ')/i', "\\1", htmlspecialchars($g['title_cache'])) : htmlspecialchars($g['title_cache'])), $g['local_graph_id'], 250); form_selectable_cell($g['local_graph_id'], $g['local_graph_id']); if (empty($g['group_id']) || $g['group_id'] == NULL) { if ($policy['policy_graphs'] == 1) { form_selectable_cell('Access Granted', $g['local_graph_id']); }else{ form_selectable_cell('Access Restricted', $g['local_graph_id']); } } else { if ($policy['policy_graphs'] == 1) { form_selectable_cell('Access Restricted', $g['local_graph_id']); }else{ form_selectable_cell('Access Granted', $g['local_graph_id']); } } form_checkbox_cell($g['title_cache'], $g['local_graph_id']); form_end_row(); } /* put the nav bar on the bottom as well */ print $nav; } else { print 'No Matching Graphs Found'; } html_end_box(false); form_hidden_box('tab',$tab,''); form_hidden_box('id', get_request_var('id'), ''); form_hidden_box('associate_graph', '1', ''); if ($policy['policy_graphs'] == 1) { $assoc_actions = array( 1 => 'Revoke Access', 2 => 'Grant Access' ); }else{ $assoc_actions = array( 1 => 'Grant Access', 2 => 'Revoke Access' ); } /* draw the dropdown containing a list of available actions for this form */ draw_actions_dropdown($assoc_actions); form_end(); break; case 'permsd': process_device_request_vars(); device_filter($header_label); form_start('user_group_admin.php', 'policy'); /* box: device permissions */ html_start_box('Default Device Policy', '100%', '', '3', 'center', ''); ?>
Default Graph policy for this User Group '>
\\1", htmlspecialchars($host['description'])) : htmlspecialchars($host['description'])), $host['id'], 250); form_selectable_cell(round(($host['id']), 2), $host['id']); if (empty($host['group_id']) || $host['group_id'] == NULL) { if ($policy['policy_hosts'] == 1) { form_selectable_cell('Access Granted', $host['id']); }else{ form_selectable_cell('Access Restricted', $host['id']); } } else { if ($policy['policy_hosts'] == 1) { form_selectable_cell('Access Restricted', $host['id']); }else{ form_selectable_cell('Access Granted', $host['id']); } } form_selectable_cell((isset($host_graphs[$host['id']]) ? $host_graphs[$host['id']] : 0), $host['id']); form_selectable_cell((isset($host_data_sources[$host['id']]) ? $host_data_sources[$host['id']] : 0), $host['id']); form_selectable_cell(get_colored_device_status(($host['disabled'] == 'on' ? true : false), $host['status']), $host['id']); form_selectable_cell((strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter')) . ')/i', "\\1", htmlspecialchars($host['hostname'])) : htmlspecialchars($host['hostname'])), $host['id']); form_checkbox_cell($host['description'], $host['id']); form_end_row(); } /* put the nav bar on the bottom as well */ print $nav; } else { print 'No Matching Devices Found'; } html_end_box(false); form_hidden_box('tab',$tab,''); form_hidden_box('id', get_request_var('id'), ''); form_hidden_box('associate_host', '1', ''); if ($policy['policy_hosts'] == 1) { $assoc_actions = array( 1 => 'Revoke Access', 2 => 'Grant Access' ); }else{ $assoc_actions = array( 1 => 'Grant Access', 2 => 'Revoke Access' ); } /* draw the dropdown containing a list of available actions for this form */ draw_actions_dropdown($assoc_actions); form_end(); break; case 'permste': process_template_request_vars(); template_filter($header_label); form_start('user_group_admin.php', 'policy'); /* box: device permissions */ html_start_box('Default Graph Template Policy', '100%', '', '3', 'center', ''); ?>
Default Graph Template Template policy for this User Group '>
\\1", htmlspecialchars($g['name'])) : htmlspecialchars($g['name'])), $g['id'], 250); form_selectable_cell($g['id'], $g['id']); if (empty($g['group_id']) || $g['group_id'] == NULL) { if ($policy['policy_graph_templates'] == 1) { form_selectable_cell('Access Granted', $g['id']); }else{ form_selectable_cell('Access Restricted', $g['id']); } } else { if ($policy['policy_graph_templates'] == 1) { form_selectable_cell('Access Restricted', $g['id']); }else{ form_selectable_cell('Access Granted', $g['id']); } } form_selectable_cell($g['totals'], $g['id']); form_checkbox_cell($g['name'], $g['id']); form_end_row(); } /* put the nav bar on the bottom as well */ print $nav; } else { print 'No Matching Graph Templates Found'; } html_end_box(false); form_hidden_box('tab',$tab,''); form_hidden_box('id', get_request_var('id'), ''); form_hidden_box('associate_template', '1', ''); if ($policy['policy_graph_templates'] == 1) { $assoc_actions = array( 1 => 'Revoke Access', 2 => 'Grant Access' ); }else{ $assoc_actions = array( 1 => 'Grant Access', 2 => 'Revoke Access' ); } /* draw the dropdown containing a list of available actions for this form */ draw_actions_dropdown($assoc_actions); form_end(); break; case 'permstr': process_tree_request_vars(); tree_filter($header_label); form_start('user_group_admin.php', 'policy'); /* box: device permissions */ html_start_box('Default Tree Policy', '100%', '', '3', 'center', ''); ?>
Default Tree policy for this User Group '>
\\1", htmlspecialchars($t['name'])) : htmlspecialchars($t['name'])), $t['id'], 250); form_selectable_cell($t['id'], $t['id']); if (empty($t['group_id']) || $t['group_id'] == NULL) { if ($policy['policy_trees'] == 1) { form_selectable_cell('Access Granted', $t['id']); }else{ form_selectable_cell('Access Restricted', $t['id']); } } else { if ($policy['policy_trees'] == 1) { form_selectable_cell('Access Restricted', $t['id']); }else{ form_selectable_cell('Access Granted', $t['id']); } } form_checkbox_cell($t['name'], $t['id']); form_end_row(); } /* put the nav bar on the bottom as well */ print $nav; } else { print 'No Matching Trees Found'; } html_end_box(false); form_hidden_box('tab',$tab,''); form_hidden_box('id', get_request_var('id'), ''); form_hidden_box('associate_tree', '1', ''); if ($policy['policy_graph_templates'] == 1) { $assoc_actions = array( 1 => 'Revoke Access', 2 => 'Grant Access' ); }else{ $assoc_actions = array( 1 => 'Grant Access', 2 => 'Revoke Access' ); } /* draw the dropdown containing a list of available actions for this form */ draw_actions_dropdown($assoc_actions); form_end(); break; } } function user_group_is_member($user_id, $group_id) { return db_fetch_cell_prepared('SELECT COUNT(*) FROM user_auth_group_members WHERE user_id = ? AND group_id = ?', array($user_id, $group_id)); } function user_group_realms_edit($header_label) { global $user_auth_realms, $user_auth_roles; /* ================= input validation ================= */ get_filter_request_var('id'); /* ==================================================== */ form_start('user_group_admin.php', 'chk'); $all_realms = $user_auth_realms; html_start_box('', '100%', '', '3', 'center', ''); print " Group Permissions $header_label \n \n"; /* do cacti realms first */ $i = 1; foreach($user_auth_roles as $role_name => $perms) { $j = 1; print "" . $role_name . "\n"; print "\n"; foreach($perms as $realm) { if ($j == 1) { print "\n"; } print "\n"; if ($j == 5) { print "\n"; $j = 1; }else{ $j++; } } if ($j > 1) { print "\n"; print "\n"; } print "
\n"; if (isset($user_auth_realms[$realm])) { if (sizeof(db_fetch_assoc_prepared('SELECT realm_id FROM user_auth_group_realm WHERE group_id = ? AND realm_id = ?', array(get_request_var('id', 0), $realm))) > 0) { $old_value = 'on'; }else{ $old_value = ''; } unset($all_realms[$realm]); form_checkbox('section' . $realm, $old_value, $user_auth_realms[$realm], '', '', '', (!isempty_request_var('id') ? 1 : 0)); print '
'; } print "
\n"; } print "\n"; /* do plugin realms */ $realms = db_fetch_assoc('SELECT pc.name, pr.id AS realm_id, pr.display FROM plugin_config AS pc INNER JOIN plugin_realms AS pr ON pc.directory = pr.plugin ORDER BY pc.name, pr.display'); print "Plugin Permissions\n"; print "\n"; $break = true;; $j = 1; }else{ $j++; } } if ($break) { print "
\n"; if (sizeof($realms)) { $last_plugin = 'none'; $i = 1; $j = 1; foreach($realms as $r) { $break = false; if ($last_plugin != $r['name'] && $last_plugin != 'none') { $break = true; if ($j == 6) { print "
\n"; } if ($break || $i == 1) { print '' . $r['name'] . "
\n"; } $realm = $r['realm_id'] + 100; if (sizeof(db_fetch_assoc_prepared('SELECT realm_id FROM user_auth_group_realm WHERE group_id = ? AND realm_id = ?', array(get_request_var('id', 0), $realm))) > 0) { $old_value = 'on'; }else{ $old_value = ''; } unset($all_realms[$realm]); $pos = (strpos($user_auth_realms[$realm], '->') !== false ? strpos($user_auth_realms[$realm], '->')+2:0); form_checkbox('section' . $realm, $old_value, substr($user_auth_realms[$realm], $pos), '', '', '', (!isempty_request_var('id') ? 1 : 0)); print '
'; $last_plugin = $r['name']; $i++; } } /* get the old PIA 1.x realms */ if (sizeof($all_realms)) { if ($break) { print "
\n"; } print "Legacy 1.x Plugins
\n"; foreach($all_realms as $realm => $name) { if (sizeof(db_fetch_assoc_prepared('SELECT realm_id FROM user_auth_group_realm WHERE group_id = ? AND realm_id = ?', array(get_request_var('id', 0), $realm))) > 0) { $old_value = 'on'; }else{ $old_value = ''; } $pos = (strpos($user_auth_realms[$realm], '->') !== false ? strpos($user_auth_realms[$realm], '->')+2:0); form_checkbox('section' . $realm, $old_value, substr($user_auth_realms[$realm], $pos), '', '', '', (!isempty_request_var('id') ? 1 : 0)); print '
'; } } print "
\n"; html_end_box(); form_hidden_box('save_component_realm_perms','1',''); form_hidden_box('tab','realms',''); form_hidden_box('id',get_request_var('id'),''); form_save_button('user_group_admin.php', 'return'); } function user_group_settings_edit($header_label) { global $settings_user, $tabs_graphs, $graph_views; /* ================= input validation ================= */ get_filter_request_var('id'); /* ==================================================== */ form_start('user_group_admin.php', 'chk'); html_start_box("User Settings $header_label", '100%', '', '3', 'center', ''); while (list($tab_short_name, $tab_fields) = each($settings_user)) { $collapsible = true; print "" . $tabs_graphs[$tab_short_name] . ($collapsible ? "
":"") . "\n"; $form_array = array(); while (list($field_name, $field_array) = each($tab_fields)) { $form_array += array($field_name => $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_request_var('id'))) { $form_array[$field_name]['items'][$sub_field_name]['form_id'] = 1; } $form_array[$field_name]['items'][$sub_field_name]['value'] = db_fetch_cell_prepared('SELECT value FROM settings_user_group WHERE name = ? AND group_id = ?', array($sub_field_name, get_request_var('id'))); } }else{ if (graph_config_value_exists($field_name, get_request_var('id'))) { $form_array[$field_name]['form_id'] = 1; } $form_array[$field_name]['value'] = db_fetch_cell_prepared('SELECT value FROM settings_user_group WHERE name = ? AND group_id = ?', array($field_name, get_request_var('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',''); form_hidden_box('tab','settings',''); form_hidden_box('id',get_request_var('id'),''); form_save_button('user_group_admin.php', 'return'); ?> 'General', 'members' => 'Members', 'realms' => 'Permissions', 'permsg' => 'Graph Perms', 'permsd' => 'Device Perms', 'permste' => 'Template Perms', 'permstr' => 'Tree Perms', 'settings' => 'User Settings' ); $tabs = api_plugin_hook_function('ugroup_tabs', $tabs); if (!isempty_request_var('id')) { $group = db_fetch_row_prepared('SELECT * FROM user_auth_group WHERE id = ?', array(get_request_var('id'))); $header_label = '[edit: ' . $group['name'] . ']'; }else{ $header_label = '[new]'; } /* set the default tab */ load_current_session_value('tab', 'sess_ugroup_tab', 'general'); $current_tab = get_nfilter_request_var('tab'); if (sizeof($tabs) && isset_request_var('id')) { /* draw the tabs */ print "
\n"; } switch(get_request_var('tab')) { case 'general': api_plugin_hook_function('user_group_admin_edit', (isset($user) ? get_request_var('id') : 0)); form_start('user_group_admin.php'); html_start_box("User Group Management $header_label", '100%', '', '3', 'center', ''); draw_edit_form(array( 'config' => array('no_form_tag' => true), 'fields' => inject_form_variables($fields_user_group_edit, (isset($group) ? $group : array())) )); html_end_box(); form_save_button('user_group_admin.php', 'return'); break; case 'settings': user_group_settings_edit($header_label); break; case 'realms': user_group_realms_edit($header_label); break; case 'permsg': case 'permsd': case 'permste': case 'permstr': user_group_graph_perms_edit(get_request_var('tab'), $header_label); break; case 'members': user_group_members_edit($header_label); break; } } function user_group() { global $group_actions, $item_rows; /* ================= input validation and session storage ================= */ $filters = array( 'rows' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => read_config_option('num_rows_table') ), 'page' => array( 'filter' => FILTER_VALIDATE_INT, 'default' => '1' ), 'filter' => array( 'filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string') ), 'sort_column' => array( 'filter' => FILTER_CALLBACK, 'default' => 'name', 'options' => array('options' => 'sanitize_search_string') ), 'sort_direction' => array( 'filter' => FILTER_CALLBACK, 'default' => 'ASC', 'options' => array('options' => 'sanitize_search_string') ), 'has_graphs' => array( 'filter' => FILTER_VALIDATE_REGEXP, 'options' => array('options' => array('regexp' => '(true|false)')), 'pageset' => true, 'default' => 'true' ) ); validate_store_request_vars($filters, 'sess_ugad'); /* ================= input validation ================= */ ?>
Search '> Groups
'>
array('Group Name', 'ASC'), 'members' => array('Members', 'ASC'), 'description' => array('Description', 'ASC'), 'policy_graphs' => array('Graph Policy', 'ASC'), 'policy_hosts' => array('Device Policy', 'ASC'), 'policy_graph_templates' => array('Template Policy', 'ASC'), 'enabled' => array('Enabled', 'ASC')); html_header_sort_checkbox($display_text, get_request_var('sort_column'), get_request_var('sort_direction'), false); if (sizeof($group_list)) { foreach ($group_list as $group) { if ($group['enabled'] == 'on') { $enabled = 'Yes'; }else{ $enabled = 'No'; } form_alternate_row('line' . $group['id'], true); form_selectable_cell("" . (strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter')) . ')/i', "\\1", htmlspecialchars($group['name'])) : htmlspecialchars($group['name'])) . '', $group['id']); form_selectable_cell(($group['members'] > 0 ? number_format($group['members']):'None'), $group['id']); form_selectable_cell((strlen(get_request_var('filter')) ? preg_replace('/(' . preg_quote(get_request_var('filter')) . ')/i', "\\1", htmlspecialchars($group['description'])) : htmlspecialchars($group['description'])), $group['id']); form_selectable_cell(($group['policy_graphs'] == 1 ? 'ALLOW':'DENY'), $group['id']); form_selectable_cell(($group['policy_hosts'] == 1 ? 'ALLOW':'DENY'), $group['id']); form_selectable_cell(($group['policy_graph_templates'] == 1 ? 'ALLOW':'DENY'), $group['id']); form_selectable_cell($enabled, $group['id']); form_checkbox_cell($group['name'], $group['id']); form_end_row(); } print $nav; }else{ print 'No User Groups Found'; } html_end_box(false); draw_actions_dropdown($group_actions); } function process_graph_request_vars() { /* ================= input validation and session storage ================= */ $filters = array( 'rows' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => read_config_option('num_rows_table') ), 'page' => array( 'filter' => FILTER_VALIDATE_INT, 'default' => '1' ), 'filter' => array( 'filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string') ), 'associated' => array( 'filter' => FILTER_VALIDATE_REGEXP, 'options' => array('options' => array('regexp' => '(true|false)')), 'pageset' => true, 'default' => 'true' ), 'graph_template_id' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '-1' ) ); validate_store_request_vars($filters, 'sess_ugg'); /* ================= input validation ================= */ } function process_device_request_vars() { /* ================= input validation and session storage ================= */ $filters = array( 'rows' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => read_config_option('num_rows_table') ), 'page' => array( 'filter' => FILTER_VALIDATE_INT, 'default' => '1' ), 'filter' => array( 'filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string') ), 'associated' => array( 'filter' => FILTER_VALIDATE_REGEXP, 'options' => array('options' => array('regexp' => '(true|false)')), 'pageset' => true, 'default' => 'true' ), 'host_template_id' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '-1' ) ); validate_store_request_vars($filters, 'sess_ugd'); /* ================= input validation ================= */ } function process_template_request_vars() { /* ================= input validation and session storage ================= */ $filters = array( 'rows' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => read_config_option('num_rows_table') ), 'page' => array( 'filter' => FILTER_VALIDATE_INT, 'default' => '1' ), 'filter' => array( 'filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string') ), 'associated' => array( 'filter' => FILTER_VALIDATE_REGEXP, 'options' => array('options' => array('regexp' => '(true|false)')), 'pageset' => true, 'default' => 'true' ), 'host_template_id' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '-1' ) ); validate_store_request_vars($filters, 'sess_ugte'); /* ================= input validation ================= */ } function process_tree_request_vars() { /* ================= input validation and session storage ================= */ $filters = array( 'rows' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => read_config_option('num_rows_table') ), 'page' => array( 'filter' => FILTER_VALIDATE_INT, 'default' => '1' ), 'filter' => array( 'filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string') ), 'associated' => array( 'filter' => FILTER_VALIDATE_REGEXP, 'options' => array('options' => array('regexp' => '(true|false)')), 'pageset' => true, 'default' => 'true' ) ); validate_store_request_vars($filters, 'sess_ugtr'); /* ================= input validation ================= */ } function process_member_request_vars() { /* ================= input validation and session storage ================= */ $filters = array( 'rows' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => read_config_option('num_rows_table') ), 'page' => array( 'filter' => FILTER_VALIDATE_INT, 'default' => '1' ), 'filter' => array( 'filter' => FILTER_CALLBACK, 'pageset' => true, 'default' => '', 'options' => array('options' => 'sanitize_search_string') ), 'associated' => array( 'filter' => FILTER_VALIDATE_REGEXP, 'options' => array('options' => array('regexp' => '(true|false)')), 'pageset' => true, 'default' => 'true' ) ); validate_store_request_vars($filters, 'sess_ugm'); /* ================= input validation ================= */ } function graph_filter($header_label) { global $config, $item_rows; ?>
Search ' onChange='applyFilter()'> Template Graphs >
'> '>
Search ' onChange='applyFilter()'> Template Devices >
'> '>
Search ' onChange='applyFilter()'> Templates >
'> '>
Search ' onChange='applyFilter()'> Trees >
'> '>
Search ' onChange='applyFilter()'> Users >
'> '>