Bläddra i källkod

config option arp_discovery and mac_discovery removed. Added a special configuration mode in which device scanning is not performed

Roman Dmitriev 2 år sedan
förälder
incheckning
97c568aad5

+ 1 - 2
docs/mysql/mysql.sql

@@ -119,8 +119,6 @@ INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `descr
 INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(5, 'dhcp server', 'ip-адрес DHCP-сервера', 'ip address of the DHCP server', 1, 'text', '127.0.0.1', 0, 0);
 INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(9, 'default snmp version', 'Версия snmp по умолчанию. В настоящий момент поддерживаются 1 и 2. Поддержка версии 3 в разработке.', 'The default version of snmp. Currently, 1 and 2 are supported. Support for version 3 is in development.', 1, 'int', '2', 1, 3);
 INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(11, 'default snmp community', 'Read snmp community по умолчанию', 'Read snmp community by default', 1, 'text', 'public', 0, 0);
-INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(17, 'mac discavery', 'Выполнять опрос mac-таблицы коммутаторов при сканировании сети. Если опция отключена будет нельзя сопоставить ip-адрес порту коммутатора', 'Poll the mac table of switches when scanning the network. If the option is disabled, it will be impossible to map the ip address to the switch port', 1, 'bool', '1', 0, 0);
-INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(19, 'arp discavery', 'Выполнять сканирование arp-таблицы роутеров при сканировании сети. Если опция отключена сопоставление mac-адреса ip-адресу будет возможно только из логов dhcp-сервера.', 'Perform a scan of the router arp table when scanning the network. If the option is disabled, mapping the mac address to the ip address be possible only from the logs of the dhcp server.', 1, 'bool', '1', 0, 0);
 INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(21, 'admin email', 'E-mail администратора', 'Administrator e-mail', 1, 'text', 'root', 0, 0);
 INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(22, 'add user from netflow', 'Создавать ли новые записи для неизвестных адресов из анализа трафика netflow. Не включать, если netflow снимает данные с маршрутизатора локальной сети', 'Whether to create new records for unknown addresses from netflow traffic analysis. Do not enable if netflow get data from the local network router', 1, 'bool', '0', 0, 0);
 INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(23, 'save traffic detail', 'Сохранять ли детализацию трафика из netflow по ip-адресам пользователей', 'Whether to keep the details of traffic from netflow by ip addresses of users', 1, 'bool', '1', 0, 0);
@@ -162,6 +160,7 @@ INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `descr
 INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(65, 'mikrotik_command_interface', 'Используемый способ конфигурирования (0 - cli для ROS 6, 1 - rest api для ROS 7)', 'Configuration method used (0 - cli for ROS 6, 1 - rest api for ROS 7)', 1, 'int', '0', 0, 1);
 INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(66, 'mikrotik_rest_api_ssl', 'Использовать https для rest api', 'Use HTTPS for rest api', 1, 'bool', '1', 0, 1);
 INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES(67, 'mikrotik_rest_api_port', 'Порт вэб-интерфейса для rest api', 'Web interface port for rest API', 1, 'int', '443', 0, 0);
+INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES (68, 'config_mode', 'Режим конфигурирования. Скрипт опроса устройств не выполняется.', 'Configuration mode. The device polling script is not running.', '1', 'bool', '0', '0', '1');
 
 -- --------------------------------------------------------
 

+ 21 - 0
html/admin/customers/control.php

@@ -3,6 +3,21 @@
 require_once ($_SERVER['DOCUMENT_ROOT']."/inc/auth.php");
 require_once ($_SERVER['DOCUMENT_ROOT']."/inc/languages/" . HTML_LANG . ".php");
 
