spf-dkim-dmarc-demo/recipient/web-api/lib/Email/SpoofingDemo/API/Recipient.pm

51 lines
1.1 KiB
Perl

#
# SPDX-FileCopyrightText: 2023 Afnic
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
package Email::SpoofingDemo::API::Recipient;
use Dancer2;
use Email::SpoofingDemo::PostfixConfig qw(spf_dkim_dmarc_status
set_spf_dkim_dmarc_status);
our $VERSION = '0.1';
get '/' => sub { return "Welcome"; };
get '/status' => sub {
my $status = spf_dkim_dmarc_status();
my %result = map {
$_ => ($status->{$_} ? 'enabled' : 'disabled')
} (keys %$status);
return \%result;
};
put '/status' => sub {
my $spf_enabled = body_parameters->get('spf');
my $dkim_enabled = body_parameters->get('dkim');
my $dmarc_enabled = body_parameters->get('dmarc');
unless (defined $spf_enabled
and defined $dkim_enabled
and defined $dmarc_enabled) {
status 400;
return;
}
set_spf_dkim_dmarc_status(
$spf_enabled eq 'enabled',
$dkim_enabled eq 'enabled',
$dmarc_enabled eq 'enabled'
);
return "OK";
};
any qr{.*} => sub { status 'not_found'; return "Invalid route" };
dance;
true;