inetmgr 0.2.0-mswin32

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.
@@ -0,0 +1,51 @@
1
+ = About inetmgr
2
+
3
+ inetmgr is primarily a library that helps automate the configuration of IIS. It
4
+ provides a straightforward ruby-like interface on top of the configuration API,
5
+ which lets you inspect add/remove and modify various IIS objects like sites,
6
+ application pools, bindings, virtual directories, etc.
7
+
8
+ Additionally, intemgr provides some basic rake tasks that help adding IIS
9
+ deployment aspects to your build (& deploy) process.
10
+
11
+ == How to install
12
+
13
+ Get the gem:
14
+
15
+ > gem install inetmgr
16
+
17
+ That should do the trick. Another option would be forking the source from github:
18
+
19
+ > git clone git@github.com:typesafe/inetmgr.git inetmgr
20
+
21
+ == How to use
22
+
23
+ *Note*: inetmgr requires a Windows machine (well, duh) with IIS7+ and depends on
24
+ WIN32OLE (for the sake of wrapping), which should be available by default.
25
+
26
+ require 'inetmgr'
27
+
28
+ cfg = IisConfiguration.new
29
+
30
+ cfg.get_sites.each do |site|
31
+ puts 'site: #{site.name}'
32
+ end
33
+
34
+ cfg.application_pools.add { |p| p.name = "newPool" }
35
+ cfg.apply_changes
36
+
37
+ == License
38
+
39
+ Copyright (c) 2010 Gino Heyman
40
+
41
+ Licensed under the Apache License, Version 2.0 (the "License");
42
+ you may not use this file except in compliance with the License.
43
+ You may obtain a copy of the License at
44
+
45
+ http://www.apache.org/licenses/LICENSE-2.0
46
+
47
+ Unless required by applicable law or agreed to in writing, software
48
+ distributed under the License is distributed on an "AS IS" BASIS,
49
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
50
+ See the License for the specific language governing permissions and
51
+ limitations under the License.
@@ -0,0 +1,22 @@
1
+ require 'rubygems'
2
+ require 'rake/gempackagetask'
3
+
4
+ spec = Gem::Specification.new do |s|
5
+
6
+ s.platform = 'mswin32'
7
+ s.name = "inetmgr"
8
+ s.version = "0.2.0"
9
+ s.summary = "A library for managing IIS configuration settings."
10
+ s.description = "inetmgr allows you to inspect/configure IIS configuration sections and elements."
11
+
12
+ s.required_ruby_version = '>= 1.8.7'
13
+ s.required_rubygems_version = ">= 1.3.6"
14
+
15
+ s.author = "Gino Heyman"
16
+ s.email = "gino.heyman@gmail.com"
17
+ s.homepage = "http://typesafe.be/inetmgr/"
18
+
19
+ s.files = FileList["**/**/*"].to_a
20
+ s.require_path = "lib"
21
+
22
+ end
@@ -0,0 +1,23 @@
1
+ require 'win32ole'
2
+
3
+ path = File.expand_path(File.dirname(__FILE__))
4
+
5
+ requires =
6
+ [
7
+ 'inetmgr/iis_object_collection.rb',
8
+ 'inetmgr/iis_object.rb',
9
+ 'inetmgr/iis_object/virtual_directory.rb',
10
+ 'inetmgr/iis_object/application.rb',
11
+ 'inetmgr/iis_object/binding_information.rb',
12
+ 'inetmgr/iis_object/site.rb'
13
+ ]
14
+
15
+ requires.each do |file|
16
+ require File.join(path, file)
17
+ end
18
+
19
+ Dir.glob(File.join(path, 'inetmgr/iis_object/*.rb')).each do |f|
20
+ require f unless requires.include?(f)
21
+ end
22
+
23
+ require File.join(path, 'inetmgr/iis_configuration.rb')
@@ -0,0 +1,40 @@
1
+
2
+ # Represents the local IIS configuration settings (meta base)
3
+ class IisConfiguration
4
+
5
+ def initialize
6
+ @admin_manager = WIN32OLE.new "Microsoft.ApplicationHost.WritableAdminManager"
7
+ @admin_manager.CommitPath = "MACHINE/WEBROOT/APPHOST";
8
+ end
9
+
10
+ # applies/commits all changes made since the creation of the
11
+ # IisConfiguration instance or the last time this method was called.
12
+ def apply_changes
13
+ @admin_manager.CommitChanges
14
+ end
15
+
16
+ # Gets all configured web sites.
17
+ def get_sites
18
+ s = get_config_section "system.applicationHost/sites"
19
+ IisObjectCollection.new s.Collection, :site, Site, lambda { |site| site.id = s.Collection.Count + 1 }
20
+ end
21
+
22
+ # Gets all configure application pools.
23
+ def get_application_pools
24
+ s = get_config_section "system.applicationHost/applicationPools"
25
+ IisObjectCollection.new s.Collection, :add, ApplicationPool
26
+ end
27
+
28
+ # Gets all configured service auto start providers.
29
+ def get_auto_start_providers
30
+ s = get_config_section "system.applicationHost/serviceAutoStartProviders"
31
+ IisObjectCollection.new s.Collection, :add, AutoStartProvider
32
+ end
33
+
34
+ private
35
+
36
+ def get_config_section section_name, path = "MACHINE/WEBROOT/APPHOST"
37
+ @admin_manager.GetAdminSection(section_name, path)
38
+ end
39
+
40
+ end
@@ -0,0 +1,52 @@
1
+
2
+ class IisObject
3
+
4
+ def initialize element
5
+ @element = element
6
+ end
7
+
8
+ def self.prop name, actual_name, setter = Proc.new { |v| v }, reader = Proc.new { |v| v }
9
+ define_method(name.to_s) do
10
+ reader.call(@element.Properties.Item(actual_name.to_s).Value)
11
+ end
12
+
13
+ define_method("#{name.to_s}=") do |val|
14
+ @element.Properties.Item(actual_name.to_s).Value = setter.call(val)
15
+ end
16
+ end
17
+
18
+ def self.collection name, item_name, type
19
+ define_method(name.to_s) do
20
+ IisObjectCollection.new @element.Collection, item_name.to_s, type
21
+ end
22
+ end
23
+
24
+ def self.children name, item_name, type
25
+ define_method(name.to_s) do
26
+ IisObjectCollection.new @element.ChildElements.Item(name.to_s).Collection, item_name.to_s, type
27
+ end
28
+ end
29
+
30
+ def self.child name, element_name, type
31
+ define_method(name.to_s) do
32
+ type.new @element.ChildElements.Item(element_name.to_s)
33
+ end
34
+ end
35
+
36
+ def element
37
+ @element
38
+ end
39
+
40
+ private
41
+
42
+ def method_missing(symbol, *args)
43
+ name = symbol.to_s
44
+ if (/=$/.match(name))
45
+ @element.Properties.Item(name.sub(/=$/, '')).Value = args[0]
46
+ else
47
+ @element.Properties.Item(name).Value
48
+ end
49
+ end
50
+
51
+ end
52
+
@@ -0,0 +1,9 @@
1
+
2
+ class Application < IisObject
3
+
4
+ prop :auto_start, "serviceAutoStartEnabled"
5
+ prop :auto_start_provider, "serviceAutoStartProvider"
6
+
7
+ collection :virtual_directories, :virtualDirectory, VirtualDirectory
8
+
9
+ end
@@ -0,0 +1,26 @@
1
+
2
+ class ProcessModel < IisObject
3
+
4
+ end
5
+
6
+ class PeriodicRestart < IisObject
7
+ children :schedule, :schedule, IisObject
8
+ end
9
+
10
+ class Recycling < IisObject
11
+ child :periodic_restart, :periodicRestart, PeriodicRestart
12
+ end
13
+
14
+ class ApplicationPool < IisObject
15
+
16
+ prop :auto_start, :autoStart, Proc.new { |a| a == true ? "true" : "false" }, Proc.new {|value| value == "true" }
17
+ prop :runtime_version, :managedRuntimeVersion, Proc.new { |a| a }, Proc.new {|value| value }
18
+ prop :classic_pipeline, :managedPipelineMode, Proc.new { |a| a == true ? 1 : 0 }, Proc.new {|value| value.to_i == 1 }
19
+ prop :enable_32bit, :enable32BitAppOnWin64, Proc.new { |a| a }, Proc.new {|value| value }
20
+ prop :always_running, :startMode, Proc.new { |a| a == true ? "AlwaysRunning" : "OnDemand" },Proc.new {|value| value.to_i == 1 }
21
+
22
+ child :process_model, :processModel, ProcessModel
23
+ child :recycling, :recycling, Recycling
24
+
25
+ end
26
+
@@ -0,0 +1,3 @@
1
+ class AutoStartProvider < IisObject
2
+
3
+ end
@@ -0,0 +1,8 @@
1
+
2
+ class BindingInformation < IisObject
3
+
4
+ #prop :protocol, "protocol"
5
+
6
+ prop :binding_information, :bindingInformation
7
+
8
+ end
@@ -0,0 +1,10 @@
1
+
2
+ class Site < IisObject
3
+
4
+ prop :auto_start, :serverAutoStart
5
+
6
+ collection :applications, :application, Application
7
+
8
+ children :bindings, :binding, BindingInformation
9
+
10
+ end
@@ -0,0 +1,5 @@
1
+ class VirtualDirectory < IisObject
2
+
3
+ #prop :path, "path"
4
+
5
+ end
@@ -0,0 +1,43 @@
1
+ # Represents a collection of IIS configuration objects.
2
+ class IisObjectCollection
3
+
4
+ def initialize element, item_name, type, add_callback = nil
5
+ @collection_element = element
6
+ @item_name = item_name
7
+ @type = type
8
+ @add_callback = add_callback
9
+ end
10
+
11
+ def size
12
+ @collection_element.Count
13
+ end
14
+
15
+ def [](index)
16
+ return @type.new @collection_element.Item index
17
+ end
18
+
19
+ def each
20
+ size.times { |i| yield self[i] }
21
+ end
22
+
23
+ def add
24
+ e = @collection_element.CreateNewElement @item_name.to_s
25
+ added = @type.new e
26
+ @add_callback.call added unless @add_callback.nil?
27
+ yield added
28
+ @collection_element.AddElement e
29
+ added
30
+ end
31
+
32
+ def find
33
+ size.times do |i|
34
+ instance = self[i]
35
+ return instance if yield(instance)
36
+ end
37
+ nil
38
+ end
39
+
40
+ def remove(index)
41
+ @collection_element.DeleteElement index
42
+ end
43
+ end
@@ -0,0 +1,74 @@
1
+ require 'rake/tasklib'
2
+
3
+ module Inetmgr
4
+
5
+ class InetmgrTask < ::Rake::TaskLib
6
+ attr_accessor :name
7
+
8
+ def initialize(name, *args, &block)
9
+ @block = block
10
+ args = args.insert(0, name)
11
+ define name, args
12
+ end
13
+
14
+ def define(name, args)
15
+ task *args do |task, task_args|
16
+ @task_args = task_args
17
+ execute name.to_s
18
+ end
19
+ end
20
+
21
+ def call_task_block(obj)
22
+ if !@block.nil?
23
+ if @block.arity == 1
24
+ @block.call(obj)
25
+ else
26
+ @block.call(obj, @task_args)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ def create_task(taskname, task_object_proc, &execute_body)
34
+ taskclass = :"Inetmgr_TaskFor_#{taskname}"
35
+ taskmethod = taskname.to_s.downcase.to_sym
36
+
37
+ Object.class_eval(<<-EOF, __FILE__, __LINE__)
38
+ def #{taskmethod}(name=:#{taskname}, *args, &block)
39
+ Inetmgr.const_get("#{taskclass}").new(name, *args, &block)
40
+ end
41
+ EOF
42
+
43
+ Inetmgr.class_eval do
44
+ const_set(taskclass, Class.new(Inetmgr::InetmgrTask) do
45
+ define_method :execute do |name|
46
+ task_object = task_object_proc.call
47
+
48
+ call_task_block(task_object)
49
+ execute_body.call(task_object) unless execute_body.nil?
50
+ end
51
+ end)
52
+ end
53
+ end
54
+
55
+
56
+ create_task :application_pool, Proc.new { ApplicationPool.new } do |pool|
57
+ pool.create
58
+ end
59
+
60
+ create_task :application, Proc.new { Application.new } do |pool|
61
+ pool.create
62
+ end
63
+
64
+ create_task :site, Proc.new { Site.new } do |site|
65
+ site.create
66
+ end
67
+
68
+ create_task :auto_start_provider, Proc.new { AutoStartProvider.new } do |p|
69
+ p.create
70
+ end
71
+
72
+ create_task :virtual_directory, Proc.new { VirtualDirectory.new } do |dir|
73
+ dir.create
74
+ end
File without changes
@@ -0,0 +1,4 @@
1
+ file.reference.inetmgr-lib=D:\\_git\\typesafe\\inetmgr\\lib
2
+ file.reference.inetmgr-spec=D:\\_git\\typesafe\\inetmgr\\spec
3
+ file.reference.inetmgr-test=D:\\_git\\typesafe\\inetmgr\\test
4
+ platform.active=Ruby
@@ -0,0 +1,2 @@
1
+ default=
2
+ show_all_settings=
@@ -0,0 +1,10 @@
1
+ file.reference.inetmgr-lib=lib
2
+ file.reference.inetmgr-spec=spec
3
+ file.reference.inetmgr-test=test
4
+ javac.classpath=
5
+ main.file=
6
+ platform.active=Ruby
7
+ source.encoding=UTF-8
8
+ src.dir=${file.reference.inetmgr-lib}
9
+ test.spec.dir=spec
10
+ test.src.dir=${file.reference.inetmgr-test}
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://www.netbeans.org/ns/project/1">
3
+ <type>org.netbeans.modules.ruby.rubyproject</type>
4
+ <configuration>
5
+ <data xmlns="http://www.netbeans.org/ns/ruby-project/1">
6
+ <name>inetmgr</name>
7
+ <source-roots>
8
+ <root id="src.dir"/>
9
+ </source-roots>
10
+ <test-roots>
11
+ <root id="test.spec.dir"/>
12
+ <root id="test.src.dir"/>
13
+ </test-roots>
14
+ </data>
15
+ </configuration>
16
+ </project>
@@ -0,0 +1,88 @@
1
+ require 'spec_env'
2
+
3
+ describe "When adding a new application pool" do
4
+
5
+ before(:all) do
6
+ @pools = IisConfiguration.new.get_application_pools
7
+ @before_count = @pools.size
8
+ @pool = @pools.add do |p|
9
+ p.name = "tralala"
10
+ end
11
+ end
12
+
13
+ it "it should be present in the application pool collection" do
14
+ @pools.size.should == @before_count + 1
15
+ end
16
+
17
+ it "the auto_start value should default to false" do
18
+ @pool.auto_start.should == false
19
+ end
20
+
21
+ # TODO: fix this -> it depends on the defaults in the config
22
+ it "the runtime_version value should default to 'v2.0'" do
23
+ @pool.runtime_version.should == "v2.0"
24
+ end
25
+
26
+ it "the classic_pipeline value should default to false" do
27
+ @pool.classic_pipeline.should == false
28
+ end
29
+
30
+ it "the enable_32bit value should default to false" do
31
+ @pool.enable_32bit.should == false
32
+ end
33
+
34
+ it "the always_running value should default to false" do
35
+ @pool.always_running.should == false
36
+ end
37
+ end
38
+
39
+ describe "When updating application pool" do
40
+
41
+ before(:all) do
42
+
43
+ @name = generate_random_name()
44
+
45
+ configure do |cfg|
46
+
47
+ pool = cfg.get_application_pools.add { |p| p.name = @name } # defaults
48
+
49
+ pool.auto_start = true
50
+ pool.runtime_version = "v4.0"
51
+ pool.classic_pipeline = true
52
+ pool.enable_32bit = true
53
+ pool.always_running = true
54
+
55
+ end
56
+
57
+ configure do |cfg|
58
+ @pool = cfg.get_application_pools.find { |p| p.name == @name }
59
+ end
60
+
61
+ end
62
+
63
+ it "the name should be changed" do
64
+ @pool.name.should == @name
65
+ end
66
+
67
+ it "the auto_start value should be changed" do
68
+ @pool.auto_start.should == false
69
+ end
70
+
71
+ it "the runtime_version value should be changed" do
72
+ @pool.runtime_version.should == "v4.0"
73
+ end
74
+
75
+ it "the classic_pipeline value should be changed" do
76
+ @pool.classic_pipeline.should == true
77
+ end
78
+
79
+ it "the enable_32bit value should be changed" do
80
+ @pool.enable_32bit.should == true
81
+ end
82
+
83
+ it "the always_running value should be changed" do
84
+ puts @pool.startMode
85
+ @pool.always_running.should == true
86
+ end
87
+
88
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_env'
2
+
3
+ describe "When adding an Application to a site" do
4
+
5
+ before(:all) do
6
+
7
+ configure do |cfg|
8
+ site = cfg.get_sites[0]
9
+ @app_name = "/#{generate_random_name}"
10
+ site.applications.add do|a|
11
+ a.path = @app_name
12
+ a.virtual_directories.add do |vd|
13
+ vd.path = @app_name
14
+ vd.physicalPath = "D:\\"
15
+ end
16
+ end
17
+ end
18
+
19
+ configure do |cfg|
20
+ @site = cfg.get_sites[0]
21
+ @app = @site.applications.find {|a| a.path == @app_name}
22
+ end
23
+ end
24
+
25
+ it "the app should be added" do
26
+ @app.should_not be_nil
27
+ end
28
+
29
+ it "the app should contain the associated virtual directory" do
30
+ @app.virtual_directories.size.should == 1
31
+ end
32
+
33
+ it "the virtual directory physical path should be set" do
34
+ @app.virtual_directories[0].physicalPath.should == "D:\\"
35
+ end
36
+
37
+ end
38
+
@@ -0,0 +1,25 @@
1
+ require 'spec_env'
2
+
3
+ describe "When adding an auto start provider" do
4
+
5
+ before(:all) do
6
+ configure do |cfg|
7
+ @name = generate_random_name
8
+ @type = generate_random_name
9
+ @provider = cfg.get_auto_start_providers.add { |p| p.name = @name; p.type = @type }
10
+ end
11
+ end
12
+
13
+ it "the provider should not be nil" do
14
+ @provider.should_not be_nil
15
+ end
16
+
17
+ it "the provider name should be set" do
18
+ @provider.name.should == @name
19
+ end
20
+
21
+ it "the provider type should be set" do
22
+ @provider.type.should == @type
23
+ end
24
+
25
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_env'
2
+
3
+ describe "When getting the configured application pools" do
4
+
5
+ before(:all) do
6
+ configure do |cfg|
7
+ @pools = cfg.get_application_pools
8
+ end
9
+ end
10
+
11
+ it "at least one item should be returned" do
12
+ @pools.size > 1
13
+ end
14
+
15
+ end
16
+
17
+ describe "When rolling back configuration changes" do
18
+
19
+ before(:all) do
20
+ configure false do |cfg|
21
+ cfg.get_application_pools.add do |p|
22
+ p.name = "foobar"
23
+ end
24
+ end
25
+ configure false do |cfg|
26
+ @non_existing_pool = cfg.get_application_pools.find { |p| p.name == "foobar" }
27
+ end
28
+ end
29
+
30
+ it "the changes should not be applied" do
31
+ @non_existing_pool.should be_nil
32
+ end
33
+
34
+ end
35
+
@@ -0,0 +1,34 @@
1
+ require 'spec_env'
2
+
3
+ describe "When getting the configured sites" do
4
+
5
+ before(:all) do
6
+ configure do |cfg|
7
+ @sites = cfg.get_sites
8
+ end
9
+ end
10
+
11
+ it "at least one item should be returned" do
12
+ @sites.size > 1
13
+ end
14
+
15
+ end
16
+
17
+ describe "When adding a new site" do
18
+
19
+ before(:all) do
20
+ configure do |cfg|
21
+ @sites = cfg.get_sites
22
+ @site = @sites.add { |s| s.name = generate_random_name }
23
+ end
24
+ end
25
+
26
+ it "the site should be created" do
27
+ @site.should_not be_nil
28
+ end
29
+
30
+ it "the site should have the highest id" do
31
+ @site.id.should == @sites.size
32
+ end
33
+
34
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec'
2
+ require 'test/unit'
3
+ require 'spec_env'
4
+ require 'uuid'
5
+ require File.expand_path(File.join(File.dirname(__FILE__), "../lib/inetmgr"))
6
+
7
+ module RSpecExtensions
8
+
9
+ def configure(apply_changes = true)
10
+ cfg = IisConfiguration.new
11
+ yield cfg
12
+ cfg.apply_changes if apply_changes
13
+ end
14
+
15
+ def generate_random_name
16
+ UUID.generate(:compact).to_s
17
+ end
18
+
19
+ end
20
+
21
+ Spec::Runner.configure do |config|
22
+ config.include RSpecExtensions
23
+ end
@@ -0,0 +1 @@
1
+ require 'spec_env'
@@ -0,0 +1,36 @@
1
+ require '..\lib\inetmgr.rb'
2
+
3
+ cfg = IisConfiguration.new
4
+
5
+ sites = cfg.get_sites
6
+ pools = cfg.get_application_pools
7
+
8
+ pools.each do |p|
9
+ puts "\r\nPOOL: #{p.name}"
10
+ puts "----"
11
+
12
+ puts " - process_model:"
13
+ puts " - identityType: #{p.process_model.identityType}"
14
+
15
+ puts " - recycling:"
16
+ puts " - logEventOnRecycle: #{p.recycling.logEventOnRecycle}"
17
+ puts " - periodic_restart.schedulecount: #{p.recycling.periodic_restart.schedule.size}"
18
+
19
+ end
20
+
21
+ sites.each do |s|
22
+
23
+ puts "SITE: #{s.name} #{s.bindings.size}"
24
+
25
+ s.bindings.each do |b|
26
+ puts "binding: #{b.protocol} - #{b.binding_information}"
27
+ end
28
+
29
+ s.applications.each do |a|
30
+ puts " app: #{a.path}"
31
+ a.virtual_directories.each do |d|
32
+ puts " dir: #{d.path}"
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,27 @@
1
+ require '../lib/inetmgr'
2
+
3
+ task :default => [:show_all_settings]
4
+
5
+ task :show_all_settings do
6
+
7
+ cfg = IisConfiguration.new
8
+
9
+ puts "APPLICATION POOLS:"
10
+ puts ""
11
+ puts "name |auto_start|runtime_version|classic_pipeline|always_running"
12
+ puts "------------------------------------------------------------------------------------"
13
+ cfg.get_application_pools.each do |p|
14
+ puts sprintf "%-25s|%-10s|%-15s|%-16s|%-s", p.name, p.auto_start, p.runtime_version, p.classic_pipeline, p.always_running
15
+ end
16
+
17
+ puts "SITES:"
18
+ puts ""
19
+ puts "name |auto_start"
20
+ puts "------------------------------------------"
21
+ cfg.get_sites.each do |s|
22
+ puts sprintf "%-25s|%-10s", s.name, s.auto_start
23
+ end
24
+ end
25
+
26
+
27
+
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: inetmgr
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
+ platform: mswin32
11
+ authors:
12
+ - Gino Heyman
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-10-14 00:00:00 +02:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: inetmgr allows you to inspect/configure IIS configuration sections and elements.
22
+ email: gino.heyman@gmail.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - inetmgr.gemspec
31
+ - lib/inetmgr/iis_configuration.rb
32
+ - lib/inetmgr/iis_object/application.rb
33
+ - lib/inetmgr/iis_object/application_pool.rb
34
+ - lib/inetmgr/iis_object/auto_start_provider.rb
35
+ - lib/inetmgr/iis_object/binding_information.rb
36
+ - lib/inetmgr/iis_object/site.rb
37
+ - lib/inetmgr/iis_object/virtual_directory.rb
38
+ - lib/inetmgr/iis_object.rb
39
+ - lib/inetmgr/iis_object_collection.rb
40
+ - lib/inetmgr.rb
41
+ - lib/rake/inetmgrtask.rb
42
+ - nbproject/private/config.properties
43
+ - nbproject/private/private.properties
44
+ - nbproject/private/rake-d.txt
45
+ - nbproject/project.properties
46
+ - nbproject/project.xml
47
+ - README.rdoc
48
+ - spec/application_pool_spec.rb
49
+ - spec/application_spec.rb
50
+ - spec/auto_start_provider_spec.rb
51
+ - spec/iis_configuration_spec.rb
52
+ - spec/site_spec.rb
53
+ - spec/spec_env.rb
54
+ - spec/virtual_directory_spec.rb
55
+ - test/print_iis_config.rb
56
+ - test/rakefile.rb
57
+ has_rdoc: true
58
+ homepage: http://typesafe.be/inetmgr/
59
+ licenses: []
60
+
61
+ post_install_message:
62
+ rdoc_options: []
63
+
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ segments:
72
+ - 1
73
+ - 8
74
+ - 7
75
+ version: 1.8.7
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ segments:
82
+ - 1
83
+ - 3
84
+ - 6
85
+ version: 1.3.6
86
+ requirements: []
87
+
88
+ rubyforge_project:
89
+ rubygems_version: 1.3.7
90
+ signing_key:
91
+ specification_version: 3
92
+ summary: A library for managing IIS configuration settings.
93
+ test_files: []
94
+