ソースを参照

reorganizing the folder structure

Roman Dmitriev 2 年 前
コミット
a1c365146b
51 ファイル変更159 行追加209 行削除
  1. 0 154
      docs/addons/set_port_descr.pl
  2. 3 0
      html/admin/users/edit_rules.php
  3. 2 1
      html/inc/common.php
  4. 1 1
      scripts/eyelib/config.pm
  5. 4 0
      scripts/eyelib/mysql.pm
  6. 1 1
      scripts/update-named
  7. 0 0
      scripts/updates/2-4-0/mysql-device-ports.sql
  8. 0 0
      scripts/updates/2-4-1/manuf.csv
  9. 0 0
      scripts/updates/2-4-1/migrate_mac_vendors.pl
  10. 0 0
      scripts/updates/2-4-1/mysql-patch-to-2.4.sql
  11. 0 0
      scripts/updates/2-4-1/upgrade-to-2.4.pl
  12. 0 0
      scripts/updates/2-4-10/sessions.sql
  13. 0 0
      scripts/updates/2-4-11/filter-uprades.sql
  14. 0 0
      scripts/updates/2-4-12/mysql-devices-patch.sql
  15. 0 0
      scripts/updates/2-4-12/upgrade-to-2-4-12.pl
  16. 0 0
      scripts/updates/2-4-14/device_lock.sql
  17. 0 0
      scripts/updates/2-4-14/device_subnets.sql
  18. 0 0
      scripts/updates/2-4-14/dns_queue.sql
  19. 0 0
      scripts/updates/2-4-14/options.sql
  20. 0 0
      scripts/updates/2-4-14/ou.sql
  21. 0 0
      scripts/updates/2-4-14/subnets.sql
  22. 0 0
      scripts/updates/2-4-14/user_auth.sql
  23. 0 0
      scripts/updates/2-4-14/user_auth_alias.sql
  24. 0 0
      scripts/updates/2-4-14/version.sql
  25. 0 0
      scripts/updates/2-4-2/mysql-patch-filters.sql
  26. 0 0
      scripts/updates/2-4-3/mysql-optimize-index.sql
  27. 0 0
      scripts/updates/2-4-4/mysql_fix_aliases.sql
  28. 0 0
      scripts/updates/2-4-5/mysql-20230224.sql
  29. 0 0
      scripts/updates/2-4-6/mysql-patch.sql
  30. 0 0
      scripts/updates/2-4-7/mysql-customer.sql
  31. 0 0
      scripts/updates/2-4-8/int2bigint.sql
  32. 0 0
      scripts/updates/2-4-8/option82.sql
  33. 0 0
      scripts/updates/2-4-8/ros7.sql
  34. 0 0
      scripts/updates/2-4-9/mysql-migrate-path.sql
  35. 39 0
      scripts/updates/db-patch-mysql-utf8.pl
  36. 1 1
      scripts/utils/backupcfg.pl
  37. 1 1
      scripts/utils/bind/print-dns-zones.pl
  38. 0 0
      scripts/utils/mac-oids/download-macs.sh
  39. 10 3
      scripts/utils/mac-oids/update-mac-vendors.pl
  40. 0 0
      scripts/utils/oxidized/add_source_input_port.patch
  41. 1 2
      scripts/utils/oxidized/print_devices_oxi.pl
  42. 1 1
      scripts/utils/print-ou-ip.pl
  43. 1 2
      scripts/utils/print_cacti_create.pl
  44. 1 1
      scripts/utils/print_cacti_hosts.pl
  45. 1 2
      scripts/utils/print_devices.pl
  46. 54 0
      scripts/utils/reaply_rules.pl
  47. 1 1
      scripts/utils/set_dns_record.pl
  48. 35 8
      scripts/utils/set_port_descr.pl
  49. 1 2
      scripts/utils/win32/print-dhcpd-netsh.pl
  50. 1 1
      scripts/utils/win32/sync-dhcpd-netsh.pl
  51. 0 27
      updates/db-patch-mysql-utf8.sh

+ 0 - 154
docs/addons/set_port_descr.pl

