iisconfig 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +13 -5
- data/VERSION +1 -1
- data/bin/iisconfig +7 -7
- data/lib/iisconfig/app_pool.rb +118 -118
- data/lib/iisconfig/application.rb +58 -47
- data/lib/iisconfig/configuration.rb +109 -101
- data/lib/iisconfig/ftp_site.rb +91 -91
- data/lib/iisconfig/iis_object.rb +48 -35
- data/lib/iisconfig/iisconfig.rb +2 -2
- data/lib/iisconfig/process_model.rb +77 -77
- data/lib/iisconfig/runner.rb +27 -26
- data/lib/iisconfig/site.rb +84 -84
- data/lib/iisconfig/version.rb +4 -4
- data/lib/iisconfig/virtual_directory.rb +29 -29
- data/lib/iisconfig.rb +43 -42
- data/test/example.rb +55 -54
- metadata +33 -13
    
        data/lib/iisconfig/ftp_site.rb
    CHANGED
    
    | @@ -1,92 +1,92 @@ | |
| 1 | 
            -
            require 'iis_object'
         | 
| 2 | 
            -
            require 'application'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module IISConfig
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              class FtpSite < IISObject
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                def initialize
         | 
| 9 | 
            -
                  @bindings = []
         | 
| 10 | 
            -
                  @authentication = []
         | 
| 11 | 
            -
                  @allow_authorization = []
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                def name(name = nil)
         | 
| 15 | 
            -
                  @name = name unless name.nil?
         | 
| 16 | 
            -
                  @name
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                def binding(binding)
         | 
| 20 | 
            -
                  @bindings << binding
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                def app_pool(pool)
         | 
| 24 | 
            -
                  @app_pool = pool
         | 
| 25 | 
            -
                end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                def physical_path(path)
         | 
| 28 | 
            -
                  @physical_path = path
         | 
| 29 | 
            -
                end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                def enable_authentication(*authentication)
         | 
| 32 | 
            -
                  @authentication += authentication
         | 
| 33 | 
            -
                end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                def allow_authorization(permissions, access)
         | 
| 36 | 
            -
                  @allow_authorization << { :permissions => permissions, :access => access }
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                def allow_ssl
         | 
| 40 | 
            -
                  @ssl = :allow
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                def delete
         | 
