home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 9 / IOPROG_9.ISO / contrib / iis4 / ins.cab / rserver.vbs < prev    next >
Encoding:
Text File  |  1997-08-16  |  12.4 KB  |  406 lines

  1. REM
  2. REM LOCALIZATION
  3. REM
  4.  
  5. L_SWITCH_OPERATION      = "-t"
  6. L_SWITCH_SERVER         = "-s"
  7. L_SWITCH_INSTANCE_ID    = "-v"
  8. L_SWITCH_CL_POSTS        = "-c"
  9. L_SWITCH_CL_SOFT        = "-l"
  10. L_SWITCH_CL_HARD        = "-h"
  11. L_SWITCH_FD_POSTS        = "-f"
  12. L_SWITCH_FD_SOFT        = "-i"
  13. L_SWITCH_FD_HARD        = "-j"
  14. L_SWITCH_SMTP_SERVER    = "-m"
  15. L_SWITCH_MODERATOR_DOMAIN    = "-d"
  16. L_SWITCH_UUCP_NAME        = "-u"
  17. L_SWITCH_CTRL_MSGS        = "-x"
  18. L_SWITCH_NNTPFILE        = "-n"
  19. L_SWITCH_ADMIN_EMAIL    = "-a"
  20. L_SWITCH_PICKUP            = "-p"
  21. L_SWITCH_FAILED_PICKUP    = "-q"
  22. L_SWITCH_DROP            = "-u"
  23. L_SWITCH_NEWNEWS        = "-b"
  24. L_SWITCH_HONOR_MSGIDS    = "-i"
  25.  
  26. L_OP_GET            = "g"
  27. L_OP_SET            = "s"
  28. L_OP_CREATE            = "c"
  29. L_OP_DELETE            = "d"
  30.  
  31. L_DESC_PROGRAM      = "rserver - Manipulate NNTP virtual servers"
  32. L_DESC_GET            = "Get NNTP virtual server properties"
  33. L_DESC_SET            = "Set NNTP virtual server properties"
  34. L_DESC_CREATE        = "Create a new NNTP virtual server"
  35. L_DESC_DELETE       = "Delete an NNTP virtual server"
  36.  
  37. L_DESC_OPERATIONS    = "<operations>"
  38. L_DESC_SERVER       = "<server> Specify computer to configure"
  39. L_DESC_INSTANCE_ID  = "<virtual server id> Specify virtual server id"
  40. L_DESC_CL_POSTS        = "<true/false> Allow client posts"
  41. L_DESC_CL_SOFT        = "soft client post limit"
  42. L_DESC_CL_HARD        = "hard client post limit"
  43. L_DESC_FD_POSTS        = "<true/false> Allow feed posts"
  44. L_DESC_FD_SOFT        = "soft feed post limit"
  45. L_DESC_FD_HARD        = "hard feed post limit"
  46. L_DESC_SMTP_SERVER    = "SMTP address for moderated posts"
  47. L_DESC_MODERATOR_DOMAIN    = "Domain name for default moderators"
  48. L_DESC_UUCP_NAME        = "UUCP name of this server"
  49. L_DESC_CTRL_MSGS        = "<true/false> Process control messages"
  50. L_DESC_NNTPFILE            = "Internal Nntp server files location"
  51. L_DESC_ADMIN_EMAIL        = "Administrator email account"
  52. L_DESC_PICKUP            = "Pickup directory"
  53. L_DESC_FAILED_PICKUP    = "Failed pickup directory"
  54. L_DESC_DROP                = "Drop directory"
  55. L_DESC_NEWNEWS            = "<true/false> Disable NEWNEWS command"
  56. L_DESC_HONOR_MSGIDS        = "<true/false> Honor client msg IDs"
  57.  
  58. L_STR_SERVER_ID            = "Virtual server ID:"
  59. L_STR_CL_POSTS            = "Allow client posting?"
  60. L_STR_CL_SOFT            = "Client soft posting limit:"
  61. L_STR_CL_HARD            = "Client hard posting limit:"
  62. L_STR_FD_POSTS            = "Allow feed posting?"
  63. L_STR_FD_SOFT            = "Feed soft posting limit:"
  64. L_STR_FD_HARD            = "Feed hard posting limit:"
  65. L_STR_SMTP_SERVER        = "Smtp server:"
  66. L_STR_MODERATOR_DOMAIN    = "Default moderator domain:"
  67. L_STR_UUCP_NAME            = "UUCP name:"
  68. L_STR_CTRL_MSGS            = "Process control messages?"
  69. L_STR_NNTPFILE            = "Nntp file location:"
  70. L_STR_ADMIN_EMAIL        = "Administrator email address:"
  71. L_STR_PICKUP            = "Pickup directory:"
  72. L_STR_FAILED_PICKUP        = "Failed pickup directory:"
  73. L_STR_DROP                = "Drop directory:"
  74. L_STR_NEWNEWS            = "Disable NEWNEWS command?"
  75. L_STR_HONOR_MSGIDS        = "Honor client message IDs?"
  76.  
  77. L_STR_CREATED_VS        = "Successfully created the following virtual server:"
  78.  
  79. L_ERR_INVALID_INSTANCE_ID        = "Invalid instance identifier."
  80. L_ERR_CANT_DELETE_INSTANCE_ONE    = "You can't delete the default virtual server."
  81. L_ERR_MUST_SPECIFY_NNTPFILE        = "You must specify the nntp file location."
  82.  
  83. REM
  84. REM END LOCALIZATION
  85. REM
  86.  
  87. REM
  88. REM --- Globals ---
  89. REM
  90.  
  91. dim g_dictParms
  92. dim    g_admin
  93.  
  94. set g_dictParms = CreateObject ( "Scripting.Dictionary" )
  95.  
  96. REM
  97. REM --- Set argument defaults ---
  98. REM
  99.  
  100. g_dictParms(L_SWITCH_OPERATION)        = ""
  101. g_dictParms(L_SWITCH_SERVER)        = "localhost"
  102. g_dictParms(L_SWITCH_INSTANCE_ID)    = "1"
  103. g_dictParms(L_SWITCH_CL_POSTS)        = ""
  104. g_dictParms(L_SWITCH_CL_SOFT)        = ""
  105. g_dictParms(L_SWITCH_CL_HARD)        = ""
  106. g_dictParms(L_SWITCH_FD_POSTS)        = ""
  107. g_dictParms(L_SWITCH_FD_SOFT)        = ""
  108. g_dictParms(L_SWITCH_FD_HARD)        = ""
  109. g_dictParms(L_SWITCH_SMTP_SERVER)    = ""
  110. g_dictParms(L_SWITCH_MODERATOR_DOMAIN)    = ""
  111. g_dictParms(L_SWITCH_UUCP_NAME)        = ""
  112. g_dictParms(L_SWITCH_CTRL_MSGS)        = ""
  113. g_dictParms(L_SWITCH_NNTPFILE)        = ""
  114. g_dictParms(L_SWITCH_ADMIN_EMAIL)    = ""
  115. g_dictParms(L_SWITCH_PICKUP)        = ""
  116. g_dictParms(L_SWITCH_FAILED_PICKUP)    = ""
  117. g_dictParms(L_SWITCH_DROP)            = ""
  118. g_dictParms(L_SWITCH_NEWNEWS)        = ""
  119. g_dictParms(L_SWITCH_HONOR_MSGIDS)    = ""
  120.  
  121. REM
  122. REM --- Begin Main Program ---
  123. REM
  124.  
  125. if NOT ParseCommandLine ( g_dictParms, WScript.Arguments ) then
  126.     usage
  127.     WScript.Quit ( 0 )
  128. end if
  129.  
  130. REM
  131. REM    Debug: print out command line arguments:
  132. REM
  133. REM switches = g_dictParms.keys
  134. REM args = g_dictParms.items
  135. REM
  136. REM
  137. REM for i = 0 to g_dictParms.Count - 1
  138. REM     WScript.echo switches(i) & " = " & args(i)
  139. REM next
  140. REM
  141.  
  142. server = g_dictParms(L_SWITCH_SERVER)
  143. instance = g_dictParms(L_SWITCH_INSTANCE_ID)
  144.  
  145. if NOT IsNumeric (instance) then
  146.     WScript.Echo L_ERR_INVALID_INSTANCE_ID
  147.     WScript.Quit 0
  148. end if
  149.  
  150. select case g_dictParms(L_SWITCH_OPERATION)
  151. case L_OP_GET
  152.     set g_admin = CreateAdsiObject ( server, instance )
  153.  
  154.     PrintVirtualServer g_admin
  155.  
  156. case L_OP_SET
  157.     set g_admin = CreateAdsiObject ( server, instance )
  158.  
  159.     SetProperties ( g_admin )
  160.  
  161.     g_admin.SetInfo
  162.     g_admin.GetInfo
  163.  
  164.     PrintVirtualServer g_admin
  165.  
  166. case L_OP_CREATE
  167.  
  168.     if g_dictParms ( L_SWITCH_NNTPFILE ) = "" then
  169.         WScript.Echo L_ERR_MUST_SPECIFY_NNTPFILE
  170.         WScript.Quit 0
  171.     end if
  172.  
  173.     set g_admin = CreateAdsiObject ( server, "" )
  174.  
  175.     set newinst = g_admin.Create ( "IIsNntpServer", instance )
  176.  
  177.     SetProperties ( newinst )
  178.  
  179.     newinst.SetInfo
  180.     newinst.GetInfo
  181.  
  182.     WScript.Echo L_STR_CREATED_VS
  183.     PrintVirtualServer newinst
  184.  
  185. case L_OP_DELETE
  186.     set g_admin = CreateAdsiObject ( server, "" )
  187.  
  188.     if instance = 1 then
  189.         WScript.Echo L_ERR_CANT_DELETE_INSTANCE_ONE
  190.         WScript.Quit 0
  191.     end if
  192.  
  193.     g_admin.Delete "IIsNntpServer", instance
  194.  
  195. case else
  196.     usage
  197.  
  198. end select
  199.  
  200. WScript.Quit 0
  201.  
  202. REM
  203. REM --- End Main Program ---
  204. REM
  205.  
  206. REM
  207. REM ParseCommandLine ( dictParameters, cmdline )
  208. REM     Parses the command line parameters into the given dictionary
  209. REM
  210. REM Arguments:
  211. REM     dictParameters  - A dictionary containing the global parameters
  212. REM     cmdline - Collection of command line arguments
  213. REM
  214. REM Returns - Success code
  215. REM
  216.  
  217. Function ParseCommandLine ( dictParameters, cmdline )
  218.     dim     fRet
  219.     dim     cArgs
  220.     dim     i
  221.     dim     strSwitch
  222.     dim     strArgument
  223.  
  224.     fRet    = TRUE
  225.     cArgs   = cmdline.Count
  226.     i       = 0
  227.     
  228.     do while (i < cArgs)
  229.  
  230.         REM
  231.         REM Parse the switch and its argument
  232.         REM
  233.  
  234.         if i + 1 >= cArgs then
  235.             REM
  236.             REM Not enough command line arguments - Fail
  237.             REM
  238.  
  239.             fRet = FALSE
  240.             exit do
  241.         end if
  242.  
  243.         strSwitch = cmdline(i)
  244.         i = i + 1
  245.  
  246.         strArgument = cmdline(i)
  247.         i = i + 1
  248.  
  249.         REM
  250.         REM Add the switch,argument pair to the dictionary
  251.         REM
  252.  
  253.         if NOT dictParameters.Exists ( strSwitch ) then
  254.             REM
  255.             REM Bad switch - Fail
  256.             REM
  257.  
  258.             fRet = FALSE
  259.             exit do
  260.         end if 
  261.  
  262.         dictParameters(strSwitch) = strArgument
  263.  
  264.     loop
  265.  
  266.     ParseCommandLine = fRet
  267. end function
  268.  
  269. REM
  270. REM Usage ()
  271. REM     prints out the description of the command line arguments
  272. REM
  273.  
  274. Sub Usage
  275.  
  276.     WScript.Echo L_DESC_PROGRAM
  277.     WScript.Echo vbTab & L_SWITCH_OPERATION & " " & L_DESC_OPERATIONS
  278.     WScript.Echo vbTab & vbTab & L_OP_GET & vbTab & L_DESC_GET
  279.     WScript.Echo vbTab & vbTab & L_OP_SET & vbTab & L_DESC_SET
  280.     WScript.Echo vbTab & vbTab & L_OP_CREATE & vbTab & L_DESC_CREATE
  281.     WScript.Echo vbTab & vbTab & L_OP_DELETE & vbTab & L_DESC_DELETE
  282.     WScript.Echo vbTab & L_SWITCH_SERVER & " " & L_DESC_SERVER
  283.     WScript.Echo vbTab & L_SWITCH_INSTANCE_ID & " " & L_DESC_INSTANCE_ID
  284.     WScript.Echo vbTab & L_SWITCH_CL_POSTS & " " & L_DESC_CL_POSTS
  285.     WScript.Echo vbTab & L_SWITCH_CL_SOFT & " " & L_DESC_CL_SOFT
  286.     WScript.Echo vbTab & L_SWITCH_CL_HARD & " " & L_DESC_CL_HARD
  287.     WScript.Echo vbTab & L_SWITCH_FD_POSTS & " " & L_DESC_FD_POSTS
  288.     WScript.Echo vbTab & L_SWITCH_FD_SOFT & " " & L_DESC_FD_SOFT
  289.     WScript.Echo vbTab & L_SWITCH_FD_HARD & " " & L_DESC_FD_HARD
  290.     WScript.Echo vbTab & L_SWITCH_SMTP_SERVER & " " & L_DESC_SMTP_SERVER
  291.     WScript.Echo vbTab & L_SWITCH_MODERATOR_DOMAIN & " " & L_DESC_MODERATOR_DOMAIN
  292.     WScript.Echo vbTab & L_SWITCH_UUCP_NAME & " " & L_DESC_UUCP_NAME
  293.     WScript.Echo vbTab & L_SWITCH_CTRL_MSGS & " " & L_DESC_CTRL_MSGS
  294.     WScript.Echo vbTab & L_SWITCH_NNTPFILE & " " & L_DESC_NNTPFILE
  295.     WScript.Echo vbTab & L_SWITCH_ADMIN_EMAIL & " " & L_DESC_ADMIN_EMAIL
  296.     WScript.Echo vbTab & L_SWITCH_PICKUP & " " & L_DESC_PICKUP
  297.     WScript.Echo vbTab & L_SWITCH_FAILED_PICKUP & " " & L_DESC_FAILED_PICKUP
  298.     WScript.Echo vbTab & L_SWITCH_DROP & " " & L_DESC_DROP
  299.     WScript.Echo vbTab & L_SWITCH_NEWNEWS & " " & L_DESC_NEWNEWS
  300.     WScript.Echo vbTab & L_SWITCH_HONOR_MSGIDS & " " & L_DESC_HONOR_MSGIDS
  301.  
  302. end sub
  303.  
  304. Sub PrintVirtualServer ( admobj )
  305.  
  306.     dim strNntpFile
  307.  
  308.     strNntpFile = admobj.Get ( "ArticleTableFile" )
  309.  
  310.     WScript.Echo L_STR_SERVER_ID & " " & admobj.Name
  311.     WScript.Echo L_STR_CL_POSTS & " " & admobj.Get ( "AllowClientPosts" )
  312.     WScript.Echo L_STR_CL_SOFT & " " & admobj.Get ( "ClientPostSoftLimit" )
  313.     WScript.Echo L_STR_CL_HARD & " " & admobj.Get ( "ClientPostHardLimit" )
  314.     WScript.Echo L_STR_FD_POSTS & " " & admobj.Get ( "AllowFeedPosts" )
  315.     WScript.Echo L_STR_FD_SOFT & " " & admobj.Get ( "FeedPostSoftLimit" )
  316.     WScript.Echo L_STR_FD_HARD & " " & admobj.Get ( "FeedPostHardLimit" )
  317.     WScript.Echo L_STR_SMTP_SERVER & " " & admobj.Get ( "SmtpServer" )
  318.     WScript.Echo L_STR_MODERATOR_DOMAIN & " " & admobj.Get ( "DefaultModeratorDomain" )
  319.     WScript.Echo L_STR_UUCP_NAME & " " & admobj.Get ( "NntpUucpName" )
  320.     WScript.Echo L_STR_CTRL_MSGS & " " & admobj.Get ( "AllowControlMsgs" )
  321.     WScript.Echo L_STR_ADMIN_EMAIL & " " & admobj.Get ( "AdminEmail" )
  322.     WScript.Echo L_STR_PICKUP & " " & admobj.Get ( "NewsPickupDirectory" )
  323.     WScript.Echo L_STR_FAILED_PICKUP & " " & admobj.Get ( "NewsFailedPickupDirectory" )
  324.     WScript.Echo L_STR_DROP & " " & admobj.Get ( "NewsDropDirectory" )
  325.     WScript.Echo L_STR_NEWNEWS & " " & admobj.Get ( "DisableNewnews" )
  326.     WScript.Echo L_STR_HONOR_MSGIDS & " " & admobj.Get ( "HonorClientMsgIds" )
  327.     WScript.Echo L_STR_NNTPFILE & " " & StripFileNameFromPath ( strNntpFile )
  328.  
  329. end sub
  330.  
  331. Sub SetProperties ( admobj )
  332.  
  333.     SetProp admobj, g_dictParms(L_SWITCH_CL_POSTS), "AllowClientPosts"
  334.     SetProp admobj, g_dictParms(L_SWITCH_CL_SOFT), "ClientPostSoftLimit"
  335.     SetProp admobj, g_dictParms(L_SWITCH_CL_HARD), "ClientPostHardLimit"
  336.     SetProp admobj, g_dictParms(L_SWITCH_FD_POSTS), "AllowFeedPosts"
  337.     SetProp admobj, g_dictParms(L_SWITCH_FD_SOFT), "FeedPostSoftLimit"
  338.     SetProp admobj, g_dictParms(L_SWITCH_FD_HARD), "FeedPostHardLimit"
  339.     SetProp admobj, g_dictParms(L_SWITCH_SMTP_SERVER), "SmtpServer"
  340.     SetProp admobj, g_dictParms(L_SWITCH_MODERATOR_DOMAIN), "DefaultModeratorDomain"
  341.     SetProp admobj, g_dictParms(L_SWITCH_UUCP_NAME), "NntpUucpName"
  342.     SetProp admobj, g_dictParms(L_SWITCH_CTRL_MSGS), "AllowControlMessages"
  343.     SetProp admobj, g_dictParms(L_SWITCH_ADMIN_EMAIL), "AdminEmail"
  344.     SetProp admobj, g_dictParms(L_SWITCH_PICKUP), "NewsPickupDirectory"
  345.     SetProp admobj, g_dictParms(L_SWITCH_FAILED_PICKUP), "NewsFailedPickupDirectory"
  346.     SetProp admobj, g_dictParms(L_SWITCH_DROP), "NewsDropDirectory"
  347.     SetProp admobj, g_dictParms(L_SWITCH_NEWNEWS), "DisableNewnews"
  348.     SetProp admobj, g_dictParms(L_SWITCH_HONOR_MSGIDS), "HonorClientMsgIds"
  349.  
  350.     dim strNntpFile
  351.  
  352.     strNntpFile = g_dictParms ( L_SWITCH_NNTPFILE )
  353.  
  354.     if strNntpFile <> "" then
  355.         SetProp admobj, strNntpFile & "\descrip.txt", "GroupHelpFile"
  356.         SetProp admobj, strNntpFile & "\group.lst", "GroupListFile"
  357.         SetProp admobj, strNntpFile & "\article.hsh", "ArticleTableFile"
  358.         SetProp admobj, strNntpFile & "\history.hsh", "HistoryTableFile"
  359.         SetProp admobj, strNntpFile & "\moderatr.txt", "ModeratorFile"
  360.         SetProp admobj, strNntpFile & "\xover.hsh", "XoverTableFile"
  361.         SetProp admobj, strNntpFile & "\prettynm.txt", "PrettyNamesFile"
  362.     end if
  363.  
  364. end sub
  365.  
  366. sub SetProp ( admobj, value, prop )
  367.  
  368.     REM
  369.     REM Debug code: print out the setting of values:
  370.     REM
  371.     REM WScript.Echo "Setting " & prop & " = " & value
  372.     REM
  373.  
  374.     if value <> "" then
  375.  
  376.         admobj.Put prop, (value)
  377.  
  378.     end if
  379.  
  380. end sub
  381.  
  382. Function CreateAdsiObject ( strMachine, dwInstance )
  383.  
  384.     dim strObject
  385.     dim obj
  386.  
  387.     if dwInstance <> "" then
  388.         strObject = "IIS://" & strMachine & "/NntpSvc/" & dwInstance
  389.     else
  390.         strObject = "IIS://" & strMachine & "/NntpSvc"
  391.     end if
  392.  
  393.     set CreateAdsiObject = GetObject ( strObject )
  394.  
  395. end function
  396.  
  397. Function StripFileNameFromPath ( strPath )
  398.  
  399.     dim    i
  400.  
  401.     i = InStrRev ( strPath, "\" )
  402.     StripFileNameFromPath = Left ( strPath, i - 1 )
  403.  
  404. end function
  405.  
  406.