Guest User

Untitled

a guest
Aug 1st, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.82 KB | None | 0 0
  1.     $plainpass) {
  2.     my $native = &is_domain_mysql_remote($d) ?
  3.             "with mysql_native_password" : "";
  4. #   return ("insert into user (host, user, ssl_type, ssl_cipher, x509_issuer, x509_subject) values ('$host', '$user', '', '', '', '')", "flush privileges", "alter user '$user'\@'$host' identified $native by '".&mysql_escape($plainpass)."'");
  5.   use Digest::SHA1 qw(sha1 sha1_hex);
  6.   return ("INSERT INTO global_priv (Host, User, Priv) VALUES ('$host', '$user', '{\"access\":".time().",\"plugin\":\"mysql_native_password\",\"authentication_string\":\""."*".uc sha1_hex(sha1($plainpass))."\",\"password_last_changed\":".time()."}')");
  7.     }
  8. elsif (&compare_versions($ver, "5.7.6") >= 0) {
  9. #   return ("insert into user (host, user, ssl_type, ssl_cipher, x509_issuer, x509_subject, plugin, authentication_string) values ('$host', '$user', '', '', '', '', 'mysql_native_password', $encpass)");
  10.   use Digest::SHA1 qw(sha1 sha1_hex);
  11.   return ("INSERT INTO global_priv (Host, User, Priv) VALUES ('$host', '$user', '{\"access\":".time().",\"plugin\":\"mysql_native_password\",\"authentication_string\":\""."*".uc sha1_hex(sha1($plainpass))."\",\"password_last_changed\":".time()."}')");
  12.     }
  13. elsif (&compare_versions($ver, 5) >= 0) {
  14.     return ("insert into user (host, user, ssl_type, ssl_cipher, x509_issuer, x509_subject) values ('$host', '$user', '', '', '', '')", "flush privileges", "set password for '$user'\@'$host' = $encpass");
  15.     }
  16. else {
  17.     return ("insert into user (host, user, password) values ('$host', '$user', $encpass)");
  18.     }
  19. }
  20.  
  21. # execute_password_change_sql(&domain, user, password-sql, [force-user-table],
  22. #                 [no-flush], [plaintext-pass])
  23. # Update a MySQL user's password for all hosts
  24. sub execute_password_change_sql
  25. {
  26. my ($d, $user, $encpass, $forceuser, $noflush, $plainpass) = @_;
  27. if (!$encpass && $plainpass) {
  28.     # Hash password for insertion
  29.     my $qpass = &mysql_escape($plainpass);
  30.     $encpass = "$password_func('$qpass')";
  31.     }
  32. my $rv = &execute_dom_sql($d, $mysql::master_db,
  33.         "select host from user where user = ?", $user);
  34. my $flush = 0;
  35. foreach my $host (&unique(map { $_->[0] } @{$rv->{'data'}})) {
  36.     my $sql;
  37.     my ($ver, $variant) = &get_dom_remote_mysql_version($d);
  38.     if (($variant eq "mysql" && &compare_versions($ver, "8") >= 0 ||
  39.          $variant eq "mariadb" && &compare_versions($ver, "10.2") >= 0) &&
  40.         $plainpass) {
  41.         # Use the plaintext password wherever possible
  42. #       $sql = "set password for '$user'\@'$host' = '".
  43. #              &mysql_escape($plainpass)."'";
  44.     my $mpass=uc sha1_hex(sha1($plainpass));
  45.     $sql = "update global_priv set Priv = '{\"access\":".time().",\"plugin\":\"mysql_native_password\",\"authentication_string\":\"*$mpass\",\"password_last_changed\":".time()."}' where user = '$user'";
  46.         }
  47.     elsif (&compare_versions($ver, "5.7.6") >= 0) {
  48.         $sql = "update user set authentication_string = $encpass ".
Add Comment
Please, Sign In to add comment