Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

794 lines
28 KiB

<%@ Language=VBScript %>
<% Option Explicit %>
<%
'-------------------------------------------------------------------------
'services.asp: Serves in Displaying the Server appliance managed services
'
' Copyright (c) Microsoft Corporation. All rights reserved.
'
' Date Description
' 12-mar-2001 Creation date
' 15-mar-2001 Modified date
'-------------------------------------------------------------------------
%>
<!-- #include virtual="/admin/inc_framework.asp" -->
<!-- #include virtual="/admin/ots_main.asp" -->
<!-- #include file="loc_services.asp" -->
<%
'-------------------------------------------------------------------------
' Global Constants
'-------------------------------------------------------------------------
Dim SOURCE_FILE
SOURCE_FILE = SA_GetScriptFileName()
'constant to get the services from the container
Const CONST_SERVICES_CONTAINER = "SERVICES"
Const CONST_OTS_COLUMN_ALIGN = "left"
Const CONST_REFRESH_INTERVAL = 30
'-------------------------------------------------------------------------
' Global Variables
'-------------------------------------------------------------------------
Dim rc 'Return value for CreatePage
Dim page 'Variable that receives the output page
'frame work variables for sorting
Dim g_iSortCol
Dim g_sSortSequence
'======================================================
' Entry point
'======================================================
' Create Page
rc = SA_CreatePage( L_SERVICES_OTS_TABLE_CAPTION, "", PT_AREA, page )
' Show page
rc = SA_ShowPage( page )
'---------------------------------------------------------------------
' Function name: OnInitPage
' Description: Called to signal first time processing for this page.
' Input Variables: oPageIn and oEventArg
' Output Variables: oPageIn and oEventArg
' Return Values: TRUE to indicate initialization was successful. FALSE to indicate
' errors. Returning FALSE will cause the page to be abandoned.
' Global Variables: None
' Called to signal first time processing for this page. Use this method
' to do first time initialization tasks.
'---------------------------------------------------------------------
Public Function OnInitPage(ByRef oPageIn, ByRef oEventArg)
'Set the page refresh interval to 30sec
Call SA_SetPageRefreshInterval(page, CONST_REFRESH_INTERVAL)
'Check for service task requested - enable or disable
Call ServiceTaskClick()
Call SA_TraceOut(SOURCE_FILE, "OnInitPage")
' Set default values
'
' Sort first column in ascending sequence
g_iSortCol = 1
g_sSortSequence = "A"
OnInitPage = TRUE
End Function
'---------------------------------------------------------------------
' Function name: OnServeAreaPage
' Description: Called when the page needs to be served.
' Input Variables: oPageIn, oEventArg
' Output Variables: oPageIn and oEventArg
' Return Values: TRUE to indicate no problems occured. FALSE to indicate errors.
' Returning FALSE will cause the page to be abandoned.
' Global Variables: In:g_bPageChangeRequested,g_sPageAction,
' g_bSearchRequested,g_iSearchCol,g_sSearchColValue
' In:L_(*)-Localization Strings
' Called when the page needs to be served. Use this method to serve content.
'---------------------------------------------------------------------
Public Function OnServeAreaPage(ByRef oPageIn, ByRef oEventArg)
'getting the managed services that are installed in the system
'(intersection of wmi and registry)
OnServeAreaPage = GetServices()
End Function
'---------------------------------------------------------------------
' Function: OnSortNotify()
' Description: Sorting notification event handler.
' Input Variables: oPageIn,oEventArg,sortCol,sortSeq
' Output Variables: oPageIn,oEventArg
' Return Values: Always returns TRUE
' Global Variables: G_*
'---------------------------------------------------------------------
Public Function OnSortNotify(ByRef oPageIn, _
ByRef oEventArg, _
ByVal iSortCol, _
ByVal sSortSeq )
OnSortNotify = TRUE
Call SA_TraceOut(SOURCE_FILE, "OnSortNotify")
g_iSortCol = iSortCol
g_sSortSequence = sSortSeq
End Function
'-------------------------------------------------------------------------
' Function name: GetServices
' Description: Gets the services and displays the
' services onto the page
' Input Variables: None
' Output Variables: None
' Return Values: Returns collection of elements under the container
' Global Variables: G_*,L_*
'-------------------------------------------------------------------------
Function GetServices()
Err.Clear
On Error resume next
Dim tableServices 'table object
Dim nReturnValue 'return value
Dim objElement 'variable for reg element
Dim objManagedServices 'object for getting services
Dim objServiceSet 'services list
Dim arrManagedServices() 'array for getting the services from system
Dim nServiceCount 'count variable
Dim strWMIpath 'wmi path
Dim i 'count
Dim intcount 'count variable
Dim intArrIndex 'index variable
Dim arrServices() 'array for getting the services from registry
Dim colFlags 'variable to define column types
Dim objWMIService 'wmi connection object
Dim objService 'service object
Dim sTaskURL 'Holds the URL for the task button
'variables for getting service properties
Dim strArrServiceName
Dim strArrServiceDisplayName
Dim strArrServiceStatus
Dim strArrServiceStartupType
Dim strArrServiceDescription
Dim strArrNonlocalisedServiceStatus
Dim strArrNonlocalisedServiceStartupType
Dim strReturnTo
'variables for dynaminc tasks
Dim rows
Dim tasks
'constants used for string comparisions.
Const CONST_STOPPED = "stopped"
Const CONST_RUNNING = "running"
Const CONST_PAUSED = "paused"
Const CONST_STOPPENDING = "stop pending"
Const CONST_STARTPENDING = "start pending"
Const CONST_MANUAL = "manual"
Const CONST_AUTOMATIC = "auto"
Const CONST_DISABLED = "disabled"
'initialisation
intArrIndex = 0
intcount= 0
nServiceCount = 0
'WMI path
strWMIpath = "select * from Win32_Service where "
'getting the services
Set objManagedServices = SA_GetElements(CONST_SERVICES_CONTAINER)
For Each objElement In objManagedServices
redim preserve arrManagedServices(6, nServiceCount)
'In 2.1 on XPE, there is only one website. We won't display the shared http protocol.
if Ucase(objElement.GetProperty("ServiceName")) <> "W3SVC" Or _
CONST_OSNAME_XPE <> GetServerOSName() Then
arrManagedServices(0, nServiceCount) = objElement.GetProperty("ServiceName")
arrManagedServices(1, nServiceCount) = objElement.GetProperty("URL")
arrManagedServices(2, nServiceCount) = objElement.GetProperty("ServiceNameRID")
arrManagedServices(3, nServiceCount) = objElement.GetProperty("ServiceDescRID")
arrManagedServices(4, nServiceCount) = objElement.GetProperty("Source")
arrManagedServices(5, nServiceCount) = objElement.GetProperty("NotDisable")
nServiceCount = nServiceCount + 1
End If
Next
For i= 0 to nServiceCount -1
strWMIpath = strWMIpath & "Name=" & chr(34) & arrManagedServices(0,i) & chr(34) & " OR "
next
strWMIpath = Left(strWMIpath,len(strWMIpath)-3)
'connecting to WMI
Set objWMIService = GetWMIConnection(CONST_WMI_WIN32_NAMESPACE)
Set objServiceSet = objWMIService.ExecQuery(strWMIpath,"WQL",0,null)
If Err.number <> 0 then
SA_ServeFailurepage L_FAILEDTOGETSRVOBJ_ERRORMESSAGE
End If
' For each installed Service--check for service installed
For i= 0 to nServiceCount - 1
for each objService in objServiceSet
If IsSameElementID(arrManagedServices(0,i), objService.Name) Then
redim preserve arrServices(6, intArrIndex)
' If service is managed, add it to the array "arrServices"
'service name
arrServices(0,intArrIndex)=objService.Name & "~" & arrManagedServices(5,i)
'getting localised name and description
arrServices(1,intArrIndex) = SA_GetLocString(arrManagedServices(4,i), arrManagedServices(2,i), "")
arrServices(4,intArrIndex) = SA_GetLocString(arrManagedServices(4,i), arrManagedServices(3,i), "")
'service state
'getting the localised string for service state
Select case Ucase(objService.State)
Case Ucase(CONST_STOPPED)
arrServices(2,intArrIndex) = L_STOPPED_TEXT
Case Ucase(CONST_STOPPENDING)
arrServices(2,intArrIndex) = L_SERVICES_STATUS_STOP_PENDING
Case Ucase(CONST_RUNNING)
arrServices(2,intArrIndex) = L_RUNNING_TEXT
Case Ucase(CONST_STARTPENDING)
arrServices(2,intArrIndex) = L_SERVICES_STATUS_START_PENDING
Case Ucase(CONST_PAUSED)
arrServices(2,intArrIndex) = L_SERVICES_STATUS_PAUSED
End Select
'service startup type
Select case Ucase(objService.StartMode)
Case Ucase(CONST_MANUAL)
arrServices(3,intArrIndex) = L_MANUAL_TEXT
Case Ucase(CONST_AUTOMATIC)
arrServices(3,intArrIndex) = L_AUTOMATIC_TEXT
Case Ucase(CONST_DISABLED)
arrServices(3,intArrIndex) = L_DISABLED_TEXT
End Select
'non localised values - WMI retrieves in English
'state
arrServices(5,intArrIndex) = Ucase(objService.State)
'startup type
arrServices(6,intArrIndex) = Ucase(objService.StartMode)
intArrIndex = intArrIndex + 1
End If
next
next
' Create the table
tableServices = OTS_CreateTable("", L_SERVICES_OTS_TABLE_DESCRIPTION)
' Create columns and add them to the table
'hidden column- for services name that has to be passed to the next page.
colFlags = (OTS_COL_FLAG_KEY OR OTS_COL_FLAG_HIDDEN)
nReturnValue=OTS_AddTableColumn(tableServices, OTS_CreateColumn(L_SERVICES_OTS_COLUMN_SERVICENAME, _
CONST_OTS_COLUMN_ALIGN, _
colFlags))
If nReturnValue <> OTS_ERR_SUCCESS Or Err.number <> 0 Then
SA_ServeFailurepage L_FAILEDTOADDCOLOUMN_ERRORMESSAGE
GetServices = false
Exit Function
End IF
' Is the Name column selected as the sort column
colFlags = OTS_COL_SORT
nReturnValue=OTS_AddTableColumn(tableServices, OTS_CreateColumn(L_SERVICES_OTS_COLUMN_SERVICENAME, _
CONST_OTS_COLUMN_ALIGN, _
colFlags ))
If nReturnValue <> OTS_ERR_SUCCESS Or Err.number <> 0 Then
SA_ServeFailurepage L_FAILEDTOADDCOLOUMN_ERRORMESSAGE
GetServices = false
Exit Function
End IF
' Is the status column selected as the sort column
colFlags = OTS_COL_SORT
nReturnValue=OTS_AddTableColumn(tableServices, OTS_CreateColumn(L_SERVICES_OTS_COLUMN_SERVICESTATUS, _
CONST_OTS_COLUMN_ALIGN, _
colFlags))
If nReturnValue <> OTS_ERR_SUCCESS Or Err.number <> 0 Then
SA_ServeFailurepage L_FAILEDTOADDCOLOUMN_ERRORMESSAGE
GetServices = false
Exit Function
End IF
'service type column
colFlags = OTS_COL_SORT
nReturnValue=OTS_AddTableColumn(tableServices, OTS_CreateColumn(L_SERVICES_OTS_COLUMN_SERVICESTARTUPTYPE, _
CONST_OTS_COLUMN_ALIGN, _
colFlags))
If nReturnValue <> OTS_ERR_SUCCESS Or Err.number <> 0 Then
SA_ServeFailurepage L_FAILEDTOADDCOLOUMN_ERRORMESSAGE
GetServices = false
Exit Function
End IF
'service description column
colFlags = OTS_COL_SORT
nReturnValue=OTS_AddTableColumn(tableServices, OTS_CreateColumn( L_SERVICES_OTS_COLUMN_SERVICEDESC, _
CONST_OTS_COLUMN_ALIGN, _
colFlags))
If nReturnValue <> OTS_ERR_SUCCESS Or Err.number <> 0 Then
SA_ServeFailurepage L_FAILEDTOADDCOLOUMN_ERRORMESSAGE
GetServices = false
Exit Function
End IF
'hidden column for the non localised service status value retrieved from WMI in english
colFlags = (OTS_COL_FLAG_HIDDEN)
nReturnValue=OTS_AddTableColumn(tableServices, OTS_CreateColumn(L_SERVICES_OTS_COLUMN_SERVICESTATUS, _
CONST_OTS_COLUMN_ALIGN, _
colFlags))
If nReturnValue <> OTS_ERR_SUCCESS Or Err.number <> 0 Then
SA_ServeFailurepage L_FAILEDTOADDCOLOUMN_ERRORMESSAGE
GetServices = false
Exit Function
End IF
'hidden column for the non localised service startup type value retrieved from WMI in english
colFlags = (OTS_COL_FLAG_HIDDEN)
nReturnValue=OTS_AddTableColumn(tableServices, OTS_CreateColumn(L_SERVICES_OTS_COLUMN_SERVICESTARTUPTYPE, _
CONST_OTS_COLUMN_ALIGN, _
colFlags))
If nReturnValue <> OTS_ERR_SUCCESS Or Err.number <> 0 Then
SA_ServeFailurepage L_FAILEDTOADDCOLOUMN_ERRORMESSAGE
GetServices = false
Exit Function
End IF
' Add Tasks to the table
Call OTS_SetTableTasksTitle(tableServices, L_SERVICES_TASKS)
' Add the tasks associated with User objects
sTaskURL = "services/services.asp?service=enable"
strReturnTo = "tasks.asp"
Call SA_MungeURL(strReturnTo, "Tab1", GetTab1())
Call SA_MungeURL(sTaskURL, "ReturnURL", strReturnTo)
nReturnValue = OTS_AddTableTask( tableServices, OTS_CreateTaskEx(L_SERVICES_TASK_ENABLE, _
L_SERVICES_TASK_ENABLE_DESC, _
sTaskURL, _
OTS_PT_AREA, _
"EnableServiceTask") )
If nReturnValue <> OTS_ERR_SUCCESS Then
SA_ServeFailurepage L_FAILEDTOADDTASK_ERRORMESSAGE
GetServices = false
Exit Function
End IF
sTaskURL = "services/services.asp?service=disable"
strReturnTo = "tasks.asp"
Call SA_MungeURL(strReturnTo, "Tab1", GetTab1())
Call SA_MungeURL(sTaskURL, "ReturnURL", strReturnTo)
nReturnValue=OTS_AddTableTask( tableServices, OTS_CreateTaskEx(L_SERVICES_TASK_DISABLE, _
L_SERVICES_TASK_DISABLE_DESC, _
sTaskURL, _
OTS_PT_AREA, _
"DisableServiceTask") )
If nReturnValue <> OTS_ERR_SUCCESS Then
SA_ServeFailurepage L_FAILEDTOADDTASK_ERRORMESSAGE
GetServices = false
Exit Function
End IF
nReturnValue=OTS_AddTableTask( tableServices, OTS_CreateTaskEx(L_SERVICES_TASK_PROPERTIES, _
L_SERVICES_TASK_PROPERTIES_DESC, _
"services/service_dispatch.asp",_
OTS_PT_AREA,"PropertiesTask") )
If nReturnValue <> OTS_ERR_SUCCESS Then
SA_ServeFailurepage L_FAILEDTOADDTASK_ERRORMESSAGE
GetServices = false
Exit Function
End IF
'Add Rows to the table
For intCount = 0 to intArrIndex-1
'moving the array elements to variables
strArrServiceName = arrServices(0,intCount)
strArrServiceDisplayName = arrServices(1,intCount)
strArrServiceStatus = arrServices(2,intCount)
strArrServiceStartupType = arrServices(3,intCount)
strArrServiceDescription = arrServices(4,intCount)
strArrNonlocalisedServiceStatus = arrServices(5,intCount)
strArrNonlocalisedServiceStartupType = arrServices(6,intCount)
' Verify that the current user part of the current page
Call OTS_AddTableRow( tableServices, Array(strArrServiceName, strArrServiceDisplayName, strArrServiceStatus, strArrServiceStartupType, strArrServiceDescription,strArrNonlocalisedServiceStatus,strArrNonlocalisedServiceStartupType) )
Next
' Enable sorting
Call OTS_SortTable(tableServices, g_iSortCol, g_sSortSequence, SA_RESERVED)
'
' Send table to the response stream
Call OTS_ServeTable(tableServices)
'
' Code for dynamically enabling tasks
Call OTS_GetTableRows(tableServices, rows)
Call OTS_GetTableTasks(tableServices, tasks)
Call ServeCustomTaskFunctions(tasks, rows)
'Release the objects
Set objManagedServices = Nothing
Set objWMIService = Nothing
Set objServiceSet = Nothing
GetServices = TRUE
End Function
'-------------------------------------------------------------------------
' Function name: IsSameElementID
' Description: Compares 2 service names and returns true if they are
' same else false
' Input Variables: sElementID1 - System Service
' sElementID2 - Manged service
' Output Variables: None
' Return Values: True if equals else false
' Global Variables: None
'-------------------------------------------------------------------------
Function IsSameElementID(ByVal sElementID1, ByVal sElementID2)
Err.Clear
on error resume next
Dim s1, s2
s1 = LCase(Trim(sElementID1))
s2 = LCase(Trim(sElementID2))
IsSameElementID = CBool(s1 = s2)
End Function
'---------------------------------------------------------------------
' Function: ServeCustomTaskFunctions()
' Description: Dynamically enable OTS tasks (Enable and Disable Tasks)
' Input Variables: aTasks - Array of tasks added to the OTS table
' aItems - Array of items added to the OTS table
' Output Variables: aTasks - Array of tasks added to the OTS table
' aItems - Array of items added to the OTS table
' Returns: None
'---------------------------------------------------------------------
Private Function ServeCustomTaskFunctions(ByRef aTasks, ByRef aItems)
Call SA_TraceOut(SOURCE_FILE, "ServeCustomTaskFunctions")
%>
<script language='javascript'>
// Global variable declaration
var EnableServiceTaskEnabled = false;
var DisableServiceTaskEnabled = false;
var PropertiesTaskEnabled = false;
// Constants for dynamic tasks
var JS_CONST_strRunning = "RUNNING";
var JS_CONST_strAutomatic = "AUTO";
var JS_CONST_strStopped = "STOPPED";
var JS_CONST_strDisabled = "DISABLED";
var JS_CONST_StopPending = "STOP PENDING";
var JS_CONST_StartPending = "START PENDING";
//---------------------------------------------------------------------
// Function: ServiceObject
// Description: Pseudo object constructor to create a Service object.
// Input Variables: Service Status - string indicating the status of the service
// Output Variables: None
// Returns: Reference to ServiceObject
//---------------------------------------------------------------------
function ServiceObject(ServiceStatus)
{
this.ServiceStatus = ServiceStatus;
}
<%
Dim iX
Dim aItem
Dim sServStatus
Dim sServStartup
Dim sServiceName
Dim ServiceArr
Response.Write(""+vbCrLf)
Response.Write("//"+vbCrLf)
Response.Write("// Create ServiceStatus array, one element for every row in the OTS Table."+vbCrLf)
Response.Write("// Create ServiceStartUp array, one element for every row in the OTS Table."+vbCrLf)
Response.Write("//"+vbCrLf)
Response.Write("var oServiceStatus = new Array();"+vbCrLf)
Response.Write("var oServiceStartUp = new Array();"+vbCrLf)
Response.Write("var oServiceName = new Array();"+vbCrLf)
For iX = 0 to (UBound(aItems)-1)
aItem = aItems(iX)
If ( IsArray(aItem)) Then
sServStatus = aItem(5)
sServStartup = aItem(6)
sServiceName = aItem(0)
ServiceArr = split(sServiceName, "~")
sServiceName = ServiceArr(1)
Response.Write("oServiceStatus["+CStr(iX)+"] = new ServiceObject('"+sServStatus+"');"+vbCrLf)
Response.Write("oServiceStartUp["+CStr(iX)+"] = new ServiceObject('"+sServStartup+"');"+vbCrLf)
Response.Write("oServiceName["+CStr(iX)+"] = new ServiceObject('"+sServiceName+"');"+vbCrLf)
Else
Call SA_TraceOut(SA_GetScriptFileName(), "Error: aItem is not an array")
End If
Next
%>
//---------------------------------------------------------------------
// Function: EnableServiceTask()
// Description: Disables the Enable task if any service has status
// as running and startup type as Automatic
// Input Variables: sMessage
// iTaskNo - number of task
// iItemNo - index number of item that has been selected
// Output Variables: None
// Returns: True to continue processing, False to stop.
//---------------------------------------------------------------------
function EnableServiceTask(sMessage, iTaskNo, iItemNo)
{
var bRc = true;
try
{
if ( sMessage.toLowerCase() == OTS_MESSAGE_BEGIN )
{
EnableServiceTaskEnabled = true;
}
else if ( sMessage.toLowerCase() == OTS_MESSAGE_ITEM )
{
var ServStatusObject = oServiceStatus[iItemNo];
var ServStartUpObject = oServiceStartUp[iItemNo];
var ServStatus1 = ServStatusObject.ServiceStatus;
var ServStatus2 = ServStartUpObject.ServiceStatus;
if ( ((ServStatus1.toUpperCase() == JS_CONST_strRunning) && (ServStatus2.toUpperCase() == JS_CONST_strAutomatic))
|| (ServStatus1.toUpperCase() == JS_CONST_StopPending) || (ServStatus1.toUpperCase() == JS_CONST_StartPending))
{
EnableServiceTaskEnabled = false;
}
}
else if ( sMessage.toLowerCase() == OTS_MESSAGE_END )
{
if ( EnableServiceTaskEnabled == true )
{
OTS_SetTaskEnabled(iTaskNo, true);
}
else
{
OTS_SetTaskEnabled(iTaskNo, false);
}
}
}
catch(oException)
{
if ( SA_IsDebugEnabled() )
{
alert("EnableServiceTask function encountered exception\n\nError: " + oException.number + "\nDescription:"+oException.description);
}
}
return bRc;
}
//---------------------------------------------------------------------
// Function: DisableServiceTask()
// Description: Disables the Disable task if any service has status as
// stopped and startup type as Disabled
// Input Variables: sMessage
// iTaskNo - number of task
// iItemNo - index number of item that has been selected
// Output Variables: None
// Returns: True to continue processing, False to stop.
//---------------------------------------------------------------------
function DisableServiceTask(sMessage, iTaskNo, iItemNo)
{
var bRc = true;
try
{
if ( sMessage.toLowerCase() == OTS_MESSAGE_BEGIN )
{
DisableServiceTaskEnabled = true;
}
else if ( sMessage.toLowerCase() == OTS_MESSAGE_ITEM )
{
var ServStatusObject = oServiceStatus[iItemNo];
var ServStartUpObject = oServiceStartUp[iItemNo];
var ServName = oServiceName[iItemNo];
var ServStatus1 = ServStatusObject.ServiceStatus;
var ServStatus2 = ServStartUpObject.ServiceStatus;
if ( ((ServStatus1.toUpperCase() == JS_CONST_strStopped) && (ServStatus2.toUpperCase() == JS_CONST_strDisabled)) || (ServName.ServiceStatus == "1" )
|| (ServStatus1.toUpperCase() == JS_CONST_StopPending) || (ServStatus1.toUpperCase() == JS_CONST_StartPending))
{
DisableServiceTaskEnabled = false;
}
}
else if ( sMessage.toLowerCase() == OTS_MESSAGE_END )
{
if ( DisableServiceTaskEnabled == true )
{
OTS_SetTaskEnabled(iTaskNo, true);
}
else
{
OTS_SetTaskEnabled(iTaskNo, false);
}
}
}
catch(oException)
{
if ( SA_IsDebugEnabled() )
{
alert("DisableServiceTask function encountered exception\n\nError: " + oException.number + "\nDescription:"+oException.description);
}
}
return bRc;
}
//---------------------------------------------------------------------
// Function: PropertiesTask()
// Description: Disables the Properties task if any service has status as
// stop pending or Start pending.
// Input Variables: sMessage
// iTaskNo - number of task
// iItemNo - index number of item that has been selected
// Output Variables: None
// Returns: True to continue processing, False to stop.
//---------------------------------------------------------------------
function PropertiesTask(sMessage, iTaskNo, iItemNo)
{
var bRc = true;
try
{
if ( sMessage.toLowerCase() == OTS_MESSAGE_BEGIN )
{
PropertiesTaskEnabled = true;
}
else if ( sMessage.toLowerCase() == OTS_MESSAGE_ITEM )
{
var ServStatusObject = oServiceStatus[iItemNo];
var ServStatus1 = ServStatusObject.ServiceStatus;
if ( (ServStatus1.toUpperCase() == JS_CONST_StopPending) || (ServStatus1.toUpperCase() == JS_CONST_StartPending))
{
PropertiesTaskEnabled = false;
}
}
else if ( sMessage.toLowerCase() == OTS_MESSAGE_END )
{
if ( PropertiesTaskEnabled == true )
{
OTS_SetTaskEnabled(iTaskNo, true);
}
else
{
OTS_SetTaskEnabled(iTaskNo, false);
}
}
}
catch(oException)
{
if ( SA_IsDebugEnabled() )
{
alert("PropertiesTask function encountered exception\n\nError: " + oException.number + "\nDescription:"+oException.description);
}
}
return bRc;
}
</script>
<%
End Function
'---------------------------------------------------------------------
' Function: ServiceTaskClick()
' Description: Called to enable or disable service is clicked
' Input Variables: None
' Output Variables: None
' Return Values: None
' Global Variables: In:None
'---------------------------------------------------------------------
Function ServiceTaskClick()
Dim strServiceRetval ' to hold site name
Dim retVal ' to hold the return value
Dim objService ' to hold the connection
Dim ServiceArr ' service name as array from pkey
objService = Request.QueryString("PKey")
'pkey consists of notdisable registry element value concatenated
ServiceArr = Split(objService, "~")
if IsArray(ServiceArr) and UBound(ServiceArr) > 0 then
objService = ServiceArr(0)
'Check whether to enable/disable service
strServiceRetval = Request.QueryString("service")
If strServiceRetval = "enable" then
retVal = EnableService(objService)
Elseif strServiceRetval = "disable" then
retVal = DisableService(objService)
End if
end if
End Function
'-------------------------------------------------------------------------
'Function name: EnableService
'Description: Start the service
'Input Variables: None
'Output Variables: None
'Returns: (True/False)
'Global Variables: In: F_strService 'Service Name
'--------------------------------------------------------------------------
Function EnableService(Service)
Err.Clear
On Error Resume Next
Dim objService 'services list
Dim strWMIPath 'wmi path
Dim objWMIService 'wmi object
Const CONST_STARTMODE = "Automatic"
EnableService=False
'wmi path
strWMIPath = "Win32_Service.Name=" & chr(34) & Service & chr(34)
'connecting to WMI
Set objWMIService = GetWMIConnection(CONST_WMI_WIN32_NAMESPACE)
set objService = objWMIService.get(strWMIPath)
objService.ChangeStartMode(CONST_STARTMODE)
objService.StartService()
If(Err.Number <> 0) Then
SA_SetErrMsg L_NOINSTANCE_ERRORMESSAGE
Exit Function
End If
EnableService = True
'Release the objects
Set objService = Nothing
Set objWMIService = Nothing
End Function
'-------------------------------------------------------------------------
'Function name: DisableService
'Description: Disable service
'Input Variables: None
'Output Variables: None
'Returns: (True/False)
'Global Variables: In: F_strServiceName 'Service Name
' In: L_*
'--------------------------------------------------------------------------
Function DisableService(Service)
Err.Clear
On Error Resume Next
Dim objService 'services list
Dim strWMIPath 'wmi path
Dim objWMIService 'wmi object
Const CONST_STARTMODE = "Disabled"
DisableService = False
'wmi path
strWMIPath = "Win32_Service.Name=" & chr(34) & Service & chr(34)
'connecting to WMI
Set objWMIService = GetWMIConnection(CONST_WMI_WIN32_NAMESPACE)
set objService = objWMIService.get(strWMIPath)
'making the service disable
objService.ChangeStartMode(CONST_STARTMODE)
objService.StopService()
If(Err.Number <> 0) Then
SA_SetErrMsg L_NOINSTANCE_ERRORMESSAGE
Exit Function
End If
'Release the objects
Set objService = Nothing
Set objWMIService = Nothing
DisableService = True
End Function
%>