reaply_rules.pl 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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::common;
  23. use eyelib::net_utils;
  24. use File::Basename;
  25. use File::Path;
  26. setpriority(0,0,19);
  27. my $group_id = $ARGV[0];
  28. exit if (!$group_id);
  29. my $group = get_record_sql($dbh,"SELECT * FROM OU WHERE id=$group_id");
  30. print "Analyzed rules for group id: $group_id name: $group->{ou_name}\n";
  31. #get userid list
  32. my $sSQL="SELECT * FROM user_auth WHERE ip IS NOT NULL and mac IS NOT NULL and deleted=0";
  33. my @users = get_records_sql($dbh,$sSQL);
  34. foreach my $row (@users) {
  35. next if (!$row);
  36. my $new_user=get_new_user_id($dbh,$row->{'ip'},$row->{'mac'});
  37. if ($new_user->{ou_id} ne $group_id) { next; }
  38. if ($new_user->{ou_id} ne $row->{ou_id}) {
  39. print "MOVED: $row->{ip} $row->{mac} $row->{comments} to $new_user->{ou_id}\n";
  40. my $auth->{ou_id}=$new_user->{ou_id};
  41. update_record($dbh,"user_auth",$auth,"id=".$row->{id});
  42. my $user->{ou_id}=$new_user->{ou_id};
  43. update_record($dbh,"user_list",$user,"id=".$row->{user_id});
  44. }
  45. }
  46. exit