conf.rb 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. require 'erubis'
  2. module Dovecot
  3. module Conf
  4. def self.value(v)
  5. if v.kind_of?(TrueClass)
  6. 'yes'
  7. elsif v.kind_of?(FalseClass)
  8. 'no'
  9. elsif v.kind_of?(Array)
  10. v.join(' ')
  11. else
  12. v.to_s
  13. end
  14. end
  15. def self.service(name, conf)
  16. template =
  17. 'service <%= @name %> {
  18. <% if @conf["listeners"].kind_of?(Array)
  19. @conf["listeners"].each do |listener|
  20. listener.each do |service, values|
  21. service_proto = service.split(":")[0]
  22. service_name = service.split(":")[1]
  23. -%>
  24. <%= service_proto %>_listener <%= service_name %> {
  25. <% values.each do |key, value|-%>
  26. <%= key %> = <%= @Dovecot_Conf.value(value) %>
  27. <% end -%>
  28. }
  29. <% end -%>
  30. <% end -%>
  31. <% end -%>
  32. <% @conf.each do |key, value|
  33. if key != "listeners"
  34. -%>
  35. <%= key %> = <%= @Dovecot_Conf.value(value) %>
  36. <% end -%>
  37. <% end -%>
  38. }'
  39. eruby = Erubis::Eruby.new(template)
  40. eruby.evaluate(
  41. :name => name,
  42. :conf => conf,
  43. :Dovecot_Conf => Dovecot::Conf
  44. )
  45. end
  46. end
  47. end