reaply_rules.pl 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/usr/bin/perl
  2. #
  3. # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
  4. #
  5. # The script moves user records to the requested group if it matches the rules of membership of this group
  6. #
  7. use utf8;
  8. use warnings;
  9. use Encode;
  10. use open qw(:std :encoding(UTF-8));
  11. no warnings 'utf8';
  12. use English;
  13. use base;
  14. use FindBin '$Bin';
  15. use lib "/opt/Eye/scripts";
  16. use strict;
  17. use DBI;
  18. use Time::Local;
  19. use Net::Patricia;
  20. use NetAddr::IP;
  21. use Data::Dumper;
  22. use eyelib::config;
  23. use eyelib::main;
  24. use eyelib::database;
  25. use eyelib::common;
  26. use eyelib::net_utils;
  27. use File::Basename;
  28. use File::Path;
  29. setpriority(0,0,19);
  30. my $group_id = $ARGV[0];
  31. exit if (!$group_id);
  32. my $group = get_record_sql($dbh,"SELECT * FROM ou WHERE id=?",$group_id);
  33. print "Analyzed rules for group id: $group_id name: $group->{ou_name}\n";
  34. #get userid list
  35. my $sSQL="SELECT * FROM user_auth WHERE ip IS NOT NULL and mac IS NOT NULL and deleted=0";
  36. my @users = get_records_sql($dbh,$sSQL);
  37. foreach my $row (@users) {
  38. next if (!$row);
  39. my $new_user=get_new_user_id($dbh,$row->{'ip'},$row->{'mac'});
  40. if ($new_user->{ou_id} ne $group_id) { next; }
  41. if ($new_user->{ou_id} ne $row->{ou_id}) {
  42. print "MOVED: $row->{ip} $row->{mac} $row->{description} to $new_user->{ou_id}\n";
  43. my $auth->{ou_id}=$new_user->{ou_id};
  44. update_record($dbh,"user_auth",$auth,"id=".$row->{id});
  45. my $user->{ou_id}=$new_user->{ou_id};
  46. update_record($dbh,"user_list",$user,"id=".$row->{user_id});
  47. }
  48. }
  49. exit