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...ダウンロード