Note: Currently the version information is cached; this needs to be
changed before using this function in long lived programs.
+=head3 Returns
+
+Currently returns a hashref of status with the following keys.
+
+=over
+
+=item id -- bug number
+
+=item bug_num -- duplicate of id
+
+=item keywords -- tags set on the bug, including usertags if bugusertags passed.
+
+=item tags -- duplicate of keywords
+
+=item package -- name of package that the bug is assigned to
+
+=item severity -- severity of the bug
+
+=item pending -- pending state of the bug; one of following possible
+values; values listed later have precedence if multiple conditions are
+satisifed:
+
+=over
+
+=item pending -- default state
+
+=item forwarded -- bug has been forwarded
+
+=item pending-fixed -- bug is tagged pending
+
+=item fixed -- bug is tagged fixed
+
+=item absent -- bug does not apply to this distribution/architecture
+
+=item done -- bug is resolved in this distribution/architecture
+
+=back
+
+=item location -- db-h or archive; the location in the filesystem
+
+=item subject -- title of the bug
+
+=item last_modified -- epoch that the bug was last modified
+
+=item date -- epoch that the bug was filed
+
+=item originator -- bug reporter
+
+=item log_modified -- epoch that the log file was last modified
+
+=item msgid -- Message id of the original bug report
+
+=back
+
+
+Other key/value pairs are returned but are not currently documented here.
+
=cut
sub get_bug_status {
$(install_data) misc/updateseqs $(var_dir)/spool
# install the templates
- $(foreach dir, $(wildcard templates/*/*), $(exec -d $(install_exec) $(template_dir)/$(patsubst templates/%,%,$(dir))))
- $(foreach tmpl, $(wildcard templates/*/*/*.tmpl), $(exec $(install_data) $(tmpl) $(template_dir)/$(patsubst templates/%,%,$(tmpl))))
+ $(foreach dir, $(wildcard templates/*/*), $(install_exec) -d $(templates_dir)/$(patsubst templates/%,%,$(dir));)
+ $(foreach tmpl, $(wildcard templates/*/*/*.tmpl), $(install_data) $(tmpl) $(templates_dir)/$(patsubst templates/%,%,$(tmpl));)
-.PHONY: test build
\ No newline at end of file
+.PHONY: test build
use strict;
use POSIX qw(strftime nice);
-use Debbugs::Config;
+use Debbugs::Config qw(:globals :text :config);
use CGI::Simple;
use Debbugs::CGI qw(:util :url :html);
-use Debbugs::Common qw(getmaintainers);
+use Debbugs::Common qw(getmaintainers getparsedaddrs);
use Debbugs::Bugs qw(count_bugs);
use Debbugs::Status qw(:status);
+use Debbugs::Packages qw(getpkgsrc);
+use Debbugs::Text qw(:templates);
nice(5);
my %strings = ();
my $dtime = strftime "%a, %e %b %Y %T UTC", gmtime;
-my $tail_html = '';#$gHTMLTail;
-$tail_html = '';#$gHTMLTail;
-$tail_html =~ s/SUBSTITUTE_DTIME/$dtime/;
my %count;
my $tag;
my %sortkey = ();
if ($indexon eq "pkg") {
$tag = "package";
- %count = count_bugs(function => sub {my %d=@_; return splitpackages($d{"pkg"})});
+ %count = count_bugs(function => sub {my %d=@_; return splitpackages($d{"pkg"})},
+ archive => $archive,
+ );
if (defined $param{first}) {
%count = map {
if (/^\Q$param{first}\E/) {
foreach my $pkg (keys %count) {
$sortkey{$pkg} = lc $pkg;
$htmldescrip{$pkg} = sprintf('<a href="%s">%s</a> (%s)',
- pkg_url(pkg => $pkg),
+ package_links(package => $pkg, links_only=>1),
html_escape($pkg),
htmlize_maintlinks(sub { $_[0] == 1 ? 'maintainer: '
: 'maintainers: ' },
}
} keys %count;
}
- %count = countbugs(function => sub {my %d=@_;
+ %count = count_bugs(function => sub {my %d=@_;
return map {
$pkgsrc->{$_} || $_
} splitpackages($d{"pkg"});
- });
+ },
+ archive => $archive,
+ );
$note = "";
foreach my $src (keys %count) {
$sortkey{$src} = lc $src;
$htmldescrip{$src} = sprintf('<a href="%s">%s</a> (%s)',
- srcurl($src),
+ package_links(src => $src, links_only=>1),
html_escape($src),
htmlize_maintlinks(sub { $_[0] == 1 ? 'maintainer: '
: 'maintainers: ' },
}
map { $_->address } @me;
} splitpackages($d{"pkg"});
- });
+ },
+ archive => $archive,
+ );
if (defined $param{first}) {
%count = map {
if (/^\Q$param{first}\E/) {
unless exists $fullname{$addr->address};
}
map { $_->address } @se;
- });
+ },
+ archive => $archive,
+ );
if (defined $param{first}) {
%count = map {
if (/^\Q$param{first}\E/) {
$note .= "different addresses.</p>\n";
} elsif ($indexon eq "tag") {
$tag = "tag";
- %count = count_bugs(function => sub {my %d=@_; return split ' ', $d{tags}; });
+ %count = count_bugs(function => sub {my %d=@_; return split ' ', $d{tags}; },
+ archive => $archive,
+ );
if (defined $param{first}) {
%count = map {
if (/^\Q$param{first}\E/) {
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
print "<HTML><HEAD>\n" .
- "<TITLE>$debbugs::gProject$Archived $debbugs::gBug reports by $tag</TITLE>\n" .
+ "<TITLE>$gProject$Archived $gBug reports by $tag</TITLE>\n" .
+ qq(<LINK REL="stylesheet" HREF="$gWebHostBugDir/css/bugs.css" TYPE="text/css">) .
"</HEAD>\n" .
'<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#800080">' .
"\n";
-print "<H1>" . "$debbugs::gProject$Archived $debbugs::gBug report logs by $tag" .
+print "<H1>" . "$gProject$Archived $gBug report logs by $tag" .
"</H1>\n";
print $note;
print $result;
print "<hr>\n";
-print "<p>$tail_html";
-
+print fill_in_template(template=>'html/html_tail',
+ hole_var => {'&strftime' => \&POSIX::strftime,
+ },
+ );
print "</body></html>\n";
Be sure to set the $gMailer variable correctly in /etc/debbugs/config.
The options are (all lower case) exim, qmail and sendmail.
+
Exim 4
------
The exim 4 setup supports virtual domains. This doesn't hurt on a
mail for those zones ("debbugs_router") and "send" the mail using a pipe
("debbugs_transport").
+
Qmail
-----
From Tommi Virtanen (tv@debian.org), amended by Daniel Ruoso
restart sendmail with the new configuration. Your system should now
be up and running. Congratulations!
+
Postfix
-------
-It seems Bdale isn't around currently, so I'll just mail this
-here directly. This is a short description of how to get debbugs
-working with postfix. If someone can verify this and give me some
-feedback if would be appreciated.
-
-Lets assume that you are going to install bugs.domain.net, and you
+Let's assume that you are going to install bugs.domain.net, and you
are going to run it on the machine master.domain.net.
DNS setup: point the MX to the machine running debbugs:
bugs.domain.net MX 50 master.domain.net.
-In /etc/postfix/main.cf enable the transport maps by inserting the
-following line:
+For postfix we have to do three things now:
- transport_maps = hash:/etc/postfix/transport
+ 1. Open postfix for any recipient address on the domain
+ bugs.domain.net
+ 2. Create a transport map to the debbugs script called
+ ,,receive''.
+ 3. Make sure that mails are handed individually into the
+ debbugs pipe. The receive script can only process mails
+ with _one_ recipient.
-Now create /etc/postfix/transport and insert:
+So, create /etc/postfix/transport and insert:
bugs.domain.net debbugs:
This tells postfix to use the debbugs transport agent to deliver any
mail send to bugs.domain.net. Now we need to make a database from that
+map, so that postfix can use:
+
+ $ postmap hash:/etc/postfix/transport
+
+So, create /etc/postfix/debbugs-recipients and put:
+
+ @bugs.domain.net ACCEPT
+
+into it.
+
+Here, we also need to make a database from that map, so
that postfix can use:
- # postmap hash:transport
+ # postmap hash:/etc/postfix/debbugs-recipients
+
+In /etc/postfix/main.cf we enable the transport and local recipient
+map by inserting the following lines:
+
+ transport_maps = hash:/etc/postfix/transport
+ # debbugs transport
+ local_recipient_maps = hash:/etc/postfix/non-unix-users
+ transport_maps = hash:/etc/postfix/transport
+ debbugs_destination_recipient_limit = 1
-Now we need to teach postfix what the debbugs transport agent is. Edit
+The last line in the block above assures that mails pour into
+the debbugs receive scripts on a one by one recipient basis.
+
+At last we need to teach postfix what the debbugs transport agent is. Edit
/etc/postfix/master.cf and add:
debbugs unix - n n - - pipe
Now that all this is done, restart postfix and it should be working..
-Wichert.
+Wichert
+Updated+modified by Mike (20120919)
+
Procmail and SpamAssassin
-------------------------
-debbugs (2.4.2~exp2) experimental; urgency=low
+debbugs (2.4.2~exp2) UNRELEASED; urgency=low
+ [ Don Armstrong ]
* Hack around elinks css bug (closes: #593804)
* affects now appends packages by default (closes: #656371). Thanks to
Andreas Beckmann and Julien Cristau.
* Fix spacing in owner block (closes: #670411)
* Fix double encoding issues (closes: #672432)
* Fix encoding in cgi
+ * Fix installation of templates (closes: #686928). Thanks to Mike
+ Gabriel.
+ * Only remove list headers if the message appears to have traversed a
+ mailing list to get to us. (closes: #690408)
+ * Fix lack of archive support in pkgindex.cgi.
+ * Output notice to transcript when there is a malformed command.
+ (closes: #691573). Thanks to Jonathan Nieder.
[Thanks to Arnout Engelen: ]
* Add Homepage (closes: #670555).
* Fix VCS in control (closes: #670556).
* Link to blocked bugs (closes: #670568).
-
+
+ [ Mike Gabriel ]
+ * /debian/control:
+ + Add ${misc:Depends} to Depends.
+ * /examples/apache.conf:
+ - Assure in apache.conf example that documentation html pages get loaded
+ (closes: #686943).
+ - Rewrite rule example: http://<webhost>/<nnn> -> show bug report for
+ bug <nnn>.
+ - Be more generic, comment out rewrite rule that directly redirects
+ http://<debbugs-webhost>/ to http://www.debian.org/Bugs.
+ - Extend examples/apache.conf, add directory rules. Esp. allow Indexes to be
+ overridden in /var/lib/debbugs/www/db to allow mod_expires apache
+ configuration options in .htaccess.
+ * Load bugs.css file in documentation html pages.
+ * Fix sani function in scripts/errorlib. Generate html entities correctly
+ (prepend ampersand, append semicolon).
+ * Fix pkgindex.cgi concerning several issues: load proper Perl modules,
+ replace usage of src_url and pkg_url by package_links, use
+ html_tail from templates, use count_bugs everywhere, load bugs.css,
+ fix global variable usage in html header (closes: #686940).
+ * Add empty $gBugSubscriptionDomain variable to config file template.
+ * Remove mailing list markers of the form [<list-name>] from the subject
+ line to avoid duplication (and more) of the bug number when replying to
+ bug postings.
+ * Update postfix section in Readme.mail (closes: #688109).
+ * Provide gStrongList configuration option in config file to make
+ a site admin aware of its existence (closes: #688345).
+ * Make sure that mails to gSubscriptionDomain and gBugSubscriptionDomain
+ are only sent out if the variables in config are defined and
+ have a lenght < 0 (closes: #688344).
+ * Use locale independent date format for mail processing and service mail
+ generation (closes: #688745).
+
-- Don Armstrong <don@debian.org> Wed, 25 Aug 2010 01:57:38 -0700
debbugs (2.4.2~exp1) experimental; urgency=low
Package: debbugs
Architecture: all
-Depends: ${perl:Depends}, exim4 | mail-transport-agent,
- libdebbugs-perl
+Depends:
+ ${perl:Depends},
+ ${misc:Depends},
+ exim4 | mail-transport-agent,
+ libdebbugs-perl,
Recommends: debbugs-web
Suggests: spamassassin (>= 3.0), libcgi-alert-perl
Description: The bug tracking system based on the active Debian BTS
Package: libdebbugs-perl
Architecture: all
-Depends: ${perl:Depends}, libmailtools-perl, ed, libmime-tools-perl,
+Depends:
+ ${misc:Depends},
+ ${perl:Depends}, libmailtools-perl, ed, libmime-tools-perl,
libio-stringy-perl, libmldbm-perl, liburi-perl, libsoap-lite-perl,
libcgi-simple-perl, libparams-validate-perl, libtext-template-perl,
libsafe-hole-perl, libmail-rfc822-address-perl, liblist-moreutils-perl,
Package: debbugs-web
Architecture: all
-Depends: libdebbugs-perl, apache | httpd
+Depends:
+ ${misc:Depends},
+ libdebbugs-perl, apache | httpd
Suggests: libcgi-alert-perl
Description: web scripts for the active Debian BTS
Debian has a bug tracking system which files details of bugs reported by
Package: debbugs-local
Architecture: all
-Depends: libdebbugs-perl, debbugs-web, libconfig-simple-perl,
+Depends:
+ ${misc:Depends},
+ libdebbugs-perl, debbugs-web, libconfig-simple-perl,
libuser-perl, rsync, libhttp-server-simple-perl, libnet-server-perl
Description: run and maintains a local mirror of the Debian BTS
Debian has a bug tracking system which files details of bugs reported
var/lib/debbugs/www/*
var/lib/debbugs/www/cgi/*
-etc/debbugs/html
\ No newline at end of file
+etc/debbugs/html
+usr/share/debbugs/templates/*
<VirtualHost *>
ServerName bugs.debian.org
ServerAdmin owner@bugs.debian.org
- DocumentRoot /org/bugs.debian.org/www/
- ScriptAlias /cgi-bin /org/bugs.debian.org/cgi-bin
- ErrorLog /var/log/apache/bugs.debian.org-error.log
- CustomLog /var/log/apache/bugs.debian.org-access.log combined
+ DocumentRoot /var/lib/debbugs/www/
+
+ ErrorLog /var/log/apache/debbugs-error.log
+ CustomLog /var/log/apache/debbugs-access.log combined
+
+ <Directory />
+ Options FollowSymLinks
+ AllowOverride None
+ </Directory>
+
+ <Directory /var/lib/debbugs/www>
+ Options -Indexes FollowSymLinks MultiViews
+ AllowOverride Options
+ Order allow,deny
+ allow from all
+ </Directory>
+
+ <Directory /var/lib/debbugs/www/db>
+ AllowOverride Indexes
+ </Directory>
+
+ <Directory /var/lib/debbugs/www/txt>
+ Options +Indexes
+ </Directory>
+
+ ScriptAlias /cgi-bin/ /var/lib/debbugs/www/cgi/
+ <Directory "/var/lib/debbugs/www/cgi/">
+ AllowOverride None
+ Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
+ Order allow,deny
+ Allow from all
+ </Directory>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*apt-listbugs.*
# RewriteLog /org/bugs.debian.org/apache-rewrite.log
# RewriteLogLevel 0
- RewriteRule ^/$ http://www.debian.org/Bugs/
+ #RewriteRule ^/$ http://www.debian.org/Bugs/
RewriteRule ^/(robots\.txt|release-critical|apt-listbugs\.html)$ - [L]
# The following two redirect to up-to-date pages
RewriteRule ^/[[:space:]]*#?([[:digit:]][[:digit:]][[:digit:]]+)([;&].+)?$ /cgi-bin/bugreport.cgi?bug=$1$2 [L,R,NE]
RewriteRule ^/severity:([^/]+)$ /cgi-bin/pkgreport.cgi?severity=$1 [L,R,NE]
RewriteRule ^/tag:([^/]+)$ /cgi-bin/pkgreport.cgi?tag=$1 [L,R,NE]
# RewriteMap fix-chars int:noescape
+ RewriteCond %{REQUEST_URI} ^/(Access\.html|Developer\.html|Reporting\.html|server-request\.html|server-control\.html|server-refcard\.html).* [NC]
+ RewriteRule .* - [L]
+ RewriteRule ^/([0-9]+)$ /cgi-bin/bugreport.cgi?bug=$1 [L,R,NE]
RewriteRule ^/([^/]+)$ /cgi-bin/pkgreport.cgi?pkg=$1 [L,R,NE]
<IfModule mod_perl.c>
<Directory /org/bugs.debian.org/cgi-bin/sql>
-#! /usr/bin/perl -w
+#! /usr/bin/perl
+
+use warnings;
use strict;
use MLDBM qw(DB_File Storable);
use Fcntl;
O_CREAT|O_RDWR, 0644
or die "tie binsrc.idx: $!";
-while (<>) {
- my ($binname, $binver, $binarch, $srcname, $srcver) = split;
- print STDERR "$binname/$binver/$binarch => $srcname/$srcver\n";
+my @files = @ARGV;
+
- # see MLDBM(3pm)/BUGS
- my $tmp = $srcbin{$srcname};
- push @{$tmp->{$srcver}}, [$binname, $binver, $binarch];
- $srcbin{$srcname} = $tmp;
+for my $file (@files) {
+ my $fh = IO::File->new($file,'r') or
+ die "Unable to open $file for reading: $!";
+ while (<$fh>) {
+ chomp;
+ next unless length $_;
+ my ($binname, $binver, $binarch, $srcname, $srcver) = split;
+ # if $srcver is not defined, this is probably a broken
+ # .debinfo file [they were causing #686106, see commit
+ # 49c85ab8 in dak.] Basically, $binarch didn't get put into
+ # the file, so we'll fudge it from the filename.
+ if (not defined $srcver) {
+ ($srcname,$srcver) = ($binarch,$srcname);
+ ($binarch) = $file =~ /_([^\.]+)\.debinfo/;
+ }
+ print STDERR "$binname/$binver/$binarch => $srcname/$srcver\n";
+ # see MLDBM(3pm)/BUGS
+ my $tmp = $srcbin{$srcname};
+ push @{$tmp->{$srcver}}, [$binname, $binver, $binarch];
+ $srcbin{$srcname} = $tmp;
- $tmp = $binsrc{$binname};
- $tmp->{$binver}{$binarch} = [$srcname, $srcver];
- $binsrc{$binname} = $tmp;
+ $tmp = $binsrc{$binname};
+ $tmp->{$binver}{$binarch} = [$srcname, $srcver];
+ $binsrc{$binname} = $tmp;
+ }
}
<head>
<title>$gProject $gBugs - Accessing the logs</title>
<link rev="made" href="mailto:$gMaintainerEmail">
+ <link rel="stylesheet" href="$gWebHostBugDir/css/bugs.css" type="text/css">
</head>
<body>
<head>
<title>$gProject - Developers' information</title>
<link rev="made" href="mailto:$gMaintainerEmail">
+ <link rel="stylesheet" href="$gWebHostBugDir/css/bugs.css" type="text/css">
</head>
<body>
<head>
<title>$gProject $gBugs - how to report a $gBug</title>
<link rev="made" href="mailto:$gMaintainerEmail">
+ <link rel="stylesheet" href="$gWebHostBugDir/css/bugs.css" type="text/css">
</head>
<body>
<head>
<title>$gProject $gBug tracking system</title>
<link rev="made" href="mailto:$gMaintainerEmail">
+ <link rel="stylesheet" href="$gWebHostBugDir/css/bugs.css" type="text/css">
</head>
<body>
<head>
<title>$gProject $gBug system - control mail server commands</title>
<link rev="made" href="mailto:$gMaintainerEmail">
+ <link rel="stylesheet" href="$gWebHostBugDir/css/bugs.css" type="text/css">
</head>
<body>
<head>
<title>$gProject $gBug system - mail servers' reference card</title>
<link rev="made" href="mailto:$gMaintainerEmail">
+ <link rel="stylesheet" href="$gWebHostBugDir/css/bugs.css" type="text/css">
</head>
<body>
<head>
<title>$gProject $gBug system - $gBug logs by mail server</title>
<link rev="made" href="mailto:$gMaintainerEmail">
+ <link rel="stylesheet" href="$gWebHostBugDir/css/bugs.css" type="text/css">
</head>
<body>
$gMirrors = ""; # comma separated list
$gPackagePages = "packages.debian.org"; # e.g. packages.debian.org
$gSubscriptionDomain = "packages.something"; # e.g. packages.qa.debian.org
-
+$gBugSubscriptionDomain = ""; # e.g. lists.debian.org (requires one list per bug
+ # of the name bugs=<bugno>@<gBugSubscriptionDomain>
# Project identification
$gProject = "Something"; # e.g. Debian
$gProjectTitle = "Something DebBugs Test"; # e.g. Debian GNU/Linux
$gDoneList = "bug-done-list"; # e.g. debian-bugs-closed
$gRequestList = "bug-request-list"; # e.g. debian-bugs-dist
$gSubmitterList = "bug-submitter-list"; # e.g. debian-bugs-dist
+$gStrongList = "bug-strong-list"; # e.g. debian-bugs-dist
$gControlList = "bug-control-list"; # e.g. debian-bugs-dist
$gSummaryList = "bug-summary-list"; # e.g. debian-bugs-reports
$gMirrorList = "bug-mirrors-list"; # sends to all mirrors
sub sani {
my ($in) = @_;
carp "You should be using HTML::Entities instead.";
- $in =~ s/([<>&"])/$saniarray{$1}/g;
+ $in =~ s/([<>&"])/\&$saniarray{$1};/g;
return $in;
}
use warnings;
use strict;
-use POSIX qw(strftime);
+use locale;
+use POSIX qw(strftime locale_h);
+setlocale(LC_TIME, "C");
use IO::File;
}
my $ref=-1;
-$subject =~ s/^Re:\s*//i; $_= $subject."\n";
+# remove Re: from the subject line
+$subject =~ s/^Re:\s*//i;
+# remove remaining mailing list name markers from the subject line if
+# this appears to be a message that has traversed a mailing list
+if (exists $header{'list-id'} or exists $header{'list-subscribe'} or
+ (exists $header{'precedence'} and defined $header{'precedence'} and
+ $header{'precedence'} eq 'bulk') or
+ exists $header{'mailing-list'} or exists $header{'list-processor-version'}
+ ){
+ # if a mailing list didn't match any of the above, it's probably
+ # so horribly configured that we wouldn't be able to figure it out
+ # anyway.
+ $subject =~ s/^\[.*\]\s*//i;
+}
+$_= $subject."\n";
if (not defined $tryref and m/^Bug ?\#(\d+)\D/i) {
$tryref = $1 if $1 > 0;
}
# Add bug mailing list to $generalbcc as appropriate
# This array is used to specify bcc in the cases where we're using create_mime_message.
- my @generalbcc = (@generalcc,@addsrcaddrs,"bugs=$ref\@$gListDomain");
- my $generalbcc = join(', ', $generalcc, @addsrcaddrs,"bugs=$ref\@$gListDomain");
+ my @generalbcc = @generalcc;
+ if (defined $config{subscription_domain} and length $config{subscription_domain}) {
+ @generalbcc = (@generalbcc, @addsrcaddrs);
+ }
+ if (defined $config{bug_subscription_domain} and length $config{bug_subscription_domain}) {
+ @generalbcc = (@generalbcc, "bugs=$ref\@$config{bug_subscription_domain}");
+ }
+ my $generalbcc = join(', ', @generalbcc);
$generalbcc =~ s/\s+\n\s+/ /g;
$generalbcc =~ s/^\s+/ /; $generalbcc =~ s/\s+$//;
if (length $generalbcc) {$generalbcc = "Bcc: $generalbcc\n"};
}
# Send mail to the per bug list subscription too
-push @bccs, "bugs=$ref\@$gListDomain";
+if (defined $config{bug_subscription_domain} and length $config{bug_subscription_domain}) {
+ push @bccs, "bugs=$ref\@$config{bug_subscription_domain}";
+}
if (defined $pheader{source}) {
# Prefix source versions with the name of the source package. They
$p =~ /((?:src:)?[a-z0-9.+-]+)/;
$p = $1;
next unless defined $p;
- if (defined $gSubscriptionDomain) {
+ if (defined $config{subscription_domain} and length $config{subscription_domain}) {
my @source = binary_to_source(binary => $p,
source_only => 1,
);
if (@source) {
push @addsrcaddrs,
- map {"$_\@$gSubscriptionDomain"} @source;
+ map {"$_\@$config{subscription_domain}"} @source;
} else {
- push @addsrcaddrs, "$p\@$gSubscriptionDomain";
+ push @addsrcaddrs, "$p\@$config{subscription_domain}";
}
}
# this is utter hackery until we switch to Debbugs::Recipients
use warnings;
use strict;
+use locale;
+use POSIX qw(strftime locale_h);
+setlocale(LC_TIME, "C");
use Debbugs::Config qw(:globals :config);
last;
}
} else {
+ print {$transcript} "Unknown command or malformed arguments to command.\n";
$errors++;
if (++$unknowns >= 5) {
print {$transcript} "Too many unknown commands, stopping here.\n\n";
$gHTMLStamp = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<HTML><HEAD><TITLE>$gProject $gBugs - timestamp page</TITLE>
<LINK REV=\"made\" HREF=\"mailto:$gMaintainerEmail\">
+ <LINK REL=\"stylesheet\" HREF=\"$gWebHostBugDir/css/bugs.css\" TYPE=\"text/css\">
</HEAD>$gHTMLStart<H1>Is this $gBug log or mirror up to date?</H1>
Unlike all the other $gBug pages, this small timestamp page is updated every
$gFullIndex = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<HTML><HEAD><TITLE>$gProject $gBugs - full index</TITLE>
<LINK REV=\"make\" HREF=\"mailto:$gMaintainerEmail\">
+ <LINK REL=\"stylesheet\" HREF=\"$gWebHostBugDir/css/bugs.css\" TYPE=\"text/css\">
</HEAD>$gHTMLStart<H1>$gProject $gBug report logs - index</H1>
This index gives access to $gBugs sent to <CODE>submit\@$gEmailDomain</CODE>
$gJunkIndex = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<HTML><HEAD><TITLE>$gProject $gBug reports - Junk</TITLE>
<LINK REV=\"made\" HREF=\"$gMaintainerEmail\">
+ <LINK REL=\"stylesheet\" HREF=\"$gWebHostBugDir/css/bugs.css\" TYPE=\"text/css\">
</HEAD>$gHTMLStart<H1>$gProject $gBug reports - Junk</H1>
This is the index page for logs of messages not associated with a specific
$gMaintIndex = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<HTML><HEAD><TITLE>$gProject $gBug reports by maintainer</TITLE>
<LINK REF=\"made\" HREF=\"mailto:$gMaintainerEmail\">
+ <LINK REL=\"stylesheet\" HREF=\"$gWebHostBugDir/css/bugs.css\" TYPE=\"text/css\">
</HEAD>$gHTMLStart<H1>$gProject $gBug reports by maintainer</H1>
This page lists the package maintainers against whose packages there are
$gPackageIndex = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<HTML><HEAD><TITLE>$gProject $gBug reports by package</TITLE>
<LINK REF=\"made\" HREF=\"mailto:$gMaintainerEmail\">
+ <LINK REL=\"stylesheet\" HREF=\"$gWebHostBugDir/css/bugs.css\" TYPE=\"text/css\">
</HEAD>$gHTMLStart<H1>$gProject $gBug reports by package</H1>
This page lists the package against which there are outstanding, forwarded or
$gSummaryIndex = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<HTML><HEAD><TITLE>$gProject $gBug report logs - summary index</TITLE>
<LINK REF=\"made\" HREF=\"mailto:$gMaintainerEmail\">
+ <LINK REL=\"stylesheet\" HREF=\"$gWebHostBugDir/css/bugs.css\" TYPE=\"text/css\">
</HEAD>$gHTMLStart<H1>$gProject $gBug report logs - summary index</H1>
This summary index briefly lists $gBugs sent to <CODE>submit\@$gEmailDomain
$gPackageLog = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<HTML><HEAD><TITLE>$gProject $gBug report logs - index by package</TITLE>
<LINK REF=\"made\" HREF=\"mailto:$gMaintainerEmail\">
+ <LINK REL=\"stylesheet\" HREF=\"$gWebHostBugDir/css/bugs.css\" TYPE=\"text/css\">
</HEAD>$gHTMLStart<H1>$gProject $gBug report logs - index by package</H1>
This summary index briefly lists $gBugs sent to <CODE>submit\@$gEmailDomain
$gPseudoIndex = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<HTML><HEAD><TITLE>$gProject $gBug report pseudo-packages</TITLE>
<LINK REF=\"made\" HREF=\"mailto:$gMaintainerEmail\">
+ <LINK REL=\"stylesheet\" HREF=\"$gWebHostBugDir/css/bugs.css\" TYPE=\"text/css\">
</HEAD>$gHTMLStart<H1>$gProject $gBug report pseudo-packages</H1>
This page lists the pseudo-packages available for use in the