home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 February / CHIP_2_98.iso / software / pelne / optionp / iis4_07.cab / regfilt.js < prev    next >
Text File  |  1997-10-25  |  3KB  |  120 lines

  1. /*********************************************
  2. *
  3. *  Filter Registration Utility  
  4. *
  5. **********************************************
  6. *
  7. *  Description:
  8. *  ------------
  9. *  This sample admin script allows you to install a new ISAPI filter on the server or
  10. *  the service.
  11. *
  12. *  To Run:  
  13. *  -------
  14. *  This is the format for this script:
  15. *  
  16. *      cscript regfilt.js <filterpath> [-n <filtername>]
  17. *  
  18. *  NOTE:  If you want to execute this script directly from Windows, use 
  19. *  'wscript' instead of 'cscript'. 
  20. *
  21. **********************************************/
  22.  
  23.  
  24. // Initialize variables
  25. var ArgCount, FName, FPath, FiltersObj, FilterObj, FullPath, LoadOrder;
  26.  
  27. // Default values
  28. ArgCount = 0;
  29. FName = "";     // Name of filter
  30. FPath = "";     // Path to filter DLL
  31.  
  32.  
  33.  
  34.   // ** Parse Command Line
  35.  
  36.     // Loop through arguments
  37.     while (ArgCount < WScript.arguments.length)   {
  38.       
  39.       // Determine switches used
  40.       switch (WScript.arguments.item(ArgCount))   {
  41.  
  42.          case "-n":   // Name of filter
  43.             // Move to next arg, which should be parameter
  44.             ++ArgCount;
  45.             if (ArgCount >= WScript.arguments.length) 
  46.                UsageMsg();
  47.             else
  48.                FName = WScript.arguments.item(ArgCount);
  49.             break;
  50.            
  51.          case "-h":  // Help!
  52.          case "-?":
  53.          case "/?":    
  54.             UsageMsg();
  55.             break;
  56.  
  57.          default:
  58.             if (FPath != "")   // Only one name allowed
  59.                UsageMsg();
  60.             else
  61.                FPath = WScript.arguments.item(ArgCount);
  62.           
  63.       }
  64.  
  65.       // Move pointer to next argument
  66.       ++ArgCount;
  67.  
  68.     }
  69.  
  70.     // Path to DLL filter must be provided 
  71.     if (FPath == "")  
  72.        UsageMsg(); 
  73.     
  74.     // Set filter name to path, if none provided
  75.     if (FName == "") 
  76.        FName == FPath;
  77.  
  78.  
  79.     // Access ADSI object for the IIsFilters object
  80.     // NOTE:  If you wish to add a filter at the server level, you will have to check
  81.     // the IIsServer object for an IIsFilters node.  If such a node does not exist, it will
  82.     // need to be created using Create().  
  83.     FiltersObj = GetObject("IIS://Localhost/W3SVC/Filters");
  84.  
  85.     // Create and configure new IIsFilter object
  86.     FilterObj = FiltersObj.Create("IIsFilter", FName);
  87.     FilterObj.FilterPath = FPath;
  88.  
  89.     // Write info back to Metabase
  90.     FilterObj.SetInfo();
  91.  
  92.  
  93.     // Modify FilterLoadOrder, to include to new filter
  94.     LoadOrder = FiltersObj.FilterLoadOrder;
  95.  
  96.     if (LoadOrder != "") 
  97.         LoadOrder = LoadOrder + ",";
  98.  
  99.     // Add new filter to end of load order list
  100.     LoadOrder = LoadOrder + FName;
  101.     FiltersObj.FilterLoadOrder = LoadOrder;
  102.  
  103.     // Write changes back to Metabase
  104.     FiltersObj.SetInfo();
  105.  
  106.     WScript.echo("Filter '" + FName + "' (path " + FPath + ") has been successfully registered.");
  107.     WScript.quit(0);
  108.  
  109.  
  110. // Displays usage message, then QUITS
  111. function UsageMsg()  {
  112.    WScript.echo("Usage:  cscript regfilt.js <filterpath> [-n <filtername>] ");
  113.    WScript.quit();
  114. }
  115.  
  116.  
  117.  
  118.  
  119.  
  120.