reaply_rules.pl 1.3 KB

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