Commit 0e2a60dc authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 350112: Error about "data/bugzilla-update.xml" being unreadable - Patch by…

Bug 350112: Error about "data/bugzilla-update.xml" being unreadable - Patch by Fré©ric Buclin <LpSolit@gmail.com> r=kevin.benton r=mkanat a=LpSolit
parent 0cd4b869
......@@ -114,6 +114,12 @@ sub get_param_list {
},
{
name => 'proxy_url',
type => 't',
default => ''
},
{
name => 'upgrade_notification',
type => 's',
choices => ['development_snapshot', 'latest_stable_release',
......
......@@ -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 {
......
......@@ -89,6 +89,11 @@
"centered text, use <em>style=\"text-align: " _
"center;\"</em>.",
proxy_url => "$terms.Bugzilla may have to access the web to get notifications about new " _
"releases, see the <tt>upgrade_notification</tt> 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 => "<p>$terms.Bugzilla can inform you when a new release is available. " _
"The notification will appear on the $terms.Bugzilla homepage, " _
"for administrators only.</p>" _
......
......@@ -75,12 +75,18 @@ function addSidebar() {
<p class="notice">This message is only shown to logged in users with admin privs.
You can configure this notification from the
<a href="editparams.cgi?section=core#upgrade_notification">Parameters</a> page.</p>
[% ELSIF release.error == "missing_package" %]
<p>Missing package '[% release.package FILTER html %]'. This package is required to
<a href="editparams.cgi?section=core#upgrade_notification">notify you about new releases</a>.</p>
[% ELSIF release.error == "cannot_download" %]
<p>The local XML file '[% release.xml_file FILTER html %]' cannot be created.
Please make sure the web server can write in this directory.</p>
[% ELSIF release.error == "no_update" %]
<p>The local XML file '[% release.xml_file FILTER html %]' cannot be updated.
Please make sure the web server can edit this file.</p>
[% ELSIF release.error == "no_access" %]
<p>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.</p>
Please make sure this file has the correct rights set on it.</p>
[% ELSIF release.error == "corrupted" %]
<p>The local XML file '[% release.xml_file FILTER html %]' has an invalid XML format.
Please delete it and try accessing this page again.</p>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment