1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- require 'erubis'
- module Dovecot
- module Conf
- def self.value(v, default = nil)
- if v.nil?
- default.to_s
- elsif v === true
- 'yes'
- elsif v === false
- 'no'
- elsif v.kind_of?(Array)
- v.join(' ')
- else
- v.to_s
- end
- end
- def self.attribute(conf, k, default = nil)
- v = conf[k]
- if v.nil?
- "##{k} = #{value(default)}"
- else
- "#{k} = #{value(v)}"
- end
- end
- def self.protocols(conf)
- Dovecot::Protocols.list(conf).join(' ')
- end
- def self.plugin(name, conf)
- template =
- 'plugin {
- <% @conf.each do |key, value|
- unless value.nil?
- -%>
- <%= key %> = <%= @Dovecot_Conf.value(value) %>
- <% end
- end -%>
- }'
- eruby = Erubis::Eruby.new(template)
- eruby.evaluate(
- :conf => conf,
- :Dovecot_Conf => Dovecot::Conf
- )
- end
- def self.service(name, conf)
- template =
- 'service <%= @name %> {
- <% if @conf["listeners"].kind_of?(Array)
- @conf["listeners"].each do |listener|
- listener.each do |service, values|
- service_proto = service.split(":")[0]
- service_name = service.split(":")[1]
- -%>
- <%= service_proto %>_listener <%= service_name %> {
- <% values.each do |key, value|-%>
- <%= key %> = <%= @Dovecot_Conf.value(value) %>
- <% end -%>
- }
- <% end -%>
- <% end -%>
- <% end -%>
- <% @conf.each do |key, value|
- if key != "listeners"
- -%>
- <%= key %> = <%= @Dovecot_Conf.value(value) %>
- <% end -%>
- <% end -%>
- }'
- eruby = Erubis::Eruby.new(template)
- eruby.evaluate(
- :name => name,
- :conf => conf,
- :Dovecot_Conf => Dovecot::Conf
- )
- end
- end
- end
|