conf.rb 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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.protocols(conf)
  16. Dovecot::Protocols.list(conf).join(' ')
  17. end
  18. def self.plugin(name, conf)
  19. template =
  20. 'plugin {
  21. <% @conf.each do |key, value|
  22. unless value.nil?
  23. -%>
  24. <%= key %> = <%= @Dovecot_Conf.value(value) %>
  25. <% end
  26. end -%>
  27. }'
  28. eruby = Erubis::Eruby.new(template)
  29. eruby.evaluate(
  30. :conf => conf,
  31. :Dovecot_Conf => Dovecot::Conf
  32. )
  33. end
  34. def self.service(name, conf)
  35. template =
  36. 'service <%= @name %> {
  37. <% if @conf["listeners"].kind_of?(Array)
  38. @conf["listeners"].each do |listener|
  39. listener.each do |service, values|
  40. service_proto = service.split(":")[0]
  41. service_name = service.split(":")[1]
  42. -%>
  43. <%= service_proto %>_listener <%= service_name %> {
  44. <% values.each do |key, value|-%>
  45. <%= key %> = <%= @Dovecot_Conf.value(value) %>
  46. <% end -%>
  47. }
  48. <% end -%>
  49. <% end -%>
  50. <% end -%>
  51. <% @conf.each do |key, value|
  52. if key != "listeners"
  53. -%>
  54. <%= key %> = <%= @Dovecot_Conf.value(value) %>
  55. <% end -%>
  56. <% end -%>
  57. }'
  58. eruby = Erubis::Eruby.new(template)
  59. eruby.evaluate(
  60. :name => name,
  61. :conf => conf,
  62. :Dovecot_Conf => Dovecot::Conf
  63. )
  64. end
  65. end
  66. end