]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Config.pm
import all variables except config
[debbugs.git] / Debbugs / Config.pm
index eabb24eb4f13cc036e208b03812da1b4089b9c74..cb30eda342c09a0704e9edfc5e1d762a5d7c12c8 100644 (file)
@@ -61,7 +61,7 @@ BEGIN {
                                 qw($gVersionTimeIndex),
                                 qw($gSimpleVersioning),
                                 qw($gCVETracker),
-                                qw($gSendmail $gLibPath $gSpamScan @gExcludeFromControl),
+                                qw($gSendmail @gSendmailArguments $gLibPath $gSpamScan @gExcludeFromControl),
                                 qw(%gSeverityDisplay @gTags @gSeverityList @gStrongSeverities),
                                 qw(%gTagsSingleLetter),
                                 qw(%gSearchEstraier),
@@ -78,10 +78,11 @@ BEGIN {
                                ],
                     text     => [qw($gBadEmailPrefix $gHTMLTail $gHTMLExpireNote),
                                 ],
+                     cgi => [qw($gLibravatarUri $gLibravatarUriOptions)],
                     config   => [qw(%config)],
                    );
      @EXPORT_OK = ();
-     Exporter::export_ok_tags(qw(globals text config));
+     Exporter::export_ok_tags(keys %EXPORT_TAGS);
      $EXPORT_TAGS{all} = [@EXPORT_OK];
      $ENV{HOME} = '' if not defined $ENV{HOME};
 }
@@ -103,13 +104,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');
 
@@ -362,6 +365,38 @@ Default: list_domain
 set_default(\%config,'bug_subscription_domain',$config{list_domain});
 
 
+=head2 CGI Options
+
+=over
+
+=item libravatar_uri $gLibravatarUri
+
+URI to a libravatar configuration. If empty or undefined, libravatar
+support will be disabled. Defaults to
+http://cdn.libravatar.org/avatar/ which uses a federated Avatar system
+and falls back to gravatar if necessary.
+
+=cut
+
+set_default(\%config,'libravatar_uri',"http://cdn.libravatar.org/avatar/");
+
+=item libravatar_uri_options $gLibravatarUriOptions
+
+Options to append to the md5_hex of the e-mail. This sets the default
+avatar used when an avatar isn't available. Currently defaults to
+'?d=retro', which causes a bitmap-looking avatar to be displayed for
+unknown e-mails.
+
+Other options which make sense include ?d=404, ?d=wavatar, etc. See
+the API of libravatar for details.
+
+=cut
+
+set_default(\%config,'libravatar_uri_options','?d=retro');
+
+
+=back
+
 =head2 Misc Options
 
 =over
@@ -849,6 +884,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<qw(-oem -oi)>.
+
+=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
@@ -1017,7 +1060,7 @@ 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";
+        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.
@@ -1046,7 +1089,7 @@ sub read_config{
          die "Error in configuration file: $@" if $@;
          # Now what we do is check out the contents of %EXPORT_TAGS to see exactly which variables
          # we want to glob in from the configuration file
-         for my $variable (@{$EXPORT_TAGS{globals}}) {
+         for my $variable (map {$_ =~ /^(?:config|all)$/ ? () : @{$EXPORT_TAGS{$_}}} keys %EXPORT_TAGS) {
               my ($hash_name,$glob_name,$glob_type) = __convert_name($variable);
               my $var_glob = $cpt->varglob($glob_name);
               my $value; #= $cpt->reval("return $variable");