OPNsense Firewall API - Blockliste (Alias) befüllen

Begonnen von psycho160, 03 April 2023, 14:15:35

Vorheriges Thema - Nächstes Thema

psycho160

Hallo,
anbei ein Codesnipsel von mir um über FHEM z.B. eine Blockliste auf einer OPNsense Firewall zu befüllen. - siehe API Dokumentation https://docs.opnsense.org/development/api.html

Natürlich ist noch viel mehr möglich, für mich war jetzt mal wichtig die Blockliste über FHEM befüllen zu können.

Vorsicht: Das Befüllen über die API wird sofort auf der Firewall committed - also ohne "Apply" drücken zu müssen.


defmod myBlockCmd cmdalias set myDummy addBlockedIP.* AS {\
my $name = "OPNsense-API";;\
my $postdata = {\
        username    => "DEIN-KEY",\
password => "DEIN-API-SECRET"\
    };;\
\
my $alias = "NAME-DES-ALIAS-oder-BLOCKLISTE";; \
my $ip = $EVTPART2;;\
\
if ($ip =~ /\b(\d{1,3}(?:\.\d{1,3}){3})\b/){\
my $item = {\
address => $ip\
};;\
\
  $item = encode_json ($item);;\
\
  my $param = {\
  url => "https://DEINE-FIREWALL-IP/api/firewall/alias_util/add/$alias",\
  timeout => 8,\
  method => "POST",\
  header => { "User-Agent" => "Mozilla/1.22", "Content-Type" => "application/json"},\
  user    => $postdata->{username},\
  pwd    => $postdata->{password},\
  data => $item,\
  sslargs => { SSL_verify_mode => 0, SSL_version => 'SSLv23' },\
  callback => sub(){ \
my ($param, $err, $data) = @_;;\
if($err ne "" || $data eq "") {\
  Log3 $name, 3, "API-Call: Error while requesting URL - $err";;;;\
} else {\
  # versuche JSON zu parsen\
  my $decoded_data = eval { decode_json($data) };;\
  if ($@) {\
  Log3 $name, 3, "OPNsense decode_json failed, invalid json. error: $@ ";;\
  }\
  else {\
  my $return = $decoded_data->{"status"};;\
\
  Log3 $name, 3, "OPNsense-API:add $ip to blocklist $alias - Status: $return";;\
  }\
  }\
  } \
  };;\
  # send\
  HttpUtils_NonblockingGet($param);;\
} else {\
return "$ip - ist keine gültige IP-Adresse\n";;\
    }\
}


setstate myBlockCmd defined


Mein Dummy zum Befüllen:
Du darfst diesen Dateianhang nicht ansehen.
- 2013@FHEM - 2020 Setup: Pi 4 4GB Systeme: Shelly, Tasmota, Zigbee und mittlerweile nur noch wenig Homematic. Entwicker von: tado-FHEM Modul (perlcritic 3 ^^)(https://git.wolfmajer.at/Public/FHEM-Tado)