@@ -1,154 +0,0 @@
-#!/usr/bin/perl
-
-#
-# Copyright (C) Roman Dmitiriev, rnd@rajven.ru
-#
-
-use utf8;
-use English;
-use base;
-use FindBin '$Bin';
-use lib "$Bin/";
-use strict;
-use Time::Local;
-use FileHandle;
-use Data::Dumper;
-use eyelib::config;
-use eyelib::main;
-use eyelib::net_utils;
-use eyelib::mysql;
-use eyelib::snmp;
-use eyelib::cmd;
-use Net::SNMP qw(:snmp);
-use Fcntl qw(:flock);
-
-open(SELF,"<",$0) or die "Cannot open $0 - $!";
-flock(SELF, LOCK_EX|LOCK_NB) or exit 1;
-
-my @auth_list = get_records_sql($dbh,"SELECT A.id,A.ip,A.mac,A.dns_name,A.comments,A.dhcp_hostname,A.WikiName,K.login,K.ou_id FROM User_auth as A, User_list as K WHERE K.id=A.user_id AND A.deleted=0 ORDER BY A.id");
-
-my %auth_ref;
-foreach my $auth (@auth_list) {
-$auth_ref{$auth->{id}}{id}=$auth->{id};
-$auth_ref{$auth->{id}}{ou_id}=$auth->{ou_id};
-$auth_ref{$auth->{id}}{ip}=$auth->{ip};
-$auth_ref{$auth->{id}}{mac}=$auth->{mac};
-$auth_ref{$auth->{id}}{dns_name}=$auth->{dns_name};
-$auth_ref{$auth->{id}}{comments}=$auth->{comments};
-$auth_ref{$auth->{id}}{dhcp_hostname}=$auth->{dhcp_hostname};
-$auth_ref{$auth->{id}}{WikiName}=$auth->{WikiName};
-$auth_ref{$auth->{id}}{login}=$auth->{login};
-if ($auth->{dns_name}) { $auth_ref{$auth->{id}}{description} = $auth->{dns_name}; }
-if (!$auth_ref{$auth->{id}}{description} and $auth->{WikiName}) { $auth_ref{$auth->{id}}{description} = $auth->{WikiName}; }
-if (!$auth_ref{$auth->{id}}{description} and $auth->{comments}) { $auth_ref{$auth->{id}}{description} = translit($auth->{comments}); }
-if (!$auth_ref{$auth->{id}}{description} and $auth->{dhcp_hostname}) { $auth_ref{$auth->{id}}{description} = $auth->{dhcp_hostname}; }
-if (!$auth_ref{$auth->{id}}{description}) { $auth_ref{$auth->{id}}{description} = translit($auth->{login})."_".$auth->{ip}; }
-$auth_ref{$auth->{id}}{description}=~s/\./-/g;
-$auth_ref{$auth->{id}}{description}=~s/\(/_/g;
-$auth_ref{$auth->{id}}{description}=~s/\)/_/g;
-}
-
-my %port_info;
-
-my $d_sql="SELECT DP.id, D.ip, D.device_name, D.device_model_id, DP.port, DP.snmp_index, DP.comment, D.community, D.snmp_version, DP.target_port_id, D.vendor_id, D.device_type
-FROM devices AS D, device_ports AS DP
-WHERE D.snmp_version>0 and D.id = DP.device_id AND D.community IS NOT NULL AND (D.device_type = 1 OR D.device_type=2) AND D.deleted=0
-ORDER BY D.device_name,DP.port";
-
-my @port_list = get_records_sql($dbh,$d_sql);
-
-foreach my $port (@port_list) {
-$port_info{$port->{id}}{id}=$port->{id};
-$port_info{$port->{id}}{device_name}=$port->{device_name};
-$port_info{$port->{id}}{ip}=$port->{ip};
-$port_info{$port->{id}}{device_model_id}=$port->{device_model_id};
-$port_info{$port->{id}}{port}=$port->{port};
-$port_info{$port->{id}}{snmp_index}=$port->{snmp_index};
-$port_info{$port->{id}}{community}=$port->{community};
-$port_info{$port->{id}}{comment}=$port->{comment};
-$port_info{$port->{id}}{snmp_version}=$port->{snmp_version};
-$port_info{$port->{id}}{target_port_id}=$port->{target_port_id};
-$port_info{$port->{id}}{vendor_id}=$port->{vendor_id};
-$port_info{$port->{id}}{device_type}=$port->{device_type};
-}
-
-my %conn_info;
-
-$d_sql="SELECT C.id, C.port_id, C.auth_id FROM connections AS C, User_auth as A WHERE A.id=C.auth_id AND A.deleted=0 ORDER BY C.id";
-my @conn_list = get_records_sql($dbh,$d_sql);
-
-foreach my $conn (@conn_list) {
-$conn_info{$conn->{id}}{id}=$conn->{id};
-$conn_info{$conn->{id}}{port_id}=$conn->{port_id};
-if ($conn->{auth_id}) {
-    $conn_info{$conn->{id}}{auth_id}=$conn->{auth_id};
-    $conn_info{$conn->{id}}{description}=$auth_ref{$conn->{auth_id}}->{description}."==ID:".$conn->{auth_id};
-    $conn_info{$conn->{id}}{ou_id}=$auth_ref{$conn->{auth_id}}->{ou_id};
-    }
-}
-
-
-foreach my $conn_id (keys %conn_info) {
-if (exists $port_info{$conn_info{$conn_id}{port_id}}{count}) {
-    $port_info{$conn_info{$conn_id}{port_id}}{count}++;
-    #OU: Switches, Routers, WiFi AP
-    if (in_array([7,10,12],$conn_info{$conn_id}{ou_id}) and $conn_info{$conn_id}{description}) {
-        $port_info{$conn_info{$conn_id}{port_id}}{description} = $conn_info{$conn_id}{description};
-        }
-    next;
-    } else { $port_info{$conn_info{$conn_id}{port_id}}{count}=1; }
-
-if (!exists $port_info{$conn_info{$conn_id}{port_id}}{description} and $conn_info{$conn_id}{description}) {
-    $port_info{$conn_info{$conn_id}{port_id}}{description} = $conn_info{$conn_id}{description};
-    }
-}
-
-my %devices;
-
-foreach my $port_id (keys %port_info) {
-if ($port_info{$port_id}{target_port_id}) {
-    $port_info{$port_id}{description}=$port_info{$port_info{$port_id}{target_port_id}}{device_name}."-port-".$port_info{$port_info{$port_id}{target_port_id}}{port};
-    }
-if (!$port_info{$port_id}{description} and $port_info{$port_id}{comment}) { $port_info{$port_id}{description}=translit($port_info{$port_id}{comment}); }
-$devices{$port_info{$port_id}{device_name}}{ports}{$port_info{$port_id}{port}}{description}=$port_info{$port_id}{description};
-$devices{$port_info{$port_id}{device_name}}{ports}{$port_info{$port_id}{port}}{snmp_index}=$port_info{$port_id}{snmp_index};
-$devices{$port_info{$port_id}{device_name}}{device_name}=$port_info{$port_id}{device_name};
-$devices{$port_info{$port_id}{device_name}}{ip}=$port_info{$port_id}{ip};
-$devices{$port_info{$port_id}{device_name}}{device_model_id}=$port_info{$port_id}{device_model_id};
-$devices{$port_info{$port_id}{device_name}}{vendor_id}=$port_info{$port_id}{vendor_id};
-$devices{$port_info{$port_id}{device_name}}{device_type}=$port_info{$port_id}{device_type};
-$devices{$port_info{$port_id}{device_name}}{community}=$port_info{$port_id}{community};
-$devices{$port_info{$port_id}{device_name}}{snmp_version}=$port_info{$port_id}{snmp_version};
-}
-
-foreach my $device_name (keys %devices) {
-my $device = $devices{$device_name};
-
-#skip unknown vendor
-next if (!$switch_auth{$device->{vendor_id}});
-
-my $ip = $device->{ip};
-my $community = $device->{community};
-my $snmp_version = $device->{snmp_version};
-
-print "Device: $device_name IP: $ip community: $community version: $snmp_version\n";
-
-#get interface names
-my $int = get_interfaces($ip,$community,$snmp_version,0);
-
-$device = netdev_set_auth($device);
-my $session = netdev_login($device);
-
-if ($session) {
-    netdev_set_hostname($session,$device);
-    foreach my $port (sort  { $a <=> $b } keys %{$device->{ports}}) {
-        my $descr = $device->{ports}{$port}{description};
-        my $index = $device->{ports}{$port}{snmp_index};
-        print "Port: $port index: $index Descr: $descr\n";
-        netdev_set_port_descr($session,$device,$int->{$index}->{name},$port,$descr);
-        }
-    netdev_wr_mem($session,$device);
-    }
-}
-
-exit;

