reaply_rules.pl 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 open ":encoding(utf8)";
  9. use English;
  10. use base;
  11. use FindBin '$Bin';
  12. use lib "/opt/Eye/scripts";
  13. use strict;
  14. use DBI;
  15. use Time::Local;
  16. use Net::Patricia;
  17. use NetAddr::IP;
  18. use Data::Dumper;
  19. use eyelib::config;
  20. use eyelib::main;
  21. use eyelib::database;
  22. use eyelib::net_utils;
  23. use File::Basename;
  24. use File::Path;
  25. setpriority(0,0,19);
  26. my $group_id = $ARGV[0];
  27. exit if (!$group_id);
  28. my $group = get_record_sql($dbh,"SELECT * FROM OU WHERE id=$group_id");
  29. print "Analyzed rules for group id: $group_id name: $group->{ou_name}\n";
  30. #get userid list
  31. my $sSQL="SELECT * FROM User_auth WHERE ip IS NOT NULL and mac IS NOT NULL and deleted=0";
  32. my @users = get_records_sql($dbh,$sSQL);
  33. foreach my $row (@users) {
  34. next if (!$row);
  35. my $new_user=get_new_user_id($dbh,$row->{'ip'},$row->{'mac'});
  36. if ($new_user->{ou_id} ne $group_id) { next; }
  37. if ($new_user->{ou_id} ne $row->{ou_id}) {
  38. print "MOVED: $row->{ip} $row->{mac} $row->{comments} to $new_user->{ou_id}\n";
  39. my $auth->{ou_id}=$new_user->{ou_id};
  40. update_record($dbh,"User_auth",$auth,"id=".$row->{id});
  41. my $user->{ou_id}=$new_user->{ou_id};
  42. update_record($dbh,"User_list",$user,"id=".$row->{user_id});
  43. }
  44. }
  45. exit