summaryrefslogtreecommitdiffstats
path: root/rubbos/app/tomcat-connectors-1.2.32-src/native/iis/isapi_install.vbs
blob: 7daa8d74088881a7e0b746576e1462b9d51c111e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
'
' Licensed to the Apache Software Foundation (ASF) under one or more
' contributor license agreements.  See the NOTICE file distributed with
' this work for additional information regarding copyright ownership.
' The ASF licenses this file to You under the Apache License, Version 2.0
' (the "License"); you may not use this file except in compliance with
' the License.  You may obtain a copy of the License at
'
'     http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing, software
' distributed under the License is distributed on an "AS IS" BASIS,
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' See the License for the specific language governing permissions and
' limitations under the License.
'

' =========================================================================
' Description: Install script for Tomcat ISAPI redirector                              
' Author:      Peter S. Horne <horneps@yahoo.com.au>                           
' Version:     $Revision: 572120 $                                           
' =========================================================================
'
' This script automatically installs the tomcat isapi_redirector for use in
' both out-of and in-process installations on IIS/Win2K. See the command line
' usage section for usage instructions.

'
'  Check the command line
'
set args = wscript.arguments
if args.count <> 6 then 
	info ""
	info "Tomcat ISAPI Redirector Installation Utility"
	info "usage: isapi_install <server> <fdir> <worker> <mount> <log> <level>"
	info "	server:	The Web Server Name (for example 'Default Web Site')"
	info "	fdir:	the full path to the directory that contains the isapi filter"
	info "	worker:	Full path and file name of the worker properties file"
	info "	mount:	Full path and file name of the worker mount properties file"
	info "	log:	Full path and file name of the log file"
	info "	level:	The log level emerg | info"
	info "(Re-runs are ok and will change/reset settings)"
	info ""
	fail "Incorrect Arguments"
end if

' Setup the args
serverName = args(0)
filterDir = args(1)
filterName = "jakarta"
filterLib = "\isapi_redirect.dll"
workerFile = args(2)
mountFile = args(3)
logFile = args(4)
logLevel = args(5)

'
' Get a shell
'
dim shell
set shell = WScript.CreateObject("WScript.Shell")

'
' Find the indicated server from all the servers in the service 
' Note: they aren't all Web!
'
set service = GetObject("IIS://LocalHost/W3SVC" )
serverId = ""
for each thing in service
	 if thing.Class = "IIsWebServer" then
		if thing.ServerComment = serverName then 
			set server = thing
			serverId = thing.name
			exit for
		end if
	end if
next
if serverId = "" then fail "Server " + serverName + " not found."
info "Found Server <" + serverName + "> at index [" + serverId + "]."

'
' Stop everything to release any dlls - needed for a re-install
'
' info "Stopping server <" + serverName + ">..."
' server.stop
' info "Done"

'
' Get a handle to the filters for the server - we process all errors
'
On Error Resume Next
dim filters
set filters = GetObject("IIS://LocalHost/W3SVC/" + serverId + "/Filters")
if err then 
	err.clear
	info "Filters not found for server - creating"
	set filters = server.create( "IIsFilters", "Filters" )
	filters.setInfo
	if err then fail "Error Creating Filters"
end if
info "Got Filters"

'
' Create the filter - if it fails then delete it and try again
'
name = filterName
info "Creating Filter  - " + filterName
dim filter
set filter = filters.Create( "IISFilter", filterName )
if err then
	err.clear
	info "Filter exists - deleting"
	filters.delete "IISFilter", filterName
	if err then fail "Error Deleting Filter"
	set filter = filters.Create( "IISFilter", filterName )
	if err then fail "Error Creating Filter"
end if
info "Created Filter"

'
' Set the filter info and save it
'
filter.FilterPath = filterDir + filterLib  
filter.FilterEnabled=true
filter.description = filterName
filter.notifyOrderHigh = true
filter.setInfo

'
' Set the load order - only if it's not in the list already
'
on error goto 0
loadOrders = filters.FilterLoadOrder
list = Split( loadOrders, "," )
found = false
for each item in list
	if Trim( item ) = filterName then found = true
next

if found = false then 
	info "Filter is not in load order - adding now."
	if len(loadOrders) <> 0  then loadOrders = loadOrders + ","
	filters.FilterLoadOrder = loadOrders + filterName
	filters.setInfo
	info "Filter added."
else
	info "Filter already exists in load order - no update required."
end if

'
' Set the registry up
' 
regRoot = "HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0\"
err.clear
on error resume next
shell.RegDelete( regRoot )
if err then 
	info "Entering Registry Information for the first time"
else 
	info "Deleted existing Registry Setting"
end if

on error goto 0
info "Updating Registry"
shell.RegWrite regRoot + "extension_uri", "/jakarta/isapi_redirect.dll"
shell.RegWrite regRoot + "log_file", logFile
shell.RegWrite regRoot + "log_level", logLevel
shell.RegWrite regRoot + "worker_file", workerFile
shell.RegWrite regRoot + "worker_mount_file", mountFile
info "Registry Settings Created"

'
' Finally, create the virtual directory matching th extension uri
' 
on error goto 0
set root = GetObject( "IIS://LocalHost/W3SVC/" + serverID + "/ROOT" )
on error resume next
set vdir = root.Create("IISWebVirtualDir", filterName )
if err then
	info "Directory exists - deleting"
	on error resume next
	root.delete "IISWebVirtualDir", filterName
	root.setInfo
	if err then fail "Error Deleting Directory"
	set vdir = root.create("IISWebVirtualDir", filterName )
	if err then fail "Error Creating Directory"
end if
info "Directory Created"

' Set the directory information - make it an application directory
info "Setting Directory Information"
vdir.AppCreate2 1
vdir.AccessExecute = TRUE
vdir.AppFriendlyName = filterName
vdir.AccessRead = false
vdir.ContentIndexed = false
vdir.Path = filterDir
vdir.setInfo
if err then fail "Error saving new directory"
info "Directory Saved"
'
' Re Start 
'
' info "Starting server <" + serverName + ">..."
' server.start
' info "Done"

info "All done... Bye."
wscript.quit(0)

' 
' Helper function for snafus
'
function fail( message )
	wscript.echo "E: " + message
	wscript.quit(1)
end function

'
' Helper function for info
'
function info( message )
	wscript.echo " " + message
end function