26 lines
483 B
Ruby
26 lines
483 B
Ruby
|
|
module Puppet::Parser::Functions
|
|
newfunction(:avahi_service_port, :type => :rvalue) do |args|
|
|
|
|
type, name, proto = /^_([^\.]*)\._([^\.]*)$/.match(args[0]).to_a
|
|
|
|
port = nil
|
|
|
|
File.open('/etc/services', 'r') do |fd|
|
|
while (line = fd.gets)
|
|
begin
|
|
port = /^#{name}[ \t]+(\d+)\/#{proto}.*/.match(line)[1]
|
|
break
|
|
rescue
|
|
nil
|
|
end
|
|
end
|
|
end
|
|
|
|
if not port
|
|
raise Puppet::ParseError, 'Failed to get port for service %s' % type
|
|
end
|
|
port
|
|
|
|
end
|
|
end
|