2025-11-28 00:35:46 +09:00

302 lines
9.6 KiB
JavaScript

/*---------------------------------------------------------------------
Copyright (C) Microsoft Corporation. All rights reserved.
Script name : List On Demand, Broadcast, Cache, Proxy or All Publishing Points (listpub)
Script version : 1.0
Description :This script lists publishing points on the target machine.
The following information should be presented for on demand and
broadcst publishing points.
Command line parameters :
[-s <Server1>] -t <od|bc|cache|proxy|all>
where -s represents target server, -t represents type of publishing point.
Example : listpub -t all
Returns :
1. Usage: listpub [-s <Server1>] -t <od|bc|cache|proxy|all>
2. Server %server% is not a valid WMS Server
3. Publishing Point %pub% etc is not a valid publishing point on server %server%
OS Requirements : Windows Server 2003 (all versions)
Software requirements : WMS Server
Scripting Engine : Jscript
---------------------------------------------------------------------*/
WMS_PUBLISHING_POINT_TYPE_ON_DEMAND = 1;
WMS_PUBLISHING_POINT_TYPE_BROADCAST = 2;
WMS_PUBLISHING_POINT_TYPE_CACHE = 3;
WMS_PUBLISHING_POINT_TYPE_PROXY = 4;
var objServer = null;
var objPubPoint = null;
var dwWhichArg = 0;
var dwNumPubPoints = 0;
var dwOption = 0;
var szArgOpt = null;
var szArgServer = "";
var szEachArgument = "";
var szTemp = "";
var bCheckedArgT = false;
var objArgs = WScript.Arguments;
var dwNumArgs = WScript.Arguments.length;
if( 0 == dwNumArgs )
{
DisplayUsage();
}
// Parse the command to seperate out the server name and publishing points.
while( dwWhichArg < dwNumArgs )
{
szEachArgument = objArgs( dwWhichArg );
if(szEachArgument.toLowerCase()== "-s")
{
dwWhichArg = dwWhichArg + 1;
if( dwWhichArg >= dwNumArgs ) //ex: listpub -t p1 -s
{
DisplayUsage();
}
szEachArgument = objArgs( dwWhichArg );
if( szEachArgument.toLowerCase()== "-t" ) //if next szEachArgument is -t , display usage : since syntax is wrong
{
DisplayUsage();
}
else
{
//accept only one server name
if( szEachArgument.lastIndexOf(",") == -1 )
{
szArgServer = szEachArgument;
}
else
{
DisplayUsage();
}
}
}
else if( szEachArgument.toLowerCase()== "-t" )
{
bCheckedArgT = true;
dwWhichArg = dwWhichArg + 1;
if( dwWhichArg >= dwNumArgs ) //ex: listpub -s s1 -t
{
DisplayUsage();
}
szEachArgument = objArgs(dwWhichArg);
if(szEachArgument.toLowerCase()== "-s") //if next szEachArgument is -s, display usage : since syntax is wrong
{
DisplayUsage();
}
else
{
//accept only one option
if(szEachArgument.lastIndexOf(",")== -1)
{
szArgOpt = szEachArgument;
}
else
{
DisplayUsage();
}
}
}
else // if argument is not -p,-t i.e. if it is an invalid argument
{
DisplayUsage();
}
dwWhichArg = dwWhichArg + 1;
}
if(!bCheckedArgT) //Ex: listpub -s "s1" and -t part is missing.
{
DisplayUsage();
}
// Connect to Server
//if server name is not mentioned, then start Publishing points on localhost
if( szArgServer == "")
{
szArgServer="LocalHost"
}
var bFailed = false;
try
{
objServer = new ActiveXObject( "WMSServer.server", szArgServer );
}
catch(e)
{
bFailed = true;
szTemp = "Server '" + szArgServer + "' is not a valid WMS Server \n";
Trace( szTemp );
}
if( !bFailed )
{
Trace("Listing Publishing Points at "+szArgServer);
GetPublishingPoints( szArgOpt.toLowerCase() );
}
function GetPublishingPoints( Option )
{
var szPublishingPointType = "";
var szPubPointPath = "";
var dwPubPointType = 0;
var szPubName = "";
var szPublishingPointStatus = "";
var szPubClients = "";
var szPubBWdth = "";
dwNumPubPoints = objServer.PublishingPoints.Count;
switch(Option.toLowerCase())
{
case 'od':
dwOption = WMS_PUBLISHING_POINT_TYPE_ON_DEMAND;
break;
case 'bc':
dwOption = WMS_PUBLISHING_POINT_TYPE_BROADCAST;
break;
case 'cache' :
dwOption = WMS_PUBLISHING_POINT_TYPE_CACHE;
break;
case 'proxy':
dwOption = WMS_PUBLISHING_POINT_TYPE_PROXY;
break;
case 'all':
dwOption = 0;
break;
default:
dwOption = 99;
Trace("Invalid Type");
WScript.Quit(1);
break;
}
//Search Publishing Points of specified type/option
var i = 0;
for(i = 0; i < dwNumPubPoints; i++ )
{
szPubName = "";
szPublishingPointStatus = "";
szPubClients = "";
szPubBWdth = "";
szPubPointPath = "";
objPubPoint = objServer.PublishingPoints.Item( i );
dwPubPointType = objPubPoint.Type;
if( ( 0 == dwOption ) || ( dwOption == dwPubPointType ) )
{
switch( dwPubPointType )
{
case WMS_PUBLISHING_POINT_TYPE_ON_DEMAND:
szPublishingPointType = "On-Demand";
if( true == objPubPoint.AllowClientsToConnect )
{
szPublishingPointStatus = "Allowing client connections";
}
else
{
szPublishingPointStatus = "Denying client connections";
}
szPubPointPath = objPubPoint.Path;
break;
case WMS_PUBLISHING_POINT_TYPE_BROADCAST:
szPublishingPointType = "Broadcast";
dwStateFlags = objPubPoint.BroadcastStatus;
szPubPointPath = objPubPoint.Path;
szPublishingPointStatus = PPBcastStatusToString( dwStateFlags );
if( true == objPubPoint.AllowClientsToConnect )
{
szPublishingPointStatus = szPublishingPointStatus + ", Allowing client connections";
}
else
{
szPublishingPointStatus = szPublishingPointStatus + ", Denying client connections";
}
break;
case WMS_PUBLISHING_POINT_TYPE_CACHE:
szPublishingPointType = "Cache";
if( true == objPubPoint.AllowClientsToConnect )
{
szPublishingPointStatus = "Allowing connections";
}
else
{
szPublishingPointStatus = "Denying connections";
}
break;
case WMS_PUBLISHING_POINT_TYPE_PROXY:
szPublishingPointType = "Proxy";
dwStateFlags = objPubPoint.Status;
szPublishingPointStatus = PPBcastStatusToString( dwStateFlags );
if( true == objPubPoint.AllowClientsToConnect )
{
szPublishingPointStatus = szPublishingPointStatus + ", Allowing connections";
}
else
{
szPublishingPointStatus = szPublishingPointStatus + ", Denying connections";
}
break;
default:
szPublishingPointType = "Unknown";
break;
}
szPubName = objPubPoint.Name;
szPubClients = objPubPoint.CurrentCounters.ConnectedPlayers;
szPubBWdth = objPubPoint.CurrentCounters.PlayerAllocatedBandwidth + objPubPoint.CurrentCounters.OutgoingDistributionAllocatedBandwidth;
szTemp = "\nName : " + szPubName;
if( 0 < szPubPointPath.length )
{
szTemp = szTemp + "\nPath : " + szPubPointPath;
}
if( 0 == dwOption )
{
szTemp = szTemp + "\nType : " + szPublishingPointType;
}
szTemp = szTemp + "\nStatus : " + szPublishingPointStatus;
szTemp = szTemp + "\nCurrent # of clients : " + szPubClients;
szTemp = szTemp + "\nCurrent Bandwidth usage : " + szPubBWdth;
Trace(szTemp);
}
}
}
function PPBcastStatusToString( dwStateFlags )
{
if( 8 & dwStateFlags )
{
return( "Change in Progress" );
}
switch( dwStateFlags )
{
case 0 : return( "Stopped" ); break;
case 1 : return( "Started without data" ); break;
case 2 : return( "Started" ); break;
case 3 : return( "Started without data and archiving" ); break;
case 4 : return( "Archiving" ); break;
case 6 : return( "Started and Archiving" ); break;
case 8 : return( "Change in Progress" ); break;
default : return ( "Unknown State" ); break;
}
}
function DisplayUsage()
{
szTemp = "Usage: listpub [-s <Server1>] -t <od|bc|cache|proxy|all>";
szTemp = szTemp + "\nOnly one server name is accepted. ";
szTemp = szTemp + "\nIf server name is not mentioned, local host is the default server ";
Trace(szTemp);
WScript.Quit(1);
}
function Trace( Msg )
{
WScript.Echo( Msg );
}