From 37a03e720c39eebb267a9a892f8c43cc48ebf006 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Fri, 2 Jun 2023 08:02:00 -0700 Subject: [PATCH] Look in /etc/firewalld/services as well --- firewalld/firewalld-lib.pl | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/firewalld/firewalld-lib.pl b/firewalld/firewalld-lib.pl index 7c785f3da..cf50db2be 100644 --- a/firewalld/firewalld-lib.pl +++ b/firewalld/firewalld-lib.pl @@ -89,18 +89,21 @@ $service =~ s/[^A-Za-z0-9\-]//g; # my $out = &backquote_command("$config{'firewall_cmd'} --service=".quotemeta($service)." --get-ports --permanent &1"); # Check for file in directory containing all services as xml files -my $services_dir = "/usr/lib/firewalld/services/"; -my $service_file = "$services_dir/$service.xml"; my @ports; my @protos; -if (-r $service_file) { - my $lref = &read_file_lines($service_file, 1); - foreach my $l (@{$lref}) { - $l =~ /\S+)["']\s+port=["'](?[\d-]+)["']\/>/; - my $port = "$+{port}"; - my $proto = "$+{proto}"; - push(@ports, $port) if ($port); - push(@protos, $proto) if ($port && $proto); +foreach my $services_dir ("/usr/lib/firewalld/services", + "/etc/firewalld/services") { + my $service_file = "$services_dir/$service.xml"; + if (-r $service_file) { + my $lref = &read_file_lines($service_file, 1); + foreach my $l (@{$lref}) { + if ($l =~ /\S+)["']\s+port=["'](?[\d-]+)["']\/>/) { + my $port = "$+{port}"; + my $proto = "$+{proto}"; + push(@ports, $port) if ($port); + push(@protos, $proto) if ($port && $proto); + } + } } } @ports = &unique(@ports);