+if (isset($_POST["set_workmode_on"])) {
+    run_sql($db_link,"DELETE FROM config WHERE option_id=68");
+    $new['option_id'] = 68;
+    $new['value'] = 1;
+    insert_record($db_link, "config", $new);
+    header("Location: " . $_SERVER["REQUEST_URI"]);
+    exit;
+}
+
+if (isset($_POST["set_workmode_off"])) {
+    run_sql($db_link,"DELETE FROM config WHERE option_id=68");
+    header("Location: " . $_SERVER["REQUEST_URI"]);
+    exit;
+}
+
 if (isset($_POST["recheck_ip"]) and is_option($db_link, 37)) {
     $run_cmd = get_option($db_link, 37);
     $result = shell_exec("/usr/bin/sudo ".escapeshellcmd($run_cmd)." >/dev/null 2>/dev/null &");
@@ -103,6 +118,12 @@ print_control_submenu($page_url);
 <form name="def" action="control.php" method="post">
 <table class="data">
 <?php
+        if (get_option($db_link, 68)) {
+            print "<tr><td align=right>".WEB_control_edit_mode."&nbsp<input type=submit name='set_workmode_off' value='".WEB_btn_off."' style='background-color:red'></td></tr>";
+            } else {
+            print "<tr><td align=right>".WEB_control_edit_mode."&nbsp<input type=submit name='set_workmode_on' value='".WEB_btn_on."'></td></tr>";
+        }
+
         if (is_option($db_link, 37)) {
             print "<tr><td align=right>".WEB_control_access."&nbsp<input type=submit name='recheck_ip' value='".WEB_btn_refresh."'></td></tr>";
         }

+ 0 - 1
html/inc/common.php

@@ -3866,7 +3866,6 @@ if ($config["debug"]) {
 $config["send_email"] = get_option($db_link, 51);
 $config["admin_email"] = get_option($db_link, 21);
 $config["sender_email"] = get_option($db_link, 52);
-$config["mac_discovery"] = get_option($db_link, 17);
 $config["snmp_default_version"] = get_option($db_link, 9);
 $config["snmp_default_community"] = get_option($db_link, 11);
 $config["auto_mac_rule"] = get_option($db_link, 64);

+ 1 - 1
html/inc/footer.php

@@ -1,4 +1,4 @@
-<div id="copyright">Copyright &copy; 2008-2023 Eye v2.4 &nbsp<a href="https://github.com/rajven/Eye">rnd@rajven.ru</a></div>
+<div id="copyright">Copyright &copy; 2008-2023 Eye v2.4.12 &nbsp<a href="https://github.com/rajven/Eye">rnd@rajven.ru</a></div>
 
 <?php
 $end_time = microtime();

+ 3 - 0
html/inc/languages/english.php

@@ -242,6 +242,8 @@ define("WEB_btn_transfom","Transform");
 define("WEB_btn_login","Enter");
 define("WEB_btn_apply_selected","Apply for selected");
 define("WEB_btn_save_filters","Save filters");
+define("WEB_btn_on","On");
+define("WEB_btn_off","Off");
 
 /* control options */
 define("WEB_config_remove_option","Parameter removed");
@@ -292,6 +294,7 @@ define("WEB_control_log_traffic_on","Enable traffic logging for everyone");
 define("WEB_control_log_traffic_off","Turn off traffic logging for everyone");
 define("WEB_control_clear_dns_cache","Clear DNS Cache");
 define("WEB_control_port_off","Port Control");
+define("WEB_control_edit_mode","Configuration Mode");
 
 /* editcustom */
 define("WEB_custom_titles","Administrator");

+ 3 - 0
html/inc/languages/russian.php

@@ -242,6 +242,8 @@ define("WEB_btn_transfom","Преобразовать");
 define("WEB_btn_login","Войти");
 define("WEB_btn_apply_selected","Поменять у выделения");
 define("WEB_btn_save_filters","Сохранить фильтры");
+define("WEB_btn_on","Включить");
+define("WEB_btn_off","Выключить");
 
 /* control options */
 define("WEB_config_remove_option","Удалён параметр");
@@ -292,6 +294,7 @@ define("WEB_control_log_traffic_on","Включить запись трафик
 define("WEB_control_log_traffic_off","Выключить запись трафика у всех");
 define("WEB_control_clear_dns_cache","Сбросить кэш DNS");
 define("WEB_control_port_off","Управление портами");
+define("WEB_control_edit_mode","Режим конфигурирования");
 
 /* editcustom */
 define("WEB_custom_titles","Администратор");

+ 0 - 4
scripts/Rstat/config.pm

@@ -73,8 +73,6 @@ $all_networks
 @hotspot_network_list
 @all_network_list
 $dhcp_pool
-$mac_discovery
-$arp_discovery
 $history
 $history_dhcp
 $router_login
@@ -235,8 +233,6 @@ our $vpn_networks;
 our @free_network_list;
 our @vpn_network_list;
 our $dhcp_pool;
-our $mac_discovery;
-our $arp_discovery;
 our $default_user_ou_id;
 our $default_hotspot_ou_id;
 our $history;

+ 2 - 6
scripts/Rstat/mysql.pm

@@ -1005,8 +1005,6 @@ $config_ref{snmp_default_community}=get_option($db,11);
 $config_ref{KB}=get_option($db,1);
 if ($config_ref{KB} ==0) { $config_ref{KB}=1000; }
 if ($config_ref{KB} ==1) { $config_ref{KB}=1024; }
-$config_ref{mac_discovery}=get_option($db,17);
-$config_ref{arp_discovery}=get_option($db,19);
 $config_ref{admin_email}=get_option($db,21);
 $config_ref{sender_email}=get_option($db,52);
 $config_ref{send_email}=get_option($db,51);
@@ -1042,6 +1040,8 @@ $config_ref{stat_url} = get_option($db,62);
 $config_ref{wiki_path} = get_option($db,61);
 
 $config_ref{auto_mac_rule} = get_option($db,64);
+#network configuration mode
+$config_ref{config_mode}=get_option($db,68);
 
 #$save_detail = 1; id=23
 $save_detail=get_option($db,23);
@@ -1057,10 +1057,6 @@ $snmp_default_version=get_option($db,9);
 $snmp_default_community=get_option($db,11);
 #$KB=1024; id=1
 $KB=$config_ref{KB};
-#$mac_discovery; id=17
-$mac_discovery=get_option($db,17);
-#$arp_discovery; id=19
-$arp_discovery=get_option($db,19);
 #$admin_email; id=21
 $admin_email=get_option($db,21);
 #sender email

+ 3 - 17
scripts/fetch_new_arp.pl

@@ -30,6 +30,8 @@ flock(SELF, LOCK_EX|LOCK_NB) or exit 1;
 
 setpriority(0,0,19);
 
+if ($Config->{config_mode}) { log_info("System in configuration mode! Skip discovery."); exit; }
+
 my %mac_history;
 
 my ($sec,$min,$hour,$day,$month,$year,$zone) = localtime(time());
@@ -44,10 +46,6 @@ my $fork_count = $cpu_count*5;
 my $now_str=sprintf "%04d-%02d-%02d %02d:%02d:%02d",$year,$month,$day,$hour,$min,$sec;
 my $now_day=sprintf "%04d-%02d-%02d",$year,$month,$day;
 
-if (!$arp_discovery) {
-    db_log_verbose($dbh,'Arp discovery disabled by config');
-    } else {
-
 db_log_verbose($dbh,'Arp discovery started.');
 
 if ($ARGV[0]) {
@@ -142,15 +140,6 @@ foreach my $arp_table (@arp_array) {
     }
 }
 
-db_log_verbose($dbh,'Arp discovery stopped.');
-}
-
-#MAC Discavery
-if (!$mac_discovery) {
-    db_log_verbose($dbh,'Mac discovery disabled by config');
-    } else {
-
-sleep(1);
 db_log_verbose($dbh,'Mac discovery started.');
 
 my %connections=();
@@ -161,8 +150,7 @@ foreach my $connection (@connections_list) {
     $connections{$connection->{auth_id}}{id}=$connection->{id};
     }
 
-my $auth_filter='';
-if ($arp_discovery) { $auth_filter=" AND last_found >='".$now_day."' "; }
+my $auth_filter=" AND last_found >='".$now_day."' ";
 my $auth_sql="SELECT id,mac FROM User_auth WHERE mac IS NOT NULL AND deleted=0 $auth_filter ORDER BY id ASC";
 
 my @auth_list=get_records_sql($dbh,$auth_sql);
@@ -397,8 +385,6 @@ foreach my $mac (keys %mac_address_table) {
                 }
     }
 }
-db_log_verbose($dbh,'Mac discovery stopped.');
-}
 
 foreach my $mac (keys %mac_history) {
 next if (!$mac);

+ 5 - 0
updates/2-4-12/mysql-devices-patch.sql

@@ -18,3 +18,8 @@ UPDATE `config_options` SET `description.russian` = 'Порт ssh по умол
 UPDATE `config_options` SET `description.russian` = 'Default login for to network devices' WHERE `config_options`.`id` = 28;
 UPDATE `config_options` SET `description.russian` = 'Default password for network devices' WHERE `config_options`.`id` = 29;
 UPDATE `config_options` SET `description.russian` = 'SSH default port' WHERE `config_options`.`id` = 30;
+DELETE FROM `config_options` WHERE `config_options`.`id` = 17;
+DELETE FROM `config_options` WHERE `config_options`.`id` = 19;
+DELETE FROM `config` WHERE `option_id` = 17;
+DELETE FROM `config` WHERE `option_id` = 19;
+INSERT INTO `config_options` (`id`, `option_name`, `description.russian`, `description.english`, `uniq`, `type`, `default_value`, `min_value`, `max_value`) VALUES (68, 'config_mode', 'Режим конфигурирования. Скрипт опроса устройств не выполняется.', 'Configuration mode. The device polling script is not running.', '1', 'bool', '0', '0', '1');