Add Support for opnsense alias api

This commit is contained in:
2024-10-29 20:39:25 +01:00
parent dd8ef4e9e5
commit ac6d10a5da

View File

@ -2,6 +2,7 @@ package My::parser::addtolist;
use strict;
use warnings;
use DBI;
use LWP::UserAgent;
sub new {
my $class = shift;
@ -43,6 +44,7 @@ sub addtoblacklist {
$sth->execute($host,$asn,$iso) || return { retval => 0, retmsg => 'Failed to execute statement in addtoblacklist '.DBI::errstr };
system "/sbin/pfctl -q -t $self->{'block_table'} -T add $host";
system "/sbin/pfctl -q -k $host";
$self->opnsense_api_add($host);
return { retval => 1, retmsg => "Added pf rule" };
} else {
return { retval => 1, retmsg => "Recently got $rows entries" };
@ -62,4 +64,45 @@ sub addtorejectlist {
return { retval => 1, retmsg => "Added to reject list" };
}
sub opnsense_api_add {
my $self = shift;
my $host = shift;
my $opnsense = $self->{'config'}->get_as_single_val('config', 'opnsense_host');
unless($opnsense) {
print 'No opnsense host configured',"\n";
return;
}
my $opnsense_alias = $self->{'config'}->get_as_single_val('config', 'opnsense_alias');
unless ($opnsense_alias) {
print 'No configured alias for opnsense firewall hosts in config (opnsense_alias)'."\n";
return;
}
my $api_key = $self->{'config'}->get_as_single_val('config', 'api_key');
my $api_secret = $self->{'config'}->get_as_single_val('config', 'api_secret');
unless($api_key) {
print 'No configured api key in config'."\n";
return;
}
unless($api_secret) {
print 'No configured api secret in config'."\n";
return;
}
my $ua = LWP::UserAgent->new;
$ua->agent("parserfilter");
$ua->timeout(1);
my $req = HTTP::Request->new(POST => 'http://'.$opnsense.'/api/firewall/alias_util/add/'.$opnsense_alias);
$req->authorization_basic($api_key, $api_secret);
$req->content_type('application/json');
$req->content('{"address":"'.$host.'"}');
my $res = $ua->request($req);
unless ($res->is_success) {
print $res->status_line."\n";
print $req->content."\n";
}
}
1;