73 lines
2.3 KiB
Ruby
73 lines
2.3 KiB
Ruby
module FirewallCookbook
|
|
module Helpers
|
|
module FirewalldDBus
|
|
def firewalld(system_bus)
|
|
system_bus['org.fedoraproject.FirewallD1']
|
|
end
|
|
|
|
def firewalld_object(system_bus)
|
|
firewalld(system_bus)['/org/fedoraproject/FirewallD1']
|
|
end
|
|
|
|
def firewalld_interface(system_bus)
|
|
firewalld_object(system_bus)['org.fedoraproject.FirewallD1']
|
|
end
|
|
|
|
def config_object(system_bus)
|
|
firewalld(system_bus)['/org/fedoraproject/FirewallD1/config']
|
|
end
|
|
|
|
def config_interface(system_bus)
|
|
config_object(system_bus)['org.fedoraproject.FirewallD1.config']
|
|
end
|
|
|
|
def icmptype_interface(dbus, icmptype_path)
|
|
icmptype_object = firewalld(dbus)[icmptype_path]
|
|
icmptype_object['org.fedoraproject.FirewallD1.config.icmptype']
|
|
end
|
|
|
|
def ipset_interface(dbus, ipset_path)
|
|
ipset_object = firewalld(dbus)[ipset_path]
|
|
ipset_object['org.fedoraproject.FirewallD1.config.ipset']
|
|
end
|
|
|
|
def helper_interface(dbus, helper_path)
|
|
helper_object = firewalld(dbus)[helper_path]
|
|
helper_object['org.fedoraproject.FirewallD1.config.helper']
|
|
end
|
|
|
|
def service_interface(dbus, service_path)
|
|
service_object = firewalld(dbus)[service_path]
|
|
service_object['org.fedoraproject.FirewallD1.config.service']
|
|
end
|
|
|
|
def policy_interface(dbus, policy_path)
|
|
policy_object = firewalld(dbus)[policy_path]
|
|
policy_object['org.fedoraproject.FirewallD1.config.policy']
|
|
end
|
|
|
|
def zone_interface(dbus, zone_path)
|
|
zone_object = firewalld(dbus)[zone_path]
|
|
zone_object['org.fedoraproject.FirewallD1.config.zone']
|
|
end
|
|
|
|
# port=portid[-portid]:proto=protocol[:toport=portid[-portid]][:toaddr=address[/mask]]
|
|
def parse_forward_ports(forward_ports)
|
|
port_regex = %r{port=([\w-]+):proto=([\w]+)(:toport=([\w-]+)|)(:toaddr=([\d\./]+)|)}
|
|
captures = forward_ports.match(port_regex).captures
|
|
captures.delete_at(4)
|
|
captures.delete_at(2)
|
|
captures.map { |e| e || '' }
|
|
end
|
|
|
|
def forward_ports_to_dbus(new_resource)
|
|
fwp = new_resource.forward_ports.map do |e|
|
|
parse_forward_ports(e)
|
|
end
|
|
new_resource.forward_ports = fwp
|
|
DBus.variant('a(ssss)', new_resource.forward_ports)
|
|
end
|
|
end
|
|
end
|
|
end
|