App-Acmeman
view release on metacpan or search on metacpan
lib/App/Acmeman/Config.pm view on Meta::CPAN
package App::Acmeman::Config;
use strict;
use warnings;
use Carp;
use parent 'Config::Parser::Ini';
use Text::ParseWords;
use App::Acmeman::Log qw(debug_level :sysexits);
use File::Spec;
sub new {
my $class = shift;
my $filename = shift;
my %args;
if (-e $filename) {
$args{filename} = $filename;
}
my $self = $class->SUPER::new(%args);
if (!$args{filename}) {
$self->commit or croak "configuration failed";
}
$self
}
sub mangle {
my $self = shift;
my $err;
if (debug_level() == 0 && $self->core->verbose) {
debug_level($self->core->verbose);
}
$self->set(qw(core files default))
unless $self->is_set(qw(core files));
unless ($self->is_set(qw(files))) {
if ($self->get(qw(core files)) ne 'default') {
$self->error("section files." . $self->get(qw(core files))." not defined");
++$err;
}
}
unless ($self->is_set(qw(files default))) {
$self->set(qw(files default type), 'split');
$self->set(qw(files default key-file),
'/etc/ssl/acme/$domain/privkey.pem');
$self->set(qw(files default certificate-file),
'/etc/ssl/acme/$domain/cert.pem');
$self->set(qw(files default ca-file),
'/etc/ssl/acme/$domain/ca.pem');
}
if (my $fnode = $self->getnode('files')) {
while (my ($k, $v) = each %{$fnode->subtree}) {
$v->set('files', $k, 'type', 'split')
unless $v->has_key('type');
if ($v->subtree('type') eq 'single') {
unless ($v->has_key('certificate-file')) {
$self->error("files.$k.certificate-file not defined");
++$err;
} else {
if ($v->has_key('key-file')) {
$self->error("files.$k.key-file ignored");
}
if ($v->has_key('ca-file')) {
$self->error("files.$k.ca-file ignored");
}
}
} else {
unless ($v->has_key('key-file')) {
$self->error("files.$k.key-file not defined");
++$err;
}
unless ($v->has_key('certificate-file')) {
$self->error("files.$k.ca-file not defined");
++$err;
}
}
}
( run in 0.445 second using v1.01-cache-2.11-cpan-98e64b0badf )