reaply_rules.pl 1.4 KB

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