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
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
|
|
|
|
%>
|