$d_ports) { $start_port = $d_ports + 1; LOG_DEBUG($db_link, "Device id: $id add connection for port from $start_port to $sw_ports."); for ($port = $start_port; $port <= $sw_ports; $port++) { insert_record($db_link, "device_ports", [ 'device_id' => $id, 'snmp_index' => $port, 'port' => $port ]); } } if ($sw_ports < $d_ports) { LOG_DEBUG($db_link, "Device id: $id remove connection for port from $d_ports to $sw_ports"); for ($port = $d_ports; $port > $sw_ports; $port--) { $port_id = get_id_record($db_link, 'device_ports', "device_id = ? AND port = ?", [$id, $port]); if ($port_id) { delete_record($db_link, "device_ports", "id = ?", [$port_id]); delete_records($db_link, "connections", "port_id = ?", [$port_id]); } else { LOG_DEBUG($db_link, "Device id: $id port_id not found for port: $port!"); } } } } // === ОСНОВНЫЕ ДАННЫЕ УСТРОЙСТВА ============================================ $new = []; $cur_device = get_record_sql($db_link, "SELECT * FROM devices WHERE id = ?", [$id]); // IP-адрес $f_ip = trim(getPOST("f_ip", null, '')); if ($f_ip !== '') { $new['ip'] = $f_ip; $new['ip_int'] = ip2long($f_ip); $cur_auth = get_record_sql($db_link, "SELECT * FROM user_auth WHERE deleted = 0 AND ip = ?", [$f_ip]); } // Модель устройства $f_device_model_id = (int)getPOST("f_device_model_id", null, 0); if ($f_device_model_id > 0) { $new['device_model_id'] = $f_device_model_id; $new['vendor_id'] = get_device_model_vendor($db_link, $f_device_model_id); } // Количество портов $new['port_count'] = $sw_ports; // Тип устройства $new['device_type'] = (int)getPOST("f_devtype_id", null, 0); // === УПРАВЛЕНИЕ ЭКЗЕМПЛЯРАМИ ФИЛЬТРОВ ====================================== if ($new['device_type'] == 2) { // Это шлюз — должен иметь хотя бы один экземпляр $instances_count = get_count_records($db_link, 'device_filter_instances', 'device_id = ?', [$id]); if (empty($instances_count) || $instances_count == 0) { // Создаём стандартный экземпляр (ID=1) insert_record($db_link, "device_filter_instances", [ 'instance_id' => 1, 'device_id' => $id ]); } } else { // Не шлюз — удаляем все экземпляры if ($device['device_type'] == 2) { $instances_count = get_count_records($db_link, 'device_filter_instances', 'device_id = ?', [$id]); if (!empty($instances_count) && $instances_count > 0) { delete_records($db_link, 'device_filter_instances', 'device_id = ?', [$id]); } } } // === ОСТАЛЬНЫЕ ПОЛЯ ========================================================= $new['description'] = trim(getPOST("f_description", null, '')); $new['sn'] = trim(getPOST("f_sn", null, '')); $new['firmware'] = trim(getPOST("f_firmware", null, '')); // SNMP $new['snmp_version'] = (int)getPOST("f_snmp_version", null, 0); $new['community'] = substr(trim(getPOST("f_community", null, '')), 0, 50); $new['snmp3_auth_proto'] = substr(trim(getPOST("f_snmp3_auth_proto", null, '')), 0, 10); $new['snmp3_priv_proto'] = substr(trim(getPOST("f_snmp3_priv_proto", null, '')), 0, 10); $new['rw_community'] = substr(trim(getPOST("f_rw_community", null, '')), 0, 50); $new['snmp3_user_rw'] = substr(trim(getPOST("f_snmp3_user_rw", null, '')), 0, 20); $new['snmp3_user_ro'] = substr(trim(getPOST("f_snmp3_user_ro", null, '')), 0, 20); $new['snmp3_user_rw_password']= substr(trim(getPOST("f_snmp3_user_rw_password", null, '')), 0, 20); $new['snmp3_user_ro_password']= substr(trim(getPOST("f_snmp3_user_ro_password", null, '')), 0, 20); // ACL и настройки $new['queue_enabled'] = (int)getPOST("f_queue_enabled", null, 0); $new['connected_user_only'] = (int)getPOST("f_connected_user_only", null, 0); $new['dhcp'] = (int)getPOST("f_dhcp", null, 0); $new['user_acl'] = (int)getPOST("f_user_acl", null, 0); // Расположение $new['building_id'] = (int)getPOST("f_building_id", null, 0); // Доступ $new['login'] = trim(getPOST("f_login", null, '')); $f_password = getPOST("f_password", null, ''); if ($f_password !== '' && !preg_match('/^\*+$/', $f_password)) { $new['password'] = crypt_string($f_password); } $new['protocol'] = (int)getPOST("f_protocol", null, 0); $new['control_port'] = (int)getPOST("f_control_port", null, 0); $new['netflow_save'] = (int)getPOST("f_save_netflow", null, 0); // Discovery $new['discovery'] = trim(getPOST("f_discovery", null, 0)); // Nagios $f_nagios = (int)getPOST("f_nagios", null, -1); if ($f_nagios !== -1) { $new['nagios'] = $f_nagios; if ($new['nagios'] == 0) { $new['nagios_status'] = 'UP'; } } else { if (!empty($cur_auth)) { $new['nagios'] = 0; $new['nagios_status'] = $cur_auth['nagios_status']; } } // === ЗАВИСИМОСТИ ПО ТИПУ УСТРОЙСТВА ======================================== if ($new['device_type'] == 0 || $new['protocol'] < 0) { $new['queue_enabled'] = 0; $new['connected_user_only'] = 1; $new['user_acl'] = 0; } // === СОХРАНЕНИЕ ============================================================= update_record($db_link, "devices", "id = ?", $new, [$id]); header("Location: " . $_SERVER["REQUEST_URI"]); exit; } unset($_POST); require_once($_SERVER['DOCUMENT_ROOT'] . "/inc/header.php"); print_device_submenu($page_url); print_editdevice_submenu($page_url, $id, $device['device_type'], $user_info['login']); ?>
' . WEB_device_locked . '
'; } } ?>
" . WEB_device_port_count . ""; } else { print ""; } print ""; print "\n"; print "\n"; print "\n"; print "\n"; if ($device['device_type'] <= 2) { print "\n"; } else { print ""; } print "\n"; ?> \n"; print "\n"; print "\n"; print "\n"; print "\n"; print ""; print ""; print "\n"; print "\n"; print ""; //print gateway settings if ($device['device_type'] == 2) { print ""; print ""; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print ""; print ""; print ""; print ""; } //print router settings if ($device['device_type'] == 0) { print ""; print ""; print "\n"; } //for all active network devices if ($device['device_type'] <= 2) { //cli access settings print ""; print ""; print "\n"; print "\n"; print "\n"; print "\n"; print ""; //snmp settings & discovery & nagios print ""; print ""; print "\n"; print "\n"; print "\n"; print ""; } if ($device['snmp_version'] == 3) { //snmp settings print ""; print "\n"; print "\n"; print "\n"; print ""; print ""; print ""; print ""; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } else { print ""; print "\n"; print ""; if ($device['snmp_version'] > 0) { print ""; print "\n"; print "\n"; print "\n"; print ""; print ""; } } //save button if ($device['snmp_version'] > 0) { print ""; print ""; } else { print ""; } print ""; print "
" . $user_info['login'] . ""; print_device_ip_select($db_link, 'f_ip', $device['ip'], $device['user_id']); print ""; print_devtype_select($db_link, 'f_devtype_id', $device['device_type']); print "
"; print_device_model_select($db_link, 'f_device_model_id', $device['device_model_id']); print "
" . WEB_location_name . "" . WEB_cell_description . "
"; print_building_select($db_link, 'f_building_id', $device['building_id']); print "
"; print_url(WEB_device_access_control,"/admin/devices/edit_gw_instances.php?id=$id"); print "" . WEB_device_dhcp_server . "" . WEB_device_queues_enabled . "" . WEB_device_connected_only . "
"; print_qa_select('f_user_acl', $device['user_acl']); print ""; print_qa_select('f_dhcp', $device['dhcp']); print ""; print_qa_select('f_queue_enabled', $device['queue_enabled']); print ""; print_qa_select('f_connected_user_only', $device['connected_user_only']); print "
"; print_url(WEB_list_l3_interfaces, "/admin/devices/edit_l3int.php?id=$id"); print ""; print_url(WEB_list_gateway_subnets, "/admin/devices/edit_gw_subnets.php?id=$id"); print "
"; print get_l3_interfaces($db_link, $device['id']); print ""; print get_gw_subnets($db_link, $device['id']); print "
" . WEB_device_dhcp_server . "
"; print_qa_select('f_dhcp', $device['dhcp']); print ""; print_url(WEB_list_l3_networks, "/admin/devices/edit_gw_subnets.php?id=$id"); print "
" . WEB_cell_login . "" . WEB_cell_password . "" . WEB_cell_control_proto . "" . WEB_cell_control_port . "
"; print_control_proto_select('f_protocol', $device['protocol']); print "
" . WEB_network_discovery . "" . WEB_nagios . "" . WEB_device_save_netflow . "
"; print_qa_select('f_discovery', $device['discovery']); print ""; print_qa_select('f_nagios', $device['nagios']); print ""; print_qa_select('f_save_netflow', $device['netflow_save']); print "
" . WEB_snmp_version . "" . WEB_snmp_v3_auth_proto . "" . WEB_snmp_v3_priv_proto . "
"; print_snmp_select('f_snmp_version', $device['snmp_version']); print ""; print_snmp_auth_proto_select('f_snmp3_auth_proto', $device['snmp3_auth_proto']); print ""; print_snmp_priv_proto_select('f_snmp3_priv_proto', $device['snmp3_priv_proto']); print "
" . WEB_snmp_v3_user_ro . "" . WEB_snmp_v3_ro_password . "" . WEB_snmp_v3_user_rw . "" . WEB_snmp_v3_rw_password . "
" . WEB_snmp_version . "
"; print_snmp_select('f_snmp_version', $device['snmp_version']); print "
" . WEB_snmp_community_ro . "" . WEB_snmp_community_rw . "
" . $device['ip'] . "::" . get_device_model_name($db_link, $device['device_model_id']) . ""; print "
" . $device['ip'] . "::" . get_device_model_name($db_link, $device['device_model_id']) . "
\n"; ?>