Advertisement
Guest User

Untitled

a guest
Sep 14th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. sub setup_imscp_database_connection {
  2.  
  3. debug((caller(0))[3].': Starting...');
  4.  
  5. use iMSCP::Crypt;
  6. use iMSCP::Dialog;
  7.  
  8. my $pass = $main::imscpConfig{'DATABASE_PASSWORD'};
  9. my $crypt = iMSCP::Crypt->new();
  10.  
  11. if(!check_sql_connection(
  12. $main::imscpConfig{'DATABASE_TYPE'},
  13. '',
  14. $main::imscpConfig{'DATABASE_HOST'} || '',
  15. $main::imscpConfig{'DATABASE_PORT'} || '',
  16. $main::imscpConfig{'DATABASE_USER'} || '',
  17. $main::imscpConfig{'DATABASE_PASSWORD'} ? $crypt->decrypt_db_password($main::imscpConfig{'DATABASE_PASSWORD'}) : ''
  18. )
  19. ){
  20. }elsif($main::imscpConfigOld{'DATABASE_TYPE'} && !check_sql_connection(
  21. $main::imscpConfigOld{'DATABASE_TYPE'},
  22. '',
  23. $main::imscpConfigOld{'DATABASE_HOST'} || '',
  24. $main::imscpConfigOld{'DATABASE_PORT'} || '',
  25. $main::imscpConfigOld{'DATABASE_USER'} || '',
  26. $main::imscpConfigOld{'DATABASE_PASSWORD'} ? $crypt->decrypt_db_password($main::imscpConfigOld{'DATABASE_PASSWORD'}) : ''
  27. )
  28. ){
  29. $main::imscpConfig{'DATABASE_TYPE'} = $main::imscpConfigOld{'DATABASE_TYPE'};
  30. $main::imscpConfig{'DATABASE_HOST'} = $main::imscpConfigOld{'DATABASE_HOST'};
  31. $main::imscpConfig{'DATABASE_PORT'} = $main::imscpConfigOld{'DATABASE_PORT'};
  32. $main::imscpConfig{'DATABASE_USER'} = $main::imscpConfigOld{'DATABASE_USER'};
  33. $main::imscpConfig{'DATABASE_NAME'} = $main::imscpConfigOld{'DATABASE_NAME'};
  34. $main::imscpConfig{'DATABASE_PASSWORD'} = $main::imscpConfigOld{'DATABASE_PASSWORD'};
  35. } else {
  36. my (
  37. $dbType,
  38. $dbHost,
  39. $dbPort,
  40. $dbUser,
  41. $dbPass
  42. ) = (
  43. 'mysql',
  44. $main::imscpConfig{'DATABASE_HOST'},
  45. $main::imscpConfig{'DATABASE_PORT'},
  46. $main::imscpConfig{'DATABASE_USER'}
  47. );
  48.  
  49. use Data::Validate::Domain qw/is_domain/;
  50. my %options = $main::imscpConfig{'DEBUG'} ? (domain_private_tld => qr /^(?:bogus|test)$/) : ();
  51.  
  52. while (check_sql_connection($dbType, '', $dbHost, $dbPort, $dbUser, $dbPass)){
  53. my $msg = '';
  54. do{
  55. $dbHost = iMSCP::Dialog->new()->inputbox( "Please enter database host name (default localhost) $msg", $dbHost);
  56. $msg = "\n\n$dbHost is not a valid hostname!"
  57. } while (! (Data::Validate::Domain->new(%options)->is_domain($dbHost)) && $dbHost ne 'localhost');
  58.  
  59. $dbPort = iMSCP::Dialog->new()->inputbox('Please enter database port name (default null or 3306)', $dbPort);
  60. $dbUser = iMSCP::Dialog->new()->inputbox('Please enter database user name (default root)', $dbUser);
  61. $dbPass = iMSCP::Dialog->new()->inputbox('Please enter database password', $dbPass);
  62. }
  63.  
  64. use Net::LibIDN qw/idn_to_ascii idn_to_unicode/;
  65.  
  66. if ($main::imscpConfig{'DATABASE_TYPE'} ne $dbType) {$main::imscpConfig{'DATABASE_TYPE'} = $dbType};
  67. if ($main::imscpConfig{'DATABASE_HOST'} ne idn_to_ascii($dbHost, 'utf-8')) {$main::imscpConfig{'DATABASE_HOST'} = idn_to_ascii($dbHost, 'utf-8');}
  68. if ($main::imscpConfig{'DATABASE_PORT'} ne $dbPort) {$main::imscpConfig{'DATABASE_PORT'} = $dbPort;}
  69. if ($main::imscpConfig{'DATABASE_USER'} ne $dbUser) {$main::imscpConfig{'DATABASE_USER'} = $dbUser;}
  70. if ($main::imscpConfig{'DATABASE_PASSWORD'} ne $crypt->encrypt_db_password($dbPass)) {$main::imscpConfig{'DATABASE_PASSWORD'} = $crypt->encrypt_db_password($dbPass);}
  71.  
  72. }
  73. debug((caller(0))[3].': Ending...');
  74. 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement