Changeset 11777 for lang/perl/Punc

Show
Ignore:
Timestamp:
05/17/08 20:38:05 (6 months ago)
Author:
mizzy
Message:

r67@puppet: miya | 2008-05-16 01:40:43 +0900
Moooooooooooooooose

Location:
lang/perl/Punc/trunk
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Punc/trunk/bin/puncd

    r11518 r11777  
    3535}); 
    3636 
    37 $daemon->run; 
     37$daemon->prepare->run; 
  • lang/perl/Punc/trunk/bin/puncmasterd

    r11734 r11777  
    3232}); 
    3333 
    34 $daemon->run; 
     34$daemon->prepare->run; 
    3535 
     36 
  • lang/perl/Punc/trunk/lib/Punc/Client.pm

    r11749 r11777  
    4141 
    4242    return Punc::Client::Request->new({ 
    43         conf   => $self->{conf}, 
    44         hosts  => $self->{hosts}, 
     43        conf   => $self->conf, 
     44        hosts  => $self->hosts, 
    4545        module => $module, 
    4646    }); 
  • lang/perl/Punc/trunk/lib/Punc/Daemon.pm

    r11749 r11777  
    88use UNIVERSAL::require; 
    99 
    10 sub new { 
    11     my ( $class, $args ) = @_; 
     10has 'port'     => ( is => 'rw', isa => 'Int' ); 
     11has 'confdir'  => ( is => 'rw', isa => 'Str' ); 
     12has 'conf'     => ( is => 'rw', isa => 'HashRef' ); 
     13has 'context'  => ( is => 'rw', isa => 'Punc' ); 
     14has 'ssl_key'  => ( is => 'rw', isa => 'Str' ); 
     15has 'ssl_cert' => ( is => 'rw', isa => 'Str' ); 
     16has 'ca_cert'  => ( is => 'rw', isa => 'Str' ); 
     17has 'daemon' => ( is => 'rw', isa => 'HTTP::Daemon::SSL' ); 
    1218 
    13     my $self = { 
    14         %$args, 
    15     }; 
     19sub prepare { 
     20    my $self = shift; 
    1621 
    17     bless $self, $class; 
     22    my $ssl_verify_mode = ref $self eq 'Punc::Master::Daemon' ? 0x00 : 0x07; 
     23 
     24    $self->daemon( 
     25        HTTP::Daemon::SSL->new( 
     26            LocalPort       => $self->port, 
     27            ReuseAddr       => 1, 
     28            SSL_key_file    => $self->ssl_key, 
     29            SSL_cert_file   => $self->ssl_cert, 
     30            SSL_ca_file     => $self->ca_cert || '', 
     31            SSL_verify_mode => $ssl_verify_mode, 
     32        ) 
     33    ); 
     34 
     35    die $! unless $self->daemon; 
     36 
     37    return $self; 
    1838} 
    1939 
    2040sub run { 
    2141    my $self = shift; 
    22  
    23     my $ssl_verify_mode = ref $self eq 'Punc::Master::Daemon' ? 0x00 : 0x07; 
    24  
    25     my $d = HTTP::Daemon::SSL->new( 
    26         LocalPort       => $self->{port}, 
    27         ReuseAddr       => 1, 
    28         SSL_key_file    => $self->{ssl_key}, 
    29         SSL_cert_file   => $self->{ssl_cert}, 
    30         SSL_ca_file     => $self->{ca_cert} || '', 
    31         SSL_verify_mode => $ssl_verify_mode, 
    32     ) || die $!; 
     42    my $d = $self->daemon; 
    3343 
    3444    print "Please contact me at: <URL:", $d->url, ">\n"; 
  • lang/perl/Punc/trunk/lib/Punc/Master/Daemon.pm

    r11749 r11777  
    1616    my $self = $class->SUPER::new(@_); 
    1717 
    18     $self->{ca} = Punc::Master::CA->new({ 
    19         ssldir => File::Spec->catdir($self->{confdir}, 'ssl'), 
    20     }); 
     18    $self->ca( 
     19        Punc::Master::CA->new({ 
     20            ssldir => File::Spec->catdir($self->confdir, 'ssl'), 
     21        }) 
     22      ); 
    2123 
    22     $self->_find_or_create_ca_cert($self->{context}); 
     24    $self->_find_or_create_ca_cert($self->context); 
    2325 
    24     $self->{ssl_key}  = File::Spec->catfile($self->{ca}->{cadir}, 'ca.key'); 
    25     $self->{ssl_cert} = File::Spec->catfile($self->{ca}->{cadir}, 'ca.cert'), 
     26    $self->ssl_key( File::Spec->catfile($self->ca->cadir, 'ca.key') ); 
     27    $self->ssl_cert( File::Spec->catfile($self->ca->cadir, 'ca.cert') ); 
    2628    return $self; 
    2729} 
     
    2931sub _find_or_create_ca_cert { 
    3032    my ( $self, $c ) = @_; 
    31     my $cadir = $self->{ca}->{cadir}; 
     33    my $cadir = $self->ca->cadir; 
    3234    unless ( -d $cadir ) { 
    3335        mkpath($cadir); 
     
    4648    # 鍵作成 
    4749    my $rsa = Crypt::OpenSSL::RSA->generate_key(1024); 
    48     open my $out, '>', File::Spec->catfile($self->{ca}->{cadir}, 'ca.key') or die $!; 
     50    open my $out, '>', File::Spec->catfile($self->ca->cadir, 'ca.key') or die $!; 
    4951    print $out $rsa->get_private_key_string; 
    5052    close $out; 
     
    6668 
    6769    my $pem = $x509->sign($privkey, 'sha1'); 
    68     open my $cert, '>', File::Spec->catfile($self->{ca}->{cadir}, 'ca.cert') or die $!; 
     70    open my $cert, '>', File::Spec->catfile($self->ca->cadir, 'ca.cert') or die $!; 
    6971    print $cert $pem; 
    7072    close $cert; 
    7173 
    72     open my $srl, '>', File::Spec->catfile($self->{ca}->{cadir}, 'ca.srl') or die $!; 
     74    open my $srl, '>', File::Spec->catfile($self->ca->cadir, 'ca.srl') or die $!; 
    7375    print $srl '01'; 
    7476    close $srl; 
     
    8183    # CSR 取得 
    8284    my $csr = $args->{csr}; 
    83     my $hostname = $self->{ca}->get_hostname_from_csr($csr); 
     85    my $hostname = $self->ca->get_hostname_from_csr($csr); 
    8486 
    85     my $csrdir = $self->{ca}->{csrdir}; 
     87    my $csrdir = $self->ca->csrdir; 
    8688    mkpath($csrdir) unless -d $csrdir; 
    8789 
    88     $self->{ca}->save_csr($csr); 
     90    $self->ca->save_csr($csr); 
    8991 
    9092    my $autosign = $self->{conf}->{autosign} || ''; 
     
    101103 
    102104    open my $cert_fh, '<', File::Spec->catfile( 
    103         $self->{ca}->{certdir}, 
     105        $self->ca->certdir, 
    104106        "${hostname}.cert" 
    105107    ) or do { return { error => $! } }; 
     
    109111 
    110112    open my $cacert_fh, '<', File::Spec->catfile( 
    111         $self->{ca}->{cadir}, 
     113        $self->ca->cadir, 
    112114        'ca.cert' 
    113115    ) or do { return { error => $! } }; 
  • lang/perl/Punc/trunk/lib/Punc/Slave/Daemon.pm

    r11749 r11777  
    1111with 'Punc::Daemon::Role'; 
    1212 
     13has 'keydir'  => ( is => 'rw', isa => 'Str' ); 
     14has 'certdir' => ( is => 'rw', isa => 'Str' ); 
     15has 'ssldir'  => ( is => 'rw', isa => 'Str' ); 
     16has 'csrdir'  => ( is => 'rw', isa => 'Str' ); 
     17 
    1318sub new { 
    1419    my $class = shift; 
    1520    my $self = $class->SUPER::new(@_); 
    1621 
    17     $self->_find_or_request_cert($self->{context}); 
     22    $self->_find_or_request_cert($self->context); 
    1823 
    19     my $fqdn = $self->{context}->fact('fqdn'); 
     24    my $fqdn = $self->context->fact('fqdn'); 
    2025 
    21     $self->{ssl_key}  = File::Spec->catfile($self->{keydir}, "${fqdn}.key"); 
    22     $self->{ssl_cert} = File::Spec->catfile($self->{certdir}, "${fqdn}.cert"); 
    23     $self->{ca_cert}  = File::Spec->catfile($self->{certdir}, 'ca.cert'); 
     26    $self->ssl_key( File::Spec->catfile($self->keydir, "${fqdn}.key") ); 
     27    $self->ssl_cert( File::Spec->catfile($self->certdir, "${fqdn}.cert") ); 
     28    $self->ca_cert( File::Spec->catfile($self->certdir, 'ca.cert') ); 
     29 
    2430    return $self; 
    2531} 
     
    2834    my ( $self, $c ) = @_; 
    2935 
    30     $self->{ssldir}  = File::Spec->catdir($self->{confdir}, 'ssl'); 
    31     $self->{certdir} = File::Spec->catdir($self->{ssldir}, 'certs'); 
    32     $self->{keydir}  = File::Spec->catdir($self->{ssldir}, 'keys'); 
    33     $self->{csrdir}  = File::Spec->catdir($self->{ssldir}, 'csrs'); 
     36    $self->ssldir( File::Spec->catdir($self->confdir, 'ssl') ); 
     37    $self->certdir( File::Spec->catdir($self->ssldir, 'certs') ); 
     38    $self->keydir( File::Spec->catdir($self->ssldir, 'keys') ); 
     39    $self->csrdir( File::Spec->catdir($self->ssldir, 'csrs') ); 
    3440 
    35     mkpath($self->{certdir}) unless -d $self->{certdir}; 
    36     mkpath($self->{csrdir}) unless -d $self->{csrdir}; 
    37     unless ( -d $self->{keydir} ) { 
    38         mkpath($self->{keydir}); 
    39         chmod oct('0700'), $self->{keydir}; 
     41    mkpath($self->certdir) unless -d $self->certdir; 
     42    mkpath($self->csrdir) unless -d $self->csrdir; 
     43    unless ( -d $self->keydir ) { 
     44        mkpath($self->keydir); 
     45        chmod oct('0700'), $self->keydir; 
    4046    } 
    4147 
    42     my $cert = File::Spec->catfile($self->{certdir}, $c->fact('fqdn') . '.cert'); 
     48    my $cert = File::Spec->catfile($self->certdir, $c->fact('fqdn') . '.cert'); 
    4349    unless ( -f $cert ) { 
    4450        $self->_request_cert($c); 
     
    5460    $req->sign(); 
    5561 
    56     $req->write_pem_req( File::Spec->catfile( $self->{csrdir}, "${fqdn}.csr" ) ); 
    57     $req->write_pem_pk( File::Spec->catfile( $self->{keydir}, "${fqdn}.key" ) ); 
     62    $req->write_pem_req( File::Spec->catfile( $self->csrdir, "${fqdn}.csr" ) ); 
     63    $req->write_pem_pk( File::Spec->catfile( $self->keydir, "${fqdn}.key" ) ); 
    5864 
    5965    my $client = JSON::RPC::Client->new; 
    6066    $client->ua->timeout(0); 
    61     my $host   = $self->{conf}->{puncmaster_host} || 'localhost'; 
    62     my $port   = $self->{conf}->{puncmaster_port} || 7081; 
     67    my $host   = $self->conf->{puncmaster_host} || 'localhost'; 
     68    my $port   = $self->conf->{puncmaster_port} || 7081; 
    6369    my $url    = "https://$host:$port/cert"; 
    6470