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.
358 lines
12 KiB
358 lines
12 KiB
<%@ Language=VBScript %>
|
|
<% Option Explicit %>
|
|
<%
|
|
'-------------------------------------------------------------------------
|
|
' RebootSys.asp :Page for Rebooting the system when Device Name or
|
|
' Domain or Workgroup Name or DNS Suffix has changed.
|
|
'
|
|
' Copyright (c) Microsoft Corporation. All rights reserved.
|
|
'
|
|
' Date Description
|
|
' 22/01/2001 Created Date
|
|
'-------------------------------------------------------------------------
|
|
%>
|
|
<!-- #include virtual="/admin/inc_framework.asp" -->
|
|
<!-- #include file="loc_deviceid.asp" -->
|
|
<%
|
|
|
|
'-------------------------------------------------------------------------
|
|
' Global Variables
|
|
'-------------------------------------------------------------------------
|
|
Dim rc
|
|
Dim page
|
|
|
|
CONST CONST_DELAYBEFORESHUTDOWN=17000
|
|
|
|
'======================================================
|
|
' Entry point
|
|
'======================================================
|
|
|
|
' Create a Property Page
|
|
rc = SA_CreatePage(L_TASKTITLE_REBOOT_TEXT, "", PT_PROPERTY, page )
|
|
|
|
If rc = SA_NO_ERROR Then
|
|
' Serve the page
|
|
SA_ShowPage( page )
|
|
End If
|
|
|
|
'======================================================
|
|
' Web Framework Event Handlers
|
|
'======================================================
|
|
|
|
'---------------------------------------------------------------------
|
|
'Function name: OnInitPage
|
|
'Description: Called to signal first time processing for this page.
|
|
' Used to do first time initialization tasks.
|
|
'Input Variables: PageIn, EventArg
|
|
'Output Variables: None
|
|
'Return Values: TRUE to indicate initialization was successful. FALSE to indicate
|
|
' errors. Returning FALSE will cause the page to be abandoned.
|
|
'Global Variables: In: None
|
|
' Out: None
|
|
'---------------------------------------------------------------------
|
|
Public Function OnInitPage(ByRef PageIn, ByRef EventArg)
|
|
OnInitPage = TRUE
|
|
End Function
|
|
|
|
'---------------------------------------------------------------------
|
|
'Function name: OnServePropertyPage
|
|
'Description: Called when the page needs to be served. Used to
|
|
' serve content.
|
|
'Input Variables: PageIn, EventArg
|
|
'Output Variables: None
|
|
'Return Values: TRUE to indicate success. FALSE to indicate
|
|
' errors. Returning FALSE will cause the page to be abandoned.
|
|
'Global Variables: In:None
|
|
'---------------------------------------------------------------------
|
|
Public Function OnServePropertyPage(ByRef PageIn, ByRef EventArg)
|
|
|
|
' Emit Javascript functions required by Web Framework
|
|
Call ServeCommonJavaScript()
|
|
%>
|
|
<table border="0" cellspacing="0" cellpadding="0" >
|
|
<tr>
|
|
<td class="TasksBody" ><%= L_RESTART_ALERT_TEXT %></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="TasksBody" ><%= L_RESTART_ALERT_CONTD_TEXT %></td>
|
|
</tr>
|
|
|
|
</table>
|
|
<%
|
|
OnServePropertyPage = TRUE
|
|
End Function
|
|
|
|
'---------------------------------------------------------------------
|
|
'Function name: OnSubmitPage
|
|
'Description: Called when the page has been submitted for processing. Use
|
|
' this method to process the submit request.
|
|
'Input Variables: PageIn, EventArg
|
|
'Output Variables: None
|
|
'Return Values: TRUE if the submit was successful, FALSE to indicate error(s).
|
|
' Returning FALSE will cause the page to be served again using
|
|
' a call to OnServePropertyPage.
|
|
'Global Variables: In: None
|
|
' Out: None
|
|
'---------------------------------------------------------------------
|
|
Public Function OnSubmitPage(ByRef PageIn, ByRef EventArg)
|
|
|
|
OnSubmitPage = RebootComputer()
|
|
|
|
End Function
|
|
|
|
'---------------------------------------------------------------------
|
|
'Function name: OnClosePage
|
|
'Description: Called when the page is about to be closed.
|
|
' Used to perform clean-up processing.
|
|
'Input Variables: PageIn, EventArg
|
|
'Output Variables: None
|
|
'Return Values: TRUE to allow close, FALSE to prevent close. Returning FALSE
|
|
' will result in a call to OnServePropertyPage.
|
|
'Global Variables: In: None
|
|
' Out: None
|
|
'---------------------------------------------------------------------
|
|
Public Function OnClosePage(ByRef PageIn, ByRef EventArg)
|
|
|
|
OnClosePage = TRUE
|
|
|
|
End Function
|
|
|
|
'---------------------------------------------------------------------
|
|
'Function: OnPostBackPage
|
|
'Description: Called to signal that the page has been posted-back.
|
|
'Input Variables: PageIn,EventArg
|
|
'Output Variables: None
|
|
'Returns: True/False
|
|
'Global Variables: None
|
|
'---------------------------------------------------------------------
|
|
Public Function OnPostBackPage(ByRef PageIn, ByRef EventArg)
|
|
OnPostBackPage = TRUE
|
|
End Function
|
|
|
|
'======================================================
|
|
' Private Functions
|
|
'======================================================
|
|
|
|
'---------------------------------------------------------------------
|
|
'Function name: ServeCommonJavaScript
|
|
'Description: Serve common javascript that is required for this page type.
|
|
'Input Variables: None
|
|
'Output Variables: None
|
|
'Return Values: TRUE / FALSE
|
|
'Global Variables: In:None
|
|
' Out:None
|
|
'---------------------------------------------------------------------
|
|
Function ServeCommonJavaScript()
|
|
%>
|
|
<script language="JavaScript" src="<%=m_VirtualRoot%>inc_global.js">
|
|
</script>
|
|
<script language="JavaScript">
|
|
//
|
|
// Microsoft Server Appliance Web Framework Support Functions
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// Init Function
|
|
// -----------
|
|
// This function is called by the Web Framework to allow the page
|
|
// to perform first time initialization.
|
|
//
|
|
// This function must be included or a javascript runtime error will occur.
|
|
//
|
|
function Init()
|
|
{
|
|
// no initializations required presently
|
|
}
|
|
|
|
// ValidatePage Function
|
|
// ------------------
|
|
// This function is called by the Web Framework as part of the
|
|
// submit processing. Used to validate user input. Returning
|
|
// false will cause the submit to abort.
|
|
//
|
|
// This function must be included or a javascript runtime error will occur.
|
|
//
|
|
// Returns: True if the page is OK, false if error(s) exist.
|
|
function ValidatePage()
|
|
{
|
|
// no validations required presently. return true to submit.
|
|
return true;
|
|
}
|
|
|
|
|
|
// SetData Function
|
|
// --------------
|
|
// This function is called by the Web Framework and is called
|
|
// only if ValidatePage returned a success (true) code. Typically
|
|
// hidden form fields are modified at this point.
|
|
//
|
|
// This function must be included or a javascript runtime error will occur.
|
|
//
|
|
function SetData()
|
|
{
|
|
// no data to be set presently
|
|
}
|
|
</script>
|
|
<%
|
|
End Function
|
|
|
|
'---------------------------------------------------------------------
|
|
'Function name : RebootComputer
|
|
'Description : Reboots the computer
|
|
'Input Variables : None
|
|
'Output Variables : None
|
|
'Return Values : Returns True/False
|
|
'Global Variables: In:None
|
|
' Out:None
|
|
'---------------------------------------------------------------------
|
|
Function RebootComputer()
|
|
On Error Resume Next
|
|
Err.Clear
|
|
|
|
Dim objSAHelper
|
|
Dim bModifiedPrivilege
|
|
Const CONST_SHUTDOWNPRIVILEGE = "SeShutdownPrivilege"
|
|
bModifiedPrivilege = FALSE
|
|
|
|
'Create SAHelper object
|
|
Set objSAHelper = Server.CreateObject("ServerAppliance.SAHelper")
|
|
if err.number <> 0 Then
|
|
SA_TraceOut "Create object failed for SAHelper object", err.description
|
|
else
|
|
'enable shutdown privilege
|
|
bModifiedPrivilege = objSAHelper.SAModifyUserPrivilege(CONST_SHUTDOWNPRIVILEGE, TRUE)
|
|
if err.number <> 0 Then
|
|
SA_TraceOut "Enable privilege failed", err.description
|
|
exit function
|
|
end if
|
|
end if
|
|
|
|
RebootComputer = FALSE ' initialize to false
|
|
|
|
' Restart requested
|
|
' Invoke shutdown task
|
|
If ( ExecuteShutdownTask("0") ) Then
|
|
|
|
' Serve the restaring page which will wait for the appliance to restart
|
|
Call SA_ServeRestartingPage("Restart", SA_DEFAULT, SA_DEFAULT, SA_DEFAULT, SA_DEFAULT, SA_DEFAULT)
|
|
RebootComputer = TRUE
|
|
End If
|
|
|
|
if ( bModifiedPrivilege ) then
|
|
'revert back to disabled state
|
|
bModifiedPrivilege = objSAHelper.SAModifyUserPrivilege(CONST_SHUTDOWNPRIVILEGE, FALSE)
|
|
if err.number <> 0 Then
|
|
SA_TraceOut "Disable privilege failed", err.description
|
|
exit function
|
|
end if
|
|
end if
|
|
set objSAHelper = Nothing
|
|
|
|
End Function
|
|
|
|
'----------------------------------------------------------------------------
|
|
' Function : ExecuteShutdownTask
|
|
' Description: Executes the Shutdown task
|
|
' Input Variables: powerOff - bool indicating power off or restart
|
|
' OutputVariables: None
|
|
' Returns: True/False for success/failure
|
|
'
|
|
'----------------------------------------------------------------------------
|
|
Public Function ExecuteShutdownTask(ByVal powerOff )
|
|
Err.Clear
|
|
On Error Resume Next
|
|
|
|
Dim delayBeforeShutdown
|
|
Dim objTaskContext ' to hold taskcontext object
|
|
Dim objAS ' to hold ApplianceServices object
|
|
|
|
Const CONST_METHODNAME = "ShutdownAppliance"
|
|
|
|
'Function call to get the delay
|
|
delayBeforeShutdown = GetShutdownDelay()
|
|
|
|
'Initialize to default
|
|
ExecuteShutdownTask = FALSE
|
|
|
|
Set objTaskContext = CreateObject("Taskctx.TaskContext")
|
|
|
|
If Err.Number <> 0 Then
|
|
SA_SetErrMsg L_TASKCTX_FAILED_ERRORMESSAGE & "(" & Hex(Err.Number) & ")"
|
|
Exit Function
|
|
End If
|
|
|
|
Set objAS = CreateObject("Appsrvcs.ApplianceServices")
|
|
If Err.Number <> 0 Then
|
|
SA_SetErrMsg L_CREATEAPPLIANCE_FAILED_ERRORMESSAGE & "(" & Hex(Err.Number) & ")"
|
|
Exit Function
|
|
End If
|
|
'
|
|
' Set task parameters
|
|
'
|
|
objTaskContext.SetParameter "Method Name", CONST_METHODNAME
|
|
objTaskContext.SetParameter "SleepDuration", delayBeforeShutdown
|
|
objTaskContext.SetParameter "PowerOff", powerOff
|
|
|
|
If Err.Number <> 0 Then
|
|
SA_SetErrMsg L_SETPARAMETER_FAILED_ERRORMESSAGE & "(" & Hex(Err.Number) & ")"
|
|
Exit Function
|
|
End If
|
|
|
|
' Initialize the task
|
|
objAS.Initialize()
|
|
If Err.Number <> 0 Then
|
|
SA_SetErrMsg L_INITIALIZATION_FAILED_ERRORMESSAGE & "(" & Hex(Err.Number) & ")"
|
|
Exit Function
|
|
End If
|
|
|
|
Call objAS.ExecuteTaskAsync("ApplianceShutdownTask", objTaskContext)
|
|
If Err.Number <> 0 Then
|
|
SA_SetErrMsg L_EXECUTETASK_FAILED_ERRORMESSAGE & "(" & Hex(Err.Number) & ")"
|
|
Exit Function
|
|
End If
|
|
|
|
'Release the objects
|
|
Set objAS = Nothing
|
|
Set objTaskContext = Nothing
|
|
|
|
ExecuteShutdownTask = TRUE
|
|
End Function
|
|
|
|
'----------------------------------------------------------------------------
|
|
' Function : GetShutdownDelay
|
|
' Description : support function for getting the no of seconds
|
|
' Input Variables : None
|
|
' OutputVariables : None
|
|
' Returns : int-delay in seconds
|
|
' Global Variables : In:CONST_DELAYBEFORESHUTDOWN
|
|
'----------------------------------------------------------------------------
|
|
Private Function GetShutdownDelay()
|
|
On error resume Next
|
|
|
|
Dim objRegistry
|
|
Dim nShutdownDelay
|
|
|
|
|
|
Set objRegistry = RegConnection()
|
|
|
|
'Function call to get the required value from the registry
|
|
nShutdownDelay = GetRegkeyValue( objRegistry, _
|
|
"SOFTWARE\Microsoft\ServerAppliance\WebFramework",_
|
|
"RestartTaskDelay", CONST_DWORD)
|
|
'Cheking for non numeric
|
|
If ( not IsNumeric(nShutdownDelay)) Then
|
|
nShutdownDelay = CONST_DELAYBEFORESHUTDOWN 'Assign to default
|
|
ElseIf nShutdownDelay=0 or nShutdownDelay < CONST_DELAYBEFORESHUTDOWN then
|
|
nShutdownDelay = CONST_DELAYBEFORESHUTDOWN 'Assign to default
|
|
End If
|
|
|
|
'Set to nothing
|
|
Set objRegistry = Nothing
|
|
|
|
GetShutdownDelay=nShutdownDelay
|
|
|
|
If Err.Number <> 0 Then
|
|
Call SA_TraceOut(SA_GetScriptFileName , "error in getting delay")
|
|
End If
|
|
|
|
End Function
|
|
%>
|