Commit f8fd2bef authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 45207: Automated sanity check that can send an e-mail if there are problems…

Bug 45207: Automated sanity check that can send an e-mail if there are problems - Patch by Fré©ric Buclin <LpSolit@gmail.com> r=mkanat a=LpSolit
parent 832b5216
......@@ -110,6 +110,7 @@ sub FILESYSTEM {
'whine.pl' => { perms => $ws_executable },
'customfield.pl' => { perms => $owner_executable },
'email_in.pl' => { perms => $ws_executable },
'sanitycheck.pl' => { perms => $ws_executable },
'docs/makedocs.pl' => { perms => $owner_executable },
'docs/rel_notes.txt' => { perms => $ws_readable },
......
......@@ -45,8 +45,19 @@ sub get_string {
sub Status {
my ($san_tag, $vars, $alert) = @_;
my $start_tag = $alert ? '<p class="alert">' : '<p>';
print $start_tag . get_string($san_tag, $vars) . "</p>\n";
my $cgi = Bugzilla->cgi;
return if (!$alert && Bugzilla->usage_mode == USAGE_MODE_CMDLINE && !$cgi->param('verbose'));
if (Bugzilla->usage_mode == USAGE_MODE_CMDLINE) {
my $output = $cgi->param('output') || '';
my $linebreak = $alert ? "\nALERT: " : "\n";
$cgi->param('error_found', 1) if $alert;
$cgi->param('output', $output . $linebreak . get_string($san_tag, $vars));
}
else {
my $start_tag = $alert ? '<p class="alert">' : '<p>';
print $start_tag . get_string($san_tag, $vars) . "</p>\n";
}
}
###########################################################################
......@@ -60,7 +71,7 @@ my $dbh = Bugzilla->dbh;
my $template = Bugzilla->template;
my $vars = {};
print $cgi->header();
print $cgi->header() unless Bugzilla->usage_mode == USAGE_MODE_CMDLINE;
# Make sure the user is authorized to access sanitycheck.cgi.
# As this script can now alter the group_control_map table, we no longer
......@@ -71,8 +82,10 @@ $user->in_group("editcomponents")
action => "run",
object => "sanity_check"});
$template->process('admin/sanitycheck/list.html.tmpl', $vars)
|| ThrowTemplateError($template->error());
unless (Bugzilla->usage_mode == USAGE_MODE_CMDLINE) {
$template->process('admin/sanitycheck/list.html.tmpl', $vars)
|| ThrowTemplateError($template->error());
}
###########################################################################
# Users with 'editkeywords' privs only can only check keywords.
......@@ -234,8 +247,10 @@ if ($cgi->param('rescanallBugMail')) {
Status('send_bugmail_end') if scalar(@$list);
$template->process('global/footer.html.tmpl', $vars)
|| ThrowTemplateError($template->error());
unless (Bugzilla->usage_mode == USAGE_MODE_CMDLINE) {
$template->process('global/footer.html.tmpl', $vars)
|| ThrowTemplateError($template->error());
}
exit;
}
......@@ -937,5 +952,7 @@ if (scalar(@$badbugs > 0)) {
Status('checks_completed');
$template->process('global/footer.html.tmpl', $vars)
|| ThrowTemplateError($template->error());
unless (Bugzilla->usage_mode == USAGE_MODE_CMDLINE) {
$template->process('global/footer.html.tmpl', $vars)
|| ThrowTemplateError($template->error());
}
#!/usr/bin/perl -w
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Frédéric Buclin.
# Portions created by Frédéric Buclin are Copyright (C) 2007
# Frédéric Buclin. All Rights Reserved.
#
# Contributor(s): Frédéric Buclin <LpSolit@gmail.com>
use strict;
use lib qw(.);
use Bugzilla;
use Bugzilla::Constants;
use Bugzilla::Error;
use Bugzilla::User;
use Bugzilla::Mailer;
use Getopt::Long;
my $verbose = 0; # Return all comments if true, else errors only.
my $login = ''; # Login name of the user which is used to call sanitycheck.cgi.
my $result = GetOptions('verbose' => \$verbose, 'login=s' => \$login);
Bugzilla->usage_mode(USAGE_MODE_CMDLINE);
# Be sure a login name if given.
$login || ThrowUserError('invalid_username');
my $user = new Bugzilla::User({ name => $login })
|| ThrowUserError('invalid_username', { name => $login });
my $cgi = Bugzilla->cgi;
my $template = Bugzilla->template;
# Authenticate using this user account.
Bugzilla->set_user($user);
# Pass this param to sanitycheck.cgi.
$cgi->param('verbose', $verbose);
require 'sanitycheck.cgi';
# Now it's time to send an email to the user if there is something to notify.
if ($cgi->param('output')) {
my $message;
my $vars = {};
$vars->{'addressee'} = $user->email;
$vars->{'output'} = $cgi->param('output');
$vars->{'error_found'} = $cgi->param('error_found') ? 1 : 0;
$template->process('email/sanitycheck.txt.tmpl', $vars, \$message)
|| ThrowTemplateError($template->error());
MessageToMTA($message);
}
[%# 1.0@bugzilla.org %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Frédéric Buclin <LpSolit@gmail.com>
#%]
[% PROCESS "global/variables.none.tmpl" %]
From: [% Param('mailfrom') %]
To: [% addressee %]
Subject: [[% terms.Bugzilla %]] Sanity Check Results
X-Bugzilla-Type: sanitycheck
[%+ Param('urlbase') %]sanitycheck.cgi
Below can you read the sanity check results.
[% IF error_found %]
Some errors have been found.
[% ELSE %]
No errors have been found.
[% END %]
[% output FILTER txt %]
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