+ 3 - 0
html/admin/users/edit_rules.php

@@ -30,6 +30,9 @@ if (isset($_POST['s_save'])) {
             if (intval($_POST['n_id'][$j]) != $save_id) { continue; }
             $new['type'] = $_POST['s_type'][$j];
             $new['rule'] = trim($_POST['s_rule'][$j]);
+            if ($new['type'] ==2) { 
+                $new['rule'] = mac_dotted($new['rule']); 
+                }
             update_record($db_link, "auth_rules", "id='{$save_id}'", $new);
         }
     }

+ 2 - 1
html/inc/common.php

@@ -3809,7 +3809,8 @@ function mac_dotted($mac)
         return;
     }
     $mac = mac_simplify($mac);
-    $mac = preg_replace('/(\S{2})(\S{2})(\S{2})(\S{2})(\S{2})(\S{2})/', '$1:$2:$3:$4:$5:$6', $mac);
+    $mac = preg_replace('/(\S{2})(\S{2})?(\S{2})?(\S{2})?(\S{2})?(\S{2})?/', '$1:$2:$3:$4:$5:$6', $mac);
+    $mac = preg_replace('/\:+$/','',$mac,5);
     return $mac;
 }
 

+ 1 - 1
scripts/eyelib/config.pm

@@ -108,7 +108,7 @@ $cpu_count
 BEGIN
 {
 
-our $HOME_DIR = dirname($0);
+our $HOME_DIR = '/opt/Eye/scripts';
 my $config_file = $HOME_DIR."/cfg/config";
 
 if (! -e "$config_file") { die "Config $config_file not found!"; }

+ 4 - 0
scripts/eyelib/mysql.pm

@@ -1577,6 +1577,10 @@ my $db=shift;
 
 $last_refresh_config = time();
 
+$config_ref{version}='';
+my $version_record = get_record_sql($db,"SELECT version FROM version WHERE version is NOT NULL");
+if ($version_record) { $config_ref{version}=$version_record->{version}; }
+
 $config_ref{dbh}=$db;
 $config_ref{save_detail}=get_option($db,23);
 $config_ref{add_unknown_user}=get_option($db,22);

+ 1 - 1
docs/bind/update-named → scripts/update-named

@@ -4,7 +4,7 @@ logger -t named "Refresh named config request"
 
 force=$1
 
-/opt/Eye/scripts/print-dns-zones.pl
+/opt/Eye/scripts/utils/bind/print-dns-zones.pl
 [ $? -ne 0 ] && exit 1
 
 RELOAD=

+ 0 - 0
updates/2-4-0/mysql-device-ports.sql → scripts/updates/2-4-0/mysql-device-ports.sql


+ 0 - 0
updates/2-4-1/manuf.csv → scripts/updates/2-4-1/manuf.csv


+ 0 - 0
updates/2-4-1/migrate_mac_vendors.pl → scripts/updates/2-4-1/migrate_mac_vendors.pl


+ 0 - 0
updates/2-4-1/mysql-patch-to-2.4.sql → scripts/updates/2-4-1/mysql-patch-to-2.4.sql


+ 0 - 0
updates/2-4-1/upgrade-to-2.4.pl → scripts/updates/2-4-1/upgrade-to-2.4.pl


+ 0 - 0
updates/2-4-10/sessions.sql → scripts/updates/2-4-10/sessions.sql


+ 0 - 0
updates/2-4-11/filter-uprades.sql → scripts/updates/2-4-11/filter-uprades.sql


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


+ 0 - 0
updates/2-4-12/upgrade-to-2-4-12.pl → scripts/updates/2-4-12/upgrade-to-2-4-12.pl


+ 0 - 0
updates/2-4-14/device_lock.sql → scripts/updates/2-4-14/device_lock.sql


+ 0 - 0
updates/2-4-14/device_subnets.sql → scripts/updates/2-4-14/device_subnets.sql


+ 0 - 0
updates/2-4-14/dns_queue.sql → scripts/updates/2-4-14/dns_queue.sql


+ 0 - 0
updates/2-4-14/options.sql → scripts/updates/2-4-14/options.sql


+ 0 - 0
updates/2-4-14/ou.sql → scripts/updates/2-4-14/ou.sql


+ 0 - 0
updates/2-4-14/subnets.sql → scripts/updates/2-4-14/subnets.sql


+ 0 - 0
updates/2-4-14/user_auth.sql → scripts/updates/2-4-14/user_auth.sql


+ 0 - 0
updates/2-4-14/user_auth_alias.sql → scripts/updates/2-4-14/user_auth_alias.sql


+ 0 - 0
updates/2-4-14/version.sql → scripts/updates/2-4-14/version.sql


+ 0 - 0
updates/2-4-2/mysql-patch-filters.sql → scripts/updates/2-4-2/mysql-patch-filters.sql


+ 0 - 0
updates/2-4-3/mysql-optimize-index.sql → scripts/updates/2-4-3/mysql-optimize-index.sql


+ 0 - 0
updates/2-4-4/mysql_fix_aliases.sql → scripts/updates/2-4-4/mysql_fix_aliases.sql


+ 0 - 0
updates/2-4-5/mysql-20230224.sql → scripts/updates/2-4-5/mysql-20230224.sql


+ 0 - 0
updates/2-4-6/mysql-patch.sql → scripts/updates/2-4-6/mysql-patch.sql


+ 0 - 0
updates/2-4-7/mysql-customer.sql → scripts/updates/2-4-7/mysql-customer.sql


+ 0 - 0
updates/2-4-8/int2bigint.sql → scripts/updates/2-4-8/int2bigint.sql


+ 0 - 0
updates/2-4-8/option82.sql → scripts/updates/2-4-8/option82.sql


+ 0 - 0
updates/2-4-8/ros7.sql → scripts/updates/2-4-8/ros7.sql


+ 0 - 0
updates/2-4-9/mysql-migrate-path.sql → scripts/updates/2-4-9/mysql-migrate-path.sql


+ 39 - 0
scripts/updates/db-patch-mysql-utf8.pl

@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+
+#
+# Copyright (C) Roman Dmitiriev, rnd@rajven.ru
+#
+
+use utf8;
+use FindBin '$Bin';
+use lib "/opt/Eye/scripts";
+use Data::Dumper;
+use eyelib::config;
+use eyelib::main;
+use eyelib::mysql;
+use strict;
+use warnings;
+
+my @tables = get_recrods_sql($dbh,"SHOW TABLES");
+
+print "Migrate tables to UTF8 format\n";
+for $table (@tables) {
+    print "Apply table $table\n";
+    do_sql($dbh,"SET foreign_key_checks = 0; ALTER TABLE `".$table."` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; SET foreign_key_checks = 1; ");
+    print "Done\n";
+}
+
+print "Migrate database\n"
+do_sql($dbh,"ALTER DATABASE ".$DBNAME." CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;");
+print "Done\n";
+
+print "Revert filed type to TEXT\n";
+for $table (@tables) {
+my $create_table = do_sql($dbh,"show create table $table");
+print Dumper($create_table);
+# | sed 's/\\n/\n/g' | egrep -i "[[:space:]]MEDIUMTEXT[[:space:]]" | awk '{ print $1 }' | while read c_field; do
+ #   echo "ALTER TABLE $table MODIFY $c_field TEXT;" >>migration_utf8
+}
+print "Done!\n";
+
+exit;

+ 1 - 1
scripts/backupcfg.pl → scripts/utils/backupcfg.pl

@@ -8,7 +8,7 @@ use utf8;
 use English;
 use base;
 use FindBin '$Bin';
-use lib "$Bin";
+use lib "/opt/Eye/scripts";
 use strict;
 use Time::Local;
 use FileHandle;

+ 1 - 1
docs/bind/print-dns-zones.pl → scripts/utils/bind/print-dns-zones.pl

@@ -5,7 +5,7 @@
 #
 
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use strict;
 use DBI;
 use Time::Local;

+ 0 - 0
docs/mac-oids/download-macs.sh → scripts/utils/mac-oids/download-macs.sh


+ 10 - 3
docs/mac-oids/update-mac-vendors.pl → scripts/utils/mac-oids/update-mac-vendors.pl

@@ -6,7 +6,7 @@
 
 use utf8;
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use Data::Dumper;
 use eyelib::config;
 use eyelib::main;
@@ -16,13 +16,20 @@ use strict;
 use warnings;
 
 my @nSQL=read_file("manuf.csv");
+
+if ($ARGV[0] eq 'clean') {
+    do_sql($dbh,"TRUNCATE TABLE mac_vendors");
+    }
+
 chomp(@nSQL);
 my @fSQL=();
 foreach my $row (@nSQL) {
 my ($oui,$company,$address)=split(/;/,$row);
 if (!$address) { $address=''; }
-my $vendor = get_record_sql($dbh,"SELECT id FROM mac_vendors WHERE oui='".$oui."'");
-next if ($vendor);
+if ($ARGV[0] ne 'clean') {
+    my $vendor = get_record_sql($dbh,"SELECT id FROM mac_vendors WHERE oui='".$oui."'");
+    next if ($vendor);
+    }
 my $row_str = "INSERT INTO mac_vendors (oui,companyName,companyAddress) VALUES('".$oui."',".$dbh->quote($company).",".$dbh->quote($address).");";
 push(@fSQL,$row_str);
 }

+ 0 - 0
docs/oxidized/add_source_input_port.patch → scripts/utils/oxidized/add_source_input_port.patch


+ 1 - 2
docs/oxidized/print_devices_oxi.pl → scripts/utils/oxidized/print_devices_oxi.pl

@@ -6,10 +6,9 @@
 
 use utf8;
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use strict;
 use DBI;
-no if $] >= 5.018, warnings =>  "experimental::smartmatch";
 use Data::Dumper;
 use Socket;
 use eyelib::config;

+ 1 - 1
docs/addons/print-ou-ip.pl → scripts/utils/print-ou-ip.pl

@@ -5,7 +5,7 @@
 #
 
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use strict;
 use DBI;
 use Time::Local;

+ 1 - 2
docs/addons/print_cacti_create.pl → scripts/utils/print_cacti_create.pl

@@ -3,9 +3,8 @@
 #
 # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
 #
-
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use strict;
 use DBI;
 use Date::Parse;

+ 1 - 1
docs/addons/print_cacti_hosts.pl → scripts/utils/print_cacti_hosts.pl

@@ -5,7 +5,7 @@
 #
 
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use strict;
 use DBI;
 use Date::Parse;

+ 1 - 2
docs/addons/print_devices.pl → scripts/utils/print_devices.pl

@@ -3,9 +3,8 @@
 #
 # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
 #
-
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use strict;
 use DBI;
 use Time::Local;

+ 54 - 0
scripts/utils/reaply_rules.pl

@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+
+#
+# Copyright (C) Roman Dmitiriev, rnd@rajven.ru
+#
+# The script moves user records to the requested group if it matches the rules of membership of this group
+#
+
+use utf8;
+use English;
+use base;
+use FindBin '$Bin';
+use lib "/opt/Eye/scripts";
+use strict;
+use DBI;
+use Time::Local;
+use Net::Patricia;
+use NetAddr::IP;
+use Data::Dumper;
+use eyelib::config;
+use eyelib::main;
+use eyelib::mysql;
+use eyelib::net_utils;
+use File::Basename;
+use File::Path;
+
+setpriority(0,0,19);
+
+my $group_id = $ARGV[0];
+
+exit if (!$group_id);
+
+my $group = get_record_sql($dbh,"SELECT * FROM OU WHERE id=$group_id");
+
+print "Analyzed rules for group id: $group_id name: $group->{ou_name}\n";
+
+#get userid list
+my $sSQL="SELECT * FROM User_auth WHERE ip IS NOT NULL and mac IS NOT NULL and deleted=0";
+
+my @users = get_records_sql($dbh,$sSQL);
+foreach my $row (@users) {
+next if (!$row);
+my $new_user=get_new_user_id($dbh,$row->{'ip'},$row->{'mac'});
+if ($new_user->{ou_id} ne $group_id) { next; }
+if ($new_user->{ou_id} ne $row->{ou_id}) {
+    print "MOVED: $row->{ip} $row->{mac} $row->{comments} to $new_user->{ou_id}\n";
+    my $auth->{ou_id}=$new_user->{ou_id};
+    update_record($dbh,"User_auth",$auth,"id=".$row->{id});
+    my $user->{ou_id}=$new_user->{ou_id};
+    update_record($dbh,"User_list",$user,"id=".$row->{user_id});
+    }
+}
+
+exit

