You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by "William A. Rowe, Jr." <wr...@rowe-clan.net> on 2005/05/12 20:55:29 UTC
cvs commit: jakarta-tomcat-connectors/jk/native2/server/isapi
>wrowe 2005/05/12 11:37:14
>
> Modified: jk/native2 README.txt CHANGES.txt STATUS.txt
> jk/native2/server/isapi install4iis.js
> Log:
> Whitespace changes only to this inactive repository - fix all ^M bogosity
>
> Revision Changes Path
> 1.7 +5 -5 jakarta-tomcat-connectors/jk/native2/README.txt
>
> Index: README.txt
> ===================================================================
> RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/README.txt,v
> retrieving revision 1.6
> retrieving revision 1.7
> diff -u -r1.6 -r1.7
> --- README.txt 7 Dec 2004 12:03:48 -0000 1.6
> +++ README.txt 12 May 2005 18:37:14 -0000 1.7
> @@ -1,12 +1,12 @@
> README for JK2
> --------------
>
> -AS OF NOVEMBER 15, 2004, JK2 IS NO LONGER SUPPORTED. ALL BUGS RELATED TO JK2
> -WILL BE MARKED AS WONTFIX. IN ITS PLACE, SOME OF ITS FEATURES HAVE BEEN
> +AS OF NOVEMBER 15, 2004, JK2 IS NO LONGER SUPPORTED. ALL BUGS RELATED TO JK2
> +WILL BE MARKED AS WONTFIX. IN ITS PLACE, SOME OF ITS FEATURES HAVE BEEN
> BACKPORTED TO JK1. MOST OF THOSE FEATURES WILL BE SEEN IN 1.2.7 AND LATER
> -VERSIONS.
> -
> -ANOTHER ALTERNATIVE IS THE AJP ADDITION TO MOD_PROXY WHICH WILL BE PART OF
> +VERSIONS.
> +
> +ANOTHER ALTERNATIVE IS THE AJP ADDITION TO MOD_PROXY WHICH WILL BE PART OF
> APACHE 2.1.
>
>
>
>
>
> 1.18 +1 -1 jakarta-tomcat-connectors/jk/native2/CHANGES.txt
>
>
>
>
> 1.7 +6 -6 jakarta-tomcat-connectors/jk/native2/STATUS.txt
>
> Index: STATUS.txt
> ===================================================================
> RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/STATUS.txt,v
> retrieving revision 1.6
> retrieving revision 1.7
> diff -u -r1.6 -r1.7
> --- STATUS.txt 7 Dec 2004 12:03:48 -0000 1.6
> +++ STATUS.txt 12 May 2005 18:37:14 -0000 1.7
> @@ -1,12 +1,12 @@
> JAKARTA TOMCAT CONNECTORS 2 (JK2) STATUS: -*-text-*-
> Last modified at [$Date$]
>
> -AS OF NOVEMBER 15, 2004, JK2 IS NO LONGER SUPPORTED. ALL BUGS RELATED TO JK2
> -WILL BE MARKED AS WONTFIX. IN ITS PLACE, SOME OF ITS FEATURES HAVE BEEN
> +AS OF NOVEMBER 15, 2004, JK2 IS NO LONGER SUPPORTED. ALL BUGS RELATED TO JK2
> +WILL BE MARKED AS WONTFIX. IN ITS PLACE, SOME OF ITS FEATURES HAVE BEEN
> BACKPORTED TO JK1. MOST OF THOSE FEATURES WILL BE SEEN IN 1.2.7 AND LATER
> -VERSIONS.
> -
> -ANOTHER ALTERNATIVE IS THE AJP ADDITION TO MOD_PROXY WHICH WILL BE PART OF
> +VERSIONS.
> +
> +ANOTHER ALTERNATIVE IS THE AJP ADDITION TO MOD_PROXY WHICH WILL BE PART OF
> APACHE 2.1.
>
> Release:
>
>
>
> 1.7 +516 -516 jakarta-tomcat-connectors/jk/native2/server/isapi/install4iis.js
>
> Index: install4iis.js
> ===================================================================
> RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/isapi/install4iis.js,v
> retrieving revision 1.6
> retrieving revision 1.7
> diff -u -r1.6 -r1.7
> --- install4iis.js 7 Jun 2004 23:58:17 -0000 1.6
> +++ install4iis.js 12 May 2005 18:37:14 -0000 1.7
> @@ -1,516 +1,516 @@
> -/*
> - * Copyright 1999-2004 The Apache Software Foundation
> - *
> - * Licensed 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 JK2 ISAPI redirector
> - * Author: Mladen Turk <mt...@apache.org>
> - * Version: $Revision$
> - */
> -
> -
> -/**
> - * Global variables
> - */
> -//var IIsWebService;
> -//var IIsWebServer;
> -//var IIsROOT;
> -//var AppParams;
> -
> -/**
> - * Defaults
> - */
> -_DEFAULT_SERVER_NAME = "Default Web Site";
> -_DEFAULT_DESCRIPTION = "JK2 ISAPI Redirector";
> -_DEFAULT_FILTER_NAME = "jakarta";
> -_DEFAULT_HEADERS = "X-Powered-By: Apache Software Foundation"
> -_DEFAULT_OPTIONS = "rbdi";
> -_DEFAULT_REGISTRY = "HKLM\\SOFTWARE\\Apache Software Foundation\\Jakarta Isapi Redirector\\2.0";
> -_DEFAULT_FILTERLIB = "isapi_redirector2.dll";
> -_DEFAULT_WORKERS2 = "\\conf\\workers2.properties";
> -
> -/**
> - * Set this to false to disable TRACE messages;
> - */
> -_DEBUG = true;
> -_TRACE_COUNTER = 1;
> -
> -/**
> - * Constants variables
> - */
> -_APP_INPROC = 0;
> -_APP_OUTPROC = 1;
> -_APP_POOLED = 2
> -_IIS_OBJECT = "IIS://LocalHost/W3SVC";
> -_IIS_SERVER = "IIsWebServer";
> -_IIS_WEBDIR = "IIsWebVirtualDir";
> -_IIS_FILTERS = "IIsFilters";
> -_IIS_FILTER = "IIsFilter";
> -
> -function ERROR(args, sMsg)
> -{
> - WScript.Echo("Error processing " + args.script + "\n" + sMsg);
> - WScript.Quit(-1);
> -}
> -
> -function RPAD(str, n)
> -{
> - var p;
> - p = str;
> - for (i = str.length; i < n; i++)
> - p += " ";
> - return p;
> -}
> -
> -function HEX(num)
> -{
> - var digits = "0123456789ABCDEF";
> - var n = num;
> - var h = "";
> - for (i = 0; i < 8; i++) {
> - h = digits.charAt(n & 15) + h;
> - n = n >>> 4;
> - }
> - return h;
> -}
> -
> -function TRACE(sMsg)
> -{
> - if (_DEBUG) {
> - var line = _TRACE_COUNTER + " ";
> - WScript.Echo(line.substring(0, 4) + sMsg);
> - ++_TRACE_COUNTER;
> - }
> -}
> -
> -function EXCEPTION(exception, func)
> -{
> - WScript.Echo(exception + " In function '" +
> - func + "'\nError number: " +
> - HEX(exception.number) + " - " + exception.description + "");
> - WScript.Quit(-1);
> -}
> -
> -
> -function Parameters()
> -{
> - this.ServerName = _DEFAULT_SERVER_NAME;
> - this.WebDescription = _DEFAULT_DESCRIPTION;
> - this.FilterName = _DEFAULT_FILTER_NAME;
> - this.FilterDesc = _DEFAULT_DESCRIPTION;
> - this.WebName = _DEFAULT_FILTER_NAME;
> - this.Headers = _DEFAULT_HEADERS;
> - this.WebOptions = _DEFAULT_OPTIONS;
> - this.RegistryKey = _DEFAULT_REGISTRY;
> - this.AppProtection = _APP_POOLED;
> - this.WebPath = "C:";
> - this.FilterLib = _DEFAULT_FILTERLIB;
> -}
> -
> -function findWebServiceObject(clsName, objName)
> -{
> - var webService;
> - var webObjects;
> - try {
> - webService = GetObject(_IIS_OBJECT);
> - if (!clsName || !objName)
> - return webService;
> - webObjects = new Enumerator(webService);
> - while (!webObjects.atEnd()) {
> - TRACE(RPAD(webObjects.item().Class, 18) +
> - RPAD(webObjects.item().Name, 15) + webObjects.item().AdsPath);
> - if (webObjects.item().Class == clsName &&
> - webObjects.item().Name == objName)
> - return webObjects.item();
> -
> - webObjects.moveNext();
> - }
> - }
> - catch(exception) {
> - EXCEPTION(exception, "findWebServiceObject");
> - }
> -
> - return null;
> -}
> -
> -function findWebServer(serverComment)
> -{
> - var webService;
> - var webObjects;
> - try {
> - webService = GetObject(_IIS_OBJECT);
> -
> - webObjects = new Enumerator(webService);
> - while (!webObjects.atEnd()) {
> - if (webObjects.item().Class == _IIS_SERVER &&
> - webObjects.item().ServerComment == serverComment)
> - return webObjects.item();
> -
> - webObjects.moveNext();
> - }
> - }
> - catch(exception) {
> - EXCEPTION(exception, "findWebServer");
> - }
> -
> - return null;
> -}
> -
> -function findDefaultWebServer()
> -{
> - return findWebServer(_DEFAULT_SERVER_NAME);
> -}
> -
> -
> -function findADSIObject(adsiObject, clsName, objName)
> -{
> - var adsiObjects;
> - try {
> - adsiObjects = new Enumerator(adsiObject);
> - while (!adsiObjects.atEnd()) {
> - TRACE(RPAD(adsiObjects.item().Class, 18) +
> - RPAD(adsiObjects.item().Name, 15) + adsiObjects.item().AdsPath);
> - if (adsiObjects.item().Class == clsName &&
> - adsiObjects.item().Name == objName)
> - return adsiObjects.item();
> -
> - adsiObjects.moveNext();
> - }
> - }
> - catch(exception) {
> - EXCEPTION(exception, "findADSIObject");
> - }
> -
> - return null;
> -
> -}
> -
> -function hasOption(optString, optName)
> -{
> - if (optString.indexOf(optName) == -1)
> - return false;
> - else {
> - /* Check if the option is dissabled using '-' prefix */
> - if (optString.indexOf("-" + optName) == -1)
> - return true;
> - else
> - return false;
> - }
> -}
> -
> -function createVirtualDir(webRootDir, appParams)
> -{
> - var newDir;
> - try {
> - newDir = findADSIObject(webRootDir, _IIS_WEBDIR, appParams.WebName);
> - if (newDir == null) {
> -
> - TRACE("Creating new directory...");
> -
> - newDir = webRootDir.Create(_IIS_WEBDIR, appParams.WebName);
> - newDir.AppFriendlyName = appParams.WebDescription;
> - newDir.Path = appParams.WebPath;
> - newDir.AppCreate2(appParams.AppProtection);
> - newDir.HttpCustomHeaders = appParams.Headers;
> - }
> - else {
> - TRACE("Updating existing directory...");
> - }
> - TRACE("Setting directory options...");
> - newDir.AccessExecute = hasOption(appParams.WebOptions, "x");
> - newDir.AccessRead = hasOption(appParams.WebOptions, "r");
> - newDir.AccessWrite = hasOption(appParams.WebOptions, "w");
> - newDir.AccessScript = hasOption(appParams.WebOptions, "s");
> - newDir.ContentIndexed = hasOption(appParams.WebOptions, "i");
> - newDir.EnableDirBrowsing = hasOption(appParams.WebOptions, "b");
> - newDir.EnableDefaultDoc = hasOption(appParams.WebOptions, "d");
> - newDir.SetInfo();
> -
> - TRACE("Virtual directory [/" + appParams.WebName + "] set.");
> - return newDir;
> - }
> - catch(exception) {
> - EXCEPTION(exception, "createVirtualDir");
> - }
> -
> - return null;
> -}
> -
> -function createISAPIFilter(webServer, appParams)
> -{
> - var filters;
> - var newFilter;
> - try {
> - filters = findADSIObject(webServer, _IIS_FILTERS, "Filters");
> - if (filters == null) {
> - //may have to create the website-level filters container
> - filters = webServer.create(_IIS_FILTERS, "Filters");
> - }
> - newFilter = findADSIObject(filters, _IIS_FILTER, appParams.FilterName);
> - if (newFilter == null) {
> -
> - TRACE("Creating new ISAPI filter...");
> -
> - newFilter = filters.Create(_IIS_FILTER, appParams.FilterName);
> - }
> - else {
> - TRACE("Updating existing filter...");
> - }
> - TRACE("Setting filter options...");
> -
> - TRACE("Filters order " + filters.FilterLoadOrder);
> - newFilter.FilterPath = appParams.WebPath + "\\" + appParams.FilterLib;
> - newFilter.FilterDescription = appParams.FilterDesc;
> - newFilter.SetInfo();
> - if (filters.FilterLoadOrder.indexOf(appParams.FilterName) == -1) {
> - filters.FilterLoadOrder += ", " + appParams.FilterName;
> - filters.SetInfo();
> - }
> - TRACE("Filter [" + appParams.FilterName + "] set.");
> - return newFilter;
> - }
> - catch(exception) {
> - EXCEPTION(exception, "createISAPIFilter");
> - }
> -
> - return null;
> -}
> -
> -function createVirtualExecDir(webRootDir, appParams)
> -{
> - var op, rv;
> - op = appParams.WebOptions;
> - appParams.WebOptions = op + "+x-r-i-b-d";
> - rv = createVirtualDir(webRootDir, appParams);
> - appParams.WebOptions = op;
> - return rv;
> -}
> -
> -function deleteADSIObject(adsiObject, clsName, objName)
> -{
> - var rv = false;
> - try {
> - adsiObject.Delete(clsName, objName);
> - rv = true;
> - }
> - catch(exception) {
> - /*
> - * Exception is thrown if the object doesn't exist
> - * Just ignore...
> - */
> - }
> -
> - return rv;
> -}
> -
> -function Arguments()
> -{
> - this.argv = WScript.Arguments;
> - this.argc = WScript.Arguments.length;
> - this.optarg = null;
> - this.optind = 0;
> - this.optopt = null;
> - this.opterr = null;
> -
> - this.program = WScript.FullName.toLowerCase();
> - this.program = this.program.substr(this.program.lastIndexOf("\\") + 1);
> - if (this.program.indexOf("wscript.exe") == -1)
> - _DEBUG = false;
> - this.script = WScript.ScriptName;
> -}
> -
> -function getopt(args, ostr)
> -{
> - if (args.optind >= args.argc) {
> - return null;
> - }
> - try {
> - var opt = args.argv(args.optind);
> - if (opt.charAt(0) == "-") {
> - var oi = ostr.indexOf(opt.charAt(1));
> - if (oi == -1) {
> - args.opterr = "Invalid option switch " + opt;
> - args.optopt = null;
> - args.optarg = null;
> - return null;
> - }
> - ++args.optind;
> - if (ostr.charAt(oi + 1) == ":") {
> - if (args.optind < args.argc) {
> - args.optarg = args.argv(args.optind);
> - ++args.optind;
> - }
> - else {
> - args.opterr = "Missing required argument value for " + opt;
> - args.optopt = null;
> - args.optarg = null;
> - return null;
> - }
> - }
> - args.optopt = ostr.charAt(oi);
> - return args.optopt;
> - }
> - }
> - catch(exception) {
> - EXCEPTION(exception, "getopt");
> - }
> - return null;
> -}
> -
> -function checkFileExists(fname)
> -{
> - var fso;
> - fso = new ActiveXObject("Scripting.FileSystemObject");
> -
> - if (fso.FileExists(fname))
> - return true;
> - else
> - return false;
> -}
> -
> -function checkFilterExists(params)
> -{
> - return checkFileExists(params.WebPath + "\\" + params.FilterLib);
> -}
> -
> -
> -function Usage(args)
> -{
> - var prn;
> - prn = "Usage: " + args.program + " " + args.script + " [option]... " + "[path] [tomcat_home]\n\n" +
> - " -s WEBSERVER Use the WEBSERVER [" + _DEFAULT_SERVER_NAME + "]\n" +
> - " -f FILTERNAME Use the FILTERNAME [" + _DEFAULT_FILTER_NAME + "]\n" +
> - " -d DESCRIPTION Filter description [" + _DEFAULT_DESCRIPTION + "]\n" +
> - " -v VIRTUALDIR Create the VIRTUALDIR [/" + _DEFAULT_FILTER_NAME + "]\n" +
> - " -l ISAPILIB Use the ISAPILIB [" + _DEFAULT_FILTERLIB + "]\n" +
> - " -h display this help and exit\n" +
> - "\n [path] Virtual directory path" +
> - "\n Set this to directory containing " + _DEFAULT_FILTERLIB +
> - "\n [tomcat_home] Path to the tomcat home directory";
> -
> - WScript.Echo(prn);
> -}
> -
> -function Main(args)
> -{
> - var params;
> - var opt;
> - var IIsWebService;
> - var IIsWebServer;
> - var IIsROOT;
> - var IIsFilters;
> - var IIsFilter;
> - var tchome = null;
> - var workers2 = null;
> -
> - params = new Parameters();
> -
> - while ((opt = getopt(args, "s:f:d:v:l:h"))) {
> - switch (opt) {
> - case "s":
> - params.ServerName = args.optarg;
> - break;
> - case "f":
> - params.FilterName = args.optarg;
> - break;
> - case "d":
> - params.FilterDesc = args.optarg;
> - break;
> - case "l":
> - params.FilterLib = args.optarg;
> - break;
> - case "v":
> - params.WebName = args.optarg;
> - break;
> - case "h":
> - default:
> - Usage(args);
> - return 0;
> - break;
> - }
> - }
> - TRACE("argc " + args.argc + " optind " + args.optind);
> - if (args.optind >= args.argc) {
> - /* Case when isapi_redirector2.dll is inside TOMCAT_HOME\bin */
> - params.WebPath = WScript.ScriptFullName.substr(0,
> - WScript.ScriptFullName.lastIndexOf("\\"));
> - tchome = params.WebPath.substr(0, params.WebPath.lastIndexOf("\\"));
> - }
> - else {
> - params.WebPath = args.argv(args.optind);
> - ++args.optind;
> - }
> - if (!checkFilterExists(params)) {
> - ERROR(args, "The specified filter library could not be found...\n" +
> - "File " + params.WebPath + "\\" + params.FilterLib + " does not exist.");
> -
> - }
> - if (args.optind < args.argc)
> - tchome = args.argv(args.optind);
> - else if (!tchome)
> - tchome = params.WebPath;
> - workers2 = tchome + _DEFAULT_WORKERS2 ;
> - if (!checkFileExists(workers2)) {
> - ERROR(args, "The specified configuration file could not be found...\n" +
> - "File " + workers2 + " does not exist.");
> -
> - }
> -
> - if ((IIsWebService = findWebServiceObject(null, null)) == null) {
> - ERROR(args, "Unable to find Web Service ADSI object\n" +
> - "Check the security settings...");
> - }
> -
> - if ((IIsWebServer = findWebServer(params.ServerName)) == null) {
> - ERROR(args, "Unable to find Web Server ADSI object...\n" +
> - "The '" + params.ServerName + "' does not exists.");
> -
> - }
> -
> - if ((IIsROOT = findADSIObject(IIsWebServer, _IIS_WEBDIR, "ROOT")) == null) {
> - ERROR(args, "Unable to find Web Server ROOT direcrory.");
> - }
> -
> - if (!createVirtualExecDir(IIsROOT, params)) {
> - ERROR(args, "Unable to create virual directory /" + params.WebName);
> - }
> -
> - if (!createISAPIFilter(IIsWebServer, params)) {
> - /* TODO: roll-back virtual dir */
> - ERROR(args, "Unable to create the '" + params.FilterName + "' filter.");
> - }
> -
> - /** Finaly set the registry entries
> - */
> - var WshShell = WScript.CreateObject("WScript.Shell");
> -
> - WshShell.RegWrite(_DEFAULT_REGISTRY + "\\extensionUri",
> - "/" + params.FilterName + "/" + params.FilterLib,
> - "REG_SZ");
> - WshShell.RegWrite(_DEFAULT_REGISTRY + "\\serverRoot",
> - tchome, "REG_SZ");
> - WshShell.RegWrite(_DEFAULT_REGISTRY + "\\workersFile",
> - workers2, "REG_SZ");
> - WshShell.RegWrite(_DEFAULT_REGISTRY + "\\authComplete", "0", "REG_SZ");
> - WshShell.RegWrite(_DEFAULT_REGISTRY + "\\threadPool", "20", "REG_SZ");
> -
> -
> - return 0;
> -}
> -
> -/* The main program */
> -var args = new Arguments();
> -rv = Main(args);
> -WScript.Quit(rv);
> +/*
> + * Copyright 1999-2004 The Apache Software Foundation
> + *
> + * Licensed 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 JK2 ISAPI redirector
> + * Author: Mladen Turk <mt...@apache.org>
> + * Version: $Revision$
> + */
> +
> +
> +/**
> + * Global variables
> + */
> +//var IIsWebService;
> +//var IIsWebServer;
> +//var IIsROOT;
> +//var AppParams;
> +
> +/**
> + * Defaults
> + */
> +_DEFAULT_SERVER_NAME = "Default Web Site";
> +_DEFAULT_DESCRIPTION = "JK2 ISAPI Redirector";
> +_DEFAULT_FILTER_NAME = "jakarta";
> +_DEFAULT_HEADERS = "X-Powered-By: Apache Software Foundation"
> +_DEFAULT_OPTIONS = "rbdi";
> +_DEFAULT_REGISTRY = "HKLM\\SOFTWARE\\Apache Software Foundation\\Jakarta Isapi Redirector\\2.0";
> +_DEFAULT_FILTERLIB = "isapi_redirector2.dll";
> +_DEFAULT_WORKERS2 = "\\conf\\workers2.properties";
> +
> +/**
> + * Set this to false to disable TRACE messages;
> + */
> +_DEBUG = true;
> +_TRACE_COUNTER = 1;
> +
> +/**
> + * Constants variables
> + */
> +_APP_INPROC = 0;
> +_APP_OUTPROC = 1;
> +_APP_POOLED = 2
> +_IIS_OBJECT = "IIS://LocalHost/W3SVC";
> +_IIS_SERVER = "IIsWebServer";
> +_IIS_WEBDIR = "IIsWebVirtualDir";
> +_IIS_FILTERS = "IIsFilters";
> +_IIS_FILTER = "IIsFilter";
> +
> +function ERROR(args, sMsg)
> +{
> + WScript.Echo("Error processing " + args.script + "\n" + sMsg);
> + WScript.Quit(-1);
> +}
> +
> +function RPAD(str, n)
> +{
> + var p;
> + p = str;
> + for (i = str.length; i < n; i++)
> + p += " ";
> + return p;
> +}
> +
> +function HEX(num)
> +{
> + var digits = "0123456789ABCDEF";
> + var n = num;
> + var h = "";
> + for (i = 0; i < 8; i++) {
> + h = digits.charAt(n & 15) + h;
> + n = n >>> 4;
> + }
> + return h;
> +}
> +
> +function TRACE(sMsg)
> +{
> + if (_DEBUG) {
> + var line = _TRACE_COUNTER + " ";
> + WScript.Echo(line.substring(0, 4) + sMsg);
> + ++_TRACE_COUNTER;
> + }
> +}
> +
> +function EXCEPTION(exception, func)
> +{
> + WScript.Echo(exception + " In function '" +
> + func + "'\nError number: " +
> + HEX(exception.number) + " - " + exception.description + "");
> + WScript.Quit(-1);
> +}
> +
> +
> +function Parameters()
> +{
> + this.ServerName = _DEFAULT_SERVER_NAME;
> + this.WebDescription = _DEFAULT_DESCRIPTION;
> + this.FilterName = _DEFAULT_FILTER_NAME;
> + this.FilterDesc = _DEFAULT_DESCRIPTION;
> + this.WebName = _DEFAULT_FILTER_NAME;
> + this.Headers = _DEFAULT_HEADERS;
> + this.WebOptions = _DEFAULT_OPTIONS;
> + this.RegistryKey = _DEFAULT_REGISTRY;
> + this.AppProtection = _APP_POOLED;
> + this.WebPath = "C:";
> + this.FilterLib = _DEFAULT_FILTERLIB;
> +}
> +
> +function findWebServiceObject(clsName, objName)
> +{
> + var webService;
> + var webObjects;
> + try {
> + webService = GetObject(_IIS_OBJECT);
> + if (!clsName || !objName)
> + return webService;
> + webObjects = new Enumerator(webService);
> + while (!webObjects.atEnd()) {
> + TRACE(RPAD(webObjects.item().Class, 18) +
> + RPAD(webObjects.item().Name, 15) + webObjects.item().AdsPath);
> + if (webObjects.item().Class == clsName &&
> + webObjects.item().Name == objName)
> + return webObjects.item();
> +
> + webObjects.moveNext();
> + }
> + }
> + catch(exception) {
> + EXCEPTION(exception, "findWebServiceObject");
> + }
> +
> + return null;
> +}
> +
> +function findWebServer(serverComment)
> +{
> + var webService;
> + var webObjects;
> + try {
> + webService = GetObject(_IIS_OBJECT);
> +
> + webObjects = new Enumerator(webService);
> + while (!webObjects.atEnd()) {
> + if (webObjects.item().Class == _IIS_SERVER &&
> + webObjects.item().ServerComment == serverComment)
> + return webObjects.item();
> +
> + webObjects.moveNext();
> + }
> + }
> + catch(exception) {
> + EXCEPTION(exception, "findWebServer");
> + }
> +
> + return null;
> +}
> +
> +function findDefaultWebServer()
> +{
> + return findWebServer(_DEFAULT_SERVER_NAME);
> +}
> +
> +
> +function findADSIObject(adsiObject, clsName, objName)
> +{
> + var adsiObjects;
> + try {
> + adsiObjects = new Enumerator(adsiObject);
> + while (!adsiObjects.atEnd()) {
> + TRACE(RPAD(adsiObjects.item().Class, 18) +
> + RPAD(adsiObjects.item().Name, 15) + adsiObjects.item().AdsPath);
> + if (adsiObjects.item().Class == clsName &&
> + adsiObjects.item().Name == objName)
> + return adsiObjects.item();
> +
> + adsiObjects.moveNext();
> + }
> + }
> + catch(exception) {
> + EXCEPTION(exception, "findADSIObject");
> + }
> +
> + return null;
> +
> +}
> +
> +function hasOption(optString, optName)
> +{
> + if (optString.indexOf(optName) == -1)
> + return false;
> + else {
> + /* Check if the option is dissabled using '-' prefix */
> + if (optString.indexOf("-" + optName) == -1)
> + return true;
> + else
> + return false;
> + }
> +}
> +
> +function createVirtualDir(webRootDir, appParams)
> +{
> + var newDir;
> + try {
> + newDir = findADSIObject(webRootDir, _IIS_WEBDIR, appParams.WebName);
> + if (newDir == null) {
> +
> + TRACE("Creating new directory...");
> +
> + newDir = webRootDir.Create(_IIS_WEBDIR, appParams.WebName);
> + newDir.AppFriendlyName = appParams.WebDescription;
> + newDir.Path = appParams.WebPath;
> + newDir.AppCreate2(appParams.AppProtection);
> + newDir.HttpCustomHeaders = appParams.Headers;
> + }
> + else {
> + TRACE("Updating existing directory...");
> + }
> + TRACE("Setting directory options...");
> + newDir.AccessExecute = hasOption(appParams.WebOptions, "x");
> + newDir.AccessRead = hasOption(appParams.WebOptions, "r");
> + newDir.AccessWrite = hasOption(appParams.WebOptions, "w");
> + newDir.AccessScript = hasOption(appParams.WebOptions, "s");
> + newDir.ContentIndexed = hasOption(appParams.WebOptions, "i");
> + newDir.EnableDirBrowsing = hasOption(appParams.WebOptions, "b");
> + newDir.EnableDefaultDoc = hasOption(appParams.WebOptions, "d");
> + newDir.SetInfo();
> +
> + TRACE("Virtual directory [/" + appParams.WebName + "] set.");
> + return newDir;
> + }
> + catch(exception) {
> + EXCEPTION(exception, "createVirtualDir");
> + }
> +
> + return null;
> +}
> +
> +function createISAPIFilter(webServer, appParams)
> +{
> + var filters;
> + var newFilter;
> + try {
> + filters = findADSIObject(webServer, _IIS_FILTERS, "Filters");
> + if (filters == null) {
> + //may have to create the website-level filters container
> + filters = webServer.create(_IIS_FILTERS, "Filters");
> + }
> + newFilter = findADSIObject(filters, _IIS_FILTER, appParams.FilterName);
> + if (newFilter == null) {
> +
> + TRACE("Creating new ISAPI filter...");
> +
> + newFilter = filters.Create(_IIS_FILTER, appParams.FilterName);
> + }
> + else {
> + TRACE("Updating existing filter...");
> + }
> + TRACE("Setting filter options...");
> +
> + TRACE("Filters order " + filters.FilterLoadOrder);
> + newFilter.FilterPath = appParams.WebPath + "\\" + appParams.FilterLib;
> + newFilter.FilterDescription = appParams.FilterDesc;
> + newFilter.SetInfo();
> + if (filters.FilterLoadOrder.indexOf(appParams.FilterName) == -1) {
> + filters.FilterLoadOrder += ", " + appParams.FilterName;
> + filters.SetInfo();
> + }
> + TRACE("Filter [" + appParams.FilterName + "] set.");
> + return newFilter;
> + }
> + catch(exception) {
> + EXCEPTION(exception, "createISAPIFilter");
> + }
> +
> + return null;
> +}
> +
> +function createVirtualExecDir(webRootDir, appParams)
> +{
> + var op, rv;
> + op = appParams.WebOptions;
> + appParams.WebOptions = op + "+x-r-i-b-d";
> + rv = createVirtualDir(webRootDir, appParams);
> + appParams.WebOptions = op;
> + return rv;
> +}
> +
> +function deleteADSIObject(adsiObject, clsName, objName)
> +{
> + var rv = false;
> + try {
> + adsiObject.Delete(clsName, objName);
> + rv = true;
> + }
> + catch(exception) {
> + /*
> + * Exception is thrown if the object doesn't exist
> + * Just ignore...
> + */
> + }
> +
> + return rv;
> +}
> +
> +function Arguments()
> +{
> + this.argv = WScript.Arguments;
> + this.argc = WScript.Arguments.length;
> + this.optarg = null;
> + this.optind = 0;
> + this.optopt = null;
> + this.opterr = null;
> +
> + this.program = WScript.FullName.toLowerCase();
> + this.program = this.program.substr(this.program.lastIndexOf("\\") + 1);
> + if (this.program.indexOf("wscript.exe") == -1)
> + _DEBUG = false;
> + this.script = WScript.ScriptName;
> +}
> +
> +function getopt(args, ostr)
> +{
> + if (args.optind >= args.argc) {
> + return null;
> + }
> + try {
> + var opt = args.argv(args.optind);
> + if (opt.charAt(0) == "-") {
> + var oi = ostr.indexOf(opt.charAt(1));
> + if (oi == -1) {
> + args.opterr = "Invalid option switch " + opt;
> + args.optopt = null;
> + args.optarg = null;
> + return null;
> + }
> + ++args.optind;
> + if (ostr.charAt(oi + 1) == ":") {
> + if (args.optind < args.argc) {
> + args.optarg = args.argv(args.optind);
> + ++args.optind;
> + }
> + else {
> + args.opterr = "Missing required argument value for " + opt;
> + args.optopt = null;
> + args.optarg = null;
> + return null;
> + }
> + }
> + args.optopt = ostr.charAt(oi);
> + return args.optopt;
> + }
> + }
> + catch(exception) {
> + EXCEPTION(exception, "getopt");
> + }
> + return null;
> +}
> +
> +function checkFileExists(fname)
> +{
> + var fso;
> + fso = new ActiveXObject("Scripting.FileSystemObject");
> +
> + if (fso.FileExists(fname))
> + return true;
> + else
> + return false;
> +}
> +
> +function checkFilterExists(params)
> +{
> + return checkFileExists(params.WebPath + "\\" + params.FilterLib);
> +}
> +
> +
> +function Usage(args)
> +{
> + var prn;
> + prn = "Usage: " + args.program + " " + args.script + " [option]... " + "[path] [tomcat_home]\n\n" +
> + " -s WEBSERVER Use the WEBSERVER [" + _DEFAULT_SERVER_NAME + "]\n" +
> + " -f FILTERNAME Use the FILTERNAME [" + _DEFAULT_FILTER_NAME + "]\n" +
> + " -d DESCRIPTION Filter description [" + _DEFAULT_DESCRIPTION + "]\n" +
> + " -v VIRTUALDIR Create the VIRTUALDIR [/" + _DEFAULT_FILTER_NAME + "]\n" +
> + " -l ISAPILIB Use the ISAPILIB [" + _DEFAULT_FILTERLIB + "]\n" +
> + " -h display this help and exit\n" +
> + "\n [path] Virtual directory path" +
> + "\n Set this to directory containing " + _DEFAULT_FILTERLIB +
> + "\n [tomcat_home] Path to the tomcat home directory";
> +
> + WScript.Echo(prn);
> +}
> +
> +function Main(args)
> +{
> + var params;
> + var opt;
> + var IIsWebService;
> + var IIsWebServer;
> + var IIsROOT;
> + var IIsFilters;
> + var IIsFilter;
> + var tchome = null;
> + var workers2 = null;
> +
> + params = new Parameters();
> +
> + while ((opt = getopt(args, "s:f:d:v:l:h"))) {
> + switch (opt) {
> + case "s":
> + params.ServerName = args.optarg;
> + break;
> + case "f":
> + params.FilterName = args.optarg;
> + break;
> + case "d":
> + params.FilterDesc = args.optarg;
> + break;
> + case "l":
> + params.FilterLib = args.optarg;
> + break;
> + case "v":
> + params.WebName = args.optarg;
> + break;
> + case "h":
> + default:
> + Usage(args);
> + return 0;
> + break;
> + }
> + }
> + TRACE("argc " + args.argc + " optind " + args.optind);
> + if (args.optind >= args.argc) {
> + /* Case when isapi_redirector2.dll is inside TOMCAT_HOME\bin */
> + params.WebPath = WScript.ScriptFullName.substr(0,
> + WScript.ScriptFullName.lastIndexOf("\\"));
> + tchome = params.WebPath.substr(0, params.WebPath.lastIndexOf("\\"));
> + }
> + else {
> + params.WebPath = args.argv(args.optind);
> + ++args.optind;
> + }
> + if (!checkFilterExists(params)) {
> + ERROR(args, "The specified filter library could not be found...\n" +
> + "File " + params.WebPath + "\\" + params.FilterLib + " does not exist.");
> +
> + }
> + if (args.optind < args.argc)
> + tchome = args.argv(args.optind);
> + else if (!tchome)
> + tchome = params.WebPath;
> + workers2 = tchome + _DEFAULT_WORKERS2 ;
> + if (!checkFileExists(workers2)) {
> + ERROR(args, "The specified configuration file could not be found...\n" +
> + "File " + workers2 + " does not exist.");
> +
> + }
> +
> + if ((IIsWebService = findWebServiceObject(null, null)) == null) {
> + ERROR(args, "Unable to find Web Service ADSI object\n" +
> + "Check the security settings...");
> + }
> +
> + if ((IIsWebServer = findWebServer(params.ServerName)) == null) {
> + ERROR(args, "Unable to find Web Server ADSI object...\n" +
> + "The '" + params.ServerName + "' does not exists.");
> +
> + }
> +
> + if ((IIsROOT = findADSIObject(IIsWebServer, _IIS_WEBDIR, "ROOT")) == null) {
> + ERROR(args, "Unable to find Web Server ROOT direcrory.");
> + }
> +
> + if (!createVirtualExecDir(IIsROOT, params)) {
> + ERROR(args, "Unable to create virual directory /" + params.WebName);
> + }
> +
> + if (!createISAPIFilter(IIsWebServer, params)) {
> + /* TODO: roll-back virtual dir */
> + ERROR(args, "Unable to create the '" + params.FilterName + "' filter.");
> + }
> +
> + /** Finaly set the registry entries
> + */
> + var WshShell = WScript.CreateObject("WScript.Shell");
> +
> + WshShell.RegWrite(_DEFAULT_REGISTRY + "\\extensionUri",
> + "/" + params.FilterName + "/" + params.FilterLib,
> + "REG_SZ");
> + WshShell.RegWrite(_DEFAULT_REGISTRY + "\\serverRoot",
> + tchome, "REG_SZ");
> + WshShell.RegWrite(_DEFAULT_REGISTRY + "\\workersFile",
> + workers2, "REG_SZ");
> + WshShell.RegWrite(_DEFAULT_REGISTRY + "\\authComplete", "0", "REG_SZ");
> + WshShell.RegWrite(_DEFAULT_REGISTRY + "\\threadPool", "20", "REG_SZ");
> +
> +
> + return 0;
> +}
> +
> +/* The main program */
> +var args = new Arguments();
> +rv = Main(args);
> +WScript.Quit(rv);
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org