X-Git-Url: https://git.proxmox.com/?p=pve-firewall.git;a=blobdiff_plain;f=src%2FPVE%2FAPI2%2FFirewall%2FHost.pm;fp=src%2FPVE%2FAPI2%2FFirewall%2FHost.pm;h=4ae0d0f2176483998f7cc77f83cbd46372e9465e;hp=680bc5820a17ff08f3ae0c14a85c73861d73d86e;hb=a959126d67e2ab67582a5746e2e5268cc50f57fc;hpb=12f3796ee9543697fb0d5568eb5ce4e1c1154942 diff --git a/src/PVE/API2/Firewall/Host.pm b/src/PVE/API2/Firewall/Host.pm index 680bc58..4ae0d0f 100644 --- a/src/PVE/API2/Firewall/Host.pm +++ b/src/PVE/API2/Firewall/Host.pm @@ -3,6 +3,7 @@ package PVE::API2::Firewall::Host; use strict; use warnings; use PVE::JSONSchema qw(get_standard_option); +use PVE::RPCEnvironment; use PVE::Firewall; use PVE::API2::Firewall::Rules; @@ -42,6 +43,7 @@ __PACKAGE__->register_method({ my $result = [ { name => 'rules' }, { name => 'options' }, + { name => 'log' }, ]; return $result; @@ -71,4 +73,60 @@ __PACKAGE__->register_method({ return PVE::Firewall::copy_opject_with_digest($hostfw_conf->{options}); }}); +__PACKAGE__->register_method({ + name => 'log', + path => 'log', + method => 'GET', + description => "Read firewall log", + proxyto => 'node', + permissions => { + check => ['perm', '/nodes/{node}', [ 'Sys.Syslog' ]], + }, + protected => 1, + parameters => { + additionalProperties => 0, + properties => { + node => get_standard_option('pve-node'), + start => { + type => 'integer', + minimum => 0, + optional => 1, + }, + limit => { + type => 'integer', + minimum => 0, + optional => 1, + }, + }, + }, + returns => { + type => 'array', + items => { + type => "object", + properties => { + n => { + description=> "Line number", + type=> 'integer', + }, + t => { + description=> "Line text", + type => 'string', + } + } + } + }, + code => sub { + my ($param) = @_; + + my $rpcenv = PVE::RPCEnvironment::get(); + my $user = $rpcenv->get_user(); + my $node = $param->{node}; + + my ($count, $lines) = PVE::Tools::dump_logfile("/var/log/pve-firewall.log", $param->{start}, $param->{limit}); + + $rpcenv->set_result_attrib('total', $count); + + return $lines; + }}); + 1;