diff options
author | Frédéric Buclin <LpSolit@gmail.com> | 2010-10-11 18:56:19 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2010-10-11 18:56:19 +0200 |
commit | 4d55f265b801efb52ea49abe3fcdc9c34c4763c2 (patch) | |
tree | 55fd684fc6db416e794a0bd917ab542aed9a1e41 | |
parent | 6b3849980cdc1fbb402b4894336d9050aa624059 (diff) | |
download | bugzilla-4d55f265b801efb52ea49abe3fcdc9c34c4763c2.tar.gz bugzilla-4d55f265b801efb52ea49abe3fcdc9c34c4763c2.tar.xz |
Bug 550097: checksetup.pl should detect when run via a web server (cgi) and fail with a sane error
r/a=mkanat
-rw-r--r-- | Bugzilla/Install/Util.pm | 8 | ||||
-rwxr-xr-x | checksetup.pl | 3 | ||||
-rw-r--r-- | template/en/default/setup/strings.txt.pl | 25 |
3 files changed, 35 insertions, 1 deletions
diff --git a/Bugzilla/Install/Util.pm b/Bugzilla/Install/Util.pm index 50cbfd2a8..14744ef8c 100644 --- a/Bugzilla/Install/Util.pm +++ b/Bugzilla/Install/Util.pm @@ -298,7 +298,7 @@ sub _wanted_languages { # Checking SERVER_SOFTWARE is the same as i_am_cgi() in Bugzilla::Util. if (exists $ENV{'SERVER_SOFTWARE'}) { - my $cgi = Bugzilla->cgi; + my $cgi = eval { Bugzilla->cgi } || eval { require CGI; return CGI->new() }; $requested = $cgi->http('Accept-Language') || ''; my $lang = $cgi->cookie('LANG'); push(@wanted, $lang) if $lang; @@ -504,6 +504,12 @@ sub vers_cmp { @A <=> @B; } +sub no_checksetup_from_cgi { + print "Content-Type: text/html; charset=UTF-8\r\n\r\n"; + print install_string('no_checksetup_from_cgi'); + exit; +} + ###################### # Helper Subroutines # ###################### diff --git a/checksetup.pl b/checksetup.pl index b6b4fc19c..6d9230dd9 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -60,6 +60,9 @@ use Bugzilla::Install::Util qw(install_string get_version_and_os # Live Code ###################################################################### +# Do not run checksetup.pl from the web browser. +Bugzilla::Install::Util::no_checksetup_from_cgi() if $ENV{'SERVER_SOFTWARE'}; + # When we're running at the command line, we need to pick the right # language before ever displaying any string. init_console(); diff --git a/template/en/default/setup/strings.txt.pl b/template/en/default/setup/strings.txt.pl index f03869205..ca1bf6145 100644 --- a/template/en/default/setup/strings.txt.pl +++ b/template/en/default/setup/strings.txt.pl @@ -337,6 +337,31 @@ WARNING: We are about to convert your table storage format to UTF-8. This If you ever used a version of Bugzilla before 2.22, we STRONGLY recommend that you stop checksetup.pl NOW and run contrib/recode.pl. END + no_checksetup_from_cgi => <<END, +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" + "http://www.w3.org/TR/html4/strict.dtd"> +<html> + <head> + <title>checksetup.pl cannot run from a web browser</title> + </head> + + <body> + <h1>checksetup.pl cannot run from a web browser</h1> + <p> + You <b>must not</b> execute this script from your web browser. + To install or upgrade Bugzilla, run this script from + the command-line (e.g. <tt>bash</tt> or <tt>ssh</tt> on Linux + or <tt>cmd.exe</tt> on Windows), and follow instructions given there. + </p> + + <p> + For more information on how to install Bugzilla, please + <a href="http://www.bugzilla.org/docs/">read the documentation</a> + available on the official Bugzilla website. + </p> + </body> +</html> +END patchutils_missing => <<'END', OPTIONAL NOTE: If you want to be able to use the 'difference between two patches' feature of Bugzilla (which requires the PatchReader Perl module |