123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package rA_Common;
- use strict;
- use warnings;
- use Exporter;
- our @ISA= qw( Exporter );
- # these CAN be exported.
- our @EXPORT_OK = qw( GetValidateConf GetUserConf ExeQuery GetUserConf
- GetValidAnwser GetValidateConf RootCo ShowConfig CheckUsedPort CheckAndLoadSQL);
- # these are exported by default.
- our @EXPORT = @EXPORT_OK; # qw( GetValidateConf GetUserConf ExeQuery GetUserConf GetValidAnwser GetValidateConf RootCo ShowConfig CheckUsedPort CheckAndLoadSQL);
- sub GetValidateConf { my($rhConfig) = @_;
- my $rhUserConf;
- while (1) {
- $rhUserConf = GetUserConf($rhConfig);
- print "\n Please Check desired conf \n";
- ShowConfig($rhUserConf);
- print "Would you like to apply these settings? [y/n] ";
- last if(GetValidAnwser("y|o|n") =~ /y|o/i);
- print "\n Restarting configuration sequence...\n";
- }
- return $rhUserConf;
- }
- #remplis tous un hash
- sub GetUserConf { my ($rhDefConf) = @_;
- my %hConf;
- my @sortedkeys = sort keys (%$rhDefConf);
- foreach my $sKey (@sortedkeys){
- my $sVal = $$rhDefConf{$sKey};
- print "$sKey : [$sVal] ";
- my $sAnwser = <>; chop($sAnwser);
- $hConf{"$sKey"} = $sAnwser || $sVal;
- }
- return \%hConf;
- }
- sub ShowConfig { my ($rhUserConf) = @_;
- my @sortedkeys = sort keys (%$rhUserConf);
- foreach my $sKey (@sortedkeys){
- my $sVal = $$rhUserConf{$sKey};
- if(ref($sVal) eq 'ARRAY') { print " $sKey => [@$sVal] \n";}
- else { print " $sKey => [$sVal] \n"; }
- }
- }
- sub GetValidAnwser { my($sOptReg,$sAutoyes) = @_;
- my $sAnwser = "";
- if($sAutoyes) { $sAnwser="y"; print "\n"; }
- else {
- while(!($sAnwser =~ /$sOptReg/i)) {
- $sAnwser = <>; chop($sAnwser);
- print "Please enter a valid option: $sOptReg " unless($sAnwser =~ /$sOptReg/i);
- }
- }
- return $sAnwser;
- }
- sub CheckUsedPort { my($sPort) = @_;
- open PIPE,"netstat -nat |" or die $!;
- my @line = grep { /$sPort/ } <PIPE>;
- return scalar(@line);
- }
- sub RootCo { my($rhConfig) = @_;
- print "\n== Entering RootCo ==\n";
- my $sDbH = 0;
- my $sDsn = $$rhConfig{"Dsn"}; #mysql server dest
- my $sUser = $$rhConfig{SQL_UID}; #verify desired user
- print "My dsn = $sDsn \n";
- if($sUser eq "root"){
- my $sPw = $$rhConfig{SQL_PW};
- $sDbH = DBI->connect($sDsn, "root", $sPw);
- unless($sDbH) { warn "Your root password doesn't seem valid for mysql. Please check your desired-conf.\n"; }
- }
- while($sDbH == 0) { #if can't use user to connect user root
- print "Please enter database root password. (NOTE: This is needed to create the users and databases, and will not be saved in any configuration file.)\n";
- my $sRPw = <>; chop($sRPw);
- $sDbH = DBI->connect($sDsn, "root", $sRPw);
- }
- return $sDbH;
- }
- sub CheckAndLoadSQL { my ($raFiles,$rhConfig,$sDBn) = @_;
- my $sHost = $$rhConfig{SQL_HOST};
- my $sPw = $$rhConfig{SQL_PW};
- my $sUser = $$rhConfig{SQL_UID};
- foreach(@$raFiles) {
- unless(-f -r $_){
- print "File '$_' does not exist or could not be read, skipped...\n";
- next;
- }
- my $sFileFullPath = Cwd::abs_path($_);
- system("mysql -u $sUser --password=$sPw -h $sHost $sDBn < $sFileFullPath");
- }
- }
- sub ExeQuery { my $sDbH = shift;
- my @aQuery = @_;
- print "Queries: [ @aQuery ]\n";
- foreach(@aQuery) {
- unless($sDbH->do($_)){ print "Failed to execute query: $_ => $DBI::errstr \n"; }
- }
- }
|