upgrade-to-2.4.pl 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #!/usr/bin/perl
  2. #
  3. # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
  4. #
  5. use utf8;
  6. use FindBin '$Bin';
  7. use lib "$Bin/";
  8. use Data::Dumper;
  9. use Rstat::config;
  10. use Rstat::main;
  11. use Rstat::mysql;
  12. use Rstat::net_utils;
  13. use strict;
  14. use warnings;
  15. #$default_user_id; id=20
  16. my $default_user_id=get_option($dbh,20) || 1;
  17. my $hotspot_user_id=get_option($dbh,43) || 1;
  18. print "Stage 1: Migrate users\n";
  19. #find user with few ip
  20. my @user_list = get_records_sql($dbh,"SELECT L.id, COUNT(A.id) as a_count FROM User_list AS L, User_auth AS A WHERE L.id = A.user_id and A.deleted=0 GROUP BY A.user_id");
  21. #create user for
  22. foreach my $row (@user_list) {
  23. next if ($row->{a_count} <=1);
  24. my @auth_list = get_records_sql($dbh,"SELECT * FROM User_auth WHERE user_id=$row->{id} and deleted=0 GROUP BY mac");
  25. next if (scalar(@auth_list)<=1);
  26. for (my $i=1; $i < scalar(@auth_list); $i++) {
  27. my $new_user;
  28. $new_user->{ou_id}=$auth_list[$i]->{ou_id};
  29. if ($default_user_ou_id = $default_hotspot_ou_id) {
  30. if ($auth_list[$i]->{user_id} == $default_user_id or $auth_list[$i]->{user_id} == $hotspot_user_id) { $new_user->{ou_id}=$default_user_ou_id; }
  31. } else {
  32. if ($default_user_id == $hotspot_user_id) {
  33. if ($auth_list[$i]->{user_id} == $default_user_id) { $new_user->{ou_id}=$default_user_ou_id; }
  34. } else {
  35. if ($auth_list[$i]->{user_id} == $default_user_id) { $new_user->{ou_id}=$default_user_ou_id; }
  36. if ($auth_list[$i]->{user_id} == $hotspot_user_id) { $new_user->{ou_id}=$default_hotspot_ou_id; }
  37. }
  38. }
  39. if ($auth_list[$i]->{mac}) {
  40. $new_user->{login}=mac_splitted($auth_list[$i]->{mac});
  41. } else {
  42. $new_user->{login}=$auth_list[$i]->{ip};
  43. }
  44. my $login_count = get_count_records($dbh,"User_list","(login LIKE '".$new_user->{login}."(%)') OR (login='".$new_user->{login}."')");
  45. if ($login_count) { $login_count++; $new_user->{login} .="(".$login_count.")"; }
  46. $new_user->{enabled}=$auth_list[$i]->{enabled};
  47. $new_user->{filter_group_id}=$auth_list[$i]->{filter_group_id};
  48. $new_user->{queue_id}=$auth_list[$i]->{queue_id};
  49. $new_user->{day_quota}=$auth_list[$i]->{day_quota};
  50. $new_user->{month_quota}=$auth_list[$i]->{month_quota};
  51. if (!$auth_list[$i]->{comments}) {
  52. $auth_list[$i]->{comments}=$auth_list[$i]->{ip};
  53. my $user_info = get_record_sql($dbh,"SELECT * FROM User_list WHERE id=".$auth_list[$i]->{user_id});
  54. if ($user_info and $user_info->{fio}) { $auth_list[$i]->{comments} = $user_info->{fio}; }
  55. }
  56. if (!$auth_list[$i]->{dns_name}) {
  57. $auth_list[$i]->{dns_name}='';
  58. } else {
  59. my $name_count = get_count_records($dbh,'User_list',"login='".$auth_list[$i]->{dns_name}."'");
  60. if ($name_count == 0) { $new_user->{login}=$auth_list[$i]->{dns_name}; }
  61. }
  62. $new_user->{fio}=$auth_list[$i]->{dns_name}." ".$auth_list[$i]->{comments};
  63. my $new_id = insert_record($dbh,"User_list",$new_user);
  64. if ($new_id) {
  65. do_sql($dbh,"UPDATE User_auth SET user_id=$new_id WHERE mac='".$auth_list[$i]->{mac}."' and deleted=0");
  66. print "Created user for mac $auth_list[$i]->{mac} : $new_user->{login} and move all auth records for this mac to new user id: $new_id\n";
  67. } else {
  68. print "Error create user for ".Dumper($auth_list[$i])."\n";
  69. }
  70. }
  71. }
  72. print "Done!\n";
  73. print "Stage 2: Migrate devices\n";
  74. my @auth_devices = get_records_sql($dbh,"SELECT * FROM User_auth WHERE device_model_id>0 and deleted=0");
  75. foreach my $row (@auth_devices) {
  76. my $device = get_record_sql($dbh,"SELECT * FROM devices WHERE user_id=".$row->{user_id});
  77. next if ($device);
  78. my $device_model = get_record_sql($dbh,"SELECT * FROM device_models WHERE id=".$row->{device_model_id});
  79. next if ($device_model->{vendor_id} == 1);
  80. my $user_info = get_record_sql($dbh,"SELECT * FROM User_list WHERE id=".$row->{user_id});
  81. next if (!$user_info);
  82. my $new_dev;
  83. $new_dev->{device_name} = $user_info->{login};
  84. $new_dev->{device_type} = 5;
  85. $new_dev->{user_id} = $row->{user_id};
  86. $new_dev->{ip} = $row->{ip};
  87. $new_dev->{device_model_id} = $row->{device_model_id};
  88. $new_dev->{vendor_id}=$device_model->{vendor_id};
  89. if ($row->{comments}) { $new_dev->{comment} = $row->{comments}; }
  90. my $new_dev_id = insert_record($dbh,"devices",$new_dev);
  91. if ($new_dev_id) {
  92. print "Create device: $new_dev->{device_name} $new_dev->{ip} id: $new_dev_id\n";
  93. } else {
  94. print "Error create device: $new_dev->{device_name} $new_dev->{ip}!!!\n";
  95. }
  96. }
  97. do_sql($dbh,"UPDATE User_list SET ou_id=".$default_user_ou_id." WHERE id=".$default_user_id);
  98. do_sql($dbh,"UPDATE User_auth SET ou_id=".$default_user_ou_id." WHERE user_id=".$default_user_id);
  99. if ($default_user_id != $hotspot_user_id) {
  100. do_sql($dbh,"UPDATE User_list SET ou_id=".$default_hotspot_ou_id." WHERE id=".$hotspot_user_id);
  101. do_sql($dbh,"UPDATE User_auth SET ou_id=".$default_hotspot_ou_id." WHERE user_id=".$hotspot_user_id);
  102. }
  103. do_sql($dbh,"DELETE FROM `config_options` WHERE `config_options`.`id` = 20");
  104. do_sql($dbh,"DELETE FROM `config_options` WHERE `config_options`.`id` = 43");
  105. do_sql($dbh,"DELETE FROM `config` WHERE `config`.`option_id` = 20");
  106. do_sql($dbh,"DELETE FROM `config` WHERE `config`.`option_id` = 43");
  107. do_sql($dbh,"DELETE FROM devices WHERE deleted=1");
  108. print "Done!\n";
  109. exit;