' ========================================================================= ' ' The Apache Software License, Version 1.1 ' ' Copyright (c) 1999-2001 The Apache Software Foundation. ' All rights reserved. ' ' ========================================================================= ' ' Redistribution and use in source and binary forms, with or without modi- ' fication, are permitted provided that the following conditions are met: ' ' 1. Redistributions of source code must retain the above copyright notice ' notice, this list of conditions and the following disclaimer. ' ' 2. Redistributions in binary form must reproduce the above copyright ' notice, this list of conditions and the following disclaimer in the ' documentation and/or other materials provided with the distribution. ' ' 3. The end-user documentation included with the redistribution, if any, ' must include the following acknowlegement: ' ' "This product includes software developed by the Apache Software ' Foundation ." ' ' Alternately, this acknowlegement may appear in the software itself, if ' and wherever such third-party acknowlegements normally appear. ' ' 4. The names "The Jakarta Project", "Jk", and "Apache Software ' Foundation" must not be used to endorse or promote products derived ' from this software without prior written permission. For written ' permission, please contact . ' ' 5. Products derived from this software may not be called "Apache" nor may ' "Apache" appear in their names without prior written permission of the ' Apache Software Foundation. ' ' THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES ' INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ' AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ' THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY ' DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ' DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ' OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ' HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ' STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ' ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ' POSSIBILITY OF SUCH DAMAGE. ' ' ========================================================================= ' ' This software consists of voluntary contributions made by many indivi- ' duals on behalf of the Apache Software Foundation. For more information ' on the Apache Software Foundation, please see . ' ' ========================================================================= ' ========================================================================= ' Description: Install script for Tomcat ISAPI redirector ' Author: Peter S. Horne ' Version: $Revision$ ' ========================================================================= ' ' 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 " 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_redirector.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_redirector.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