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 = "-u"
- L_SWITCH_NEWNEWS = "-b"
- L_SWITCH_HONOR_MSGIDS = "-i"
-
- 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"
- L_DESC_CL_HARD = "hard client post limit"
- L_DESC_FD_POSTS = "<true/false> Allow feed posts"
- L_DESC_FD_SOFT = "soft feed post limit"
- L_DESC_FD_HARD = "hard feed post limit"
- 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_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_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."
-
- 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) = ""
-
- 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
- set g_admin = CreateAdsiObject ( server, instance )
-
- PrintVirtualServer g_admin
-
- case L_OP_SET
- set g_admin = CreateAdsiObject ( server, instance )
-
- SetProperties ( g_admin )
-
- g_admin.SetInfo
- g_admin.GetInfo
-
- PrintVirtualServer g_admin
-
- case L_OP_CREATE
-
- if g_dictParms ( L_SWITCH_NNTPFILE ) = "" then
- WScript.Echo L_ERR_MUST_SPECIFY_NNTPFILE
- WScript.Quit 0
- end if
-
- set g_admin = CreateAdsiObject ( server, "" )
-
- set newinst = g_admin.Create ( "IIsNntpServer", instance )
-
- SetProperties ( newinst )
-
- newinst.SetInfo
- newinst.GetInfo
-
- WScript.Echo L_STR_CREATED_VS
- PrintVirtualServer newinst
-
- 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
-
- g_admin.Delete "IIsNntpServer", instance
-
- 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
-
- 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 )
-
- end sub
-
- Sub SetProperties ( admobj )
-
- SetProp admobj, g_dictParms(L_SWITCH_CL_POSTS), "AllowClientPosts"
- SetProp admobj, g_dictParms(L_SWITCH_CL_SOFT), "ClientPostSoftLimit"
- SetProp admobj, g_dictParms(L_SWITCH_CL_HARD), "ClientPostHardLimit"
- SetProp admobj, g_dictParms(L_SWITCH_FD_POSTS), "AllowFeedPosts"
- SetProp admobj, g_dictParms(L_SWITCH_FD_SOFT), "FeedPostSoftLimit"
- SetProp admobj, g_dictParms(L_SWITCH_FD_HARD), "FeedPostHardLimit"
- SetProp admobj, g_dictParms(L_SWITCH_SMTP_SERVER), "SmtpServer"
- SetProp admobj, g_dictParms(L_SWITCH_MODERATOR_DOMAIN), "DefaultModeratorDomain"
- SetProp admobj, g_dictParms(L_SWITCH_UUCP_NAME), "NntpUucpName"
- SetProp admobj, g_dictParms(L_SWITCH_CTRL_MSGS), "AllowControlMessages"
- SetProp admobj, g_dictParms(L_SWITCH_ADMIN_EMAIL), "AdminEmail"
- SetProp admobj, g_dictParms(L_SWITCH_PICKUP), "NewsPickupDirectory"
- SetProp admobj, g_dictParms(L_SWITCH_FAILED_PICKUP), "NewsFailedPickupDirectory"
- SetProp admobj, g_dictParms(L_SWITCH_DROP), "NewsDropDirectory"
- SetProp admobj, g_dictParms(L_SWITCH_NEWNEWS), "DisableNewnews"
- SetProp admobj, g_dictParms(L_SWITCH_HONOR_MSGIDS), "HonorClientMsgIds"
-
- dim strNntpFile
-
- strNntpFile = g_dictParms ( L_SWITCH_NNTPFILE )
-
- if strNntpFile <> "" then
- SetProp admobj, strNntpFile & "\descrip.txt", "GroupHelpFile"
- SetProp admobj, strNntpFile & "\group.lst", "GroupListFile"
- SetProp admobj, strNntpFile & "\article.hsh", "ArticleTableFile"
- SetProp admobj, strNntpFile & "\history.hsh", "HistoryTableFile"
- SetProp admobj, strNntpFile & "\moderatr.txt", "ModeratorFile"
- SetProp admobj, strNntpFile & "\xover.hsh", "XoverTableFile"
- SetProp admobj, strNntpFile & "\prettynm.txt", "PrettyNamesFile"
- end if
-
- end sub
-
- sub SetProp ( admobj, value, prop )
-
- REM
- REM Debug code: print out the setting of values:
- REM
- REM WScript.Echo "Setting " & prop & " = " & value
- REM
-
- if value <> "" then
-
- admobj.Put prop, (value)
-
- 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
-
- set CreateAdsiObject = GetObject ( strObject )
-
- end function
-
- Function StripFileNameFromPath ( strPath )
-
- dim i
-
- i = InStrRev ( strPath, "\" )
- StripFileNameFromPath = Left ( strPath, i - 1 )
-
- end function
-
-