NAME

WWW::Hetzner::Cloud::API::Firewalls - Hetzner Cloud Firewalls API

VERSION

version 0.002

SYNOPSIS

my $cloud = WWW::Hetzner::Cloud->new(token => $token);

# List firewalls
my $firewalls = $cloud->firewalls->list;

# Create firewall with rules
my $fw = $cloud->firewalls->create(
    name  => 'web-firewall',
    rules => [
        {
            direction   => 'in',
            protocol    => 'tcp',
            port        => '22',
            source_ips  => ['0.0.0.0/0', '::/0'],
        },
        {
            direction   => 'in',
            protocol    => 'tcp',
            port        => '80',
            source_ips  => ['0.0.0.0/0', '::/0'],
        },
    ],
);

# Apply to server
$cloud->firewalls->apply_to_resources($fw->id,
    { type => 'server', server => { id => 123 } },
);

# Delete
$cloud->firewalls->delete($fw->id);

DESCRIPTION

This module provides the API for managing Hetzner Cloud firewalls. All methods return WWW::Hetzner::Cloud::Firewall objects.

list

my $firewalls = $cloud->firewalls->list;
my $firewalls = $cloud->firewalls->list(label_selector => 'env=prod');

Returns arrayref of WWW::Hetzner::Cloud::Firewall objects.

get

my $firewall = $cloud->firewalls->get($id);

Returns WWW::Hetzner::Cloud::Firewall object.

create

my $fw = $cloud->firewalls->create(
    name     => 'my-firewall',  # required
    rules    => [ ... ],        # optional
    labels   => { ... },        # optional
    apply_to => [ ... ],        # optional
);

Creates firewall. Returns WWW::Hetzner::Cloud::Firewall object.

update

$cloud->firewalls->update($id, name => 'new-name', labels => { ... });

Updates firewall. Returns WWW::Hetzner::Cloud::Firewall object.

delete

$cloud->firewalls->delete($id);

Deletes firewall.

set_rules

$cloud->firewalls->set_rules($id, \@rules);

Set firewall rules, replacing all existing rules.

apply_to_resources

$cloud->firewalls->apply_to_resources($id,
    { type => 'server', server => { id => 123 } },
);

Apply firewall to resources.

remove_from_resources

$cloud->firewalls->remove_from_resources($id,
    { type => 'server', server => { id => 123 } },
);

Remove firewall from resources.

SUPPORT

Issues

Please report bugs and feature requests on GitHub at https://github.com/Getty/p5-www-hetzner/issues.

IRC

Join #kubernetes on irc.perl.org or message Getty directly.

CONTRIBUTING

Contributions are welcome! Please fork the repository and submit a pull request.

AUTHOR

Torsten Raudssus <torsten@raudssus.de>

COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Torsten Raudssus.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.