home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 9 / IOPROG_9.ISO / contrib / iis4 / ins.cab / rgroup.vbs < prev    next >
Encoding:
Text File  |  1997-08-16  |  8.9 KB  |  353 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_NEWSGROUP            = "-g"
  9. L_SWITCH_MAX_RESULTS        = "-n"
  10. L_SWITCH_MODERATOR            = "-m"
  11. L_SWITCH_DESCRIPTION        = "-d"
  12. L_SWITCH_READ_ONLY            = "-r"
  13. L_SWITCH_DEFAULT_MODERATOR    = "-u"
  14. L_SWITCH_PRETTY_NAME        = "-p"
  15.  
  16. L_OP_FIND            = "f"
  17. L_OP_ADD            = "a"
  18. L_OP_DELETE         = "d"
  19. L_OP_GET            = "g"
  20. L_OP_SET            = "s"
  21.  
  22. L_DESC_PROGRAM    = "rgroup - Manipulate NNTP newsgroups"
  23. L_DESC_ADD        = "Add a newsgroup"
  24. L_DESC_DELETE    = "Delete a newsgroup"
  25. L_DESC_GET        = "Get a newsgroup's properties"
  26. L_DESC_SET        = "Set a newsgroup's properties"
  27. L_DESC_FIND        = "Find newsgroups"
  28.  
  29. L_DESC_OPERATIONS            = "<operations>"
  30. L_DESC_SERVER               = "<server> Specify computer to configure"
  31. L_DESC_INSTANCE_ID          = "<virtual server id> Specify virtual server id"
  32. L_DESC_NEWSGROUP            = "<newsgroup name>"
  33. L_DESC_MAX_RESULTS            = "<number of results>"
  34. L_DESC_MODERATOR            = "<moderator email address>"
  35. L_DESC_DESCRIPTION            = "<newsgroup description>"
  36. L_DESC_READ_ONLY            = "<true/false> read-only newsgroup?"
  37. L_DESC_DEFAULT_MODERATOR    = "<true/false> moderated by default moderator?"
  38. L_DESC_PRETTY_NAME          = "<prettyname> response to LIST PRETTYNAMES"
  39.  
  40. L_STR_GROUP_NAME            = "Newsgroup:"
  41. L_STR_GROUP_DESCRIPTION        = "Description:"
  42. L_STR_GROUP_MODERATOR        = "Moderator:"
  43. L_STR_GROUP_READ_ONLY        = "Read only:"
  44. L_STR_GROUP_PRETTY_NAME     = "Prettyname:"
  45. L_STR_NUM_MATCHING_GROUPS    = "Number of matching groups:"
  46.  
  47. L_ERR_MUST_ENTER_NEWSGROUP    = "You must enter a newsgroup name"
  48.  
  49. REM
  50. REM END LOCALIZATION
  51. REM
  52.  
  53. REM
  54. REM --- Globals ---
  55. REM
  56.  
  57. dim g_dictParms
  58. dim    g_admin
  59.  
  60. set g_dictParms = CreateObject ( "Scripting.Dictionary" )
  61. set g_admin = CreateObject ( "NntpAdm.Groups" )
  62.  
  63. REM
  64. REM --- Set argument defaults ---
  65. REM
  66.  
  67. g_dictParms(L_SWITCH_OPERATION)        = ""
  68. g_dictParms(L_SWITCH_SERVER)        = ""
  69. g_dictParms(L_SWITCH_INSTANCE_ID)    = "1"
  70. g_dictParms(L_SWITCH_NEWSGROUP)        = ""
  71. g_dictParms(L_SWITCH_MAX_RESULTS)    = "1000000"
  72. g_dictParms(L_SWITCH_MODERATOR)        = ""
  73. g_dictParms(L_SWITCH_DESCRIPTION)    = ""
  74. g_dictParms(L_SWITCH_READ_ONLY)        = ""
  75. g_dictParms(L_SWITCH_DEFAULT_MODERATOR)    = ""
  76. g_dictParms(L_SWITCH_PRETTY_NAME)    = ""
  77.  
  78. REM
  79. REM --- Begin Main Program ---
  80. REM
  81.  
  82. if NOT ParseCommandLine ( g_dictParms, WScript.Arguments ) then
  83.     usage
  84.     WScript.Quit ( 0 )
  85. end if
  86.  
  87. dim strNewsgroup
  88. dim i
  89. dim id
  90. dim index
  91.  
  92. REM
  93. REM    Debug: print out command line arguments:
  94. REM
  95. REM switches = g_dictParms.keys
  96. REM args = g_dictParms.items
  97. REM
  98. REM
  99. REM for i = 0 to g_dictParms.Count - 1
  100. REM     WScript.echo switches(i) & " = " & args(i)
  101. REM next
  102. REM
  103.  
  104. g_admin.Server            = g_dictParms(L_SWITCH_SERVER)
  105. g_admin.ServiceInstance    = g_dictParms(L_SWITCH_INSTANCE_ID)
  106. strNewsgroup            = g_dictParms(L_SWITCH_NEWSGROUP)
  107.  
  108. select case g_dictParms(L_SWITCH_OPERATION)
  109. case L_OP_FIND
  110.     REM
  111.     REM    Find newsgroups:
  112.     REM
  113.  
  114.     if strNewsgroup = "" then
  115.         WScript.Echo L_ERR_MUST_ENTER_NEWSGROUP
  116.         WScript.Quit 0
  117.     end if
  118.  
  119.     g_admin.Find strNewsgroup, g_dictParms(L_SWITCH_MAX_RESULTS)
  120.     cGroups = g_admin.Count
  121.  
  122.     WScript.Echo L_STR_NUM_MATCHING_GROUPS & " " & cGroups
  123.  
  124.     for i = 0 to cGroups - 1
  125.  
  126.         WScript.Echo g_admin.MatchingGroup ( i )
  127.  
  128.     next
  129.  
  130. case L_OP_ADD
  131.  
  132.     if strNewsgroup = "" then
  133.         WScript.Echo L_ERR_MUST_ENTER_NEWSGROUP
  134.         WScript.Quit 0
  135.     end if
  136.  
  137.     g_admin.Default
  138.  
  139.     if g_dictParms(L_SWITCH_READ_ONLY) = "" then
  140.         g_dictParms(L_SWITCH_READ_ONLY) = FALSE
  141.     end if
  142.  
  143.     if g_dictParms(L_SWITCH_DEFAULT_MODERATOR) = "" then
  144.         g_dictParms(L_SWITCH_DEFAULT_MODERATOR) = FALSE
  145.     end if
  146.  
  147.     if g_dictParms(L_SWITCH_DEFAULT_MODERATOR) then
  148.         g_admin.IsModerated    = BooleanToBOOL ( TRUE )
  149.     elseif g_dictParms(L_SWITCH_MODERATOR) <> "" then
  150.         g_admin.IsModerated    = BooleanToBOOL ( TRUE )
  151.         g_admin.Moderator    = g_dictParms(L_SWITCH_MODERATOR)
  152.     else
  153.         g_admin.IsModerated    = BooleanToBOOL ( FALSE )
  154.         g_admin.Moderator    = ""
  155.     end if
  156.  
  157.     g_admin.Newsgroup    = strNewsgroup
  158.     g_admin.ReadOnly    = BooleanToBOOL (g_dictParms (L_SWITCH_READ_ONLY))
  159.     g_admin.Description    = g_dictParms(L_SWITCH_DESCRIPTION)
  160.     g_admin.PrettyName  = g_dictParms(L_SWITCH_PRETTY_NAME)
  161.  
  162.     g_admin.Add
  163.  
  164.     PrintNewsgroup g_admin
  165.  
  166. case L_OP_DELETE
  167.  
  168.     if strNewsgroup = "" then
  169.         WScript.Echo L_ERR_MUST_ENTER_NEWSGROUP
  170.         WScript.Quit 0
  171.     end if
  172.  
  173.     g_admin.Remove strNewsgroup
  174.  
  175. case L_OP_GET
  176.  
  177.     if strNewsgroup = "" then
  178.         WScript.Echo L_ERR_MUST_ENTER_NEWSGROUP
  179.         WScript.Quit 0
  180.     end if
  181.  
  182.     g_admin.Get strNewsgroup
  183.     PrintNewsgroup g_admin
  184.  
  185. case L_OP_SET
  186.  
  187.     if strNewsgroup = "" then
  188.         WScript.Echo L_ERR_MUST_ENTER_NEWSGROUP
  189.         WScript.Quit 0
  190.     end if
  191.  
  192.     g_admin.Get strNewsgroup
  193.  
  194.     if g_dictParms(L_SWITCH_MODERATOR) = "" then
  195.         g_dictParms(L_SWITCH_MODERATOR) = g_admin.Moderator
  196.     end if
  197.  
  198.     if g_dictParms(L_SWITCH_DESCRIPTION) = "" then
  199.         g_dictParms(L_SWITCH_DESCRIPTION) = g_admin.Description
  200.     end if
  201.  
  202.     if g_dictParms(L_SWITCH_READ_ONLY) = "" then
  203.         g_dictParms(L_SWITCH_READ_ONLY) = BOOLToBoolean (g_admin.ReadOnly)
  204.     end if
  205.  
  206.     if g_dictParms(L_SWITCH_DEFAULT_MODERATOR) = "" then
  207.         g_dictParms(L_SWITCH_DEFAULT_MODERATOR) = FALSE
  208.     end if
  209.  
  210.     if g_dictParms(L_SWITCH_PRETTY_NAME) = "" then
  211.         g_dictParms(L_SWITCH_PRETTY_NAME) = g_admin.PrettyName
  212.     end if
  213.  
  214.     if ( g_dictParms(L_SWITCH_DEFAULT_MODERATOR) ) then
  215.         g_admin.IsModerated    = BooleanToBOOL ( TRUE )
  216.         g_admin.Moderator    = ""
  217.     elseif g_dictParms(L_SWITCH_MODERATOR) <> "" then
  218.         g_admin.IsModerated    = BooleanToBOOL ( TRUE )
  219.         g_admin.Moderator    = g_dictParms(L_SWITCH_MODERATOR)
  220.     else
  221.         g_admin.IsModerated    = BooleanToBOOL ( FALSE )
  222.         g_admin.Moderator    = ""
  223.     end if
  224.  
  225.     g_admin.ReadOnly    = BooleanToBOOL (g_dictParms (L_SWITCH_READ_ONLY))
  226.     g_admin.Description    = g_dictParms(L_SWITCH_DESCRIPTION)
  227.     g_admin.PrettyName  = g_dictParms(L_SWITCH_PRETTY_NAME)
  228.  
  229.     g_admin.Set
  230.     PrintNewsgroup g_admin
  231.  
  232. case else
  233.     usage
  234.  
  235. end select
  236.  
  237. WScript.Quit 0
  238.  
  239. REM
  240. REM --- End Main Program ---
  241. REM
  242.  
  243. REM
  244. REM ParseCommandLine ( dictParameters, cmdline )
  245. REM     Parses the command line parameters into the given dictionary
  246. REM
  247. REM Arguments:
  248. REM     dictParameters  - A dictionary containing the global parameters
  249. REM     cmdline - Collection of command line arguments
  250. REM
  251. REM Returns - Success code
  252. REM
  253.  
  254. Function ParseCommandLine ( dictParameters, cmdline )
  255.     dim     fRet
  256.     dim     cArgs
  257.     dim     i
  258.     dim     strSwitch
  259.     dim     strArgument
  260.  
  261.     fRet    = TRUE
  262.     cArgs   = cmdline.Count
  263.     i       = 0
  264.     
  265.     do while (i < cArgs)
  266.  
  267.         REM
  268.         REM Parse the switch and its argument
  269.         REM
  270.  
  271.         if i + 1 >= cArgs then
  272.             REM
  273.             REM Not enough command line arguments - Fail
  274.             REM
  275.  
  276.             fRet = FALSE
  277.             exit do
  278.         end if
  279.  
  280.         strSwitch = cmdline(i)
  281.         i = i + 1
  282.  
  283.         strArgument = cmdline(i)
  284.         i = i + 1
  285.  
  286.         REM
  287.         REM Add the switch,argument pair to the dictionary
  288.         REM
  289.  
  290.         if NOT dictParameters.Exists ( strSwitch ) then
  291.             REM
  292.             REM Bad switch - Fail
  293.             REM
  294.  
  295.             fRet = FALSE
  296.             exit do
  297.         end if 
  298.  
  299.         dictParameters(strSwitch) = strArgument
  300.  
  301.     loop
  302.  
  303.     ParseCommandLine = fRet
  304. end function
  305.  
  306. REM
  307. REM Usage ()
  308. REM     prints out the description of the command line arguments
  309. REM
  310.  
  311. Sub Usage
  312.  
  313.     WScript.Echo L_DESC_PROGRAM
  314.     WScript.Echo vbTab & L_SWITCH_OPERATION & " " & L_DESC_OPERATIONS
  315.     WScript.Echo vbTab & vbTab & L_OP_FIND & vbTab & L_DESC_FIND
  316.     WScript.Echo vbTab & vbTab & L_OP_ADD & vbTab & L_DESC_ADD
  317.     WScript.Echo vbTab & vbTab & L_OP_DELETE & vbTab & L_DESC_DELETE
  318.     WScript.Echo vbTab & vbTab & L_OP_GET & vbTab & L_DESC_GET
  319.     WScript.Echo vbTab & vbTab & L_OP_SET & vbTab & L_DESC_SET
  320.     WScript.Echo vbTab & L_SWITCH_SERVER & " " & L_DESC_SERVER
  321.     WScript.Echo vbTab & L_SWITCH_INSTANCE_ID & " " & L_DESC_INSTANCE_ID
  322.     WScript.Echo vbTab & L_SWITCH_NEWSGROUP & " " & L_DESC_NEWSGROUP
  323.     WScript.Echo vbTab & L_SWITCH_MAX_RESULTS & " " & L_DESC_MAX_RESULTS
  324.     WScript.Echo vbTab & L_SWITCH_MODERATOR & " " & L_DESC_MODERATOR
  325.     WScript.Echo vbTab & L_SWITCH_DESCRIPTION & " " & L_DESC_DESCRIPTION
  326.     WScript.Echo vbTab & L_SWITCH_READ_ONLY & " " & L_DESC_READ_ONLY
  327.     WScript.Echo vbTab & L_SWITCH_DEFAULT_MODERATOR & " " & L_DESC_DEFAULT_MODERATOR
  328.  
  329. end sub
  330.  
  331. Sub PrintNewsgroup ( admobj )
  332.  
  333.     WScript.Echo L_STR_GROUP_NAME & " " & admobj.Newsgroup
  334.     WScript.Echo L_STR_GROUP_DESCRIPTION & " " & admobj.Description
  335.     WScript.Echo L_STR_GROUP_MODERATOR & " " & admobj.Moderator
  336.     WScript.Echo L_STR_GROUP_READ_ONLY & " " & BOOLToBoolean (admobj.ReadOnly)
  337.     WScript.Echo L_STR_GROUP_PRETTY_NAME & " " & admobj.PrettyName
  338.  
  339. end sub
  340.  
  341. Function BooleanToBOOL ( b )
  342.     if b then
  343.         BooleanToBOOL = 1
  344.     else
  345.         BooleanToBOOL = 0
  346.     end if
  347. end function
  348.  
  349. Function BOOLToBoolean ( b )
  350.     BOOLToBoolean = (b = 1)
  351. end function
  352.  
  353.