home *** CD-ROM | disk | FTP | other *** search
- REM
- REM LOCALIZATION
- REM
-
- L_SWITCH_OPERATION = "-t"
- L_SWITCH_SERVER = "-s"
- L_SWITCH_INSTANCE_ID = "-v"
- L_SWITCH_CL_POSTS = "-c"
- L_SWITCH_CL_SOFT = "-l"
- L_SWITCH_CL_HARD = "-h"
- L_SWITCH_FD_POSTS = "-f"
- L_SWITCH_FD_SOFT = "-i"
- L_SWITCH_FD_HARD = "-j"
- L_SWITCH_SMTP_SERVER = "-m"
- L_SWITCH_MODERATOR_DOMAIN = "-d"
- L_SWITCH_UUCP_NAME = "-u"
- L_SWITCH_CTRL_MSGS = "-x"
- L_SWITCH_NNTPFILE = "-n"
- L_SWITCH_ADMIN_EMAIL = "-a"
- L_SWITCH_PICKUP = "-p"
- L_SWITCH_FAILED_PICKUP = "-q"
- L_SWITCH_DROP = "-e"
- L_SWITCH_NEWNEWS = "-b"
- L_SWITCH_HONOR_MSGIDS = "-r"
- L_SWITCH_PORT = "-o"
-
- L_OP_GET = "g"
- L_OP_SET = "s"
- L_OP_CREATE = "c"
- L_OP_DELETE = "d"
-
- L_DESC_PROGRAM = "rserver - Manipulate NNTP virtual servers"
- L_DESC_GET = "Get NNTP virtual server properties"
- L_DESC_SET = "Set NNTP virtual server properties"
- L_DESC_CREATE = "Create a new NNTP virtual server"
- L_DESC_DELETE = "Delete an NNTP virtual server"
-
- 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_CL_POSTS = "<true/false> Allow client posts"
- L_DESC_CL_SOFT = "soft client post limit in bytes"
- L_DESC_CL_HARD = "hard client post limit in bytes"
- L_DESC_FD_POSTS = "<true/false> Allow feed posts"
- L_DESC_FD_SOFT = "soft feed post limit in bytes"
- L_DESC_FD_HARD = "hard feed post limit in bytes"
- L_DESC_SMTP_SERVER = "SMTP address for moderated posts"
- L_DESC_MODERATOR_DOMAIN = "Domain name for default moderators"
- L_DESC_UUCP_NAME = "UUCP name of this server"
- L_DESC_CTRL_MSGS = "<true/false> Process control messages"
- L_DESC_NNTPFILE = "Internal Nntp server files location"
- L_DESC_ADMIN_EMAIL = "Administrator email account"
- L_DESC_PICKUP = "Pickup directory"
- L_DESC_FAILED_PICKUP = "Failed pickup directory"
- L_DESC_DROP = "Drop directory"
- L_DESC_NEWNEWS = "<true/false> Disable NEWNEWS command"
- L_DESC_HONOR_MSGIDS = "<true/false> Honor client msg IDs"
- L_DESC_PORT = "TCP Port for client connections"
-
- L_DESC_EXAMPLES = "Examples:"
- L_DESC_EXAMPLE1 = "rserver.vbs -t g -v 1"
- L_DESC_EXAMPLE2 = "rserver.vbs -t s -v 1 -c true -l 1000000 -a administrator@mydomain.com"
- L_DESC_EXAMPLE3 = "rserver.vbs -t d -v 3"
- L_DESC_EXAMPLE4 = "rserver.vbs -t c -v 2 -n c:\news_content"
-
- L_STR_SERVER_ID = "Virtual server ID:"
- L_STR_CL_POSTS = "Allow client posting?"
- L_STR_CL_SOFT = "Client soft posting limit:"
- L_STR_CL_HARD = "Client hard posting limit:"
- L_STR_FD_POSTS = "Allow feed posting?"
- L_STR_FD_SOFT = "Feed soft posting limit:"
- L_STR_FD_HARD = "Feed hard posting limit:"
- L_STR_SMTP_SERVER = "Smtp server:"
- L_STR_MODERATOR_DOMAIN = "Default moderator domain:"
- L_STR_UUCP_NAME = "UUCP name:"
- L_STR_CTRL_MSGS = "Process control messages?"
- L_STR_NNTPFILE = "Nntp file location:"
- L_STR_ADMIN_EMAIL = "Administrator email address:"
- L_STR_PICKUP = "Pickup directory:"
- L_STR_FAILED_PICKUP = "Failed pickup directory:"
- L_STR_DROP = "Drop directory:"
- L_STR_NEWNEWS = "Disable NEWNEWS command?"
- L_STR_HONOR_MSGIDS = "Honor client message IDs?"
- L_STR_PORT = "TCP Port:"
-
- L_STR_CREATED_VS = "Successfully created the following virtual server:"
-
- L_ERR_INVALID_INSTANCE_ID = "Invalid instance identifier."
- L_ERR_CANT_DELETE_INSTANCE_ONE = "You can't delete the default virtual server."
- L_ERR_MUST_SPECIFY_NNTPFILE = "You must specify the nntp file location."
- L_ERR_INVALID_PORT = "Invalid port number."
-
- REM
- REM END LOCALIZATION
- REM
-
- REM
- REM --- Globals ---
- REM
-
- dim g_dictParms
- dim g_admin
-
- set g_dictParms = CreateObject ( "Scripting.Dictionary" )
-
- REM
- REM --- Set argument defaults ---
- REM
-
- g_dictParms(L_SWITCH_OPERATION) = ""
- g_dictParms(L_SWITCH_SERVER) = "localhost"
- g_dictParms(L_SWITCH_INSTANCE_ID) = "1"
- g_dictParms(L_SWITCH_CL_POSTS) = ""
- g_dictParms(L_SWITCH_CL_SOFT) = ""
- g_dictParms(L_SWITCH_CL_HARD) = ""
- g_dictParms(L_SWITCH_FD_POSTS) = ""
- g_dictParms(L_SWITCH_FD_SOFT) = ""
- g_dictParms(L_SWITCH_FD_HARD) = ""
- g_dictParms(L_SWITCH_SMTP_SERVER) = ""
- g_dictParms(L_SWITCH_MODERATOR_DOMAIN) = ""
- g_dictParms(L_SWITCH_UUCP_NAME) = ""
- g_dictParms(L_SWITCH_CTRL_MSGS) = ""
- g_dictParms(L_SWITCH_NNTPFILE) = ""
- g_dictParms(L_SWITCH_ADMIN_EMAIL) = ""
- g_dictParms(L_SWITCH_PICKUP) = ""
- g_dictParms(L_SWITCH_FAILED_PICKUP) = ""
- g_dictParms(L_SWITCH_DROP) = ""
- g_dictParms(L_SWITCH_NEWNEWS) = ""
- g_dictParms(L_SWITCH_HONOR_MSGIDS) = ""
- g_dictParms(L_SWITCH_PORT) = ""
-
- REM
- REM --- Begin Main Program ---
- REM
-
- if NOT ParseCommandLine ( g_dictParms, WScript.Arguments ) then
- usage
- WScript.Quit ( 0 )
- end if
-
- 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
-
- server = g_dictParms(L_SWITCH_SERVER)
- instance = g_dictParms(L_SWITCH_INSTANCE_ID)
-
- if NOT IsNumeric (instance) then
- WScript.Echo L_ERR_INVALID_INSTANCE_ID
- WScript.Quit 0
- end if
-
- select case g_dictParms(L_SWITCH_OPERATION)
- case L_OP_GET
- On Error Resume Next
- set g_admin = CreateAdsiObject ( server, instance )
- if ( Err.Number <> 0 ) then
- Wscript.echo Err.Number
- WScript.echo "Error Getting Instance"
- else
- PrintVirtualServer g_admin
- end if
-
- case L_OP_SET
- On Error Resume Next
- set g_admin = CreateAdsiObject ( server, instance )
- if ( Err.Number <> 0 ) then
- Wscript.echo Err.Number
- WScript.echo "Error Setting Instance"
- else
- SetProperties ( g_admin )
- end if
-
-
- On Error Resume Next
- g_admin.SetInfo
- if ( Err.Number <> 0 ) then
- WScript.echo " Error Setting Info: " & Err.Description & "(" & Err.Number & ")"
- else
- PrintVirtualServer g_admin
- end if
-
- On Error Resume Next
- g_admin.GetInfo
- if ( Err.Number <> 0 ) then
- WScript.echo " Error Getting Info: " & Err.Description & "(" & Err.Number & ")"
- else
- PrintVirtualServer g_admin
- end if
-
- case L_OP_CREATE
-
- dim strNntpFile
-
- strNntpFile = g_dictParms ( L_SWITCH_NNTPFILE )
-
- if strNntpFile = "" then
- WScript.Echo L_ERR_MUST_SPECIFY_NNTPFILE
- WScript.Quit 0
- end if
-
- set g_admin = CreateAdsiObject ( server, "" )
-
- On Error Resume Next
- set newinst = g_admin.Create ( "IIsNntpServer", instance )
- if ( Err.Number <> 0 ) then
- Wscript.echo Err.Number
- WScript.echo "Error Setting New Instance"
- else
- PrintVirtualServer g_admin
-
-
- newinst.Put "ServerBindings", ":119:"
- newinst.Put "NewsPickupDirectory", strNntpFile & "\Pickup"
- newinst.Put "NewsFailedPickupDirectory", strNntpFile & "\FailedPickup"
- newinst.Put "NewsDropDirectory", strNntpFile & "\Drop"
- SetProperties ( newinst )
-
- newinst.SetInfo
-
- set newvroot = newinst.Create ( "IIsNntpVirtualDir", "Root" )
-
- newvroot.SetInfo
- newvroot.Put "Path", strNntpFile & "\root"
- newvroot.Put "AccessFlags", 3
- newvroot.SetInfo
-
- WScript.Echo L_STR_CREATED_VS
- PrintVirtualServer newinst
- end if
-
- case L_OP_DELETE
- set g_admin = CreateAdsiObject ( server, "" )
-
- if instance = 1 then
- WScript.Echo L_ERR_CANT_DELETE_INSTANCE_ONE
- WScript.Quit 0
- end if
-
- On Error Resume Next
- g_admin.Delete "IIsNntpServer", instance
- if ( Err.Number <> 0 ) then
- WScript.echo " Error Deleting Info: " & Err.Description & "(" & Err.Number & ")"
- else
- PrintVirtualServer g_admin
- 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
- 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 & vbTab & L_OP_CREATE & vbTab & L_DESC_CREATE
- WScript.Echo vbTab & vbTab & L_OP_DELETE & vbTab & L_DESC_DELETE
- 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_CL_POSTS & " " & L_DESC_CL_POSTS
- WScript.Echo vbTab & L_SWITCH_CL_SOFT & " " & L_DESC_CL_SOFT
- WScript.Echo vbTab & L_SWITCH_CL_HARD & " " & L_DESC_CL_HARD
- WScript.Echo vbTab & L_SWITCH_FD_POSTS & " " & L_DESC_FD_POSTS
- WScript.Echo vbTab & L_SWITCH_FD_SOFT & " " & L_DESC_FD_SOFT
- WScript.Echo vbTab & L_SWITCH_FD_HARD & " " & L_DESC_FD_HARD
- WScript.Echo vbTab & L_SWITCH_SMTP_SERVER & " " & L_DESC_SMTP_SERVER
- WScript.Echo vbTab & L_SWITCH_MODERATOR_DOMAIN & " " & L_DESC_MODERATOR_DOMAIN
- WScript.Echo vbTab & L_SWITCH_UUCP_NAME & " " & L_DESC_UUCP_NAME
- WScript.Echo vbTab & L_SWITCH_CTRL_MSGS & " " & L_DESC_CTRL_MSGS
- WScript.Echo vbTab & L_SWITCH_NNTPFILE & " " & L_DESC_NNTPFILE
- WScript.Echo vbTab & L_SWITCH_ADMIN_EMAIL & " " & L_DESC_ADMIN_EMAIL
- WScript.Echo vbTab & L_SWITCH_PICKUP & " " & L_DESC_PICKUP
- WScript.Echo vbTab & L_SWITCH_FAILED_PICKUP & " " & L_DESC_FAILED_PICKUP
- WScript.Echo vbTab & L_SWITCH_DROP & " " & L_DESC_DROP
- WScript.Echo vbTab & L_SWITCH_NEWNEWS & " " & L_DESC_NEWNEWS
- WScript.Echo vbTab & L_SWITCH_HONOR_MSGIDS & " " & L_DESC_HONOR_MSGIDS
- WScript.Echo vbTab & L_SWITCH_PORT & " " & L_DESC_PORT
-
- 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 PrintVirtualServer ( admobj )
-
- dim strNntpFile
-
- strNntpFile = admobj.Get ( "ArticleTableFile" )
-
- WScript.Echo L_STR_SERVER_ID & " " & admobj.Name
- WScript.Echo L_STR_CL_POSTS & " " & admobj.Get ( "AllowClientPosts" )
- WScript.Echo L_STR_CL_SOFT & " " & admobj.Get ( "ClientPostSoftLimit" )
- WScript.Echo L_STR_CL_HARD & " " & admobj.Get ( "ClientPostHardLimit" )
- WScript.Echo L_STR_FD_POSTS & " " & admobj.Get ( "AllowFeedPosts" )
- WScript.Echo L_STR_FD_SOFT & " " & admobj.Get ( "FeedPostSoftLimit" )
- WScript.Echo L_STR_FD_HARD & " " & admobj.Get ( "FeedPostHardLimit" )
- WScript.Echo L_STR_SMTP_SERVER & " " & admobj.Get ( "SmtpServer" )
- WScript.Echo L_STR_MODERATOR_DOMAIN & " " & admobj.Get ( "DefaultModeratorDomain" )
- WScript.Echo L_STR_UUCP_NAME & " " & admobj.Get ( "NntpUucpName" )
- WScript.Echo L_STR_CTRL_MSGS & " " & admobj.Get ( "AllowControlMsgs" )
- WScript.Echo L_STR_ADMIN_EMAIL & " " & admobj.Get ( "AdminEmail" )
- WScript.Echo L_STR_PICKUP & " " & admobj.Get ( "NewsPickupDirectory" )
- WScript.Echo L_STR_FAILED_PICKUP & " " & admobj.Get ( "NewsFailedPickupDirectory" )
- WScript.Echo L_STR_DROP & " " & admobj.Get ( "NewsDropDirectory" )
- WScript.Echo L_STR_NEWNEWS & " " & admobj.Get ( "DisableNewnews" )
- WScript.Echo L_STR_HONOR_MSGIDS & " " & admobj.Get ( "HonorClientMsgIds" )
- WScript.Echo L_STR_NNTPFILE & " " & StripFileNameFromPath ( strNntpFile )
- WScript.Echo L_STR_PORT & " " & ExtractPortFromBinding ( admobj.Get ( "ServerBindings") ( 0 ) )
-
- end sub
-
- Sub SetProperties ( admobj )
-
- SetProp admobj, g_dictParms(L_SWITCH_CL_POSTS), "AllowClientPosts", TRUE
- SetProp admobj, g_dictParms(L_SWITCH_CL_SOFT), "ClientPostSoftLimit", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_CL_HARD), "ClientPostHardLimit", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_FD_POSTS), "AllowFeedPosts", TRUE
- SetProp admobj, g_dictParms(L_SWITCH_FD_SOFT), "FeedPostSoftLimit", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_FD_HARD), "FeedPostHardLimit", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_SMTP_SERVER), "SmtpServer", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_MODERATOR_DOMAIN), "DefaultModeratorDomain", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_UUCP_NAME), "NntpUucpName", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_CTRL_MSGS), "AllowControlMsgs", TRUE
- SetProp admobj, g_dictParms(L_SWITCH_ADMIN_EMAIL), "AdminEmail", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_PICKUP), "NewsPickupDirectory", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_FAILED_PICKUP), "NewsFailedPickupDirectory", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_DROP), "NewsDropDirectory", FALSE
- SetProp admobj, g_dictParms(L_SWITCH_NEWNEWS), "DisableNewnews", TRUE
- SetProp admobj, g_dictParms(L_SWITCH_HONOR_MSGIDS), "HonorClientMsgIds", TRUE
- dim port
- dim bindings
- dim IpAddress
-
- port = g_dictParms(L_SWITCH_PORT)
- if port <> "" then
- if NOT IsNumeric ( port ) then
- WScript.Echo L_ERR_INVALID_PORT
- WScript.Quit 0
- end if
-
- bindings = admobj.GetEx ( "ServerBindings" )
- if IsEmpty ( bindings ) then
- bindings = Array ( "" )
- IpAddress = ""
- else
- IpAddress = ExtractIpAddressFromBinding ( bindings(0) )
- end if
- bindings(0) = IpAddress & ":" & port & ":"
- admobj.PutEx 2, "ServerBindings", bindings
- end if
-
- dim strNntpFile
-
- strNntpFile = g_dictParms ( L_SWITCH_NNTPFILE )
-
- if strNntpFile <> "" then
- SetProp admobj, strNntpFile & "\descrip.txt", "GroupHelpFile", FALSE
- SetProp admobj, strNntpFile & "\group.lst", "GroupListFile", FALSE
- SetProp admobj, strNntpFile & "\article.hsh", "ArticleTableFile", FALSE
- SetProp admobj, strNntpFile & "\history.hsh", "HistoryTableFile", FALSE
- SetProp admobj, strNntpFile & "\moderatr.txt", "ModeratorFile", FALSE
- SetProp admobj, strNntpFile & "\xover.hsh", "XoverTableFile", FALSE
- SetProp admobj, strNntpFile & "\prettynm.txt", "PrettyNamesFile", FALSE
- end if
-
- end sub
-
- sub SetProp ( admobj, value, prop, isbool )
-
- REM
- REM Debug code: print out the setting of values:
- REM
- REM WScript.Echo "Setting " & prop & " = " & value
- REM
-
- if value <> "" then
-
- if isbool then
- admobj.Put prop, CBool (value)
- else
- admobj.Put prop, (value)
- end if
-
- end if
-
- end sub
-
- Function CreateAdsiObject ( strMachine, dwInstance )
-
- dim strObject
- dim obj
-
- if dwInstance <> "" then
- strObject = "IIS://" & strMachine & "/NntpSvc/" & dwInstance
- else
- strObject = "IIS://" & strMachine & "/NntpSvc"
- end if
-
- On Error Resume Next
- set CreateAdsiObject = GetObject ( strObject )
- if ( Err.Number <> 0 ) then
- WScript.echo " Error Getting Info: " & Err.Description & "(" & Err.Number & ")"
- else
- REM PrintVirtualServer g_admin
- end if
-
- end function
-
- Function StripFileNameFromPath ( strPath )
-
- dim i
-
- i = InStrRev ( strPath, "\" )
- StripFileNameFromPath = Left ( strPath, i - 1 )
-
- end function
-
- Function ExtractPortFromBinding ( strBinding )
- dim SplitArray
-
- SplitArray = split ( strBinding, ":" )
- ExtractPortFromBinding = SplitArray ( 1 )
- end function
-
- Function ExtractIpAddressFromBinding ( strBinding )
- dim SplitArray
-
- SplitArray = split ( strBinding, ":" )
- ExtractIpAddressFromBinding = SplitArray ( 0 )
- end function
-
-
-