Changeset 483

Show
Ignore:
Timestamp:
04/02/06 07:34:03
Author:
miyagawa
Message:

automatic rewrite if config key matches /password/ Refs #91

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/plagger/lib/Plagger/Plugin.pm

    r482 r483  
    3636    } 
    3737 
    38     if (my $params = $self->encrypt_config) { 
    39         $params = [ $params ] unless ref $params; 
     38    $self->walk_config_encryption(); 
     39
    4040 
    41         for my $key (@$params) { 
    42             my $config = $self->conf; 
    43             # support foo/bar/baz 
    44             while ($key =~ s!^(\w+)/!!) { 
    45                 $config = $config->{$1}; 
     41sub walk_config_encryption { 
     42    my $self = shift; 
     43    my $conf = $self->conf; 
     44 
     45    $self->do_walk($conf); 
     46
     47 
     48sub do_walk { 
     49    my($self, $data) = @_; 
     50    return unless defined($data) && ref $data; 
     51 
     52    if (ref($data) eq 'HASH') { 
     53        for my $key (keys %$data) { 
     54            if ($key =~ /password/) { 
     55                $self->decrypt_config($data, $key); 
    4656            } 
    47             my $decrypted = Plagger::Crypt->decrypt($config->{$key}); 
    48             if ($decrypted eq $config->{$key}) { 
    49                 Plagger->context->add_rewrite_task($key, $decrypted, Plagger::Crypt->encrypt($decrypted, 'base64')); 
    50             } else { 
    51                 $config->{$key} = $decrypted; 
    52             } 
     57            $self->do_walk($data->{$key}); 
     58        } 
     59    } elsif (ref($data) eq 'ARRAY') { 
     60        for my $value (@$data) { 
     61            $self->do_walk($value); 
    5362        } 
    5463    } 
    5564} 
    5665 
    57 sub encrypt_config { } 
     66sub decrypt_config { 
     67    my($self, $data, $key) = @_; 
     68 
     69    my $decrypted = Plagger::Crypt->decrypt($data->{$key}); 
     70    if ($decrypted eq $data->{$key}) { 
     71        Plagger->context->add_rewrite_task($key, $decrypted, Plagger::Crypt->encrypt($decrypted, 'base64')); 
     72    } else { 
     73        $data->{$key} = $decrypted; 
     74    } 
     75
    5876 
    5977sub conf { $_[0]->{conf} } 
  • trunk/plagger/lib/Plagger/Plugin/Subscription/Bloglines.pm

    r482 r483  
    1010    $self->class_id . '-' . $self->conf->{username}; 
    1111} 
    12  
    13 sub encrypt_config { 'password' } 
    1412 
    1513sub register {