[milter-manager-commit] milter-manager/milter-manager at 28b690a [master] Extract Milter::Manager::SystemdDetector

アーカイブの一覧に戻る

Kenji Okimoto null+****@clear*****
Fri Mar 31 17:04:07 JST 2017


Kenji Okimoto	2017-03-31 17:04:07 +0900 (Fri, 31 Mar 2017)

  New Revision: 28b690a90d27356d2c064089de2fb3feb2757346
  https://github.com/milter-manager/milter-manager/commit/28b690a90d27356d2c064089de2fb3feb2757346

  Message:
    Extract Milter::Manager::SystemdDetector

  Copied files:
    binding/ruby/lib/milter/manager/systemd-detector.rb
      (from binding/ruby/lib/milter/manager/debian-systemd-detector.rb)
  Modified files:
    binding/ruby/lib/milter/manager/debian-systemd-detector.rb
    binding/ruby/lib/milter/manager/redhat-systemd-detector.rb

  Modified: binding/ruby/lib/milter/manager/debian-systemd-detector.rb (+2 -128)
===================================================================
--- binding/ruby/lib/milter/manager/debian-systemd-detector.rb    2017-03-31 16:54:48 +0900 (830f764)
+++ binding/ruby/lib/milter/manager/debian-systemd-detector.rb    2017-03-31 17:04:07 +0900 (004cfd0)
@@ -1,93 +1,11 @@
 require 'milter/manager/file-reader'
-require 'milter/manager/detector'
+require 'milter/manager/systemd-detector'
 
 module Milter::Manager
   class DebianSystemdDetector
-    include Detector
-
-    def detect
-      return unless unit_file_readable?
-
-      parse_unit_file
-
-      @enabled = File.exist?(installed_unit_file)
-    end
-
-    def unit_file_readable?
-      File.readable?(unit_file)
-    end
-
-    def description
-      @description
-    end
-
-    def enabled?
-      !guess_spec.nil? and @enabled and
-        !(clamav_milter? and clamav_milter_example?)
-    end
-
-    def detect_milter_greylist_connection_spec
-      milter_greylist_config_parser.socket
-    end
-
-    def clamav_milter?
-      @script_name == "clamav-milter"
-    end
-
-    def milter_greylist?
-      @script_name == "milter-greylist"
-    end
-
-    def opendkim?
-      @script_name == "opendkim"
-    end
-
-    def rmilter?
-      @script_name == "rmilter"
-    end
+    include SytemdDetector
 
     private
-    def init_variables
-      super
-      @description = nil
-      @enabled = false
-      @exec = nil
-    end
-
-    def parse_unit_file
-      content = FileReader.read(unit_file)
-
-      section = nil
-      content.each_line do |line|
-        case line.strip
-        when /\A\[(.+?)\]\z/
-          section = $1
-        when /\A(.+?)\s*=\s*(.+?)\z/
-          name = $1
-          value = $2
-          case section
-          when "Unit"
-            case name
-            when "Description"
-              @description = value
-            end
-          when "Service"
-            case name
-            when "ExecStart"
-              @exec = value
-            when "EnvironmentFile"
-              file = value.gsub(/\A-/, "")
-              if File.exist?(file)
-                extract_variables(@variables, FileReader.read(file))
-              end
-            end
-          end
-        end
-      end
-
-      @name = @script_name
-    end
-
     def clamav_milter_conf
       extract_parameter_from_flags(@exec, "-c") ||
         etc_file("clamav", "clamav-milter.conf")
@@ -107,49 +25,5 @@ module Milter::Manager
       extract_parameter_from_flags(@exec, "-c") ||
         etc_file("rmilter.conf")
     end
-
-    def guess_spec
-      spec = nil
-      spec ||= guess_application_specific_spec
-      spec ||= normalize_spec(@variables["SOCKET"])
-      if @connection_spec_detector
-        spec = normalize_spec(@connection_spec_detector.call(self, spec)) || spec
-      end
-      spec
-    end
-
-    def guess_application_specific_spec
-      spec = nil
-      spec ||= detect_clamav_milter_connection_spec if clamav_milter?
-      spec ||= detect_milter_greylist_connection_spec if milter_greylist?
-      spec ||= detect_opendkim_connection_spec if opendkim?
-      spec ||= detect_rmilter_connection_spec if rmilter?
-      spec
-    end
-
-    def unit_file_base_name
-      "#{@script_name}.service"
-    end
-
-    def installed_unit_file
-      etc_file("systemd", "system", "multi-user.target.wants",
-               unit_file_base_name)
-    end
-
-    def unit_file
-      File.join(system_dir, unit_file_base_name)
-    end
-
-    def system_dir
-      File.join("", "lib", "systemd", "system")
-    end
-
-    def etc_dir
-      File.join("", "etc")
-    end
-
-    def etc_file(*paths)
-      File.join(etc_dir, *paths)
-    end
   end
 end

  Modified: binding/ruby/lib/milter/manager/redhat-systemd-detector.rb (+2 -124)
===================================================================
--- binding/ruby/lib/milter/manager/redhat-systemd-detector.rb    2017-03-31 16:54:48 +0900 (3cc8709)
+++ binding/ruby/lib/milter/manager/redhat-systemd-detector.rb    2017-03-31 17:04:07 +0900 (5023831)
@@ -14,95 +14,13 @@
 # along with this library.  If not, see <http://www.gnu.org/licenses/>.
 
 require "milter/manager/file-reader"
