Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

475 lines
13 KiB

REM
REM LOCALIZATION
REM
L_SWITCH_OPERATION = "-t"
L_SWITCH_SERVER = "-s"
L_SWITCH_INSTANCE_ID = "-v"
L_SWITCH_VROOT_NAME = "-n"
L_SWITCH_VROOT_PATH = "-p"
L_SWITCH_ALLOW_CLIENT_POSTING = "-c"
L_SWITCH_RESTRICT_VISIBILITY = "-r"
L_SWITCH_LOG_ACCESS = "-a"
L_SWITCH_INDEX_NEWS_CONTENT = "-i"
L_SWITCH_TYPE_OF_SYSTEM = "-x"
REM L_OP_FIND = "f"
L_OP_ADD = "a"
L_OP_DELETE = "d"
L_OP_GET = "g"
L_OP_SET = "s"
L_DESC_PROGRAM = "rvirdir - Manipulate NNTP Virtual Directories"
L_DESC_ADD = "Add a Virtual Directory"
L_DESC_DELETE = "Delete a Virtual Directory"
L_DESC_GET = "Get a Virtual Directory's properties"
L_DESC_SET = "Set a Virtual Directory's properties"
REM L_DESC_FIND = "Find a Virtual Directory"
L_DESC_OPERATIONS = "<operations>"
L_DESC_SERVER = "<server> Specify computer to configure"
L_DESC_INSTANCE_ID = "<virtual server id> Specify virtual server id"
L_DESC_VROOT_NAME = "<virtual directory name> name of newsgroup(s) virtual directory includes"
L_DESC_VROOT_PATH = "<virtual directory path>"
L_DESC_ALLOW_CLIENT_POSTING = "<true/false> allow client posting"
L_DESC_RESTRICT_VISIBILITY = "<false/true> restrict newsgroup visibility"
L_DESC_LOG_ACCESS = "<true/false> log access"
L_DESC_INDEX_NEWS_CONTENT = "<true/false> index news content"
L_DESC_TYPE_OF_SYSTEM = "<fs/ex> Specify File System (fs) or Exchange Store (ex)"
L_DESC_EXAMPLES = "Examples:"
L_DESC_EXAMPLE1 = "rvirdir.vbs -t g -n rec.sports"
L_DESC_EXAMPLE2 = "rvirdir.vbs -t a -n rec.sports -p c:\vroot\rec\sports"
L_DESC_EXAMPLE3 = "rvirdir.vbs -t d -d my.old.vroot"
L_STR_VROOT_NAME = "Virtual Directory:"
L_STR_VROOT_PATH = "Path:"
L_STR_VROOT_ALLOW_CLIENT_POSTING = "Allow Client Posting:"
L_STR_VROOT_RESTRICT_VISIBILITY = "Restrict Newsgroup Visibility:"
L_STR_VROOT_LOG_ACCESS = "Log Access:"
L_STR_VROOT_INDEX_NEWS_CONTENT = "Index News Content:"
L_STR_NUM_MATCHING_VIRTUAL_DIRETORY = "The Number of matching Virtual Roots is:"
L_STR_TYPE_OF_VROOT_SYSTEM = "The Vroot is:"
L_ERR_MUST_ENTER_VIRTUAL_DIRECTORY = "You must enter a virtual directory name"
REM
REM END LOCALIZATION
REM
REM
REM --- Globals ---
REM
dim g_dictParms
dim g_admin
dim g_vroot
set g_dictParms = CreateObject ( "Scripting.Dictionary" )
set g_admin = CreateObject ( "NntpAdm.VirtualServer" )
set g_vroot = CreateObject ( "NntpAdm.VirtualRoot" )
REM
REM --- Set argument defaults ---
REM
g_dictParms(L_SWITCH_OPERATION) = ""
g_dictParms(L_SWITCH_SERVER) = ""
g_dictParms(L_SWITCH_INSTANCE_ID) = "1"
g_dictParms(L_SWITCH_VROOT_NAME) = ""
g_dictParms(L_SWITCH_VROOT_PATH) = ""
g_dictParms(L_SWITCH_ALLOW_CLIENT_POSTING) = TRUE
g_dictParms(L_SWITCH_RESTRICT_VISIBILITY) = FALSE
g_dictParms(L_SWITCH_LOG_ACCESS ) = TRUE
g_dictParms(L_SWITCH_INDEX_NEWS_CONTENT) = TRUE
g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "fs"
REM
REM --- Begin Main Program ---
REM
if NOT ParseCommandLine ( g_dictParms, WScript.Arguments ) then
usage
WScript.Quit ( 0 )
end if
dim vroot
dim vparm
dim strVirDir
dim i
dim id
dim index
dim g_vroots
dim g_vrootitem
REM
REM
REM Debug: print out command line arguments:
REM
REM switches = g_dictParms.keys
REM args = g_dictParms.items
REM
REM
REM for i = 0 to g_dictParms.Count - 1
REM WScript.echo switches(i) & " = " & args(i)
REM next
REM
g_admin.Server = g_dictParms(L_SWITCH_SERVER)
g_admin.ServiceInstance = g_dictParms(L_SWITCH_INSTANCE_ID)
strVirDir = g_dictParms(L_SWITCH_VROOT_NAME)
set g_vroots = g_admin.VirtualRoots
g_vroots.Enumerate
REM WScript.echo g_vroots.Count
REM WScript.echo g_vroots.Find
select case g_dictParms(L_SWITCH_OPERATION)
REM case L_OP_FIND
REM REM
REM REM Find virtual directory:
REM REM
REM
REM if strVirDir = "" then
REM WScript.Echo L_ERR_MUST_ENTER_VIRTUAL_DIRECTORY
REM WScript.Quit 0
REM end if
REM
REM vparm = g_vroots.Find (strVirDir)
REM Wscript.Echo vparm
REM vroot = g_vroots.Item (vparm)
REM WScript.Echo vroot
REM g_vroot.Directory
REM
REM cVroots = g_vroots.Count
REM
REM WScript.Echo L_STR_NUM_MATCHING_VIRTUAL_DIRETORY & " " & cVroots - 1
REM
REM for i = 0 to cVroots - 1
REM
REM WScript.Echo g_voots.Enumerate
REM
REM next
REM
case L_OP_ADD
if strVirDir = "" then
WScript.Echo L_ERR_MUST_ENTER_VIRTUAL_DIRECTORY
WScript.Quit 0
end if
if g_dictParms(L_SWITCH_ALLOW_CLIENT_POSTING) = "" then
g_dictParms(L_SWITCH_ALLOW_CLIENT_POSTING) = TRUE
end if
if g_dictParms(L_SWITCH_RESTRICT_VISIBILITY) = "" then
g_dictParms(L_SWITCH_RESTRICT_VISIBILITY) = FALSE
end if
if g_dictParms(L_SWITCH_LOG_ACCESS) = "" then
g_dictParms(L_SWITCH_LOG_ACCESS) = TRUE
end if
if g_dictParms(L_SWITCH_INDEX_NEWS_CONTENT) = "" then
g_dictParms(L_SWITCH_INDEX_NEWS_CONTENT) = TRUE
end if
if g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "" then
g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "NNTP.FSPrepare"
elseif g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "fs" then
g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "NNTP.FSPrepare"
elseif g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "ex" then
g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "NNTP.ExDriverPrepare"
else
Wscript.Echo "Enter either [fs] or [ex] with the -x option"
end if
g_vroot.NewsgroupSubtree = strVirDir
g_vroot.Directory = g_dictParms (L_SWITCH_VROOT_PATH)
g_vroot.GroupPropFile = g_dictParms (L_SWITCH_VROOT_PATH)
g_vroot.AllowPosting = BooleanToBOOL (g_dictParms(L_SWITCH_ALLOW_CLIENT_POSTING))
g_vroot.RestrictGroupVisibility = BooleanToBOOL (g_dictParms(L_SWITCH_RESTRICT_VISIBILITY))
g_vroot.LogAccess = BooleanToBOOL (g_dictParms(L_SWITCH_LOG_ACCESS))
g_vroot.IndexContent = BooleanToBOOL (g_dictParms(L_SWITCH_INDEX_NEWS_CONTENT))
g_vroot.GroupPropFile = g_dictParms (L_SWITCH_VROOT_PATH)
g_vroot.DriverProgId = g_dictParms(L_SWITCH_TYPE_OF_SYSTEM)
On Error Resume Next
g_vroots.Add g_vroot
if ( Err.Number <> 0 ) then
WScript.echo " Error creating group: " & Err.Description & "(" & Err.Number & ")"
else
PrintVirturalDirectory (g_vroot)
end if
case L_OP_DELETE
if strVirDir = "" then
WScript.Echo L_ERR_MUST_ENTER_VIRTUAL_DIRECTORY
WScript.Quit 0
end if
On Error Resume Next
vparm = g_vroots.Find (strVirDir)
g_vroots.Remove vparm
if ( Err.Number <> 0 ) then
WScript.echo " Error deleting group: " & Err.Description & "(" & Err.Number & ")"
else
Wscript.Echo "Virtual Root " & strVirDir & " has been removed."
end if
case L_OP_GET
if strVirDir = "" then
WScript.Echo L_ERR_MUST_ENTER_VIRTUAL_DIRECTORY
WScript.Quit 0
end if
On Error Resume Next
i = g_vroots.Find (strVirDir)
set g_vroot = g_vroots.Item (i)
if ( Err.Number <> 0 ) then
WScript.echo " Error getting group: " & Err.Description & "(" & Err.Number & ")"
else
PrintVirturalDirectory (g_vroot)
end if
case L_OP_SET
if strVirDir = "" then
WScript.Echo L_ERR_MUST_ENTER_VIRTUAL_DIRECTORY
WScript.Quit 0
end if
On Error Resume Next
WScript.Echo "I'm Changing the " & g_dictParms(L_SWITCH_VROOT_NAME) & " Vroot to:"
WScript.Echo
i = g_vroots.Find (strVirDir)
set g_vroot = g_vroots.Item (i)
if ( Err.Number <> 0 ) then
WScript.echo "Error setting group: " & Err.Description & "(" & Err.Number & ")"
else
if g_dictParms(L_SWITCH_VROOT_NAME) = "" then
g_dictParms(L_SWITCH_VROOT_NAME) = g_vroot.NewsgroupSubtree
end if
if g_dictParms(L_SWITCH_VROOT_PATH) = "" then
g_dictParms(L_SWITCH_VROOT_PATH) = g_vroot.Directory
g_dictParms(L_SWITCH_VROOT_PATH) = g_vroot.GroupPropFile
end if
if g_dictParms(L_SWITCH_ALLOW_CLIENT_POSTING) = "" then
g_dictParms(L_SWITCH_ALLOW_CLIENT_POSTING) = g_vroot.AllowPosting
end if
if g_dictParms(L_SWITCH_RESTRICT_VISIBILITY) = "" then
g_dictParms(L_SWITCH_RESTRICT_VISIBILITY) = g_vroot.RestrictGroupVisibility
end if
if g_dictParms(L_SWITCH_LOG_ACCESS) = "" then
g_dictParms(L_SWITCH_LOG_ACCESS) = g_vroot.LogAccess
end if
if g_dictParms(L_SWITCH_INDEX_NEWS_CONTENT) = "" then
g_dictParms(L_SWITCH_INDEX_NEWS_CONTENT) = g_vroot.IndexContent
end if
if g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "" then
g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = g_vroot.DriverProgId
elseif g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "fs" then
g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "NNTP.FSPrepare"
elseif g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "ex" then
g_dictParms(L_SWITCH_TYPE_OF_SYSTEM) = "NNTP.ExDriverPrepare"
end if
g_vroot.NewsgroupSubtree = g_dictParms(L_SWITCH_VROOT_NAME)
g_vroot.Directory = g_dictParms(L_SWITCH_VROOT_PATH)
g_vroot.GroupPropFile = g_dictParms(L_SWITCH_VROOT_PATH)
g_vroot.AllowPosting = BooleanToBOOL (g_dictParms(L_SWITCH_ALLOW_CLIENT_POSTING))
g_vroot.RestrictGroupVisibility = BooleanToBOOL (g_dictParms(L_SWITCH_RESTRICT_VISIBILITY))
g_vroot.LogAccess = BooleanToBOOL (g_dictParms(L_SWITCH_LOG_ACCESS))
g_vroot.IndexContent = BooleanToBOOL (g_dictParms(L_SWITCH_INDEX_NEWS_CONTENT))
g_vroot.DriverProgId = g_dictParms(L_SWITCH_TYPE_OF_SYSTEM)
end if
On Error Resume Next
g_vroots.Set i, g_vroot
if ( Err.Number <> 0 ) then
WScript.echo "You probably entered an invalid Virtual Root."
else
PrintVirturalDirectory g_vroot
end if
case else
usage
end select
WScript.Quit 0
REM
REM --- End Main Program ---
REM
REM
REM ParseCommandLine ( dictParameters, cmdline )
REM Parses the command line parameters into the given dictionary
REM
REM Arguments:
REM dictParameters - A dictionary containing the global parameters
REM cmdline - Collection of command line arguments
REM
REM Returns - Success code
REM
Function ParseCommandLine ( dictParameters, cmdline )
dim fRet
dim cArgs
dim i
dim strSwitch
dim strArgument
fRet = TRUE
cArgs = cmdline.Count
i = 0
do while (i < cArgs)
REM
REM Parse the switch and its argument
REM
if i + 1 >= cArgs then
REM
REM Not enough command line arguments - Fail
REM
fRet = FALSE
exit do
end if
strSwitch = cmdline(i)
i = i + 1
strArgument = cmdline(i)
i = i + 1
REM
REM Add the switch,argument pair to the dictionary
REM
if NOT dictParameters.Exists ( strSwitch ) then
REM
REM Bad switch - Fail
REM
fRet = FALSE
exit do
end if
dictParameters(strSwitch) = strArgument
loop
ParseCommandLine = fRet
end function
REM
REM Usage ()
REM prints out the description of the command line arguments
REM
Sub Usage
WScript.Echo L_DESC_PROGRAM
WScript.Echo vbTab & L_SWITCH_OPERATION & " " & L_DESC_OPERATIONS
REM WScript.Echo vbTab & vbTab & L_OP_FIND & vbTab & L_DESC_FIND
WScript.Echo vbTab & vbTab & L_OP_ADD & vbTab & L_DESC_ADD
WScript.Echo vbTab & vbTab & L_OP_DELETE & vbTab & L_DESC_DELETE
WScript.Echo vbTab & vbTab & L_OP_GET & vbTab & L_DESC_GET
WScript.Echo vbTab & vbTab & L_OP_SET & vbTab & L_DESC_SET
WScript.Echo vbTab & L_SWITCH_SERVER & " " & L_DESC_SERVER
WScript.Echo vbTab & L_SWITCH_INSTANCE_ID & " " & L_DESC_INSTANCE_ID
WScript.Echo vbTab & L_SWITCH_VROOT_NAME & " " & L_DESC_VROOT_NAME
WScript.Echo vbTab & L_SWITCH_VROOT_PATH & " " & L_DESC_VROOT_PATH
WScript.Echo vbTab & L_SWITCH_ALLOW_CLIENT_POSTING & " " & L_DESC_ALLOW_CLIENT_POSTING
WScript.Echo vbTab & L_SWITCH_RESTRICT_VISIBILITY & " " & L_DESC_RESTRICT_VISIBILITY
WScript.Echo vbTab & L_SWITCH_LOG_ACCESS & " " & L_DESC_LOG_ACCESS
WScript.Echo vbTab & L_SWITCH_INDEX_NEWS_CONTENT & " " & L_DESC_INDEX_NEWS_CONTENT
WScript.Echo vbTab & L_SWITCH_TYPE_OF_SYSTEM & " " & L_DESC_TYPE_OF_SYSTEM
WScript.Echo
WScript.Echo L_DESC_EXAMPLES
WScript.Echo L_DESC_EXAMPLE1
WScript.Echo L_DESC_EXAMPLE2
WScript.Echo L_DESC_EXAMPLE3
end sub
Sub PrintVirturalDirectory ( g_vroot )
WScript.Echo L_STR_VROOT_NAME & " " & g_vroot.NewsgroupSubtree
WScript.Echo L_STR_VROOT_PATH & " " & g_vroot.Directory
WScript.Echo L_STR_TYPE_OF_VROOT_SYSTEM & " " & g_vroot.DriverProgId
if ( g_vroot.AllowPosting = 1) then
WScript.Echo L_STR_VROOT_ALLOW_CLIENT_POSTING & " = TRUE"
else
WScript.Echo L_STR_VROOT_ALLOW_CLIENT_POSTING & " = FALSE"
end if
if ( g_vroot.RestrictGroupVisibility = 1) then
WScript.Echo L_STR_VROOT_RESTRICT_VISIBILITY & " = TRUE"
else
WScript.Echo L_STR_VROOT_RESTRICT_VISIBILITY & " = FALSE"
end if
if ( g_vroot.LogAccess = 1) then
WScript.Echo L_STR_VROOT_LOG_ACCESS & " = TRUE"
else
WScript.Echo L_STR_VROOT_LOG_ACCESS & " = FALSE"
end if
if ( g_vroot.IndexContent = 1) then
WScript.Echo L_STR_VROOT_INDEX_NEWS_CONTENT & " = TRUE"
else
WScript.Echo L_STR_VROOT_INDEX_NEWS_CONTENT & " = FALSE"
end if
end sub
Function BooleanToBOOL ( b )
if b then
BooleanToBOOL = 1
else
BooleanToBOOL = 0
end if
end function
Function BOOLToBoolean ( b )
BOOLToBoolean = (b = 1)
end function