X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2FBackupPC%2FConfig%2FDb%2FMySQL.pm;h=45a3b096afaed072fc1500bf7f8874737b68f98d;hb=2726b96b1a7026dc3f82250afbfe5ae27ab1c75f;hp=dfb21cbc48a9e0d7bcb195811fb06b80ba66570e;hpb=85cebec74a7b4a9b7f7fc0938de17c838a80662f;p=BackupPC.git diff --git a/lib/BackupPC/Config/Db/MySQL.pm b/lib/BackupPC/Config/Db/MySQL.pm index dfb21cb..45a3b09 100644 --- a/lib/BackupPC/Config/Db/MySQL.pm +++ b/lib/BackupPC/Config/Db/MySQL.pm @@ -7,6 +7,8 @@ use strict; use DBI; use DBD::mysql; +our %Db; + %BackupPC::Config::Db::gConfigTypeField = (BOOLEAN => 'valueBit', INT => 'valueInt', @@ -15,48 +17,69 @@ use DBD::mysql; MEMO => 'valueMemo', ); -sub ConnectData { - my($self) = @_; - - my $dsn = 'DBI:mysql:database=backuppc;host=reagan'; - $self->{dbh} = DBI->connect($dsn, 'root', undef, {RaiseError => 1, - AutoCommit => 1,}); +sub ConnectData +{ + my($self) = @_; + return if $self->{dbh}; + + my($mesg, %db, $parm, @missing); + + %db = $self->GetDbConnInfo; + return $self->{errstr} if $self->{errstr}; + + foreach $parm (qw(host database user passwd)) { + push(@missing, $parm) if !exists $db{$parm} + } + + if (@missing) { + $mesg = "Missing Db connection parameters: " + . join(", ", @missing); + return $mesg; + } + + my $dsn = "DBI:mysql:database=$db{database};host=$db{host}"; + + $self->{dbh} = DBI->connect($dsn, $db{user}, $db{passwd}, {RaiseError => 1, + AutoCommit => 1,}); + + return; } -sub ConfigMTime { - my($self) = @_; -return time(); - my $cmd = "SHOW TABLE STATUS LIKE 'Config'"; - my $sth = $self->{dbh}->prepare($cmd); - - $sth->execute; - my $row = $sth->fetchrow_hashref || return time(); - my $mtime; - - if (defined($mtime = $row->{'Update_time'})) { - $mtime =~ m/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/ - || return time(); - return &Date_SecsSince1970($2,$3,$1,$4,$5,$6); - } else { - return time(); - } + +sub ConfigMTime +{ + my($self) = @_; + my $cmd = "SHOW TABLE STATUS LIKE 'Config'"; + my $sth = $self->{dbh}->prepare($cmd); + + $sth->execute; + my $row = $sth->fetchrow_hashref || return time(); + my $mtime; + + if (defined($mtime = $row->{'Update_time'})) { + $mtime =~ m/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/ + || return time(); + return &Date_SecsSince1970($2,$3,$1,$4,$5,$6); + } else { + return time(); + } } -sub HostsMTime { - my($self) = @_; -return time(); - my $cmd = "SHOW TABLE STATUS LIKE 'Client'"; - my $sth = $self->{dbh}->prepare($cmd); - - $sth->execute; - my $row = $sth->fetchrow_hashref || return time(); - my $mtime; - - if (defined($mtime = $row->{'Update_time'})) { - return &Date_SecsSince1970($mtime); - } else { - return time(); - } +sub HostsMTime +{ + my($self) = @_; + my $cmd = "SHOW TABLE STATUS LIKE 'Client'"; + my $sth = $self->{dbh}->prepare($cmd); + + $sth->execute; + my $row = $sth->fetchrow_hashref || return time(); + my $mtime; + + if (defined($mtime = $row->{'Update_time'})) { + return &Date_SecsSince1970($mtime); + } else { + return time(); + } } # Date subs borrowed from Date::Manip. @@ -64,46 +87,48 @@ return time(); # This program is free software; you can redistribute it and/or modify it # under the same terms as Perl itself. -sub Date_SecsSince1970 { - my($mysqlDate) = @_; - $mysqlDate =~ m/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/ - || return time(); - my($y,$m,$d,$h,$mn,$s) = ($1,$2,$3,$4,$5,$6); - my($sec_now,$sec_70,$Ny,$N4,$N100,$N400,$dayofyear,$days)=(); - my($cc,$yy)=(); - - $y=~ /(\d{2})(\d{2})/; - ($cc,$yy)=($1,$2); - - $Ny=$y; - - $N4=($Ny-1)/4 + 1; - $N4=0 if ($y==0); - - $N100=$cc + 1; - $N100-- if ($yy==0); - $N100=0 if ($y==0); - - $N400=($N100-1)/4 + 1; - $N400=0 if ($y==0); - - my(@days) = ( 0, 31, 59, 90,120,151,181,212,243,273,304,334,365); - my($ly)=0; - $ly=1 if ($m>2 && &Date_LeapYear($y)); - - $dayofyear=$days[$m-1]+$d+$ly; - $days= $Ny*365 + $N4 - $N100 + $N400 + $dayofyear; - $sec_now=($days-1)*24*3600 + $h*3600 + $mn*60 + $s; - $sec_70 =62167219200; - return ($sec_now-$sec_70); +sub Date_SecsSince1970 +{ + my($mysqlDate) = @_; + $mysqlDate =~ m/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/ + || return time(); + my($y,$m,$d,$h,$mn,$s) = ($1,$2,$3,$4,$5,$6); + my($sec_now,$sec_70,$Ny,$N4,$N100,$N400,$dayofyear,$days)=(); + my($cc,$yy)=(); + + $y=~ /(\d{2})(\d{2})/; + ($cc,$yy)=($1,$2); + + $Ny=$y; + + $N4=($Ny-1)/4 + 1; + $N4=0 if ($y==0); + + $N100=$cc + 1; + $N100-- if ($yy==0); + $N100=0 if ($y==0); + + $N400=($N100-1)/4 + 1; + $N400=0 if ($y==0); + + my(@days) = ( 0, 31, 59, 90,120,151,181,212,243,273,304,334,365); + my($ly)=0; + $ly=1 if ($m>2 && &Date_LeapYear($y)); + + $dayofyear=$days[$m-1]+$d+$ly; + $days= $Ny*365 + $N4 - $N100 + $N400 + $dayofyear; + $sec_now=($days-1)*24*3600 + $h*3600 + $mn*60 + $s; + $sec_70 =62167219200; + return ($sec_now-$sec_70); } -sub Date_LeapYear { - my($y)=@_; - return 0 if $y % 4; - return 1 if $y % 100; - return 0 if $y % 400; - return 1; +sub Date_LeapYear +{ + my($y)=@_; + return 0 if $y % 4; + return 1 if $y % 100; + return 0 if $y % 400; + return 1; }