|
Bug Handlers
Last Updated: $Date: 2015-11-18 17:46:32 -0800 (Wed, 18 Nov 2015) $
Lists of bug handlers
Local links
Potential bug handlers
Introduction
A bug handling system is used to track bugs through their life cycle.
Bug Handler Features
In addition, for the CHESS website, we need to have tight integration
with the existing Php and MySQL infrastructure. Ideally, users
will not need to log on multiple times to use the bug handling system.
The key to a bug database is that we need to _use_ it. Some bugs
are transient, for example, "blah does not compile". These transient
bugs need not go into the bug database. Long term bugs, which are
sometimes requests for enhancements, should go into the bug database.
Last updated in 11/2003
Jira
is a commercial J2EE based bug handling system.
Jira Pricing
indicates that there are three feature sets
- Standard
- Professional
- Enterprise
Each of the three feature sets, which is available for Academic features.
- Deploy a single instance of JIRA in an school or university environment on 1 server
- Unlimited projects, users and issues
- Perpetual JIRA use
- Free maintenance for 12 months - including free upgrades and free email
support (9am-6pm weekdays, Australian Eastern Standard Time)
Academic pricing: Standard: $600, Professional: $1200, Enterprise: $2400
Commercial pricing is 2x the above.
Only
the Commercial license includes sources
There is also Open Source pricing, which is available to Open
Source orgs.
- Established code base
- Publicly available project website
- Using an approved open source license
Issues can be created via email:
Jira
Issue
creation from email
ISIS
Jira page
Last updated in 91/2011
Bugzilla is a Perl/MySQL bug handling system that has fairly wide
use, see
http://bugzilla.mozilla.org
Issues can be created via email:
How
do I set the email interface to submit/change bugs
Kepler uses Bugzilla
Eclipse uses Bugzilla
Bugzilla Integration Issues
Last updated in 5/2005 Most of these issues have been handled.
Well, bugzilla might be the leader for bug handling, but it has the
following problems:
It send passwords back to the server in clear text
See Adding SSLRequireSSL to httpd.conf will fix this.
Bug 241903 is fixed in Bugzilla 2.19.1
Re: Mapping SSL authenticated user to bugzilla user? 2004/08/16 in netscape.public.mozilla.webtools.
It uses cookies, and integrating it with the CHESS cookie system
seems tricky
It is written in Perl, and the code is not very well written.
There are few comments, and constants are sprinkled through out the code
Ideally, I'd like to be able to easily tell the code to use
a different cookie.
Bugzilla Installation
Last updated in 11/2015
Download from
http://www.mozilla.org/bugs/source.html
Direct FTP: ftp://ftp.mozilla.org/pub/mozilla.org/webtools/
11/2004: download bugzilla-2.19.1. We require 2.19.1 so that
we can use the CHESS db authentication.
5/2006: download bugzilla-2.23.1 - the latest version, which
fails in checksetup.pl with:
Your MySQL v3.23.58-log is too old.
Bugzilla requires version 4.0.14 or later of MySQL.
So, we were sticking with 2.19.1. Now that we have upgraded MySQL,
we can upgrade to bugzilla-3.x
12/2008: download bugzilla-3.2
/usr/sfw/bin/wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-3.2.tar.gz
1/2014: dowload bugzilla-4.4.1
cd ~www/src
wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.4.1.tar.gz
11/2015: Download 5.0.1: As root:
cd ~www/src
wget https://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-5.0.1.tar.gz
Untar it in
/home/www
cd ~www
tar -zxf src/bugzilla-5.0.1.tar.gz
If you are installing, create a link now. If you are upgrading,
create the link later
ln -s bugzilla-5.0.2 bugzilla
Back up the Mysql database. The reason is
that checksetup may want to update the database.
Locally, we use www/php/util/mysqldumpall .
As the mysql user:
su - mysql
mkdir /home/www/mysqlarchive/bugzillaupgrade
cd /home/www/mysqlarchive/bugzillaupgrade
/home/www/php/util/mysqldumpall
exit
As root, run checksetup.pl :
First time installing:
cd /home/www/bugzilla
Updating:
cd /home/www/bugzilla-5.0.1
First install or update:
./checksetup.pl
For bugzilla-3.0.3, install whatever required perl modules are missing.
Previous releases required:
/usr/bin/perl -MCPAN -e 'install Email::Send'
/usr/bin/perl -MCPAN -e 'install Template'
/usr/bin/perl -MCPAN -e 'install Email::MIME::Modifier'
/usr/bin/perl -MCPAN -e 'install Date::Format'
Problem with install Template
cc -c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8 -D_TS_ERRNO \
-x03 -xspace -xildoff -DVERSION=\"2.19\" -DXS_VERSION=\"2.19\" \
-KPIC "-I/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE" Stash.c
cc: unrecognized option `-KPIC'
Solution:
See Configuring CPAN, which
suggests editing Perl's Config.pm . I had to edit
/usr/perl5/5.8.4/lib/sun4-solaris-64int/Config.pm ;
cxh@carson 51% diff /usr/perl5/5.8.4/lib/sun4-solaris-64int/Config.pm.orig /usr/perl5/5.8.4/lib/sun4-solaris-64int/Config.pm
97c97
< ccflags='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8 -D_TS_ERRNO'
---
> ccflags='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO'
163c163
< cccdlflags='-KPIC'
---
> cccdlflags='-fPIC'
888c888
< optimize='-xO3 -xspace -xildoff'
---
> optimize='-O3'
1271c1271
< 'ccflags' => '-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8 -D_TS_ERRNO',
---
> 'ccflags' => '-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO',
Workaround:
- Go to
/export/home1/root/.cpan/build/Template-Toolkit-2.19
- Edit
Makefile and xs/Makefile and change
-KPIC to -fPIC and
#CCFLAGS = -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8 -D_TS_ERRNO
#OPTIMIZE = -xO3 -xspace -xildoff
CCFLAGS = -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO
OPTIMIZE = -O3
- Then run
make
make install
Bugzilla issues
MoreUtils.pm: Use of uninitialized value in scalar assignment at lib/sun4-solaris-64int/List/MoreUtils.pm line 24
/usr/local/apache/logs/error_log
contains lines like
MoreUtils.pm: Use of uninitialized value in scalar assignment at lib/sun4-solaris-64int/List/MoreUtils.pm line 24.
The file /home/www/bugzilla/lib/sun4-solaris-64int/List/MoreUtil\
s.pm contains
eval {
local $ENV{PERL_DL_NONLAZY} = $ENV{PERL_DL_NONLAZY} ? 0 : $ENV{PERL_DL_NONLAZY};
bootstrap List::MoreUtils $VERSION;
1;
} unless $ENV{LIST_MOREUTILS_PP};
Bugzilla/Search/Quicksearch.pm
contains
use List::MoreUtils qw(firstidx);
http://search.cpan.org/~adamk/List-MoreUtils-0.30/lib/List/MoreUtils.pm has a version 0.30. My version is 0.26
Interestingly, running checksetup.pl
produces the same messages:
andrews.EECS.Berkeley.EDU:root: %C2> ./checksetup.pl --check-modules
* This is Bugzilla 3.6.3 on perl 5.8.4
* Running on SunOS 5.10 Generic_137137-09
Checking perl modules...
Checking for CGI.pm (v3.21) ok: found v3.49
Checking for Digest-SHA (any) ok: found v5.45
Checking for TimeDate (v2.21) ok: found v2.22
Use of uninitialized value in scalar assignment at lib/sun4-solaris-64int/List/MoreUtils.pm line 24.
Checking for DateTime (v0.28) ok: found v0.66
Checking for DateTime-TimeZone (v0.71) ok: found v1.26
Checking for DBI (v1.41) ok: found v1.48
Checking for Template-Toolkit (v2.22) ok: found v2.22
Checking for Email-Send (v2.00) ok: found v2.190
Argument "1.99_01" isn't numeric in subroutine entry at /usr/perl5/site_perl/5.8.4/Email/MIME/Header.pm line 8.
Checking for Email-MIME (v1.861) ok: found v1.863
Checking for Email-MIME-Encodings (v1.313) ok: found v1.313
Checking for Email-MIME-Modifier (v1.442) ok: found v1.442
Checking for URI (any) ok: found v1.35
Interestingly, there is no TimeDate module?
I tried
perl install-module.pl List:MoreUtils
which got rid of the MoreUtils message.
Unfortunately, upgrading to 1.906 of Email-MIME
does not get rid of
Argument "1.99_01" isn't numeric in subroutine entry at lib/Email/MIME/Heade
r.pm line 8.
Checking for Email-MIME (v1.861) ok: found v1.906
I had a hard time installing Email-MIME, but eventually, after
clearing out /.cpan:
/usr/bin/perl -MCPAN -e shell
install Email::MIME
Line 8 of
/home/www/bugzilla/lib/Email/MIME/Header.pm
/usr/perl5/site_perl/5.8.4/Email/MIME/Header.pm
is
use Encode 1.9801;
Looking at /usr/perl5/5.8.4/lib/sun4-solaris-64int/Encode.pm :
#
# $Id: bughandlers.htm 171 2015-11-19 01:46:32Z cxh $
#
package Encode;
use strict;
our $VERSION = "1.99_01";
sub DEBUG () { 0 }
use XSLoader ();
Running
/usr/bin/perl -MCPAN -e 'install Encode'
installs the proper module and the error messages go away.
Notes about Earlier Bugzilla Installs.
- For earlier versions of bugzilla Perl 5.6 was required, go to
ftp://mirrors.xmission.com/sunfreeware/sparc/8
and get perl-5.8.3-sol8-sparc-local.gz (The regular version, not the shared library version)
gunzip perl-5.8.3-sol8-sparc-local.gz
pkgadd -d perl-5.8.3-sol8-sparc-local
Note that this means we need to have /usr/local/bin
in root's path before /bin
says:
A.1.9. My perl is not located at /usr/bin/perl, is there an easy way to change it everywhere it needs to be changed?
Yes, the following bit of perl magic will change all the shebang lines. Be sure to change /usr/local/bin/perl to your path to the perl binary.
perl -pi -e 's@#\!/usr/bin/perl@#\!/usr/local/bin/perl@' *cgi *pl
I also had to do
perl -pi -e 's@#\!/usr/bin/perl@#\!/usr/local/bin/perl@' */*cgi */*pl
- 2.5
Unix (not-root) installation notes suggest
perl -pi -e
's@use strict\;@use strict\; use lib \"/home/foo/perl/lib\"\;@'
*cgi *pl Bug.pm processmail syncshadowdb
I used
perl -pi -e 's@use strict\;@use strict\; use lib \"/usr/local/lib/perl5\"\;@' *cgi *pl Bugzilla.pm processmail syncshadowdb
- Set up CPAN with
perl -MCPAN -e shell
For the CPAN build and cache directory? [/.cpan] question,
I answered
/usr/local/lib/perl5/root.cpan so as to avoid cluttering
the root partition
-
perl -MCPAN -e "install Bundle::Bugzilla"
- DBD::mysql did not install.
/usr/local/bin/perl -MCPAN -e 'install "DBD::mysql"'
fails.
See
http://www.bugzilla.org/docs/2.18/html/installation.html#install-modules-dbd-mysql
The installation process will ask you a few questions about the desired
compilation target and your MySQL installation. For most of the
questions the provided default will be adequate, but when asked if
your desired target is the MySQL or mSQL packages, you should select
the MySQL-related ones. Later you will be asked if you wish to provide
backwards compatibility with the older MySQL packages; you should
answer YES to this question. The default is NO.
A host of 'localhost' should be fine. A testing user of 'test', with a
null password, should have sufficient access to run tests on the
'test' database which MySQL creates upon installation.
cd /usr/local/lib/perl5/root.cpan/build/DBD-mysql-2.9004
/usr/local/bin/perl Makefile.PL --help
/usr/local/bin/perl Makefile.PL --testuser=root --testpassword=xxx\;yyy --testdb=bugzillatest
make
make test
- Running make test failed
Can't load '/export/home/gsrclocal/lib/perl5/root.cpan/build/DBD-mysql-2.9004/blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: ld.so.1: /usr/local/bin/perl: fatal: relocation error: file /export/home/gsrclocal/lib/perl5/root.cpan/build/DBD-mysql-2.9004/blib/arch/auto/DBD/mysql/mysql.so: symbol mysql_real_escape_string: referenced symbol not found at /usr/local/lib/perl5/5.8.3/sun4-solaris/DynaLoader.pm line 229.
The problem is that /usr/local/mysql/lib/mysql
contains a shared library that does not have the symbol
My Fix:
- Run
/usr/local/bin/perl Makefile.PL --testuser=root --testpassword=xxx\;yyy --testdb=bugzillatest
- Run
make and then hit Control-C to stop the build
- Edit the makefile and change references to
/usr/local/myslq/lib/mysql to /usr/local/mysql/lib .
- Run
make then make test and then
make install
- Whoops, no bugzillatest db, so create it using the mysql webpage, then run
make test
make install
- Run
checksetup.pl again.
cd /home/www/bugzilla
./checksetup.pl
Ignore that GD, XML::Parser and PatchReader are not installed
all versions of bugzilla: Edit /home/www/bugzilla/localconfig
Read the user and passwd from ~mysql/.my.cnf ,
update $db_user and $db_pass
Important: I changed $db_name from bugs
to bugzilla
Change $webservergroup to oldapache
If you are upgrading, run a diff between the old and new localconfigs
and update accordingly
Tighten up the permissions. As root:
cd ~www/bugzilla-5.0.1
chown -R root .
chgrp -R oldapache .
chmod -R g+rX .
Now that localconfig is updated with the
proper path, rerun ./checksetup.pl .
While upgrading to Bugzilla-3.0.2, I had to run
contrib/recode.pl . For this to work,
back up your database!
I did:
/usr/bin/perl -MCPAN -e 'install Data::Dump'
/usr/bin/perl -MCPAN -e 'install Encode::Detect'
./contrib/recode.pl --guess --dry-run
./contrib/recode.pl --guess
./checksetup.pl
Continue with installation steps in bugzilla/QUICKSTART
Edit httpd.conf and
<Directory "/home/www/bugzilla">
Options +ExecCGI
AllowOverride Limit
DirectoryIndex index.cgi
SSLRequireSSL
#Options Indexes FollowSymLinks ExecCGI
#AllowOverride None
#Order allow,deny
#Allow from all
</Directory>
Note that SSLRequireSSL will require that we use SSL,
which prevents passing passwords in clear text.
and
AddHandler cgi-script .cgi
Add these lines to rewrite.conf
# bugzilla, the bug tracking system
#
Alias /bugzilla/ "/home/www/bugzilla/"
#RewriteRule ^/bugzilla$ /bugzilla/ [R,L]
#RewriteRule ^/bugzilla/$ /home/www/gsrcwww/bugzilla/index.html [L]
#RewriteRule ^/bugzilla/([^\.]*)\.cgi$ /home/www/gsrcwww/bugzilla/$1.cgi [L]
RewriteRule ^/bugzilla$ https://%{HTTP_HOST}/bugzilla/ [R,L]
# Force SSL for bugzilla
RewriteCond %{HTTPS} !=on
RewriteRule ^/bugzilla$ https://%{HTTP_HOST}/bugzilla/\ [R,L]
and
RewriteCond %{REQUEST_FILENAME} !^/bugzilla
If you are upgrading, create the link as www:
cd ~www
rm bugzilla
ln -s bugzilla-5.0.1 bugzilla
Follow the steps in
Database Authentication
Restart Apache, go to the website.
If you have problems, look in /usr/local/apache/logs/error_log
Error:
You don't have permission to access /bugzilla/ on this server
Fix: look at the error log and adjust the permissions
cd ~www/bugzilla
chown -R root .
chgrp -R apache .
chmod -R g+rX .
Errors about missing templates:
[Fri Mar 14 09:42:41 2008] [error] [client XX.YY.ZZ.AA] File does not exist: /\
home/www/bugzilla/skins/custom/global.css, referer: https://HOST/bugzilla/
[Fri Mar 14 09:42:41 2008] [error] [client XX.YY.ZZ.AA] File does not exist: /\
home/www/bugzilla/skins/custom/index.css, referer: https://HOST/bugzilla/
Solution: copy files from previous release.
More errors
Fix:
Change #!/usr/bin/perl to
#!/usr/local/bin/perl
Fix up use lib statements
We can use wget to download the web pages that list
the bugs
- The bugzilla website uses SSL, so we need a version of
wget for Windows that includes SSL support from
http://allserv.ugent.be/~bpuype/wget/
- We use cookies to log in to the website, so we must save
our cookie file
http://www.delorie.com/gnu/docs/wget/wget_9.html says:
- Mozilla and Netscape 6.x.
Mozilla's cookie file is also named `cookies.txt', located somewhere under `~/.mozilla', in the directory of your profile. The full path usually ends up looking somewhat like `~/.mozilla/default/some-weird-string/cookies.txt'.
- Internet Explorer.
- You can produce a cookie file Wget can use by using the File menu, Import and Export, Export Cookies. This has been tested with Internet Explorer 5; it is not guaranteed to work with earlier versions.
-
- Run wget.
-
-A "show_bug.cgi*"
- Limit the pages to only those that match
show_bug.cgi* ,
which means the individual bug pages
-
-A "buglist.cgi?status=__open__&product=$product"
- Limit the pages to only those that match,
which means the individual bug summary page.
-
--load-cookies cookies.txt
- Load the cookies file exported from your browser (see above)
-
-np
- Do not ascent to the parent directory when retrieving recursively
-
-r
- Retrieve recursively
-
-l 1
- Only go one level deep
-
https://$bugwebsite ...
- The URL of the summary page
wget -A "show_bug.cgi*" \
--load-cookies cookies.txt \
-A "buglist.cgi?status=__open__&product=$product" \
-np -r -l 1 -k \
https://$bugwebsite/bugzilla/buglist.cgi\?status=__open__\&product=$product
Note that we could do more with restricting the links in the summary
page so we get fewer other pages.
LDAP
- Enable LDAP, but needed to install Net::LDAP
I tried using LDAP, but had problems
/usr/local/bin/perl -MCPAN -e 'install "Net::LDAP"'
Build failed, had to do
/usr/local/bin/perl -MCPAN -e 'install "Net::SSLeay"'
cd /usr/local/lib/perl5/build/Net_*
make install
- It looks like I'm not able to connect to
the departmental LDAP server
-
Bugzilla/Auth/Login/GSRC.pm contains code that uses the CHESS database for authentication.
php/bugzilla contains the master copy of the additional
files used for CHESS database authentication.
-
help.html
- Local help file, see
http://chess.eecs.berkeley.edu/bugzilla/help.html
-
Bugzilla/DBGSRC.pm
- Defines the
gsrc_connect_main Perl subroutine
that opens up the appropriate database
-
Bugzilla/Auth/Login/WWW/CHESS.pm
- Defines code that authenticates the user using the CHESS database.
To set up the Bugzilla tree with these files,
create symbolic links from the Bugzilla tree to the corresponding
php/bugzilla file, for example:
cd ~www/bugzilla
ln -s ../php/bugzilla/help.html .
Also, link a copy of the script that interfaces with the GSRC database:
cd ~www/bugzilla/Bugzilla
ln -s ../../php/bugzilla/Bugzilla/DBGSRC.pm
- Edit
~www/bugzilla/Bugzilla.pm :
In the use section, add:
use Bugzilla::DBGSRC;
After the sub dbh , add:
#CHESS start
my $_gsrc_dbh;
sub gsrc_dbh {
if (!$_gsrc_dbh) {
$_gsrc_dbh = Bugzilla::DBGSRC::gsrc_connect_main();
}
return $_gsrc_dbh;
}
my $_gsrc_dbh_auth;
sub gsrc_dbh_auth {
if (!$_gsrc_dbh_auth) {
$_gsrc_dbh_auth = Bugzilla::DBGSRC::gsrc_connect_auth();
}
return $_gsrc_dbh_auth;
}
# CHESS end
In Bugzilla.pm , find the _cleanup() method
and insert:
# CHESS start
$_gsrc_dbh->disconnect if $_gsrc_dbh;
undef $_gsrc_dbh;
# CHESS end
- Under Bugzilla-5.x and 3.x, create a link for
Bugzilla/Auth/Login/GSRC.pm .
cd ~www/bugzilla/Bugzilla/Auth/Login
ln -s ../../../../php/bugzilla/Bugzilla/Auth/Login/GSRC.pm .
Under Bugzilla-2.x, we used to create a link for Bugzilla/Auth/Login/WWW/CHESS.pm
cd ~www/bugzilla/Bugzilla/Auth/Login/WW
ln -s ~www/php/bugzilla/Bugzilla/Auth/Login/WWW .
- Bugzilla-2.19Edit
defparams.pl and add GSRC as an authentication choice.
{
name => 'user_info_class',
desc => 'Mechanism(s) to be used for gathering a user\'s login information.
<add>
More than one may be selected. If the first one returns nothing,
the second is tried, and so on.<br />
The types are:
<dl>
<dt>CGI</dt>
<dd>
Asks for username and password via CGI form interface.
</dd>
<dt>Env</dt>
<dd>
Info for a pre-authenticated user is passed in system
environment variables.
</dd>
<dt>GSRC</dt>
<dd>
Use the GSRC cookies and database.
</dd>
</dl>',
type => 's',
choices => [ 'CGI', 'Env', 'Env,CGI', 'GSRC', 'GSRC,CGI' ],
default => 'CGI',
checker => \&check_multi
},
Bugzilla-5.x to 3.x: edit ~www/bugzilla/Bugzilla/Config/Auth.pm and
add GSRC and GSRC,CGI
choices => [ 'CGI', 'Env', 'Env,CGI', 'GSRC', 'GSRC,CGI' ],
- Edit
~www/bugzilla/template/en/default/index.html.tmpl
and in the Most Common Actions section,
add a link to the help page:
bugzilla 5.x - 3.x:
[% IF user.login %]
[% ELSE %]
<li id="login"><a href="/projects/chess/login/?denied=1&referer=%2Fbugzilla"><b>Login</b><\
/a> - To update bugs, you must have an account, see <a href="help.html"><i>Loca\
l</i> help</a> for details.</li>
[% END %]
<li id="localhelp"><a href="help.html"><i>Local</i> Help</a></li>
bugzilla-2.x:
<a href="help.html">Help! Information about Bugzilla </a><br>
- Bugzilla-2.x: Edit
Bugzilla/Config.pm , find the sub Param
section and hardwire urlbase so it returns the appropriate
home page:
if ($param =~ /urlbase/) {
my $http_host = $ENV{"HTTP_HOST"};
return "https://$http_host/bugzilla/";
}
Also, update defparams.pl to mention that the parameter
is ignored.
- Bugzilla 5.x:
Update
/home/www/bugzilla-5.0.1/data/params.json
Bugzilla-4.x - 3.x
Update ~www/bugzilla/data/params
so that the
user_info_class is set to GSRC. The diffs are below.
It might be possible to just do a copy.
This is important because otherwise when you go to the
bugzilla site it will not know about the GSRC database
58c58
< 'maintainer' => 'yourlogin@eecs.berkeley.edu',
---
> 'maintainer' => 'THE MAINTAINER HAS NOT YET BEEN SET',
80c80
< 'rememberlogin' => 'off',
---
> 'rememberlogin' => 'on',
92,93c92,93
< 'ssl' => 'authenticated sessions',
< 'sslbase' => 'https://yourwebiste.eecs.berkeley.edu/bugzilla/',
---
> 'ssl' => 'never',
> 'sslbase' => '',
97c97
< 'timezone' => 'PDT',
---
> 'timezone' => '',
99c99
< 'urlbase' => 'http://yourwebsite.eecs.berkeley.edu/bugzilla/',
---
> 'urlbase' => '',
105c105
< 'user_info_class' => 'GSRC',
---
> 'user_info_class' => 'CGI',
User accounts
The way Bugzilla works in relationship to the CHESS site is a little tricky.
Basically, when user is logged in to the the CHESS site and then logs in to
the Bugzilla site, an account is created for the user in Bugzilla using
their CHESS email address, not their CHESS username.
If the user changes their email address on the CHESS site, then someone
with Bugzilla administrator privis will need to go to the bugzilla user page
and change the name of the user's bugzilla account.
Also, the user will need to toss any bugzilla related cookies.
Hiding Email addresses
Bugzilla-3.4
and later hides email by default
Google "bugzilla hide email addresses" and find this
mozilla.support.bugzilla thread, which refers to these
two bugs:
Bug 218917 Allow login_name != email_address, so address isn't displayed (anti-spam effect too)
Bug 219021 Email addresses should only be displayed to logged in users
Bug 219021 Email addresses should only be displayed to logged in users refers to
a
patch
that patches files in
template/en/default/bug
It is possible to do this by hand, without patching:
Search for mailto and wrap with
[% IF user.login %]
...
[% ELSE %]
...
[% END %]
I changed these files:
template/en/default/bug/activity/table.html.tmpl
template/en/default/bug/edit.html.tmpl (line 51, insert if user)
template/en/default/global/common-links.html.tmpl
template/en/default/reports/components.html.tmpl (line 76, 81, insert if user)
template/en/default/reports/edit-series.html.tmpl
template/en/default/attachment/list.html.tmpl
Change template/en/default/bug/activity/table.html.tmpl
63a64
> [% IF user.login %]
64a66,70
> [% ELSE %]
> <i>Hidden</i>, <a href="/projects/chess/login"><i>login</i></a> to see more.
> [% END %]
>
>
92c98,106
< [% change.removed FILTER html %]
---
> [% IF change.field == 'CC' %]
> [% IF user.login %]
> [% change.added FILTER html %]
> [% ELSE %]
> <i>Hidden</i>, <a href="/projects/chess/login"><i>login</i></a> to see more.
> [% END %]
> [% ELSE %]
> [% change.removed FILTER html %]
> [% END %]
112c126,134
< [% change.added FILTER html %]
---
> [% IF change.field == 'CC' %]
> [% IF user.login %]
> [% change.added FILTER html %]
> [% ELSE %]
> <i>Hidden</i>, <a href="/projects/chess/login"><i>login</i></a> to see more.
> [% END %]
> [% ELSE %]
> [% change.added FILTER html %]
> [% END %]
Change bugzilla/template/en/default/list/table.html.tmp
to hide the email addresses in the top level. At about line 200:
[% ELSIF column == 'assigned_to' %]
[% IF user.login %]
[%- bug.$column.truncate(abbrev.$column.maxlength, abbrev.$column.el
lipsis) FILTER html -%]
[% ELSE %]
<i>Hidden</i>, <a href="/projects/chess/login"><i>login<i></a> to see more.
[% END %]
right before:
[% ELSE %]
[%- bug.$column.truncate(abbrev.$column.maxlength, abbrev.$column.ellip
sis) FILTER html -%]
[% END %]
template/en/default/bug/edit.html.tmpl :
513a514
> [% IF user.login %]
515a517,519
> [% ELSE %]
> [% bug.assigned_to.name %]
> [% END %]
537a542
> [% IF user.login %]
538a544,546
> [% ELSE %]
> [% bug.assigned_to.name %]
> [% END %]
554a563
> [% IF user.login %]
556a566,568
> [% ELSE %]
> [% bug.qa_contact.name %]
> [% END %]
582a595
> [% IF user.login %]
583a597,599
> [% ELSE %]
> [% bug.qa_contact.name %]
> [% END %]
802a819
> [% IF user.login %]
803a821,823
> [% ELSE %]
> [% bug.reporter.name %]
> [% END %]
1153a1174
> [% IF user.login %]
1157a1179,1181
> [% ELSE %]
> [% user.name FILTER html %]</a>
> [% END %]
1158a1183
> [% IF user.login %]
1160a1186,1188
> [% ELSE %]
> [% user.name FILTER html %]</a>
> [% END %]
template/en/default/bug/comments.html.tmpl
> [% IF user.login %]
172a174,176
> [% ELSE %]
> [% (comment.author.name || comment.author.login) FILTER html %]
> [% END %]
template/en/default/attachment/list.html.tmpl
97a98
> [% IF user.login %]
100a102,104
> [% ELSE %]
> [% attachment.attacher.name %]
> [% END %]
Email creation of bugs
Setup email creation of bugs
Resources:
How
do I set the email interface to submit/change bugs
Edit bugzill/contrib/bug_email.pl as per
the bugzilla/contrib/README.Mailif
bugzilla.org developers mailing list message from 02/04 "bug_email.pl and bugzilla_append_email.pl"
How I did it.
Create a bugzilla account
Create a .procmailrc file
:0 fhw
| formail -I "From " -a "From "
#BUGZILLA_HOME=/home/bugzilla/WEB/bugzilla/contrib
BUGZILLA_HOME=/home/www/bugzilla/contrib/
:0
* ^Subject: .*\[Bug .*\]
RESULT=|(cd $BUGZILLA_HOME && ./bugzilla_email_append.pl)
# Feed mail to stdin of bug_email.pl
:0 Ec
#* !^Subject: .*[Bug .*]
RESULT=|(cd $BUGZILLA_HOME && ./bug_email.pl )
# write result to a logfile
:0 c
|echo `date '+%d.%m.%y %H:%M: '` $RESULT >> $HOME/bug_email.log
:0 c
|echo "----------------------------------" >> $HOME/bug_email.log
:0 c
$HOME/bug_email.log
# Move mail to the inbox
:0
$HOME/Mail/INBOX
Install procmail, I grabbed it from
ftp://mirrors.xmission.com/sunfreeware/sparc/8
gunzip procmail-3.22-sol8-sparc-local.gz
pkgadd -d procmail-3.22-sol8-sparc-local
For our set up, create a link in /var/adm/sm.bin :
cd /var/adm/sm.bin
ln -s /usr/local/bin/procmail .
Create ~bugzilla/.forward :
"|/var/adm/sm.bin/procmail #bugzilla"
Sending mail was failing, so I created a test message
Message-Id: <200411162059.iAGKxfRR012293@maury>
To: bugzilla@markov
Subject: testing submission by email #7
From: "Christopher Brooks" <cxh@eecs.berkeley.edu>
Date: Tue, 16 Nov 2004 12:59:41 -0800
@product : TestProduct
@version : other
@component : TestComponent
@short_desc : Testing submission by email
@rep_platform : All
@bug_severity : normal
@priority : P3
@op_sys : Linux
This is another test
and ran it
cat testmail | (cd /home/www/bugzilla/contrib/ && ./bug_email.pl -t)
The error message said MIME::Parser was missing, so I ran
perl -MCPAN -e 'install MIME::Parser'
Looked in /usr/local/apache/logs/error_log
and realized I had errors.
Adjusted .procmailrc to include
MAILDIR=$HOME/Mail
LOGFILE=$MAILDIR/log
Which showed that the bugzilla contrib directory could not be read,
so I added the bugzilla user to the appropriate group.
/home/bugzilla/bug_email.log says:
7.11.04 18:41: can't write to directory ./data/mimedump-tmp at ./bugzilla_emai\
l_append.pl line 56.
Fix:
chmod g+ws /home/www/bugzilla/data/mimedump-tmp
bugzilla logs files
-
/usr/local/apache/logs/error_log
- Apache log
-
/home/bugzilla/bug_email.log
- Email bug interface appends to this
-
/home/bugzilla/Mail/log
- Email bug interface appends to this, too
Revised .procmailrc file
MAILDIR=$HOME/Mail
LOGFILE=$MAILDIR/log
:0 fhw
| formail -I "From " -a "From "
#BUGZILLA_HOME=/home/bugzilla/WEB/bugzilla/contrib
BUGZILLA_HOME=/home/www/bugzilla/contrib
:0
* ^Subject: .*\[Bug .*\].*
RESULT=|(cd $BUGZILLA_HOME && ./bugzilla_email_append.pl 2>&1 )
# Feed mail to stdin of bug_email.pl
:0 Ec
#* !^Subject: .*[Bug .*]
RESULT=|(cd $BUGZILLA_HOME && ./bug_email.pl 2>&1 )
# write result to a logfile
:0 c
|echo `date '+%d.%m.%y %H:%M: '` $RESULT >> $HOME/bug_email.log
:0 c
|echo "----------------------------------" >> $HOME/bug_email.log
:0 c
$HOME/bug_email.log
# Move mail to the inbox
:0
$MAILDIR/INBOX
Java Interface to Bugzilla
One idea is to use mailto: to invoke the user's
default email tool and send messages to the browser.
See http://www.holub.com/newsletter/archive/003.html for info
about invoking the mail program.
One issue here is that we need to include the body
http://www.ianr.unl.edu/internet/mailto.html has suggestions about
using &body
Try
java -classpath $PTII ptolemy.actor.gui.BrowserLauncher mailto:bugzilla@chess
or
$ java -classpath $PTII ptolemy.actor.gui.BrowserLauncher "mailto:astark1@unl.edu?&body=The message's first line. &body=Second line. &body=Third Line."
http://jagzilla.sourceforge.net/ is a Java interface to Bugzilla that includes and Eclipse plugin
Below here is from 2001
- Read the README and download the following
DBI-1.15.tar.gz
DBI-1.15.readme
Data-Dumper-2.101.tar.gz
Msql-Mysql-modules-1.2216.tar.gz
TimeDate-1.10.tar.gz
GD-1.33.tar.gz
Chart-0.99b.tar.gz
Chart requires GD, which requires a bunch of libraries, which can be found
at
ftp://mirrors.xmission.com/sunfreeware/sparc/8
I downloaded:
gd-1.8.3-sol8-sparc-local.gz
libpng-1.0.6-sol8-sparc-local.gz
zlib-1.1.3-sol8-sparc-local.gz
jpeg-6b-sol8-sparc-local.gz
xpm-3.4k-sol8-sparc-local.gz
freetype-1.3.1-sol8-sparc-local.gz
Download each of the files, gunzip and then
do pkgadd -d filename
- Create /usr/bonsaitools/bin/perl
mkdir -p /usr/bonsaitools/bin
cd /usr/bonsaitools/bin
echo "Bugzilla needs this" >> README
ln -s /usr/local/bin/perl .
- Create the bugzilla database
As the mysql user, be sure that
~mysql/.my.cnf
contains the user name and password to connect to the database,
and then do:
su - mysql
/usr/local/mysql/bin/mysqladmin create bugzilla
- Bugzilla needs AddHandler turned on for CGI Scripts and a Directory
section with the ExecCGI option. The diffs to
httpd.conf
are:
352a354,360
> <Directory "/home/www/bugzilla">
> Options Indexes FollowSymLinks ExecCGI
> AllowOverride None
> Order allow,deny
> Allow from all
> </Directory>
>
709c717
< #AddHandler cgi-script .cgi
---
> AddHandler cgi-script .cgi
-
rewrite.conf gets the following changes.
The first one adds and alias, the excludes bugzilla from getting run
through group.php3
43a44,49
> ## bugzilla, the bug tracking system
> #
> Alias /bugzilla/ "/home/www/bugzilla/"
> #RewriteRule ^/bugzilla$ /bugzilla/ [R,L]
> #RewriteRule ^/bugzilla/$ /home/www/gsrcwww/bugzilla/index.html [L]
> #RewriteRule ^/bugzilla/([^\.]*)\.cgi$ /home/www/gsrcwww/bugzilla/$1.cgi [L]
82a89
> RewriteCond %{REQUEST_FILENAME} !^/bugzilla
- Error:
Can't create data/params.13539 at defparams.pl line 53.
Fix: chmod a+w /home/www/bugzilla/data
- Error:
Can't connect to database server. at globals.pl line 88.
Bugzilla and groups
Last updated in 11/2007
Our goal is to set up Bugzilla group access using our workgroups
Bugzilla Groups and Group Security
The following tables in the bugzilla dbare used by groups:
-
bug_group_map
- Maps bug_ids to groups_ids
-
groups
- maps group ids to names
-
user_group_maps
- maps user_ids to group_ids
So, one possible solution is to upon login to get the list
of website groups to which the user belongs and then
to look in groups for groups with the same name
and add the user to user_group_maps with the
appropriate permissions.
GSRC.pm now contains a subroutine does this.
If the product name does not match a group name, then
you can use the bugzilla groups facility to restrict a product
to a certain set of users.
The group must be added to each person:
- Either masquerade as the user or have the user log in
and go to the bugzilla website
http://chess.eecs.berkeley.edu/bugzilla.
This will add the user to the bugzilla user database
- As a bugzilla admin, search for the user and then add them to the
appropriate group.
Last updated in 11/2004
Mantis is a php/MySQL/web based bugtracking system
that can be found on at
http://www.mantisbt.org/
Mantis is GPL'd
Offline
bug creation not yet supported (11/04)
Mantis Integrations Issues
Last updated in 4/2001
With any package, there are two opposing forces:
- Write the thing from scratch and get it right, which smacks of
not invented here.
- Spend a bunch of time integrating an already existing package.
Integration issues
Does not use our current user id system, passwords are sent in
clear text
Does not have our look and feel
Even if the user is logged out of the website, links like
*/ptolemy/bugs/mantis/login_page.php3 are
still accessible
The bugs from one workgroup are visible to the bugs of another
workgroup.
Advantage over gnats
Uses MySQL and Php, so it will integrate more easily
Disadvantage over gnats
No email interface.
Mantis Installation
Last updated in 4/2001
- ftp://ftp.sourceforge.net/pub/sourceforge/mantisbt
- As the mysql user, be sure that
~mysql/.my.cnf
contains the user name and password to connect to the database,
and then do:
cd /export/home/tools/mantis*
/usr/local/mysql/bin/mysqladmin create bugtracker
/usr/local/mysql/bin/mysql bugtracker < db_generate.sql
- To get things working,
I added the following to
/usr/local/apache/conf/rewrite.conf
RewriteRule ^/mantis$ /mantis/ [R,L]
RewriteRule ^/mantis/$ /home/www/php/mantis/index.php3 [L]
RewriteRule ^/mantis/documentation.html$ /home/www/php/mantis/documentation.html [L]
RewriteRule ^/mantis/([^\.]*)\.php$ /home/www/php/mantis/$1.php [L]
RewriteRule ^/mantis/([^\.]*)\.php3$ /home/www/php/mantis/$1.php3 [L]
RewriteRule ^/mantis/([^\.]*)\.txt$ /home/www/php/mantis/$1.txt [L]
After editing php/subpages/bugs.php3 and adding
require('mantis/index.php3');
and commenting out the line that sets $bugsurl ,
I modified rewrite.conf to look like:
## Redirects for mantis, the bug tracking system
#
RewriteRule /bugs/mantis$ /bugs/mantis/ [R,L]
RewriteRule /bugs/mantis/$ /home/www/php/mantis/index.php3 [L]
RewriteRule /bugs/mantis/documentation.html$ /home/www/php/mantis/documentation\
.html [L]
RewriteRule /bugs/mantis/([^\.]*)\.php$ /home/www/php/mantis/$1.php [L]
RewriteRule /bugs/mantis/([^\.]*)\.php3$ /home/www/php/mantis/$1.php3 [L]
RewriteRule /bugs/mantis/([^\.]*)\.txt$ /home/www/php/mantis/$1.txt [L]
#
RewriteRule /bugs/([^\.]*)\.php$ /home/www/php/mantis/$1.php [L]
RewriteRule /bugs/([^\.]*)\.php3$ /home/www/php/mantis/$1.php3 [L]
RewriteRule /bugs/([^\.]*)\.txt$ /home/www/php/mantis/$1.txt [L]
Last updated 11/04
Keystone is a PhP/MySQL bug handling system that was freely available
to non-commercial users.
Keystone is available from
http://www.stonekeep.com/
Keystone Integrations Issues
Last updated in 4/2001
Pro
Uses primarily Php/MySQL, though Perl is used for handling email.
Logging messages are easy to turn on
Some look and feel configuration
Con
Does not use our current user id system, passwords are sent in
cleartext. (This was not that hard to fix)
Only has one database for all workgroups, though we could add
these tables under each worgroup database.
Does not have our look and feel
email is handled by Perl, installation is a little tricky.
Keystone Installation instructions
Last updated in 4/2001
- Download from Keystone
-
cd ~www/php; tar -zxf /export/home1/tools/downloads/keystone-0_74_00.tar.gz
11/04
Note, keystone is checked in to cvs, if you have
a source cvs account, try
cvs -d :ext:source:/home/cvs co keystone
There is also a table in the database
gigascale:root: %C2> pwd
/export/home/www/gsrcwww/keystone
gigascale:root: %C2> ls -l
total 4
-rw-r--r-- 1 www 94 Apr 23 2001 README
lrwxrwxrwx 1 www 23 Apr 23 2001 docs -> ../../php/keystone/docs
lrwxrwxrwx 1 www 27 Apr 23 2001 graphics -> ../../php/keystone/graphics
-rw-r--r-- 1 www 224 Apr 23 2001 index.htm
gigascale:root: %C2> cat README
This is a bit of a hack so that we can look at the keystone
docs without using rewrites or phpgigascale:root: %C2> cat index.htm
<!--$Id: bughandlers.htm 171 2015-11-19 01:46:32Z cxh $-->
<html>
<head>
<title>Keystone Documentation</title>
</head>
<body>
<h1>Keystone Documentation</h1>
<a href="docs/gsrc.html">Keystone Documentation</a>
</body>
</html>
gigascale:root: %C2>
- Update keystone.conf:
cd keystone/conf
cp keystone.conf.default keystone.conf
cp colors.conf.default colors.conf
Then in keystone.conf
update sys_url, the database passwd (see ~mysql/.my.cnf ),
the company.
Change yoursitename.com to mysite.org
- Create the database
su - mysql
/usr/local/mysql/bin/mysqladmin create keystone
cd /home/www/php/keystone/struct
sh
for i in *.mysql; do /usr/local/mysql/bin/mysql keystone < $i; done
exit
- Login!
http://www.mysite.org/bugs/keystone/ , username admin , password
abc123
Note that now that we've integrated keystone into the CHESS website,
the direct login is no longer working
Localizing to the CHESS website
Last updated in 4/2001
Modified /usr/local/lib/php3.ini to search
search /home/www/php/keystone
include_path = ".:/home/www/php:/home/www/php/keystone"
Modified all includes:
include "./ -> include\"keystone/\" "
keystone/header.php3 : include call to html_header:
html_header("", $pageinfo[thirdrow], $pageinfo[thirdpos]);
Copied keystone/login.php3
to keystone/login_gsrc.php3 and
heavily modified it to call
the gsrc user_verify() method, but this changed
is not really needed if we are calling keystone from within the gsrc code.
LogIt("DEBUG","login.php3","Login called. Checking.");
// Verify the user using the CHESS database.
$keystone_user = user_verify();
// Reopen the keystone database so that subsequent calls to db_query work.
db_connect("keystone");
LogIt("DEBUG","login.php3","user_verify() returned. user= $keystone_user");
$uinfo = db_query("select * from people where login='$keystone_user'");
//LogIt("DEBUG","login.php3","uinfo is $uinfo");
$udata = db_fetch_array($uinfo);
if (db_numrows($uinfo)) {
LogIt("DEBUG","login.php3","Lookup successful. user is '$udata[fullnam\
e]'");
} else {
LogIt("DEBUG","login.php3","Lookup FAILED. no such user. We should ba\
il here.");
}
$curruser = "$udata[login]";
TimeStamp($curruser);
login_gsrc.php3 was further modified to
read the CHESS auth database and update the Keystone people database
as necessary
keystone/nbrowse.php3 :
- Fix includes and checks for
keystone.conf
and colors.conf by just including them directly
- include
login_gsrc.php3 instead of
login.php3 .
- Disable resources and libraries by reading
$sys_enable_resources and
$sys_enable_library from keystone.con
- Commented out the logout and change password menu choices
Keystone Perl
Last updated in 4/2001
- Download the perl modules
- Mail::Tools 1.15 from cpan.valueclick.com
/perl/CPAN/modules/by-module
- DBD::DBI was already installed
- Text::Template from
- For each module, do:
perl Makefile.PL
make
make test
make install
- The database password had a ; in it, so I created a new user
and changed the password.
su - mysql
/usr/local/mysql/bin/mysql mysql
SET PASSWORD FOR keystone=PASSWORD('xxx');
FLUSH PRIVILEGES;
QUIT
- Ran the test:
mysite:www: /home/www> cd php/keystone/perl
mysite:www: keystone/perl> ./keymail.pl -h
Keystone.pm:2 /export/home/www/php/keystone/perl/../conf/keystone.conf.default
Keystone.pm:2 /export/home/www/php/keystone/perl/../conf/keystone.conf
Keystone Command Line Utility Keystone v0.74.00
--------------------------------------------------------------
-h This help text
-status x View/Create slips with status 'x'
-currtech tech View/Create slips with currtech 'tech'
-brief Only show the slip headers
-full Show full slip (default)
-slip=xx Select slip 'xx'
-newslip Specifies the rest of standard input is a
passed in as a new slip.
-parent=pid Specify 'pid' as the parent Slip ID
-priority=pri Specify 'pri' as the priority (1-9)
-debug Turn on debugging
For more information, go to http://www.stonekeep.com
or refer to the Keystone documentation.
mysite:www: keystone/perl>
- Add the following to
/etc/aliases ,
then run newaliases
## Keystone bug handling system, see
## http://www.mysite.org/infrax/sysadmin/bughandlers.htm
## created 20-Apr-2001 cxh
keystone: "|/home/www/php/keystone/perl/keymail.pl -mailinfo";
keystone-submit: "|/home/www/php/keystone/perl/keymail.pl -newslip -status=O -priority=8";
keystone-followup: "|/home/www/php/keystone/perl/keymail.pl -newfollowup -public"
- Copy the keymail file to sm.bin:
cp /home/www/php/keystone/perl/keymail.pl /usr/adm/sm.bin
cd /home/www/php/keystone/perl
rm keymail.pl
ln -s /usr/adm/sm.bin/keymail.pl .
- Test the keymail.pl file from sm.bin
./keymail.pl -h
I had to make the following changes:
-
/usr/adm/sm.bin/keymail.pl , added the following
use lib '/home/www/php/keystone/perl';
-
keymail.pl ,
Keystone.pm : Hardwire in the conf files:
#my $path = $param{'path'} || "$FindBin::RealBin/../conf";
# Hardwire this in so we can find it from /usr/adm/sm.bin -cxh
my $path = "/home/www/php/keystone/conf";
- keystone.pl require Net::Domain, which I downloaded and
installed from /perl/CPAN/modules/by-authors/Graham_Barr/libnet-1.0703.tar.gz
|