-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
BTW, note that plugins *should* be able to push their own entries onto the $conf->{registered_commands} list. That is, in my opinion, much cleaner than the current parse_config() API, and may be worthwhile as a way for future plugins to do configuration. May need a little work, though ;) - --j. [EMAIL PROTECTED] writes: > Author: felicity > Date: Mon Oct 4 15:16:21 2004 > New Revision: 53755 > > Modified: > spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Hashcash.pm > spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm > Log: > the hashcash and razor2 plugins use the standard parser functions to > set values from the configuration. however since there's no way to > deal with the errors in a standard manner right now (see bug 3869), > set a standard-ish function in the plugin itself to deal with issues. > basically the same code as the parser itself. > > Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Hashcash.pm > ============================================================================== > --- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Hashcash.pm > (original) > +++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Hashcash.pm Mon Oct > 4 15:16:21 2004 > @@ -68,6 +68,7 @@ > my $conf = $opts->{conf}; > my $key = $opts->{key}; > my $value = $opts->{value}; > + my $line = $opts->{line}; > > =over 4 > > @@ -78,7 +79,11 @@ > =cut > > if ( $key eq 'use_hashcash' ) { > - $conf->{use_hashcash} = $value+0; return 1; > + $self->handle_parser_error($opts, > + Mail::SpamAssassin::Conf::Parser::set_numeric_value($conf, $key, > $value, $line) > + ); > + $self->inhibit_further_callbacks(); > + return 1; > } > > =item hashcash_accept [EMAIL PROTECTED] ... > @@ -100,7 +105,9 @@ > =cut > > if ( $key eq 'hashcash_accept' ) { > - $conf->add_to_addrlist ('hashcash_accept', split (/\s+/, $value)); > return 1; > + $conf->add_to_addrlist ('hashcash_accept', split (/\s+/, $value)); > + $self->inhibit_further_callbacks(); > + return 1; > } > > =item hashcash_doublespend_path /path/to/file (default: > ~/.spamassassin/hashcash_seen) > @@ -116,7 +123,11 @@ > =cut > > if ( $key eq 'hashcash_doublespend_path' ) { > - $conf->{hashcash_doublespend_path} = $value; return 1; > + $self->handle_parser_error($opts, > + Mail::SpamAssassin::Conf::Parser::set_string_value($conf, $key, > $value, $line) > + ); > + $self->inhibit_further_callbacks(); > + return 1; > } > > =item hashcash_doublespend_file_mode (default: 0700) > @@ -130,11 +141,47 @@ > =cut > > if ( $key eq 'hashcash_doublespend_file_mode' ) { > - $conf->{hashcash_doublespend_file_mode} = $value+0; return 1; > + $self->handle_parser_error($opts, > + Mail::SpamAssassin::Conf::Parser::set_numeric_value($conf, $key, > $value, $line) > + ); > + $self->inhibit_further_callbacks(); > + return 1; > } > > return 0; > } > + > +sub handle_parser_error { > + my($self, $opts, $ret_value) = @_; > + > + my $conf = $opts->{conf}; > + my $key = $opts->{key}; > + my $value = $opts->{value}; > + my $line = $opts->{line}; > + > + my $msg = ''; > + > + if ($ret_value && $ret_value eq $Mail::SpamAssassin::Conf::INVALID_VALUE) { > + $msg = "config: SpamAssassin failed to parse line, ". > + "\"$value\" is not valid for \"$key\", ". > + "skipping: $line"; > + } > + elsif ($ret_value && $ret_value eq > $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE) { > + $msg = "config: SpamAssassin failed to parse line, ". > + "no value provided for \"$key\", ". > + "skipping: $line"; > + } > + > + return unless $msg; > + > + if ($conf->{lint_rules}) { > + warn $msg."\n"; > + } else { > + dbg($msg); > + } > + $conf->{errors}++; > + return; > +} > > ########################################################################### > > > Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm > ============================================================================== > --- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm (original) > +++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Razor2.pm Mon Oct 4 > 15:16:21 2004 > @@ -87,7 +87,9 @@ > =cut > > if ($key eq 'razor_timeout') { > - Mail::SpamAssassin::Conf::Parser::set_numeric_value($conf, $key, $value, > $line); > + $self->handle_parser_error($opts, > + Mail::SpamAssassin::Conf::Parser::set_numeric_value($conf, $key, > $value, $line) > + ); > $self->inhibit_further_callbacks(); > return 1; > } > @@ -100,13 +102,48 @@ > =cut > > if ($key eq 'razor_config') { > - Mail::SpamAssassin::Conf::Parser::set_string_value($conf, $key, $value, > $line); > + $self->handle_parser_error($opts, > + Mail::SpamAssassin::Conf::Parser::set_string_value($conf, $key, > $value, $line) > + ); > $self->inhibit_further_callbacks(); > return 1; > } > > return 0; > } > + > +sub handle_parser_error { > + my($self, $opts, $ret_value) = @_; > + > + my $conf = $opts->{conf}; > + my $key = $opts->{key}; > + my $value = $opts->{value}; > + my $line = $opts->{line}; > + > + my $msg = ''; > + > + if ($ret_value && $ret_value eq $Mail::SpamAssassin::Conf::INVALID_VALUE) { > + $msg = "config: SpamAssassin failed to parse line, ". > + "\"$value\" is not valid for \"$key\", ". > + "skipping: $line"; > + } > + elsif ($ret_value && $ret_value eq > $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE) { > + $msg = "config: SpamAssassin failed to parse line, ". > + "no value provided for \"$key\", ". > + "skipping: $line"; > + } > + > + return unless $msg; > + > + if ($conf->{lint_rules}) { > + warn $msg."\n"; > + } else { > + dbg($msg); > + } > + $conf->{errors}++; > + return; > +} > + > > sub razor2_lookup { > my ($self, $permsgstatus, $fulltext) = @_; -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) Comment: Exmh CVS iD8DBQFBYc/kQTcbUG5Y7woRAgkuAJ9ynN6sERrMEweAGeV6NepvcdwLfQCaAqsf VwUBJHDV3V55WGxahmfZIV8= =FDJi -----END PGP SIGNATURE-----