154 lines
3.9 KiB
JavaScript
154 lines
3.9 KiB
JavaScript
/*********************************************
|
|
*
|
|
* Web Server Creation Utility
|
|
*
|
|
**********************************************
|
|
*
|
|
* Description:
|
|
* ------------
|
|
* This sample admin script allows you to create a web server.
|
|
*
|
|
* To Run:
|
|
* -------
|
|
* This is the format for this script:
|
|
*
|
|
* cscript mkwebsrv.js <rootdir> [-n <instancenum>][-c <comment>][-p <portnum>][-X (don't start)]
|
|
*
|
|
* NOTE: If you want to execute this script directly from Windows, use
|
|
* 'wscript' instead of 'cscript'.
|
|
*
|
|
**********************************************/
|
|
|
|
|
|
// Initialize variables
|
|
var ArgCount, WRoot, WNumber, WComment, WPort, BindingsList, ServerRun;
|
|
var ServiceObj, ServerObj, VDirObj;
|
|
|
|
// Default values
|
|
ArgCount = 0;
|
|
WRoot = "";
|
|
WNumber = 10;
|
|
WComment = "SampleServer";
|
|
WPort = new Array(":84:"); // default port; NOTE: takes an array of strings
|
|
ServerRun = true;
|
|
|
|
// ** Parse Command Line
|
|
|
|
// Loop through arguments
|
|
while (ArgCount < WScript.arguments.length) {
|
|
|
|
// Determine switches used
|
|
switch (WScript.arguments.item(ArgCount)) {
|
|
|
|
case "-n": // Set server instance number
|
|
// Move to next arg, which should be parameter
|
|
++ArgCount;
|
|
if (ArgCount >= WScript.arguments.length)
|
|
UsageMsg();
|
|
else
|
|
WNumber = WScript.arguments.item(ArgCount);
|
|
break;
|
|
|
|
case "-c": // Set server comment (friendly name)
|
|
// Move to next arg, which should be parameter
|
|
++ArgCount;
|
|
if (ArgCount >= WScript.arguments.length)
|
|
UsageMsg();
|
|
else
|
|
WComment = WScript.arguments.item(ArgCount);
|
|
break;
|
|
|
|
case "-p": // Port binding
|
|
// Move to next arg, which should be parameter
|
|
++ArgCount;
|
|
if (ArgCount >= WScript.arguments.length)
|
|
UsageMsg();
|
|
else
|
|
WPort[0] = ":" + WScript.arguments.item(ArgCount) + ":";
|
|
break;
|
|
|
|
case "-X": // Do NOT start the server upon creation
|
|
ServerRun = false;
|
|
break;
|
|
|
|
case "-h": // Help!
|
|
case "-?":
|
|
case "/?":
|
|
UsageMsg();
|
|
break;
|
|
|
|
default:
|
|
if (WRoot != "") // Only one root allowed
|
|
UsageMsg();
|
|
else
|
|
WRoot = WScript.arguments.item(ArgCount);
|
|
|
|
}
|
|
|
|
// Move pointer to next argument
|
|
++ArgCount;
|
|
|
|
} // ** END command-line parse
|
|
|
|
// Screen to make sure WRoot was set
|
|
if (WRoot == "")
|
|
UsageMsg();
|
|
|
|
|
|
// ** Create Server **
|
|
|
|
// First, create instance of Web service
|
|
ServiceObj = GetObject("IIS://Localhost/W3SVC");
|
|
|
|
// Second, create a new virtual server at the service
|
|
ServerObj = ServiceObj.Create("IIsWebServer", WNumber);
|
|
|
|
// Next, configure new server
|
|
ServerObj.ServerSize = 1 // Medium-sized server;
|
|
ServerObj.ServerComment = WComment;
|
|
ServerObj.ServerBindings = WPort;
|
|
|
|
// Write info back to Metabase
|
|
ServerObj.SetInfo();
|
|
|
|
|
|
|
|
// ** Create virtual root directory **
|
|
VDirObj = ServerObj.Create("IIsWebVirtualDir", "ROOT");
|
|
|
|
// Configure new virtual root
|
|
VDirObj.Path = WRoot;
|
|
VDirObj.AccessRead = true;
|
|
VDirObj.AccessWrite = true;
|
|
VDirObj.EnableDirBrowsing = true;
|
|
|
|
// Write info back to Metabase
|
|
VDirObj.SetInfo();
|
|
|
|
// Success!
|
|
WScript.echo("Created: Web server '" + WComment + "' (Physical root=" + WRoot + ", Port=" + WPort[0] + ").");
|
|
|
|
// Start new server?
|
|
if (ServerRun == true) {
|
|
|
|
// Start server
|
|
ServerObj.Start();
|
|
WScript.echo("Started: Web server '" + WComment + "' (Physical root=" + WRoot + ", Port=" + WPort[0] + ").");
|
|
}
|
|
|
|
WScript.quit(0);
|
|
|
|
|
|
|
|
|
|
// Displays usage message, then QUITS
|
|
function UsageMsg() {
|
|
WScript.echo("Usage: cscript mkwebsrv.js <rootdir> [-n <instancenum>][-c <comment>][-p <portnum>][-X (don't start)]");
|
|
WScript.quit();
|
|
}
|
|
|
|
|
|
|
|
|
|
|