App-Acmeman
view release on metacpan or search on metacpan
lib/App/Acmeman/Apache/Layout/slackware.pm view on Meta::CPAN
package App::Acmeman::Apache::Layout::slackware;
use strict;
use warnings;
use Carp;
use parent 'App::Acmeman::Apache::Layout';
use Apache::Config::Preproc;
use App::Acmeman::Log qw(:all);
use File::BackupCopy;
our $PRIORITY = 10;
sub new {
my $class = shift;
my $ap = shift;
if ($ap->server_config eq '/etc/httpd/httpd.conf'
&& -d '/etc/httpd/extra') {
return $class->SUPER::new($ap,
incdir => '/etc/httpd/extra',
restart_command => '/etc/rc.d/rc.httpd restart'
);
}
}
sub post_setup {
my ($self,$filename) = @_;
my $master_config_file = $self->config_file;
my $app = new Apache::Config::Preproc(
$master_config_file,
'-no-comment-grouping',
-expand => [ 'locus',
{ 'include' => [ server_root => $self->apache->server_root ] },
{ 'macro' => [
'keep' => [ qw(LetsEncryptChallenge
LetsEncryptReference
LetsEncryptSSL)
]
]
}
])
or do {
debug(1, "can't parse apache configuration: $Apache::Admin::Config::ERROR");
return;
};
my $need_macro_module = !$self->apache_modules('macro');
my $letsencrypt_macro_loaded = grep {
$_->value =~ /^letsencrypt(?:challenge|reference|ssl)/i
} $app->select('section', 'Macro');
debug(3, "Need macro module? ".($need_macro_module?'yes':'no'));
debug(3, "Need letsencrypt macro? ".
($letsencrypt_macro_loaded==0
? 'yes'
: ($letsencrypt_macro_loaded==3
? 'no' : 'perhaps')));
my $last_loadmodule;
my $stop_search;
my $last_master_locus;
my $include_text = "Include $filename";
foreach my $node ($app->select) {
if (!$stop_search) {
if (($node->locus->filenames)[0] eq $master_config_file) {
$last_master_locus = $node->locus;
}
if ($node->type eq 'section') {
if ($node->name =~ /^virtualhost$/i) {
$stop_search = $last_master_locus;
last;
}
}
}
if ($node->type eq 'comment') {
if ($node->value =~ m{^\s*loadmodule\s}) {
( run in 2.037 seconds using v1.01-cache-2.11-cpan-ff9377addf4 )