| 44 | 
            -
                  %W{DELETE SITE #{@name}}
         | 
| 45 | 
            -
                end
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                def add
         | 
| 48 | 
            -
                  args = []
         | 
| 49 | 
            -
                  args << 'ADD'
         | 
| 50 | 
            -
                  args << 'SITE'
         | 
| 51 | 
            -
                  args << "/name:#{@name}"
         | 
| 52 | 
            -
                  args << "/bindings:\"#{@bindings.join('","')}\""
         | 
| 53 | 
            -
                  args << "/physicalPath:#{@physical_path.gsub(/\//, '\\')}"
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                  args
         | 
| 56 | 
            -
                end
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                def required_paths
         | 
| 59 | 
            -
                  paths = []
         | 
| 60 | 
            -
                  paths << @physical_path
         | 
| 61 | 
            -
                  paths
         | 
| 62 | 
            -
                end
         | 
| 63 | 
            -
             | 
| 64 | 
            -
                def build_commands()
         | 
| 65 | 
            -
                  commands = []
         | 
| 66 | 
            -
                  commands << delete if exist? :site, @name
         | 
| 67 | 
            -
                  commands << add
         | 
| 68 | 
            -
             | 
| 69 | 
            -
                  commands << %W{SET SITE /site.name:#{@name} /[path='/'].applicationPool:#{@app_pool}} unless @app_pool.nil?
         | 
| 70 | 
            -
             | 
| 71 | 
            -
                  @allow_authorization.each do |a|
         | 
| 72 | 
            -
                    permissions = a[:permissions].map { |p| p.capitalize }.join(',')
         | 
| 73 | 
            -
                    roles = a[:access][:roles]
         | 
| 74 | 
            -
                    users = a[:access][:users]
         | 
| 75 | 
            -
                    commands << %W{SET CONFIG #{@name} /section:system.ftpserver/security/authorization /+[accessType='Allow',permissions='#{permissions}',roles='#{roles}',users='#{users}'] /commit:apphost}
         | 
| 76 | 
            -
                  end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                  @authentication.each do |a|
         | 
| 79 | 
            -
                    commands << %W{SET CONFIG -section:system.applicationHost/sites /[name='#{@name}'].ftpServer.security.authentication.#{a}Authentication.enabled:true}
         | 
| 80 | 
            -
                  end
         | 
| 81 | 
            -
             | 
| 82 | 
            -
                  unless @ssl.nil?
         | 
| 83 | 
            -
                    commands << %W{SET CONFIG -section:system.applicationHost/sites /[name='#{@name}'].ftpServer.security.ssl.controlChannelPolicy:"Ssl#{@ssl.capitalize}"}
         | 
| 84 | 
            -
                    commands << %W{SET CONFIG -section:system.applicationHost/sites /[name='#{@name}'].ftpServer.security.ssl.dataChannelPolicy:"Ssl#{@ssl.capitalize}"}
         | 
| 85 | 
            -
                  end
         | 
| 86 | 
            -
             | 
| 87 | 
            -
                  commands
         | 
| 88 | 
            -
                end
         | 
| 89 | 
            -
             | 
| 90 | 
            -
              end
         | 
| 91 | 
            -
             | 
| 1 | 
            +
            require 'iis_object'
         | 
| 2 | 
            +
            require 'application'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module IISConfig
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              class FtpSite < IISObject
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def initialize
         | 
| 9 | 
            +
                  @bindings = []
         | 
| 10 | 
            +
                  @authentication = []
         | 
| 11 | 
            +
                  @allow_authorization = []
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                def name(name = nil)
         | 
| 15 | 
            +
                  @name = name unless name.nil?
         | 
| 16 | 
            +
                  @name
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def binding(binding)
         | 
| 20 | 
            +
                  @bindings << binding
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                def app_pool(pool)
         | 
| 24 | 
            +
                  @app_pool = pool
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def physical_path(path)
         | 
| 28 | 
            +
                  @physical_path = path
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                def enable_authentication(*authentication)
         | 
| 32 | 
            +
                  @authentication += authentication
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                def allow_authorization(permissions, access)
         | 
| 36 | 
            +
                  @allow_authorization << { :permissions => permissions, :access => access }
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                def allow_ssl
         | 
| 40 | 
            +
                  @ssl = :allow
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                def delete
         | 
| 44 | 
            +
                  %W{DELETE SITE #{@name}}
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                def add
         | 
| 48 | 
            +
                  args = []
         | 
| 49 | 
            +
                  args << 'ADD'
         | 
| 50 | 
            +
                  args << 'SITE'
         | 
| 51 | 
            +
                  args << "/name:#{@name}"
         | 
| 52 | 
            +
                  args << "/bindings:\"#{@bindings.join('","')}\""
         | 
| 53 | 
            +
                  args << "/physicalPath:#{@physical_path.gsub(/\//, '\\')}"
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  args
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                def required_paths
         | 
| 59 | 
            +
                  paths = []
         | 
| 60 | 
            +
                  paths << @physical_path
         | 
| 61 | 
            +
                  paths
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                def build_commands()
         | 
| 65 | 
            +
                  commands = []
         | 
| 66 | 
            +
                  commands << delete if exist? :site, @name
         | 
| 67 | 
            +
                  commands << add
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  commands << %W{SET SITE /site.name:#{@name} /[path='/'].applicationPool:#{@app_pool}} unless @app_pool.nil?
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                  @allow_authorization.each do |a|
         | 
| 72 | 
            +
                    permissions = a[:permissions].map { |p| p.capitalize }.join(',')
         | 
| 73 | 
            +
                    roles = a[:access][:roles]
         | 
| 74 | 
            +
                    users = a[:access][:users]
         | 
| 75 | 
            +
                    commands << %W{SET CONFIG #{@name} /section:system.ftpserver/security/authorization /+[accessType='Allow',permissions='#{permissions}',roles='#{roles}',users='#{users}'] /commit:apphost}
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                  @authentication.each do |a|
         | 
| 79 | 
            +
                    commands << %W{SET CONFIG -section:system.applicationHost/sites /[name='#{@name}'].ftpServer.security.authentication.#{a}Authentication.enabled:true}
         | 
| 80 | 
            +
                  end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                  unless @ssl.nil?
         | 
| 83 | 
            +
                    commands << %W{SET CONFIG -section:system.applicationHost/sites /[name='#{@name}'].ftpServer.security.ssl.controlChannelPolicy:"Ssl#{@ssl.capitalize}"}
         | 
| 84 | 
            +
                    commands << %W{SET CONFIG -section:system.applicationHost/sites /[name='#{@name}'].ftpServer.security.ssl.dataChannelPolicy:"Ssl#{@ssl.capitalize}"}
         | 
| 85 | 
            +
                  end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                  commands
         | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
              end
         | 
| 91 | 
            +
             | 
| 92 92 | 
             
            end
         | 
    
        data/lib/iisconfig/iis_object.rb
    CHANGED
    
    | @@ -1,35 +1,48 @@ | |
| 1 | 
            -
            require 'runner'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module IISConfig
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              class IISObject
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                def exist?(type, name)
         | 
| 8 | 
            -
                  args = []
         | 
| 9 | 
            -
                  args << 'LIST'
         | 
| 10 | 
            -
                  args << type.to_s.upcase
         | 
| 11 | 
            -
                  args << '/xml'
         | 
| 12 | 
            -
                  result = Runner.execute_command args
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                  exists = false
         | 
| 15 | 
            -
                  doc = REXML::Document.new(result)
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                  doc.elements.each("appcmd/#{type.to_s.upcase}[@#{type.to_s.upcase}.NAME='#{name}']") do
         | 
| 18 | 
            -
                    exists = true
         | 
| 19 | 
            -
                    break
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                  exists
         | 
| 23 | 
            -
                end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                 | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
                   | 
| 29 | 
            -
             | 
| 30 | 
            -
                   | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 1 | 
            +
            require 'runner'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module IISConfig
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              class IISObject
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def exist?(type, name)
         | 
| 8 | 
            +
                  args = []
         | 
| 9 | 
            +
                  args << 'LIST'
         | 
| 10 | 
            +
                  args << type.to_s.upcase
         | 
| 11 | 
            +
                  args << '/xml'
         | 
| 12 | 
            +
                  result = Runner.execute_command args
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  exists = false
         | 
| 15 | 
            +
                  doc = REXML::Document.new(result)
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  doc.elements.each("appcmd/#{type.to_s.upcase}[@#{type.to_s.upcase}.NAME='#{name}']") do
         | 
| 18 | 
            +
                    exists = true
         | 
| 19 | 
            +
                    break
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  exists
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def start_provider_exist?(name)
         | 
| 26 | 
            +
                  result = Runner.execute_command %W{ LIST CONFIG /section:serviceAutoStartProviders }
         | 
| 27 | 
            +
                  exists = false
         | 
| 28 | 
            +
                  doc = REXML::Document.new(result)
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  doc.each_element("//add[@name='#{name}']") do |e|
         | 
| 31 | 
            +
                    exists = true
         | 
| 32 | 
            +
                    break
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  exists
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                protected
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                def add_instance(collection, type, block)
         | 
| 41 | 
            +
                  instance = type.new
         | 
| 42 | 
            +
                  collection << instance
         | 
| 43 | 
            +
                  block.call instance if block
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            end
         | 
    
        data/lib/iisconfig/iisconfig.rb
    CHANGED
    
    | @@ -1,3 +1,3 @@ | |
| 1 | 
            -
            module IISConfig
         | 
| 2 | 
            -
             | 
| 1 | 
            +
            module IISConfig
         | 
| 2 | 
            +
             | 
| 3 3 | 
             
            end
         | 
| @@ -1,78 +1,78 @@ | |
| 1 | 
            -
            module IISConfig
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              # Configuration of the Process Model Settings for an Application Pool
         | 
| 4 | 
            -
              # Reference: http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel
         | 
| 5 | 
            -
              #
         | 
| 6 | 
            -
              class ProcessModel
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                def initialize
         | 
| 9 | 
            -
                  @settings = {}
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                def identity_type(type = nil)
         | 
| 13 | 
            -
                  setting(:identityType, type)
         | 
| 14 | 
            -
                end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                # Specifies how long a worker process should run idle.
         | 
| 17 | 
            -
                def idle_timeout(timeout = nil)
         | 
| 18 | 
            -
                  setting(:idleTimeout, timeout)
         | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                def load_user_profile(value = nil)
         | 
| 22 | 
            -
                  setting(:loadUserProfile, value)
         | 
| 23 | 
            -
                end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                def logon_type(value = nil)
         | 
| 26 | 
            -
                  setting(:logonType, value)
         | 
| 27 | 
            -
                end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                def manual_group_membership(value = nil)
         | 
| 30 | 
            -
                  setting(:manualGroupMembership, value)
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                def max_processes(value = nil)
         | 
| 34 | 
            -
                  setting(:maxProcesses, value)
         | 
| 35 | 
            -
                end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                def password(value = nil)
         | 
| 38 | 
            -
                  setting(:password, value)
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                def pinging_enabled(value = nil)
         | 
| 42 | 
            -
                  setting(:pingingEnabled, value)
         | 
| 43 | 
            -
                end
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                def ping_interval(value = nil)
         | 
| 46 | 
            -
                  setting(:pingInterval, value)
         | 
| 47 | 
            -
                end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                def ping_response_time(value = nil)
         | 
| 50 | 
            -
                  setting(:pingResponseTime, value)
         | 
| 51 | 
            -
                end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                def shutdown_time_limit(value = nil)
         | 
| 54 | 
            -
                  setting(:shutdownTimeLimit, value)
         | 
| 55 | 
            -
                end
         | 
| 56 | 
            -
             | 
| 57 | 
            -
                def startup_time_limit(value = nil)
         | 
| 58 | 
            -
                  setting(:startupTimeLimit, value)
         | 
| 59 | 
            -
                end
         | 
| 60 | 
            -
             | 
| 61 | 
            -
                def username(value = nil)
         | 
| 62 | 
            -
                  setting(:userName, value)
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                def settings
         | 
| 66 | 
            -
                  @settings
         | 
| 67 | 
            -
                end
         | 
| 68 | 
            -
             | 
| 69 | 
            -
                private
         | 
| 70 | 
            -
             | 
| 71 | 
            -
                def setting(key, value)
         | 
| 72 | 
            -
                  @settings[key] = value unless value.nil?
         | 
| 73 | 
            -
                  @settings[key]
         | 
| 74 | 
            -
                end
         | 
| 75 | 
            -
             | 
| 76 | 
            -
              end
         | 
| 77 | 
            -
             | 
| 1 | 
            +
            module IISConfig
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              # Configuration of the Process Model Settings for an Application Pool
         | 
| 4 | 
            +
              # Reference: http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel
         | 
| 5 | 
            +
              #
         | 
| 6 | 
            +
              class ProcessModel
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def initialize
         | 
| 9 | 
            +
                  @settings = {}
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def identity_type(type = nil)
         | 
| 13 | 
            +
                  setting(:identityType, type)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                # Specifies how long a worker process should run idle.
         | 
| 17 | 
            +
                def idle_timeout(timeout = nil)
         | 
| 18 | 
            +
                  setting(:idleTimeout, timeout)
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def load_user_profile(value = nil)
         | 
| 22 | 
            +
                  setting(:loadUserProfile, value)
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def logon_type(value = nil)
         | 
| 26 | 
            +
                  setting(:logonType, value)
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                def manual_group_membership(value = nil)
         | 
| 30 | 
            +
                  setting(:manualGroupMembership, value)
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def max_processes(value = nil)
         | 
| 34 | 
            +
                  setting(:maxProcesses, value)
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                def password(value = nil)
         | 
| 38 | 
            +
                  setting(:password, value)
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                def pinging_enabled(value = nil)
         | 
| 42 | 
            +
                  setting(:pingingEnabled, value)
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                def ping_interval(value = nil)
         | 
| 46 | 
            +
                  setting(:pingInterval, value)
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                def ping_response_time(value = nil)
         | 
| 50 | 
            +
                  setting(:pingResponseTime, value)
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                def shutdown_time_limit(value = nil)
         | 
| 54 | 
            +
                  setting(:shutdownTimeLimit, value)
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                def startup_time_limit(value = nil)
         | 
| 58 | 
            +
                  setting(:startupTimeLimit, value)
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                def username(value = nil)
         | 
| 62 | 
            +
                  setting(:userName, value)
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                def settings
         | 
| 66 | 
            +
                  @settings
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                private
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                def setting(key, value)
         | 
| 72 | 
            +
                  @settings[key] = value unless value.nil?
         | 
| 73 | 
            +
                  @settings[key]
         | 
| 74 | 
            +
                end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
             | 
| 78 78 | 
             
            end
         | 
    
        data/lib/iisconfig/runner.rb
    CHANGED
    
    | @@ -1,26 +1,27 @@ | |
| 1 | 
            -
            module IISConfig
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              class Runner
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                def self.execute_command(args)
         | 
| 6 | 
            -
                  args.flatten!
         | 
| 7 | 
            -
                  tool = :appcmd
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                  puts  "  #{tool.to_s} #{args.join(' ')}"
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  unless IISConfiguration.dry_run?
         | 
| 12 | 
            -
                    result = `c:/windows/system32/inetsrv/appcmd #{args.join(' ')}"`
         | 
| 13 | 
            -
                     | 
| 14 | 
            -
                     | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 1 | 
            +
            module IISConfig
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              class Runner
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def self.execute_command(args)
         | 
| 6 | 
            +
                  args.flatten!
         | 
| 7 | 
            +
                  tool = :appcmd
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  puts  "  #{tool.to_s} #{args.join(' ')}"
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  unless IISConfiguration.dry_run?
         | 
| 12 | 
            +
                    result = `c:/windows/system32/inetsrv/appcmd #{args.join(' ')}"`
         | 
| 13 | 
            +
                    puts result if IISConfiguration.verbose?
         | 
| 14 | 
            +
                    raise Exception.new($?.exitstatus) unless $?.success?
         | 
| 15 | 
            +
                    result
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def self.run_commands(commands)
         | 
| 20 | 
            +
                  commands.each do |c|
         | 
| 21 | 
            +
                    Runner.execute_command c
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            end
         | 
    
        data/lib/iisconfig/site.rb
    CHANGED
    
    | @@ -1,85 +1,85 @@ | |
| 1 | 
            -
            require 'iis_object'
         | 
| 2 | 
            -
            require 'application'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module IISConfig
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              class Site < IISObject
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                def initialize
         | 
| 9 | 
            -
                  @bindings = []
         | 
| 10 | 
            -
                  @applications = []
         | 
| 11 | 
            -
                  @virtual_directories = []
         | 
| 12 | 
            -
                  @path = '/'
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def name(name = nil)
         | 
| 16 | 
            -
                  @name = name unless name.nil?
         | 
| 17 | 
            -
                  @name
         | 
| 18 | 
            -
                end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                def binding(binding)
         | 
| 21 | 
            -
                  @bindings << binding
         | 
| 22 | 
            -
                end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                def path(path)
         | 
| 25 | 
            -
                  @path = path
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                def app_pool(pool)
         | 
| 29 | 
            -
                  @app_pool = pool
         | 
| 30 | 
            -
                end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                def physical_path(path)
         | 
| 33 | 
            -
                  @physical_path = path
         | 
| 34 | 
            -
                end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                def application(&block)
         | 
| 37 | 
            -
                  add_instance(@applications, IISConfig::Application, block)
         | 
| 38 | 
            -
                end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                def virtual_directory(&block)
         | 
| 41 | 
            -
                  add_instance(@virtual_directories, IISConfig::VirtualDirectory, block)
         | 
| 42 | 
            -
                end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                def delete
         | 
| 45 | 
            -
                  %W{DELETE SITE #{@name}}
         | 
| 46 | 
            -
                end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                def add
         | 
| 49 | 
            -
                  args = []
         | 
| 50 | 
            -
                  args << 'ADD'
         | 
| 51 | 
            -
                  args << 'SITE'
         | 
| 52 | 
            -
                  args << "/name:#{@name}"
         | 
| 53 | 
            -
                  args << "/bindings:\"#{@bindings.join('","')}\""
         | 
| 54 | 
            -
                  args << "/physicalPath:#{@physical_path.gsub(/\//, '\\')}"
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                  args
         | 
| 57 | 
            -
                end
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                def required_paths
         | 
| 60 | 
            -
                  paths = []
         | 
| 61 | 
            -
                  paths << @physical_path
         | 
| 62 | 
            -
                  paths
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                def build_commands()
         | 
| 66 | 
            -
                  commands = []
         | 
| 67 | 
            -
                  commands << delete if exist? :site, @name
         | 
| 68 | 
            -
                  commands << add
         | 
| 69 | 
            -
                  commands << %W{SET SITE /site.name:#{@name} /[path='#{@path}'].applicationPool:#{@app_pool}} unless @app_pool.nil?
         | 
| 70 | 
            -
                  commands << %W{SET SITE /site.name:#{@name} /[path='#{@path}']} if @app_pool.nil?
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                  @applications.each do |s|
         | 
| 73 | 
            -
                    commands += s.build_commands @name, @app_pool
         | 
| 74 | 
            -
                  end
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                  @virtual_directories.each do |s|
         | 
| 77 | 
            -
                    commands += s.build_commands "#{name}/"
         | 
| 78 | 
            -
                  end
         | 
| 79 | 
            -
             | 
| 80 | 
            -
                  commands
         | 
| 81 | 
            -
                end
         | 
| 82 | 
            -
             | 
| 83 | 
            -
              end
         | 
| 84 | 
            -
             | 
| 1 | 
            +
            require 'iis_object'
         | 
| 2 | 
            +
            require 'application'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module IISConfig
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              class Site < IISObject
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def initialize
         | 
| 9 | 
            +
                  @bindings = []
         | 
| 10 | 
            +
                  @applications = []
         | 
| 11 | 
            +
                  @virtual_directories = []
         | 
| 12 | 
            +
                  @path = '/'
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def name(name = nil)
         | 
| 16 | 
            +
                  @name = name unless name.nil?
         | 
| 17 | 
            +
                  @name
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def binding(binding)
         | 
| 21 | 
            +
                  @bindings << binding
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def path(path)
         | 
| 25 | 
            +
                  @path = path
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def app_pool(pool)
         | 
| 29 | 
            +
                  @app_pool = pool
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                def physical_path(path)
         | 
| 33 | 
            +
                  @physical_path = path
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def application(&block)
         | 
| 37 | 
            +
                  add_instance(@applications, IISConfig::Application, block)
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                def virtual_directory(&block)
         | 
| 41 | 
            +
                  add_instance(@virtual_directories, IISConfig::VirtualDirectory, block)
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                def delete
         | 
| 45 | 
            +
                  %W{DELETE SITE #{@name}}
         | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                def add
         | 
| 49 | 
            +
                  args = []
         | 
| 50 | 
            +
                  args << 'ADD'
         | 
| 51 | 
            +
                  args << 'SITE'
         | 
| 52 | 
            +
                  args << "/name:#{@name}"
         | 
| 53 | 
            +
                  args << "/bindings:\"#{@bindings.join('","')}\""
         | 
| 54 | 
            +
                  args << "/physicalPath:#{@physical_path.gsub(/\//, '\\')}"
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                  args
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                def required_paths
         | 
| 60 | 
            +
                  paths = []
         | 
| 61 | 
            +
                  paths << @physical_path
         | 
| 62 | 
            +
                  paths
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                def build_commands()
         | 
| 66 | 
            +
                  commands = []
         | 
| 67 | 
            +
                  commands << delete if exist? :site, @name
         | 
| 68 | 
            +
                  commands << add
         | 
| 69 | 
            +
                  commands << %W{SET SITE /site.name:#{@name} /[path='#{@path}'].applicationPool:#{@app_pool}} unless @app_pool.nil?
         | 
| 70 | 
            +
                  commands << %W{SET SITE /site.name:#{@name} /[path='#{@path}']} if @app_pool.nil?
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                  @applications.each do |s|
         | 
| 73 | 
            +
                    commands += s.build_commands @name, @app_pool
         | 
| 74 | 
            +
                  end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                  @virtual_directories.each do |s|
         | 
| 77 | 
            +
                    commands += s.build_commands "#{name}/"
         | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                  commands
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
              end
         | 
| 84 | 
            +
             | 
| 85 85 | 
             
            end
         | 
    
        data/lib/iisconfig/version.rb
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            module IISConfig
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              VERSION = File.read(File.expand_path(File.dirname(File.realpath(__FILE__)) + '/../../VERSION')).strip
         | 
| 4 | 
            -
             | 
| 1 | 
            +
            module IISConfig
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              VERSION = File.read(File.expand_path(File.dirname(File.realpath(__FILE__)) + '/../../VERSION')).strip
         | 
| 4 | 
            +
             | 
| 5 5 | 
             
            end
         |