Add Support for opnsense alias api
This commit is contained in:
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user