function insert_host_form() { global $USER_DETAILS; $host_groups = get_request('groups', array()); if (isset($_REQUEST['groupid']) && $_REQUEST['groupid'] > 0 && empty($host_groups)) { array_push($host_groups, $_REQUEST['groupid']); } $newgroup = get_request('newgroup', ''); $host = get_request('host', ''); $port = get_request('port', CProfile::get('HOST_PORT', 10050)); $status = get_request('status', HOST_STATUS_MONITORED); $useip = get_request('useip', 1); $dns = get_request('dns', ''); $ip = get_request('ip', '0.0.0.0'); $proxy_hostid = get_request('proxy_hostid', ''); $useipmi = get_request('useipmi', 'no'); $ipmi_ip = get_request('ipmi_ip', ''); $ipmi_port = get_request('ipmi_port', 623); $ipmi_authtype = get_request('ipmi_authtype', -1); $ipmi_privilege = get_request('ipmi_privilege', 2); $ipmi_username = get_request('ipmi_username', ''); $ipmi_password = get_request('ipmi_password', ''); $useprofile = get_request('useprofile', 'no'); $devicetype = get_request('devicetype', ''); $name = get_request('name', ''); $os = get_request('os', ''); $serialno = get_request('serialno', ''); $tag = get_request('tag', ''); $macaddress = get_request('macaddress', ''); $hardware = get_request('hardware', ''); $software = get_request('software', ''); $contact = get_request('contact', ''); $location = get_request('location', ''); $notes = get_request('notes', ''); $_REQUEST['hostid'] = get_request('hostid', 0); // BEGIN: HOSTS PROFILE EXTENDED Section $useprofile_ext = get_request('useprofile_ext', 'no'); $ext_host_profiles = get_request('ext_host_profiles', array()); // END: HOSTS PROFILE EXTENDED Section $templates = get_request('templates', array()); $clear_templates = get_request('clear_templates', array()); $frm_title = S_HOST; if ($_REQUEST['hostid'] > 0) { $db_host = get_host_by_hostid($_REQUEST['hostid']); $frm_title .= SPACE . ' [' . $db_host['host'] . ']'; $original_templates = get_templates_by_hostid($_REQUEST['hostid']); } else { $original_templates = array(); } if ($_REQUEST['hostid'] > 0 && !isset($_REQUEST['form_refresh'])) { $proxy_hostid = $db_host['proxy_hostid']; $host = $db_host['host']; $port = $db_host['port']; $status = $db_host['status']; $useip = $db_host['useip']; $useipmi = $db_host['useipmi'] ? 'yes' : 'no'; $ip = $db_host['ip']; $dns = $db_host['dns']; $ipmi_ip = $db_host['ipmi_ip']; $ipmi_port = $db_host['ipmi_port']; $ipmi_authtype = $db_host['ipmi_authtype']; $ipmi_privilege = $db_host['ipmi_privilege']; $ipmi_username = $db_host['ipmi_username']; $ipmi_password = $db_host['ipmi_password']; // add groups $options = array('hostids' => $_REQUEST['hostid']); $host_groups = CHostGroup::get($options); $host_groups = zbx_objectValues($host_groups, 'groupid'); // read profile $db_profiles = DBselect('SELECT * FROM hosts_profiles WHERE hostid=' . $_REQUEST['hostid']); $useprofile = 'no'; $db_profile = DBfetch($db_profiles); if ($db_profile) { $useprofile = 'yes'; $devicetype = $db_profile['devicetype']; $name = $db_profile['name']; $os = $db_profile['os']; $serialno = $db_profile['serialno']; $tag = $db_profile['tag']; $macaddress = $db_profile['macaddress']; $hardware = $db_profile['hardware']; $software = $db_profile['software']; $contact = $db_profile['contact']; $location = $db_profile['location']; $notes = $db_profile['notes']; } // BEGIN: HOSTS PROFILE EXTENDED Section $useprofile_ext = 'no'; $db_profiles_alt = DBselect('SELECT * FROM hosts_profiles_ext WHERE hostid=' . $_REQUEST['hostid']); if ($ext_host_profiles = DBfetch($db_profiles_alt)) { $useprofile_ext = 'yes'; } else { $ext_host_profiles = array(); } // END: HOSTS PROFILE EXTENDED Section $templates = $original_templates; } $ext_profiles_fields = array('device_alias' => S_DEVICE_ALIAS, 'device_type' => S_DEVICE_TYPE, 'device_chassis' => S_DEVICE_CHASSIS, 'device_os' => S_DEVICE_OS, 'device_os_short' => S_DEVICE_OS_SHORT, 'device_hw_arch' => S_DEVICE_HW_ARCH, 'device_serial' => S_DEVICE_SERIAL, 'device_model' => S_DEVICE_MODEL, 'device_tag' => S_DEVICE_TAG, 'device_vendor' => S_DEVICE_VENDOR, 'device_contract' => S_DEVICE_CONTRACT, 'device_who' => S_DEVICE_WHO, 'device_status' => S_DEVICE_STATUS, 'device_app_01' => S_DEVICE_APP_01, 'device_app_02' => S_DEVICE_APP_02, 'device_app_03' => S_DEVICE_APP_03, 'device_app_04' => S_DEVICE_APP_04, 'device_app_05' => S_DEVICE_APP_05, 'device_url_1' => S_DEVICE_URL_1, 'device_url_2' => S_DEVICE_URL_2, 'device_url_3' => S_DEVICE_URL_3, 'device_networks' => S_DEVICE_NETWORKS, 'device_notes' => S_DEVICE_NOTES, 'device_hardware' => S_DEVICE_HARDWARE, 'device_software' => S_DEVICE_SOFTWARE, 'ip_subnet_mask' => S_IP_SUBNET_MASK, 'ip_router' => S_IP_ROUTER, 'ip_macaddress' => S_IP_MACADDRESS, 'oob_ip' => S_OOB_IP, 'oob_subnet_mask' => S_OOB_SUBNET_MASK, 'oob_router' => S_OOB_ROUTER, 'date_hw_buy' => S_DATE_HW_BUY, 'date_hw_install' => S_DATE_HW_INSTALL, 'date_hw_expiry' => S_DATE_HW_EXPIRY, 'date_hw_decomm' => S_DATE_HW_DECOMM, 'site_street_1' => S_SITE_STREET_1, 'site_street_2' => S_SITE_STREET_2, 'site_street_3' => S_SITE_STREET_3, 'site_city' => S_SITE_CITY, 'site_state' => S_SITE_STATE, 'site_country' => S_SITE_COUNTRY, 'site_zip' => S_SITE_ZIP, 'site_rack' => S_SITE_RACK, 'site_notes' => S_SITE_NOTES, 'poc_1_name' => S_POC_1_NAME, 'poc_1_email' => S_POC_1_EMAIL, 'poc_1_phone_1' => S_POC_1_PHONE_1, 'poc_1_phone_2' => S_POC_1_PHONE_2, 'poc_1_cell' => S_POC_1_CELL, 'poc_1_screen' => S_POC_1_SCREEN, 'poc_1_notes' => S_POC_1_NOTES, 'poc_2_name' => S_POC_2_NAME, 'poc_2_email' => S_POC_2_EMAIL, 'poc_2_phone_1' => S_POC_2_PHONE_1, 'poc_2_phone_2' => S_POC_2_PHONE_2, 'poc_2_cell' => S_POC_2_CELL, 'poc_2_screen' => S_POC_2_SCREEN, 'poc_2_notes' => S_POC_2_NOTES); foreach ($ext_profiles_fields as $field => $caption) { if (!isset($ext_host_profiles[$field])) { $ext_host_profiles[$field] = ''; } } $clear_templates = array_intersect($clear_templates, array_keys($original_templates)); $clear_templates = array_diff($clear_templates, array_keys($templates)); natcasesort($templates); $frmHost = new CForm('hosts.php', 'post'); $frmHost->setName('web.hosts.host.php.'); // $frmHost->setHelp('web.hosts.host.php'); // $frmHost->addVar('config',get_request('config',0)); $frmHost->addVar('form', get_request('form', 1)); $from_rfr = get_request('form_refresh', 0); $frmHost->addVar('form_refresh', $from_rfr + 1); $frmHost->addVar('clear_templates', $clear_templates); // HOST WIDGET { $host_tbl = new CTable('', 'tablestripped'); $host_tbl->setOddRowClass('form_odd_row'); $host_tbl->setEvenRowClass('form_even_row'); if ($_REQUEST['hostid'] > 0) { $frmHost->addVar('hostid', $_REQUEST['hostid']); } if ($_REQUEST['groupid'] > 0) { $frmHost->addVar('groupid', $_REQUEST['groupid']); } $host_tbl->addRow(array(S_NAME, new CTextBox('host', $host, 54))); $grp_tb = new CTweenBox($frmHost, 'groups', $host_groups, 10); $all_groups = CHostGroup::get(array('editable' => 1, 'extendoutput' => 1)); order_result($all_groups, 'name'); foreach ($all_groups as $group) { $grp_tb->addItem($group['groupid'], $group['name']); } $host_tbl->addRow(array(S_GROUPS, $grp_tb->get(S_IN_GROUPS, S_OTHER_GROUPS))); $host_tbl->addRow(array(S_NEW_GROUP, new CTextBox('newgroup', $newgroup))); // onchange does not work on some browsers: MacOS, KDE browser $host_tbl->addRow(array(S_DNS_NAME, new CTextBox('dns', $dns, '40'))); if (defined('ZBX_HAVE_IPV6')) { $host_tbl->addRow(array(S_IP_ADDRESS, new CTextBox('ip', $ip, '39'))); } else { $host_tbl->addRow(array(S_IP_ADDRESS, new CTextBox('ip', $ip, '15'))); } $cmbConnectBy = new CComboBox('useip', $useip); $cmbConnectBy->addItem(0, S_DNS_NAME); $cmbConnectBy->addItem(1, S_IP_ADDRESS); $host_tbl->addRow(array(S_CONNECT_TO, $cmbConnectBy)); $host_tbl->addRow(array(S_AGENT_PORT, new CNumericBox('port', $port, 5))); //Proxy $cmbProxy = new CComboBox('proxy_hostid', $proxy_hostid); $cmbProxy->addItem(0, S_NO_PROXY); $options = array('extendoutput' => 1); $db_proxies = CProxy::get($options); order_result($db_proxies, 'host'); foreach ($db_proxies as $proxy) { $cmbProxy->addItem($proxy['proxyid'], $proxy['host']); } $host_tbl->addRow(array(S_MONITORED_BY_PROXY, $cmbProxy)); //---------- $cmbStatus = new CComboBox('status', $status); $cmbStatus->addItem(HOST_STATUS_MONITORED, S_MONITORED); $cmbStatus->addItem(HOST_STATUS_NOT_MONITORED, S_NOT_MONITORED); $host_tbl->addRow(array(S_STATUS, $cmbStatus)); $host_tbl->addRow(array(S_USEIPMI, new CCheckBox('useipmi', $useipmi, 'submit()'))); if ($useipmi == 'yes') { $host_tbl->addRow(array(S_IPMI_IP_ADDRESS, new CTextBox('ipmi_ip', $ipmi_ip, defined('ZBX_HAVE_IPV6') ? 39 : 15))); $host_tbl->addRow(array(S_IPMI_PORT, new CNumericBox('ipmi_port', $ipmi_port, 5))); $cmbIPMIAuthtype = new CComboBox('ipmi_authtype', $ipmi_authtype); $cmbIPMIAuthtype->addItem(IPMI_AUTHTYPE_DEFAULT, S_AUTHTYPE_DEFAULT); $cmbIPMIAuthtype->addItem(IPMI_AUTHTYPE_NONE, S_AUTHTYPE_NONE); $cmbIPMIAuthtype->addItem(IPMI_AUTHTYPE_MD2, S_AUTHTYPE_MD2); $cmbIPMIAuthtype->addItem(IPMI_AUTHTYPE_MD5, S_AUTHTYPE_MD5); $cmbIPMIAuthtype->addItem(IPMI_AUTHTYPE_STRAIGHT, S_AUTHTYPE_STRAIGHT); $cmbIPMIAuthtype->addItem(IPMI_AUTHTYPE_OEM, S_AUTHTYPE_OEM); $cmbIPMIAuthtype->addItem(IPMI_AUTHTYPE_RMCP_PLUS, S_AUTHTYPE_RMCP_PLUS); $host_tbl->addRow(array(S_IPMI_AUTHTYPE, $cmbIPMIAuthtype)); $cmbIPMIPrivilege = new CComboBox('ipmi_privilege', $ipmi_privilege); $cmbIPMIPrivilege->addItem(IPMI_PRIVILEGE_CALLBACK, S_PRIVILEGE_CALLBACK); $cmbIPMIPrivilege->addItem(IPMI_PRIVILEGE_USER, S_PRIVILEGE_USER); $cmbIPMIPrivilege->addItem(IPMI_PRIVILEGE_OPERATOR, S_PRIVILEGE_OPERATOR); $cmbIPMIPrivilege->addItem(IPMI_PRIVILEGE_ADMIN, S_PRIVILEGE_ADMIN); $cmbIPMIPrivilege->addItem(IPMI_PRIVILEGE_OEM, S_PRIVILEGE_OEM); $host_tbl->addRow(array(S_IPMI_PRIVILEGE, $cmbIPMIPrivilege)); $host_tbl->addRow(array(S_IPMI_USERNAME, new CTextBox('ipmi_username', $ipmi_username, 16))); $host_tbl->addRow(array(S_IPMI_PASSWORD, new CTextBox('ipmi_password', $ipmi_password, 20))); } else { $frmHost->addVar('ipmi_ip', $ipmi_ip); $frmHost->addVar('ipmi_port', $ipmi_port); $frmHost->addVar('ipmi_authtype', $ipmi_authtype); $frmHost->addVar('ipmi_privilege', $ipmi_privilege); $frmHost->addVar('ipmi_username', $ipmi_username); $frmHost->addVar('ipmi_password', $ipmi_password); } if ($_REQUEST['form'] == 'full_clone') { // Host items $options = array('inherited' => 0, 'hostids' => $_REQUEST['hostid'], 'output' => API_OUTPUT_EXTEND, 'webitems' => 1); $host_items = CItem::get($options); if (!empty($host_items)) { $items_lbx = new CListBox('items', null, 8); $items_lbx->setAttribute('disabled', 'disabled'); order_result($host_items, 'description'); foreach ($host_items as $hitem) { $items_lbx->addItem($hitem['itemid'], item_description($hitem)); } $host_tbl->addRow(array(S_ITEMS, $items_lbx)); } // Host triggers $options = array('inherited' => 0, 'hostids' => $_REQUEST['hostid'], 'output' => API_OUTPUT_EXTEND, 'expandDescription' => true); $host_triggers = CTrigger::get($options); if (!empty($host_triggers)) { $trig_lbx = new CListBox('triggers', null, 8); $trig_lbx->setAttribute('disabled', 'disabled'); order_result($host_triggers, 'description'); foreach ($host_triggers as $htrigger) { $trig_lbx->addItem($htrigger['triggerid'], $htrigger['description']); } $host_tbl->addRow(array(S_TRIGGERS, $trig_lbx)); } // Host graphs $options = array('inherited' => 0, 'hostids' => $_REQUEST['hostid'], 'select_hosts' => API_OUTPUT_REFER, 'output' => API_OUTPUT_EXTEND); $host_graphs = CGraph::get($options); if (!empty($host_graphs)) { $graphs_lbx = new CListBox('graphs', null, 8); $graphs_lbx->setAttribute('disabled', 'disabled'); order_result($host_graphs, 'name'); foreach ($host_graphs as $hgraph) { if (count($hgraph['hosts']) > 1) { continue; } $graphs_lbx->addItem($hgraph['graphid'], $hgraph['name']); } if ($graphs_lbx->ItemsCount() > 1) { $host_tbl->addRow(array(S_GRAPHS, $graphs_lbx)); } } } $host_footer = array(); $host_footer[] = new CButton('save', S_SAVE); if ($_REQUEST['hostid'] > 0 && $_REQUEST['form'] != 'full_clone') { array_push($host_footer, SPACE, new CButton('clone', S_CLONE), SPACE, new CButton('full_clone', S_FULL_CLONE), SPACE, new CButtonDelete(S_DELETE_SELECTED_HOST_Q, url_param('form') . url_param('hostid') . url_param('groupid'))); } array_push($host_footer, SPACE, new CButtonCancel(url_param('groupid'))); $host_footer = new CCol($host_footer); $host_footer->setColSpan(2); $host_tbl->setFooter($host_footer); $host_wdgt = new CWidget(); $host_wdgt->setClass('header'); $host_wdgt->addHeader($frm_title); $host_wdgt->addItem($host_tbl); // } HOST WIDGET // TEMPLATES{ $template_tbl = new CTableInfo(S_NO_TEMPLATES_LINKED, 'tablestripped'); $template_tbl->setOddRowClass('form_odd_row'); $template_tbl->setEvenRowClass('form_even_row'); foreach ($templates as $id => $temp_name) { $frmHost->addVar('templates[' . $id . ']', $temp_name); $template_tbl->addRow(new CCol(array(new CCheckBox('templates_rem[' . $id . ']', 'no', null, $id), $temp_name))); } $footer = new CCol(array(new CButton('add_template', S_ADD, "return PopUp('popup.php?dstfrm=" . $frmHost->getName() . "&dstfld1=new_template&srctbl=templates&srcfld1=hostid&srcfld2=host" . url_param($templates, false, 'existed_templates') . "',450,450)", 'T'), SPACE, new CButton('unlink', S_UNLINK), SPACE, new CButton('unlink_and_clear', S_UNLINK_AND_CLEAR))); //$footer->setColSpan(2); $template_tbl->setFooter($footer); $template_wdgt = new CWidget(); $template_wdgt->setClass('header'); $template_wdgt->addHeader(S_LINKED_TEMPLATES); $template_wdgt->addItem($template_tbl); // } TEMPLATES // MACROS WIDGET { $macros_wdgt = get_macros_widget($_REQUEST['hostid']); // } MACROS WIDGET // PROFILE WIDGET { $profile_tbl = new CTable('', 'tablestripped'); $profile_tbl->setOddRowClass('form_odd_row'); $profile_tbl->setEvenRowClass('form_even_row'); $profile_tbl->addRow(array(S_USE_PROFILE, new CCheckBox('useprofile', $useprofile, 'submit()'))); if ($useprofile == 'yes') { $profile_tbl->addRow(array(S_DEVICE_TYPE, new CTextBox('devicetype', $devicetype, 61))); $profile_tbl->addRow(array(S_NAME, new CTextBox('name', $name, 61))); $profile_tbl->addRow(array(S_OS, new CTextBox('os', $os, 61))); $profile_tbl->addRow(array(S_SERIALNO, new CTextBox('serialno', $serialno, 61))); $profile_tbl->addRow(array(S_TAG, new CTextBox('tag', $tag, 61))); $profile_tbl->addRow(array(S_MACADDRESS, new CTextBox('macaddress', $macaddress, 61))); $profile_tbl->addRow(array(S_HARDWARE, new CTextArea('hardware', $hardware, 60, 4))); $profile_tbl->addRow(array(S_SOFTWARE, new CTextArea('software', $software, 60, 4))); $profile_tbl->addRow(array(S_CONTACT, new CTextArea('contact', $contact, 60, 4))); $profile_tbl->addRow(array(S_LOCATION, new CTextArea('location', $location, 60, 4))); $profile_tbl->addRow(array(S_NOTES, new CTextArea('notes', $notes, 60, 4))); } else { $frmHost->addVar('devicetype', $devicetype); $frmHost->addVar('name', $name); $frmHost->addVar('os', $os); $frmHost->addVar('serialno', $serialno); $frmHost->addVar('tag', $tag); $frmHost->addVar('macaddress', $macaddress); $frmHost->addVar('hardware', $hardware); $frmHost->addVar('software', $software); $frmHost->addVar('contact', $contact); $frmHost->addVar('location', $location); $frmHost->addVar('notes', $notes); } $profile_wdgt = new CWidget(); $profile_wdgt->setClass('header'); $profile_wdgt->addHeader(S_PROFILE); $profile_wdgt->addItem($profile_tbl); // } PROFILE WIDGET // EXT PROFILE WIDGET { $ext_profile_tbl = new CTable('', 'tablestripped'); $ext_profile_tbl->setOddRowClass('form_odd_row'); $ext_profile_tbl->setEvenRowClass('form_even_row'); $ext_profile_tbl->addRow(array(S_USE_EXTENDED_PROFILE, new CCheckBox('useprofile_ext', $useprofile_ext, 'submit()', 'yes'))); foreach ($ext_profiles_fields as $prof_field => $caption) { if ($useprofile_ext == 'yes') { $ext_profile_tbl->addRow(array($caption, new CTextBox('ext_host_profiles[' . $prof_field . ']', $ext_host_profiles[$prof_field], 40))); } else { $frmHost->addVar('ext_host_profiles[' . $prof_field . ']', $ext_host_profiles[$prof_field]); } } $ext_profile_wdgt = new CWidget(); $ext_profile_wdgt->setClass('header'); $ext_profile_wdgt->addHeader(S_EXTENDED_HOST_PROFILE); $ext_profile_wdgt->addItem($ext_profile_tbl); // } EXT PROFILE WIDGET $left_table = new CTable(); $left_table->setCellPadding(4); $left_table->setCellSpacing(4); $left_table->addRow($host_wdgt); $right_table = new CTable(); $right_table->setCellPadding(4); $right_table->setCellSpacing(4); $right_table->addRow($template_wdgt); $right_table->addRow($macros_wdgt); $right_table->addRow($profile_wdgt); $right_table->addRow($ext_profile_wdgt); $td_l = new CCol($left_table); $td_l->setAttribute('valign', 'top'); $td_r = new CCol($right_table); $td_r->setAttribute('valign', 'top'); $outer_table = new CTable(); $outer_table->addRow(array($td_l, $td_r)); $frmHost->addItem($outer_table); return $frmHost; }