From 0e2a60dc182c15159110e996b370fe1640af0fa4 Mon Sep 17 00:00:00 2001
From: "lpsolit%gmail.com" <>
Date: Wed, 18 Apr 2007 05:13:22 +0000
Subject: Bug 350112: Error about "data/bugzilla-update.xml" being unreadable -
Patch by Frédéric Buclin r=kevin.benton r=mkanat
a=LpSolit
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Bugzilla/Config/Core.pm | 6 +++++
Bugzilla/Update.pm | 30 +++++++++++++++++++++----
template/en/default/admin/params/core.html.tmpl | 5 +++++
template/en/default/index.html.tmpl | 8 ++++++-
4 files changed, 44 insertions(+), 5 deletions(-)
diff --git a/Bugzilla/Config/Core.pm b/Bugzilla/Config/Core.pm
index 33eb46ac5..a0aca9c9b 100644
--- a/Bugzilla/Config/Core.pm
+++ b/Bugzilla/Config/Core.pm
@@ -113,6 +113,12 @@ sub get_param_list {
default => ''
},
+ {
+ name => 'proxy_url',
+ type => 't',
+ default => ''
+ },
+
{
name => 'upgrade_notification',
type => 's',
diff --git a/Bugzilla/Update.pm b/Bugzilla/Update.pm
index e5d4f86f9..596290ab9 100644
--- a/Bugzilla/Update.pm
+++ b/Bugzilla/Update.pm
@@ -46,7 +46,9 @@ sub get_notifications {
$can_alter = utime(undef, undef, $local_file);
}
if ($can_alter) {
- _synchronize_data();
+ my $error = _synchronize_data();
+ # If an error is returned, leave now.
+ return $error if $error;
}
else {
return {'error' => 'no_update', 'xml_file' => $local_file};
@@ -130,14 +132,22 @@ sub get_notifications {
sub _synchronize_data {
eval("require LWP::UserAgent");
- return if $@;
+ return {'error' => 'missing_package', 'package' => 'LWP::UserAgent'} if $@;
my $local_file = bz_locations()->{'datadir'} . LOCAL_FILE;
my $ua = LWP::UserAgent->new();
$ua->timeout(TIMEOUT);
$ua->protocols_allowed(['http', 'https']);
- $ua->env_proxy;
+ # If the URL of the proxy is given, use it, else get this information
+ # from the environment variable.
+ my $proxy_url = Bugzilla->params->{'proxy_url'};
+ if ($proxy_url) {
+ $ua->proxy(['http', 'https'], $proxy_url);
+ }
+ else {
+ $ua->env_proxy;
+ }
$ua->mirror(REMOTE_FILE, $local_file);
# $ua->mirror() forces the modification time of the local XML file
@@ -145,7 +155,19 @@ sub _synchronize_data {
# So we have to update it manually to reflect that a newer version
# of the file has effectively been requested. This will avoid
# any new download for the next TIME_INTERVAL.
- utime(undef, undef, $local_file);
+ if (-e $local_file) {
+ # Try to alter its last modification time.
+ my $can_alter = utime(undef, undef, $local_file);
+ # This error should never happen.
+ $can_alter || return {'error' => 'no_update', 'xml_file' => $local_file};
+ }
+ else {
+ # We have been unable to download the file.
+ return {'error' => 'cannot_download', 'xml_file' => $local_file};
+ }
+
+ # Everything went well.
+ return 0;
}
sub _compare_versions {
diff --git a/template/en/default/admin/params/core.html.tmpl b/template/en/default/admin/params/core.html.tmpl
index 2ab6856a8..9ad312cfb 100644
--- a/template/en/default/admin/params/core.html.tmpl
+++ b/template/en/default/admin/params/core.html.tmpl
@@ -89,6 +89,11 @@
"centered text, use style=\"text-align: " _
"center;\".",
+ proxy_url => "$terms.Bugzilla may have to access the web to get notifications about new " _
+ "releases, see the upgrade_notification parameter. In case you are " _
+ "behind a proxy, it may be necessary to enter its URL if the web server " _
+ "group cannot access the HTTP_PROXY environment variable.",
+
upgrade_notification => "$terms.Bugzilla can inform you when a new release is available. " _
"The notification will appear on the $terms.Bugzilla homepage, " _
"for administrators only.
" _
diff --git a/template/en/default/index.html.tmpl b/template/en/default/index.html.tmpl
index a96f2b15e..d7c74e188 100644
--- a/template/en/default/index.html.tmpl
+++ b/template/en/default/index.html.tmpl
@@ -75,12 +75,18 @@ function addSidebar() {
This message is only shown to logged in users with admin privs.
You can configure this notification from the
Parameters page.
+ [% ELSIF release.error == "missing_package" %]
+ Missing package '[% release.package FILTER html %]'. This package is required to
+ notify you about new releases.
+ [% ELSIF release.error == "cannot_download" %]
+ The local XML file '[% release.xml_file FILTER html %]' cannot be created.
+ Please make sure the web server can write in this directory.
[% ELSIF release.error == "no_update" %]
The local XML file '[% release.xml_file FILTER html %]' cannot be updated.
Please make sure the web server can edit this file.
[% ELSIF release.error == "no_access" %]
The local XML file '[% release.xml_file FILTER html %]' cannot be read.
- Please make sure this file exists and has the correct rights set on it.
+ Please make sure this file has the correct rights set on it.
[% ELSIF release.error == "corrupted" %]
The local XML file '[% release.xml_file FILTER html %]' has an invalid XML format.
Please delete it and try accessing this page again.
--
cgit v1.2.3-24-g4f1b