Marc van der Wal 30cf2e5a9f API REST pour l’émetteur de mails
On peut générer des clefs DKIM mais on ne peut pas encore choisir quel
sélecteur utiliser pour signer les mails sortants.

Une fois DKIM activé pour un domaine, on ne peut pas non plus le
désactiver.
2023-10-25 15:50:23 +02:00

75 lines
1.9 KiB
Perl

package Email::SpoofingDemo::API::Sender;
use Dancer2;
use Email::SpoofingDemo::DKIM qw(read_signing_table read_key_table
write_signing_table write_key_table
generate_dkim_key);
our $VERSION = '0.1';
my $signing_table = "/etc/opendkim/signing_table";
my $key_table = "/etc/opendkim/key_table";
my $key_dir = "/etc/opendkim/keys";
get '/' => sub { return "Welcome"; };
get '/installed-keys' => sub {
my $signing_table = read_signing_table($signing_table);
my $key_table = read_key_table($key_table);
my @result;
for my $domain (sort keys %$key_table) {
push @result, {
domain => $domain,
available_keys => $key_table->{$domain},
current_key => $signing_table->{$domain}
};
}
return \@result;
};
post '/generate-dkim-key' => sub {
my $domain = body_parameters->get('domain');
my $selector = body_parameters->get('selector');
my $key_size = body_parameters->get('key_size');
# Generate key
my $txt_data = generate_dkim_key($domain, $selector, $key_size,
$key_table, $key_dir, $signing_table);
my $txt_record = sprintf("%-30s. TXT %s",
qq{$selector._domainkey.$domain},
$txt_data);
return {
txt_record => $txt_record
};
};
post '/send-email/confirmation_email' => sub {
system("/home/expediteur/scripts/send_confirmation_email.sh");
my $status = ($? >> 8);
if ($status != 0) {
status(500);
return "E-mail script exited with status $status";
}
};
post '/send-email/newsletter' => sub {
system("/home/expediteur/scripts/send_newsletter.sh");
my $status = ($? >> 8);
if ($status != 0) {
status(500);
return "E-mail script exited with status $status";
}
};
any qr{.*} => sub { status 'not_found'; return "Invalid route" };
dance;
true;