172 lines
4.4 KiB
Plaintext
172 lines
4.4 KiB
Plaintext
|
'''''''''''''''''''''''''''''''''''''''''''''
|
||
|
'
|
||
|
' 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.vbs <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'.
|
||
|
'
|
||
|
'''''''''''''''''''''''''''''''''''''''''''''
|
||
|
|
||
|
Option Explicit
|
||
|
|
||
|
' Initialize error checking
|
||
|
On Error Resume Next
|
||
|
|
||
|
' Initialize variables
|
||
|
Dim ArgCount, WRoot, WNumber, WComment, WPort, BindingsList, ServerRun
|
||
|
Dim ServiceObj, ServerObj, VDirObj
|
||
|
|
||
|
' Default values
|
||
|
ArgCount = 0
|
||
|
WRoot = ""
|
||
|
WNumber = 10
|
||
|
WComment = "SampleServer"
|
||
|
BindingsList = Array(0)
|
||
|
BindingsList(0) = ":84:"
|
||
|
WPort = BindingsList ' Port property is a collection of port bindings
|
||
|
ServerRun = True
|
||
|
|
||
|
' ** Parse Command Line
|
||
|
|
||
|
' Loop through arguments
|
||
|
While ArgCount < Wscript.Arguments.Count
|
||
|
|
||
|
' Determine switches used
|
||
|
Select Case Wscript.Arguments(ArgCount)
|
||
|
|
||
|
Case "-n": ' Set server instance number
|
||
|
' Move to next arg, which should be parameter
|
||
|
ArgCount = ArgCount + 1
|
||
|
If ArgCount => Wscript.Arguments.Count Then
|
||
|
Call UsageMsg
|
||
|
Else
|
||
|
WNumber = Wscript.Arguments(ArgCount)
|
||
|
End If
|
||
|
|
||
|
Case "-c": ' Set server comment (friendly name)
|
||
|
' Move to next arg, which should be parameter
|
||
|
ArgCount = ArgCount + 1
|
||
|
If ArgCount => Wscript.Arguments.Count Then
|
||
|
Call UsageMsg
|
||
|
Else
|
||
|
WComment = Wscript.Arguments(ArgCount)
|
||
|
End If
|
||
|
|
||
|
Case "-p": ' Port binding
|
||
|
' Move to next arg, which should be parameter
|
||
|
ArgCount = ArgCount + 1
|
||
|
If ArgCount => Wscript.Arguments.Count Then
|
||
|
Call UsageMsg
|
||
|
Else
|
||
|
BindingsList(0) = ":" & Wscript.Arguments(ArgCount) & ":"
|
||
|
WPort = BindingsList ' Takes collection as value
|
||
|
End If
|
||
|
|
||
|
Case "-X": ' Do NOT start the server upon creation
|
||
|
ServerRun = False
|
||
|
|
||
|
Case "-h", "-?", "/?":
|
||
|
Call UsageMsg
|
||
|
|
||
|
Case Else:
|
||
|
If WRoot <> "" Then ' Only one name allowed
|
||
|
Call UsageMsg
|
||
|
Else
|
||
|
WRoot = Wscript.Arguments(ArgCount)
|
||
|
End If
|
||
|
|
||
|
End Select
|
||
|
|
||
|
' Move pointer to next argument
|
||
|
ArgCount = ArgCount + 1
|
||
|
|
||
|
Wend
|
||
|
|
||
|
|
||
|
' Screen to make sure WRoot was set
|
||
|
If WRoot = "" Then Call UsageMsg
|
||
|
|
||
|
|
||
|
' ** Create Server **
|
||
|
' First, create instance of Web service
|
||
|
Set ServiceObj = GetObject("IIS://Localhost/W3SVC")
|
||
|
|
||
|
' Second, create a new virtual server at the service
|
||
|
Set ServerObj = ServiceObj.Create("IIsWebServer", WNumber)
|
||
|
|
||
|
' Error creating?
|
||
|
If (Err.Number <> 0) Then ' Error!
|
||
|
Wscript.Echo "Error: ADSI Create failed to create server."
|
||
|
Wscript.Quit
|
||
|
End If
|
||
|
|
||
|
' Next, configure new server
|
||
|
ServerObj.ServerSize = 1 ' Medium-sized server
|
||
|
ServerObj.ServerComment = WComment
|
||
|
ServerObj.ServerBindings = WPort
|
||
|
|
||
|
' Write info back to Metabase
|
||
|
ServerObj.SetInfo
|
||
|
|
||
|
|
||
|
' Finally, create virtual root directory
|
||
|
Set VDirObj = ServerObj.Create("IIsWebVirtualDir", "ROOT")
|
||
|
|
||
|
' Error creating?
|
||
|
If (Err.Number <> 0) Then ' Error!
|
||
|
Wscript.Echo "Error: ADSI Create failed to create virtual directory."
|
||
|
Wscript.Quit
|
||
|
End If
|
||
|
|
||
|
' 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 Then
|
||
|
ServerObj.Start
|
||
|
|
||
|
' Error starting?
|
||
|
If (Err.Number <> 0) Then ' Error!
|
||
|
Wscript.Echo "Error: Start failed to start server."
|
||
|
Wscript.Quit
|
||
|
End If
|
||
|
|
||
|
Wscript.Echo "Started: Web server '" & WComment & "' (Physical root=" & WRoot & ", Port=" & WPort(0) & ")."
|
||
|
Wscript.Quit(0)
|
||
|
End If
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
' Displays usage message, then QUITS
|
||
|
Sub UsageMsg
|
||
|
Wscript.Echo "Usage: cscript mkwebsrv.vbs <rootdir> [-n <instancenum>][-c <comment>][-p <portnum>][-X (don't start)]"
|
||
|
Wscript.Quit
|
||
|
End Sub
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|