-require "milter/manager/detector"
+require "milter/manager/systemd-detector"
 
 module Milter::Manager
   class RedHatSystemdDetector
-    include Detector
-
-    def detect
-      return unless unit_file_readable?
-
-      parse_unit_file
-
-      @enabled = File.exist?(installed_unit_file)
-    end
-
-    def unit_file_readable?
-      File.readable?(unit_file)
-    end
-
-    def description
-      @description
-    end
-
-    def enabled?
-      !guess_spec.nil? and @enabled and
-        !(clamav_milter? and clamav_milter_example?)
-    end
-
-    def detect_milter_greylist_connection_spec
-      milter_greylist_config_parser.socket
-    end
-
-    def clamav_milter?
-      @script_name == "clamav-milter"
-    end
-
-    def milter_greylist?
-      @script_name == "milter-greylist"
-    end
-
-    def opendkim?
-      @script_name == "opendkim"
-    end
-
-    def rmilter?
-      @script_name == "rmilter"
-    end
+    include SystemdDetector
 
     private
-    def init_variables
-      super
-      @description = nil
-      @enabled = false
-      @exec = nil
-    end
-
-    def parse_unit_file
-      content = FileReader.read(unit_file)
-
-      section = nil
-      content.each_line do |line|
-        case line.strip
-        when /\A\[(.+?)\]\z/
-          section = $1
-        when /\A(.+?)\s*=\s*(.+?)\z/
-          name = $1
-          value = $2
-          case section
-          when "Unit"
-            case name
-            when "Description"
-              @description = value
-            end
-          when "Service"
-            case name
-            when "ExecStart"
-              @exec = value
-            when "EnvironmentFile"
-              file = value.gsub(/\A-/, "")
-              if File.exist?(file)
-                extract_variables(@variables, FileReader.read(file))
-              end
-            end
-          end
-        end
-      end
-
-      @name = @script_name
-    end
-
     def clamav_milter_conf
       extract_parameter_from_flags(@exec, "-c") ||
         etc_file("mail", "clamav-milter.conf")
@@ -123,48 +41,8 @@ module Milter::Manager
         etc_file("rmilter", "rmilter.conf")
     end
 
-    def guess_spec
-      spec = nil
-      spec ||= guess_application_specific_spec
-      spec ||= normalize_spec(@variables["SOCKET"])
-      if @connection_spec_detector
-        spec = normalize_spec(@connection_spec_detector.call(self, spec)) || spec
-      end
-      spec
-    end
-
-    def guess_application_specific_spec
-      spec = nil
-      spec ||= detect_clamav_milter_connection_spec if clamav_milter?
-      spec ||= detect_milter_greylist_connection_spec if milter_greylist?
-      spec ||= detect_opendkim_connection_spec if opendkim?
-      spec ||= detect_rmilter_connection_spec if rmilter?
-      spec
-    end
-
-    def unit_file_base_name
-      "#{@script_name}.service"
-    end
-
-    def installed_unit_file
-      etc_file("systemd", "system", "multi-user.target.wants",
-               unit_file_base_name)
-    end
-
-    def unit_file
-      File.join(system_dir, unit_file_base_name)
-    end
-
     def system_dir
       File.join("", "usr", "lib", "systemd", "system")
     end
-
-    def etc_dir
-      File.join("", "etc")
-    end
-
-    def etc_file(*paths)
-      File.join(etc_dir, *paths)
-    end
   end
 end

  Copied: binding/ruby/lib/milter/manager/systemd-detector.rb (+1 -23) 82%
===================================================================
--- binding/ruby/lib/milter/manager/debian-systemd-detector.rb    2017-03-31 16:54:48 +0900 (830f764)
+++ binding/ruby/lib/milter/manager/systemd-detector.rb    2017-03-31 17:04:07 +0900 (5c70dbb)
@@ -1,10 +1,8 @@
-require 'milter/manager/file-reader'
 require 'milter/manager/detector'
 
 module Milter::Manager
-  class DebianSystemdDetector
+  module SystemdDetector
     include Detector
-
     def detect
       return unless unit_file_readable?
 
@@ -88,26 +86,6 @@ module Milter::Manager
       @name = @script_name
     end
 
-    def clamav_milter_conf
-      extract_parameter_from_flags(@exec, "-c") ||
-        etc_file("clamav", "clamav-milter.conf")
-    end
-
-    def milter_greylist_conf
-      extract_parameter_from_flags(@exec, "-f") ||
-        etc_file("milter-greylist", "greylist.conf")
-    end
-
-    def opendkim_conf
-      extract_parameter_from_flags(@variables["OPTIONS"] || "", "-x") ||
-        etc_file("opendkim.conf")
-    end
-
-    def rmilter_conf
-      extract_parameter_from_flags(@exec, "-c") ||
-        etc_file("rmilter.conf")
-    end
-
     def guess_spec
       spec = nil
       spec ||= guess_application_specific_spec
-------------- next part --------------
An HTML attachment was scrubbed...
ダウンロード 



More information about the milter-manager-commit mailing list
アーカイブの一覧に戻る