NAME

WebService::OPNsense::Firewall::Filter - Firewall filter rule controller

VERSION

version 0.001

SYNOPSIS

my $filter = $opn->firewall_filter;

# Search for rules
my $rules = $filter->search_rule(
    current => 1,
    rowCount => 50,
);

# Add a new rule
my $result = $filter->add_rule({
    rule => {
        description => 'Allow HTTP',
        action      => 'pass',
        protocol    => 'TCP',
        source_net  => 'any',
        destination_port => '80',
    },
});

DESCRIPTION

Manages firewall filter rules.

NAME

WebService::OPNsense::Firewall::Filter - Firewall filter rule controller

CONSTANTS

SNAT mode constants are available from WebService::OPNsense::Constants:

$SNAT_ADVANCED
$SNAT_AUTOMATIC
$SNAT_DISABLED
$SNAT_HYBRID

Use them when setting the SNAT mode via the snat_mode field.

METHODS

search_rule

my $results = $filter->search_rule(%params);

Searches for firewall rules. Returns the raw API response hashref.

get_rule

my $rule = $filter->get_rule($uuid);

Returns a single rule by UUID.

add_rule

my $result = $filter->add_rule($rule_data);

Creates a new firewall rule. $rule_data should be a hashref matching the OPNsense API format (e.g. { rule => { ... } }).

set_rule

my $result = $filter->set_rule($uuid, $rule_data);

Updates an existing rule.

del_rule

my $result = $filter->del_rule($uuid);

Deletes a rule by UUID.

toggle_rule

my $result = $filter->toggle_rule($uuid, $enabled);

Enables or disables a rule.

apply

my $result = $filter->apply;
my $result = $filter->apply($rollback_revision);

Applies pending changes. Optionally specify a rollback revision.

savepoint

my $result = $filter->savepoint;

Creates a configuration savepoint for rollback.

cancel_rollback

my $result = $filter->cancel_rollback($revision);

Cancels a pending rollback.

move_rule_before

my $result = $filter->move_rule_before($selected_uuid, $target_uuid);

Moves a rule before another rule in the rule order.

toggle_rule_log

my $result = $filter->toggle_rule_log($uuid, $log);

Toggles the log flag for a rule. $log should be 0 or 1.

download_rules

my $rules = $filter->download_rules;

Downloads all firewall rules.

upload_rules

my $result = $filter->upload_rules($rules_data);

Uploads firewall rules from a data structure.

get_interface_list

my $interfaces = $filter->get_interface_list;

Returns a list of available network interfaces.

list_categories

my $categories = $filter->list_categories;

Returns a list of available rule categories.

list_network_select_options

my $options = $filter->list_network_select_options;

Returns selectable network options for rule creation.

list_port_select_options

my $options = $filter->list_port_select_options;

Returns selectable port options for rule creation.

AUTHOR

Dean Hamstead <dean@fragfest.com.au>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2026 by Dean Hamstead.

This is free software, licensed under:

The MIT (X11) License