summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrédéric Buclin <LpSolit@gmail.com>2010-10-11 18:56:19 +0200
committerFrédéric Buclin <LpSolit@gmail.com>2010-10-11 18:56:19 +0200
commit4d55f265b801efb52ea49abe3fcdc9c34c4763c2 (patch)
tree55fd684fc6db416e794a0bd917ab542aed9a1e41
parent6b3849980cdc1fbb402b4894336d9050aa624059 (diff)
downloadbugzilla-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.pm8
-rwxr-xr-xchecksetup.pl3
-rw-r--r--template/en/default/setup/strings.txt.pl25
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