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