X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FConfig.pm;h=87e61a2f54de7efabac7526b12fda83529065a79;hb=1df784bf875bea9bc14b82d4e0bfc413ba202f06;hp=5c3e6439523ca4185f0fafa56b523ce1f88c6317;hpb=343464a69a83b5b2f1e956386482baaaccbc835c;p=debbugs.git diff --git a/Debbugs/Config.pm b/Debbugs/Config.pm index 5c3e643..87e61a2 100644 --- a/Debbugs/Config.pm +++ b/Debbugs/Config.pm @@ -50,6 +50,7 @@ BEGIN { qw($gSubmitList $gMaintList $gQuietList $gForwardList), qw($gDoneList $gRequestList $gSubmitterList $gControlList), qw($gStrongList), + qw($gBugSubscriptionDomain), qw($gPackageVersionRe), qw($gSummaryList $gMirrorList $gMailer $gBug), qw($gBugs $gRemoveAge $gSaveOldBugs $gDefaultSeverity), @@ -58,13 +59,19 @@ BEGIN { qw($gMaintainerFileOverride $gPseudoMaintFile $gPseudoDescFile $gPackageSource), qw($gVersionPackagesDir $gVersionIndex $gBinarySourceMap $gSourceBinaryMap), qw($gVersionTimeIndex), - qw($gSendmail $gLibPath $gSpamScan @gExcludeFromControl), + qw($gSimpleVersioning), + qw($gCVETracker), + qw($gSendmail @gSendmailArguments $gLibPath $gSpamScan @gExcludeFromControl), qw(%gSeverityDisplay @gTags @gSeverityList @gStrongSeverities), + qw(%gTagsSingleLetter), qw(%gSearchEstraier), qw(%gDistributionAliases), + qw(%gObsoleteSeverities), qw(@gPostProcessall @gRemovalDefaultDistributionTags @gRemovalDistributionTags @gRemovalArchitectures), qw(@gRemovalStrongSeverityDefaultDistributionTags), + qw(@gAffectsDistributionTags), qw(@gDefaultArchitectures), + qw($gMachineName), qw($gTemplateDir), qw($gDefaultPackage), qw($gSpamMaxThreads $gSpamSpamsPerThread $gSpamKeepRunning $gSpamScan $gSpamCrossassassinDb), @@ -96,13 +103,15 @@ use Safe; # 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] = $<) { +# This causes all sorts of problems for mirrors of debbugs; disable +# it. +# 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."; - } +# } +# 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'); @@ -199,9 +208,21 @@ Domain where subscriptions to package lists happen =cut - set_default(\%config,'subscription_domain',undef); + +=item cve_tracker $gCVETracker + +URI to CVE security tracker; in bugreport.cgi, CVE-2001-0002 becomes +linked to http://$config{cve_tracker}CVE-2001-002 + +Default: security-tracker.debian.org/tracker/ + +=cut + +set_default(\%config,'cve_tracker','security-tracker.debian.org/tracker/'); + + =back =cut @@ -267,11 +288,27 @@ Email address where packages with an unknown maintainer will be sent Default: $config{maintainer_email} +=cut + +set_default(\%config,'unknown_maintainer_email',$config{maintainer_email}); + +=item machine_name + +The name of the machine that this instance of debbugs is running on +(currently used for debbuging purposes and web page output.) + +Default: qx(hostname --fqdn) + =back =cut -set_default(\%config,'unknown_maintainer_email',$config{maintainer_email}); +my $_old_path = $ENV{PATH}; +$ENV{PATH} = '/bin:/usr/bin:/usr/local/bin'; +my $temp_hostname = qx(hostname --fqdn); +chomp $temp_hostname; +set_default(\%config,'machine_name',$temp_hostname); +$ENV{PATH} = $_old_path; =head2 BTS Mailing Lists @@ -296,7 +333,7 @@ set_default(\%config,'unknown_maintainer_email',$config{maintainer_email}); =item mirror_list -=back +=item strong_list =cut @@ -312,15 +349,58 @@ set_default(\%config, 'summary_list', 'bug-summary-list'); set_default(\%config, 'mirror_list', 'bug-mirror-list'); set_default(\%config, 'strong_list', 'bug-strong-list'); +=item bug_subscription_domain + +Domain of list for messages regarding a single bug; prefixed with +bug=${bugnum}@ when bugs are actually sent out. Set to undef or '' to +disable sending messages to the bug subscription list. + +Default: list_domain + +=back + +=cut + +set_default(\%config,'bug_subscription_domain',$config{list_domain}); + + =head2 Misc Options =over +=item mailer + +Name of the mailer to use + +Default: exim + =cut set_default(\%config,'mailer','exim'); + + +=item bug + +Default: bug + +=item ubug + +Default: ucfirst($config{bug}); + +=item bugs + +Default: bugs + +=item ubugs + +Default: ucfirst($config{ubugs}); + +=cut + set_default(\%config,'bug','bug'); +set_default(\%config,'ubug',ucfirst($config{bug})); set_default(\%config,'bugs','bugs'); +set_default(\%config,'ubugs',ucfirst($config{bugs})); =item remove_age @@ -401,6 +481,37 @@ set_default(\%config,'default_architectures', [qw(i386 amd64 arm powerpc sparc alpha)] ); +=item affects_distribution_tags + +List of tags which restrict the buggy state to a set of distributions. + +The set of distributions that are buggy is the intersection of the set +of distributions that would be buggy without reference to these tags +and the set of these tags that are distributions which are set on a +bug. + +Setting this to [] will remove this feature. + +Default: @{$config{distributions}} + +=cut + +set_default(\%config,'affects_distribution_tags', + [@{$config{distributions}}], + ); + +=item removal_unremovable_tags + +Bugs which have these tags set cannot be archived + +Default: [] + +=cut + +set_default(\%config,'removal_unremovable_tags', + [], + ); + =item removal_distribution_tags Tags which specifiy distributions to check @@ -531,27 +642,118 @@ set_default(\%config,'exclude_from_control',[]); +=item default_severity + +The default severity of bugs which have no severity set + +Default: normal + +=cut 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,'severity_list',[qw(critical grave normal wishlist)]); + +=item severity_display + +A hashref of severities and the informative text which describes them. + +Default: + + {critical => "Critical $config{bugs}", + grave => "Grave $config{bugs}", + normal => "Normal $config{bugs}", + wishlist => "Wishlist $config{bugs}", + } + +=cut + set_default(\%config,'severity_display',{critical => "Critical $config{bugs}", grave => "Grave $config{bugs}", + serious => "Serious $config{bugs}", + important=> "Important $config{bugs}", normal => "Normal $config{bugs}", + minor => "Minor $config{bugs}", wishlist => "Wishlist $config{bugs}", }); +=item show_severities + +A scalar list of the severities to show + +Defaults to the concatenation of the keys of the severity_display +hashlist with ', ' above. + +=cut + +set_default(\%config,'show_severities',join(', ',keys %{$config{severity_display}})); + +=item strong_severities + +An arrayref of the serious severities which shoud be emphasized + +Default: [qw(critical grave)] + +=cut + +set_default(\%config,'strong_severities',[qw(critical grave)]); + +=item severity_list + +An arrayref of a list of the severities + +Defaults to the keys of the severity display hashref + +=cut + +set_default(\%config,'severity_list',[keys %{$config{severity_display}}]); + +=item obsolete_severities + +A hashref of obsolete severities with the replacing severity + +Default: {} + +=cut + +set_default(\%config,'obsolete_severities',{}); + +=item tags + +An arrayref of the tags used + +Default: [qw(patch wontfix moreinfo unreproducible fixed)] and also +includes the distributions. + +=cut + set_default(\%config,'tags',[qw(patch wontfix moreinfo unreproducible fixed), @{$config{distributions}} ]); +set_default(\%config,'tags_single_letter', + {patch => '+', + wontfix => '', + moreinfo => 'M', + unreproducible => 'R', + fixed => 'F', + } + ); + set_default(\%config,'bounce_froms','^mailer|^da?emon|^post.*mast|^root|^wpuser|^mmdf|^smt.*|'. '^mrgate|^vmmail|^mail.*system|^uucp|-maiser-|^mal\@|'. '^mail.*agent|^tcpmail|^bitmail|^mailman'); set_default(\%config,'config_dir',dirname(exists $ENV{DEBBUGS_CONFIG_FILE}?$ENV{DEBBUGS_CONFIG_FILE}:'/etc/debbugs/config')); set_default(\%config,'spool_dir','/var/lib/debbugs/spool'); + +=item usertag_dir + +Directory which contains the usertags + +Default: $config{spool_dir}/user + +=cut + +set_default(\%config,'usertag_dir',$config{spool_dir}.'/user'); set_default(\%config,'incoming_dir','incoming'); set_default(\%config,'web_dir','/var/lib/debbugs/www'); set_default(\%config,'doc_dir','/var/lib/debbugs/www/txt'); @@ -569,11 +771,24 @@ set_default(\%config,'template_dir','/usr/share/debbugs/templates'); set_default(\%config,'maintainer_file',$config{config_dir}.'/Maintainers'); set_default(\%config,'maintainer_file_override',$config{config_dir}.'/Maintainers.override'); -set_default(\%config,'pseudo_maint_file',$config{config_dir}.'/pseudo-packages.maint'); +set_default(\%config,'source_maintainer_file',$config{config_dir}.'/Source_maintainers'); +set_default(\%config,'source_maintainer_file_override',undef); +set_default(\%config,'pseudo_maint_file',$config{config_dir}.'/pseudo-packages.maintainers'); set_default(\%config,'pseudo_desc_file',$config{config_dir}.'/pseudo-packages.description'); set_default(\%config,'package_source',$config{config_dir}.'/indices/sources'); +=item simple_versioning + +If true this causes debbugs to ignore version information and just +look at whether a bug is done or not done. Primarily of interest for +debbugs installs which don't track versions. defaults to false. + +=cut + +set_default(\%config,'simple_versioning',0); + + =item version_packages_dir Location where the version package information is kept; defaults to @@ -636,6 +851,14 @@ Sets the sendmail binary to execute; defaults to /usr/lib/sendmail set_default(\%config,'sendmail','/usr/lib/sendmail'); +=item sendmail_arguments + +Default arguments to pass to sendmail. Defaults to C. + +=cut + +set_default(\%config,'sendmail_arguments',[qw(-oem -oi)]); + =item spam_scan Whether or not spamscan is being used; defaults to 0 (not being used @@ -803,6 +1026,10 @@ set_default(\%config,'html_expire_note', sub read_config{ my ($conf_file) = @_; + if (not -e $conf_file) { + print STDERR "configuration file '$conf_file' doesn't exist; skipping it\n" if $DEBUG; + return; + } # first, figure out what type of file we're reading in. my $fh = new IO::File $conf_file,'r' or die "Unable to open configuration file $conf_file for reading: $!"; @@ -860,7 +1087,7 @@ sub __convert_name{ $hash_name =~ s/^([\$\%\@])g//; my $glob_type = $1; my $glob_name = 'g'.$hash_name; - $hash_name =~ s/(HTML|CGI)/ucfirst(lc($1))/ge; + $hash_name =~ s/(HTML|CGI|CVE)/ucfirst(lc($1))/ge; $hash_name =~ s/^([A-Z]+)/lc($1)/e; $hash_name =~ s/([A-Z]+)/'_'.lc($1)/ge; return $hash_name unless wantarray;