+ 1 - 1
docs/addons/set_dns_record.pl → scripts/utils/set_dns_record.pl

@@ -8,7 +8,7 @@ use utf8;
 use English;
 use base;
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use strict;
 use DBI;
 use Time::Local;

+ 35 - 8
scripts/set_port_descr.pl → scripts/utils/set_port_descr.pl

@@ -8,7 +8,7 @@ use utf8;
 use English;
 use base;
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use strict;
 use Time::Local;
 use FileHandle;
@@ -21,13 +21,11 @@ use eyelib::snmp;
 use eyelib::cmd;
 use Net::SNMP qw(:snmp);
 use Fcntl qw(:flock);
-no if $] >= 5.018, warnings =>  "experimental::smartmatch";
-
 
 open(SELF,"<",$0) or die "Cannot open $0 - $!";
 flock(SELF, LOCK_EX|LOCK_NB) or exit 1;
 
-my @auth_list = get_records_sql($dbh,"SELECT A.id,A.ip,A.mac,A.dns_name,A.comments,A.dhcp_hostname,A.WikiName,K.login,K.ou_id FROM User_auth as A, User_list as K WHERE K.id=A.user_id AND A.deleted=0 ORDER BY A.id");
+my @auth_list = get_records_sql($dbh,"SELECT A.id,A.user_id,A.ip,A.mac,A.dns_name,A.comments,A.dhcp_hostname,A.WikiName,K.login,K.ou_id FROM User_auth as A, User_list as K WHERE K.id=A.user_id AND A.deleted=0 ORDER BY A.id");
 
 my %auth_ref;
 foreach my $auth (@auth_list) {
@@ -40,6 +38,8 @@ $auth_ref{$auth->{id}}{comments}=$auth->{comments};
 $auth_ref{$auth->{id}}{dhcp_hostname}=$auth->{dhcp_hostname};
 $auth_ref{$auth->{id}}{WikiName}=$auth->{WikiName};
 $auth_ref{$auth->{id}}{login}=$auth->{login};
+my $a_netdev = get_record_sql($dbh,"SELECT * FROM devices WHERE user_id = ".$auth->{user_id});
+$auth_ref{$auth->{id}}{device}=$a_netdev;
 if ($auth->{dns_name}) { $auth_ref{$auth->{id}}{description} = $auth->{dns_name}; }
 if (!$auth_ref{$auth->{id}}{description} and $auth->{WikiName}) { $auth_ref{$auth->{id}}{description} = $auth->{WikiName}; }
 if (!$auth_ref{$auth->{id}}{description} and $auth->{comments}) { $auth_ref{$auth->{id}}{description} = translit($auth->{comments}); }
@@ -94,8 +94,12 @@ foreach my $conn_id (keys %conn_info) {
 if (exists $port_info{$conn_info{$conn_id}{port_id}}{count}) {
     $port_info{$conn_info{$conn_id}{port_id}}{count}++;
     #OU: Switches, Routers, WiFi AP
-    if ($conn_info{$conn_id}{ou_id}~~[7,10,12] and $conn_info{$conn_id}{description}) {
-        $port_info{$conn_info{$conn_id}{port_id}}{description} = $conn_info{$conn_id}{description};
+    if ($conn_info{$conn_id}{device} and $conn_info{$conn_id}{description}) {
+        if ($conn_info{$conn_id}{device}{device_name}) {
+            $port_info{$conn_info{$conn_id}{port_id}}{description} = $conn_info{$conn_id}{device}{device_name};
+            } else {
+            $port_info{$conn_info{$conn_id}{port_id}}{description} = $conn_info{$conn_id}{description};
+            }
         }
     next;
     } else { $port_info{$conn_info{$conn_id}{port_id}}{count}=1; }
@@ -129,28 +133,51 @@ my $device = $devices{$device_name};
 #skip unknown vendor
 next if (!$switch_auth{$device->{vendor_id}});
 
+
 my $ip = $device->{ip};
 my $community = $device->{community};
 my $snmp_version = $device->{snmp_version};
 
-print "Device: $device_name IP: $ip community: $community version: $snmp_version\n";
+my $netdev = get_record_sql($dbh,"SELECT * FROM devices WHERE ip='".$ip."'");
+
+next if (!$netdev);
+
+print "Device: $device_name IP: $ip community: $community version: $snmp_version ";
+
+if (!HostIsLive($ip)) { print "... Down! Skip.\n"; next; }
 
+print "... Programming:\n";
+
+eval {
 #get interface names
 my $int = get_interfaces($ip,$community,$snmp_version,0);
 
-$device = netdev_set_auth($device);
+$netdev = netdev_set_auth($netdev);
+
+$device->{login}= $netdev->{login};
+$device->{password}= $netdev->{password};
+$device->{enable_password}='';
+$device->{proto} = $netdev->{proto};
+$device->{port} = $netdev->{port};
+
 my $session = netdev_login($device);
 
 if ($session) {
     netdev_set_hostname($session,$device);
     foreach my $port (sort  { $a <=> $b } keys %{$device->{ports}}) {
         my $descr = $device->{ports}{$port}{description};
+        next if ($descr =~ /^-port-$/);
         my $index = $device->{ports}{$port}{snmp_index};
         print "Port: $port index: $index Descr: $descr\n";
         netdev_set_port_descr($session,$device,$int->{$index}->{name},$port,$descr);
         }
     netdev_wr_mem($session,$device);
     }
+};
+if ($@) { print "Error! Apply failed!\n"; next; }
+
+print "Programming finished.\n";
+
 }
 
 exit;

+ 1 - 2
docs/win32/print-dhcpd-netsh.pl → scripts/utils/win32/print-dhcpd-netsh.pl

@@ -3,9 +3,8 @@
 #
 # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
 #
-
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use strict;
 use DBI;
 use Time::Local;

+ 1 - 1
docs/win32/sync-dhcpd-netsh.pl → scripts/utils/win32/sync-dhcpd-netsh.pl

@@ -5,7 +5,7 @@
 #
 
 use FindBin '$Bin';
-use lib "$Bin/";
+use lib "/opt/Eye/scripts";
 use strict;
 use DBI;
 use Time::Local;

+ 0 - 27
updates/db-patch-mysql-utf8.sh

@@ -1,27 +0,0 @@
-#!/bin/bash
-
-db_name=$1
-
-echo -n "Enter password:"
-read db_pass
-
-C_TABLES=$(mysql -u root -p ${db_name} --password=${db_pass} -B -N -e "SHOW TABLES")
-
-echo "Stage 1. CHange charset for tables"
-echo "${C_TABLES}" | awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; SET foreign_key_checks = 1; "}' >migration_utf8
-echo "ALTER DATABASE ${db_name} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;">>migration_utf8
-mysql -u root -p ${db_name} --password=${db_pass} < migration_utf8
-echo "Stage 1 - Done"
->migration_utf8
-echo "Stage 2. Revert filed type to TEXT"
-echo "${C_TABLES}" | while read table; do
-mysql -u root -p ${db_name} --password=${db_pass} -e "show create table ${table}" | sed 's/\\n/\n/g' | egrep -i "[[:space:]]MEDIUMTEXT[[:space:]]" | awk '{ print $1 }' | while read c_field; do
-    echo "ALTER TABLE $table MODIFY $c_field TEXT;" >>migration_utf8
-    done
-done
-mysql -u root -p ${db_name} --password=${db_pass} < migration_utf8
-echo "Stage2 - Done"
-
-rm -f migration_utf8
-
-exit