+# This module is part of debbugs, and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
package Debbugs::Config;
qw($gMaintainer $gMaintainerWebpage $gMaintainerEmail $gUnknownMaintainerEmail),
qw($gSubmitList $gMaintList $gQuietList $gForwardList),
qw($gDoneList $gRequestList $gSubmitterList $gControlList),
+ qw($gStrongList),
+ qw($gPackageVersionRe),
qw($gSummaryList $gMirrorList $gMailer $gBug),
qw($gBugs $gRemoveAge $gSaveOldBugs $gDefaultSeverity),
qw($gShowSeverities $gBounceFroms $gConfigDir $gSpoolDir),
qw($gIncomingDir $gWebDir $gDocDir $gMaintainerFile),
qw($gMaintainerFileOverride $gPseudoDescFile $gPackageSource),
qw($gVersionPackagesDir $gVersionIndex $gBinarySourceMap $gSourceBinaryMap),
- qw($gSendmail $gLibPath),
+ qw($gVersionTimeIndex),
+ qw($gSendmail $gLibPath $gSpamScan @gExcludeFromControl),
qw(%gSeverityDisplay @gTags @gSeverityList @gStrongSeverities),
qw(%gSearchEstraier),
+ qw(@gPostProcessall @gRemovalDefaultDistributionTags @gRemovalDistributionTags @gRemovalArchitectures),
],
text => [qw($gBadEmailPrefix $gHTMLTail $gHTMLExpireNote),
],
# read in the files;
%config = ();
+# untaint $ENV{DEBBUGS_CONFIG_FILE} if it's owned by us
+# This enables us to test things that are -T.
+if (exists $ENV{DEBBUGS_CONFIG_FILE}) {
+ if (${[stat($ENV{DEBBUGS_CONFIG_FILE})]}[4] = $<) {
+ $ENV{DEBBUGS_CONFIG_FILE} =~ /(.+)/;
+ $ENV{DEBBUGS_CONFIG_FILE} = $1;
+ }
+ else {
+ die "Environmental variable DEBBUGS_CONFIG_FILE set, and $ENV{DEBBUGS_CONFIG_FILE} is not owned by the user running this script.";
+ }
+}
read_config(exists $ENV{DEBBUGS_CONFIG_FILE}?$ENV{DEBBUGS_CONFIG_FILE}:'/etc/debbugs/config');
=item email_domain $gEmailDomain
set_default(\%config,'package_pages',undef);
+=item package_pages $gUsertagPackageDomain
+
+Domain where where usertags of packages belong; defaults to $gPackagePages
+
+=cut
+
+set_default(\%config,'usertag_package_domain',$config{package_pages});
+
+
=item subscription_domain $gSubscriptionDomain
Domain where subscriptions to package lists happen
set_default(\%config, 'control_list', 'bug-control-list');
set_default(\%config, 'summary_list', 'bug-summary-list');
set_default(\%config, 'mirror_list', 'bug-mirror-list');
+set_default(\%config, 'strong_list', 'bug-strong-list');
=head2 Misc Options
[qw(unstable testing)]
);
+=item removal_architectures
+
+For removal/archival purposes, these architectures are consulted if
+there is more than one architecture applicable. If the bug is in a
+package not in any of these architectures, the architecture actually
+checked is undefined.
+
+Default: qw(i386 amd64 arm ppc sparc alpha);
+
+=cut
+
+set_default(\%config,'removal_architectures',
+ [qw(i386 amd64 arm ppc sparc alpha)]
+ );
+
+
+=item package_name_re
+
+The regex which will match a package name
+
+Default: '[a-z0-9][a-z0-9\.+-]+'
+
+=cut
+
+set_default(\%config,'package_name_re',
+ '[a-z0-9][a-z0-9\.+-]+');
+
+=item package_version_re
+
+The regex which will match a package version
+
+Default: '[A-Za-z0-9:+\.-]+'
+
+=cut
+
+set_default(\%config,'package_version_re',
+ '[A-Za-z0-9:+\.~-]+');
+
+
+=item control_internal_requester
+
+This address is used by Debbugs::Control as the request address which
+sent a control request for faked log messages.
+
+Default:"Debbugs Internal Request <$config{maintainer_email}>"
+
+=cut
+
+set_default(\%config,'control_internal_requester',
+ "Debbugs Internal Request <$config{maintainer_email}>",
+ );
+
+=item control_internal_request_addr
+
+This address is used by Debbugs::Control as the address to which a
+faked log message request was sent.
+
+Default: "internal_control\@$config{email_domain}";
+
+=cut
+
+set_default(\%config,'control_internal_request_addr',
+ 'internal_control@'.$config{email_domain},
+ );
+
+
+=item exclude_from_control
+
+Addresses which are not allowed to send messages to control
+
+=cut
+
+set_default(\%config,'exclude_from_control',[]);
+
+
+
+
set_default(\%config,'default_severity','normal');
set_default(\%config,'show_severities','critical, grave, normal, minor, wishlist');
set_default(\%config,'strong_severities',[qw(critical grave)]);
set_default(\%config,'pseudo_desc_file',$config{config_dir}.'/pseudo-packages.description');
set_default(\%config,'package_source',$config{config_dir}.'/indices/sources');
+
+=item version_packages_dir
+
+Location where the version package information is kept; defaults to
+spool_dir/../versions/pkg
+
+=cut
+
set_default(\%config,'version_packages_dir',$config{spool_dir}.'/../versions/pkg');
+=item version_time_index
+
+Location of the version/time index file. Defaults to
+spool_dir/../versions/idx/versions_time.idx if spool_dir/../versions
+exists; otherwise defaults to undef.
+
+=cut
+
+
+set_default(\%config,'version_time_index', -d $config{spool_dir}.'/../versions' ? $config{spool_dir}.'/../versions/indices/versions_time.idx' : undef);
+
+=item version_index
+
+Location of the version index file. Defaults to
+spool_dir/../versions/indices/versions.idx if spool_dir/../versions
+exists; otherwise defaults to undef.
+
+=cut
+
+set_default(\%config,'version_index',-d $config{spool_dir}.'/../versions' ? $config{spool_dir}.'/../versions/indices/versions.idx' : undef);
+
+=item binary_source_map
+
+Location of the binary -> source map. Defaults to
+spool_dir/../versions/indices/bin2src.idx if spool_dir/../versions
+exists; otherwise defaults to undef.
+
+=cut
+
+set_default(\%config,'binary_source_map',-d $config{spool_dir}.'/../versions' ? $config{spool_dir}.'/../versions/indices/binsrc.idx' : undef);
+
+=item source_binary_map
+
+Location of the source -> binary map. Defaults to
+spool_dir/../versions/indices/src2bin.idx if spool_dir/../versions
+exists; otherwise defaults to undef.
+
+=cut
+
+set_default(\%config,'source_binary_map',-d $config{spool_dir}.'/../versions' ? $config{spool_dir}.'/../versions/indices/srcbin.idx' : undef);
+
+
+
+set_default(\%config,'post_processall',[]);
+
=item sendmail
Sets the sendmail binary to execute; defaults to /usr/lib/sendmail
=cut
-set_default(\%config,'sendmail',$config{sendmail},'/usr/lib/sendmail');
+set_default(\%config,'sendmail','/usr/lib/sendmail');
+
+=item spam_scan
+
+Whether or not spamscan is being used; defaults to 0 (not being used
+
+=cut
+
+set_default(\%config,'spam_scan',0);
+
=back
set_default(\%config,'bad_email_prefix','');
+
+=item text_instructions
+
+This gives more information about bad e-mails to receive.in
+
+=cut
+
+set_default(\%config,'text_instructions',$config{bad_email_prefix});
+
=item html_tail
This shows up at the end of (most) html pages
or die "Unable to open configuration file $conf_file for reading: $!";
# A new version configuration file must have a comment as its first line
my $first_line = <$fh>;
- my ($version) = $first_line =~ /VERSION:\s*(\d+)/i;
+ my ($version) = defined $first_line?$first_line =~ /VERSION:\s*(\d+)/i:undef;
if (defined $version) {
if ($version == 1) {
# Do something here;
my ($hash_name,$glob_name,$glob_type) = __convert_name($variable);
my $var_glob = $cpt->varglob($glob_name);
my $value; #= $cpt->reval("return $variable");
- #print STDERR $value,qq(\n);
+ # print STDERR "$variable $value",qq(\n);
if (defined $var_glob) {{
no strict 'refs';
if ($glob_type eq '%') {
- $value = {%{*{$var_glob}}};
+ $value = {%{*{$var_glob}}} if defined *{$var_glob}{HASH};
}
elsif ($glob_type eq '@') {
- $value = [@{*{$var_glob}}];
+ $value = [@{*{$var_glob}}] if defined *{$var_glob}{ARRAY};
}
else {
$value = ${*{$var_glob}};
$varname =~ s/(Html|Cgi)/uc($1)/ge;
}
# update the configuration value
- if (not $USING_GLOBALS and not exists $config{$option}) {
- $config{$option} = $value;
+ if (not $USING_GLOBALS and not exists $config->{$option}) {
+ $config->{$option} = $value;
}
elsif ($USING_GLOBALS) {{
no strict 'refs';
# Need to check if a value has already been set in a global
if (defined *{"Debbugs::Config::${varname}"}) {
- $config{$option} = *{"Debbugs::Config::${varname}"};
+ $config->{$option} = *{"Debbugs::Config::${varname}"};
+ }
+ else {
+ $config->{$option} = $value;
}
}}
if ($USING_GLOBALS) {{
no strict 'refs';
- *{"Debbugs::Config::${varname}"} = $config{$option};
+ *{"Debbugs::Config::${varname}"} = $config->{$option};
}}
}