X-Git-Url: https://git.exim.org/buildfarm-server.git/blobdiff_plain/2c1ce6ffa6a46edca3ccb35c453029b43d5e4feb..c77d039fd4f74c6e7823329c758cd4237c5fde46:/cgi-bin/pgstatus.pl diff --git a/cgi-bin/pgstatus.pl b/cgi-bin/pgstatus.pl old mode 100644 new mode 100755 index 1fd437a..aa83566 --- a/cgi-bin/pgstatus.pl +++ b/cgi-bin/pgstatus.pl @@ -5,6 +5,7 @@ use strict; use vars qw($dbhost $dbname $dbuser $dbpass $dbport $all_stat $fail_stat $change_stat $green_stat $server_time + $min_script_version $min_web_script_version ); # force this before we do anything - even load modules @@ -172,6 +173,40 @@ unless ($sconf =~ s/.*(\$Script_Config)/$1/ms ) } my $client_conf = $container->reval("$sconf;"); +if ($min_script_version) +{ + $client_conf->{script_version} ||= '0.0'; + my ($minmajor,$minminor) = split(/\./,$min_script_version); + my ($smajor,$sminor) = split(/\./,$client_conf->{script_version}); + if ($minmajor > $smajor || ($minmajor == $smajor && $minminor > $sminor)) + { + print "Status: 460 script version too low\nContent-Type: text/plain\n\n"; + print + "Script version is below minimum required\n", + "Reported version: $client_conf->{script_version},", + "Minumum version required: $min_script_version\n"; + $db->disconnect; + exit; + } +} + +if ($min_web_script_version) +{ + $client_conf->{web_script_version} ||= '0.0'; + my ($minmajor,$minminor) = split(/\./,$min_script_version); + my ($smajor,$sminor) = split(/\./,$client_conf->{script_version}); + if ($minmajor > $smajor || ($minmajor == $smajor && $minminor > $sminor)) + { + print "Status: 461 web script version too low\nContent-Type: text/plain\n\n"; + print + "Web Script version is below minimum required\n", + "Reported version: $client_conf->{web_script_version},", + "Minumum version required: $min_web_script_version\n"; + $db->disconnect; + exit; + } +} + my @config_flags; if (not exists $client_conf->{config_opts} ) { @@ -179,7 +214,9 @@ if (not exists $client_conf->{config_opts} ) } elsif (ref $client_conf->{config_opts} eq 'HASH') { - @config_flags = keys %{$client_conf->{config_opts}}; + # leave out keys with false values + @config_flags = grep { $client_conf->{config_opts}->{$_} } + keys %{$client_conf->{config_opts}}; } elsif (ref $client_conf->{config_opts} eq 'ARRAY' ) { @@ -214,7 +251,8 @@ $sth->bind_param(7,$branch); $sth->bind_param(8,$changed_this_run); $sth->bind_param(9,$changed_since_success); $sth->bind_param(10,$log_file_names); -$sth->bind_param(11,$log_archive,{ pg_type => DBD::Pg::PG_BYTEA }); +#$sth->bind_param(11,$log_archive,{ pg_type => DBD::Pg::PG_BYTEA }); +$sth->bind_param(11,undef,{ pg_type => DBD::Pg::PG_BYTEA }); $sth->bind_param(12,$config_flags); $sth->execute;