<HTML> <!-- Copyright (c) Microsoft Corporation. All rights reserved.--> <HEAD> <TITLE>Reboot Page</TITLE> <SCRIPT LANGUAGE="VBScript"> <!-- Option Explicit 'Windows constants for key codes Public Const EnterKey = 13 Public Const EscapeKey = 27 'Timer for idle timeout Dim iIdleTimeOut 'Password reset error text Dim strRebootErrorText 'Confirmation text for resetting password Dim strConfirmRebootText 'Shutdown text Dim strShutdownText 'Flag for status of the page Dim bRebootingMachine 'Flag for errors Dim bInErrorMode '---------------------------------------------------------------------------- ' Function: Window_OnLoad ' Description: Initialization routine for the page ' Input Variables: None ' Output Variables: None ' Return Values: None ' Global Variables: strResetErrorText,strConfirmResetText,bGettingAutoIp '---------------------------------------------------------------------------- Sub Window_OnLoad() 'Localization manager object Dim objLocMgr 'Replacement strings Dim varReplacementStrings 'Resource ID for confirmation for reboot Const CONFIRM_REBOOT_TEXT = "&H4002000D" 'Resource ID for reboot error text Const REBOOT_ERROR_TEXT = "&H4002000E" 'Resource ID for shutting down text Const SHUTTINGDOWN_TEXT = "&H40020011" On Error Resume Next Err.Clear bRebootingMachine = false bInErrorMode = false 'Create the localization manager Set objLocMgr = CreateObject("ServerAppliance.LocalizationManager") If Err.number = 0 Then 'Get the strings strRebootErrorText = objLocMgr.GetString("salocaluimsg.dll",REBOOT_ERROR_TEXT,varReplacementStrings) strConfirmRebootText = objLocMgr.GetString("salocaluimsg.dll",CONFIRM_REBOOT_TEXT,varReplacementStrings) strShutdownText = objLocMgr.GetString("salocaluimsg.dll",SHUTTINGDOWN_TEXT,varReplacementStrings) Set objLocMgr = Nothing End If Err.Clear InformationText.innerText = strConfirmRebootText SaShutdownText.innerText = strShutdownText ServeLocalUILogo 'start the timer for idle timeout iIdleTimeOut = window.SetTimeOut("IdleHandler()",300000) On Error Resume Next Err.Clear 'set the key codes for the page Dim objKeypad Set objKeypad = CreateObject("Ldm.SAKeypadController") If Err.number = 0 Then objKeypad.Setkey 0,0,TRUE objKeypad.Setkey 1,0,FALSE objKeypad.Setkey 2,0,FALSE objKeypad.Setkey 3,0,FALSE objKeypad.Setkey 4,EscapeKey,FALSE objKeypad.Setkey 5,EnterKey,FALSE Set objKeypad = Nothing End If End Sub '---------------------------------------------------------------------------- ' Function: ServerLocalUILogo ' Description: Gets the name of the logo file from elementmgr ' Input Variables: None ' Output Variables: None ' Return Values: None ' Global Variables: salogo '---------------------------------------------------------------------------- Sub ServerLocalUILogo() Dim objLogoElementCol Dim objLogoElement Dim objRetriever Dim strLogoFileName Dim iSmallestMerit Dim iCurrentMerit On Error Resume Next 'Merit for our localui logo iSmallestMerit = 300 strLogoFileName = "" 'Create elementmgr and get resource elements Set objRetriever = CreateObject("Elementmgr.ElementRetriever") If Err.Number = 0 Then Set objLogoElementCol = objRetriever.GetElements(1, "OemLocalUILogo") If Err.Number = 0 Then 'count the icon and text resources For Each objLogoElement in objLogoElementCol iCurrentMerit = CInt(objLogoElement.GetProperty("Merit")) If iCurrentMerit <= iSmallestMerit Then iSmallestMerit = iCurrentMerit strLogoFileName = objLogoElement.GetProperty("ElementGraphic") End If Next End If End If Err.Clear 'Set the logo file If strLogoFileName <> "" Then SaLogo.src = strLogoFileName End If Set objRetriever = Nothing Set objLogoElement = Nothing Set objLogoElementCol = Nothing End Sub '---------------------------------------------------------------------------- ' Function: IdleHandler ' Description: Goes back to main page when timeout expires ' Input Variables: None ' Output Variables: None ' Return Values: None ' Global Variables: None '---------------------------------------------------------------------------- Sub IdleHandler() window.history.go(-2) End Sub '---------------------------------------------------------------------------- ' Function: KeyDown ' Description: Handles key presses ' Input Variables: None ' Output Variables: None ' Return Values: None ' Global Variables: None '---------------------------------------------------------------------------- Sub KeyDown() 'clear the timeout and restart it window.clearTimeOut(iIdleTimeOut) iIdleTimeOut = window.SetTimeOut("IdleHandler()",300000) 'if we are rebooting, ignore all of the keys If bRebootingMachine = false Then If bInErrorMode = true Then 'If we are in error mode, go back to tasks page If window.event.keycode = EscapeKey or window.event.keycode = EnterKey Then window.history.go(-1) End If Else 'user wants to reboot the machine If window.event.keycode = EnterKey Then bRebootingMachine = true RebootTheMachine 'user wants to cancel the operation ElseIf window.event.keycode = EscapeKey Then window.history.go(-1) End If End If End If End Sub '---------------------------------------------------------------------------- ' Function: RebootTheMachine ' Description: Reboots the machine ' Input Variables: None ' Output Variables: None ' Return Values: None ' Global Variables: None '---------------------------------------------------------------------------- Sub RebootTheMachine 'TaskContext component Dim objTaskContext 'ApplianceServices component Dim objAS 'result of the execution Dim rc 'SAHelper component Dim objSAHelper 'result of privilege operation Dim bModifiedPrivilege 'privilege to modify Const CONST_SHUTDOWNPRIVILEGE = "SeShutdownPrivilege" bModifiedPrivilege = FALSE 'shutdown method name Const strMethodName = "ShutdownAppliance" 'hide the confirmation text and display the shutdown page InformationText.style.display = "none" SaLogo.style.display = "" SaShutdownText.style.display = "" SaDownArrow.style.display = "" On Error Resume Next Err.Clear 'Create SAHelper object Set objSAHelper = CreateObject("ServerAppliance.SAHelper") If err.number = 0 Then bModifiedPrivilege = objSAHelper.SAModifyUserPrivilege(CONST_SHUTDOWNPRIVILEGE, TRUE) End If bInErrorMode = true Set objTaskContext = CreateObject("Taskctx.TaskContext") If Err.Number = 0 Then Set objAS = CreateObject("Appsrvcs.ApplianceServices") If Err.Number = 0 Then 'set the parameters objTaskContext.SetParameter "Method Name", strMethodName objTaskContext.SetParameter "SleepDuration", 2000 objTaskContext.SetParameter "PowerOff", "0" If Err.Number = 0 Then 'initialize the component objAS.Initialize() If Err.Number = 0 Then bInErrorMode = false 'execute the task rc = objAS.ExecuteTaskAsync("ApplianceShutdownTask", objTaskContext) End If End If Set objAS = Nothing End If Set objTaskContext = Nothing End If 'revert back the privilege If (bModifiedPrivilege) Then bModifiedPrivilege = objSAHelper.SAModifyUserPrivilege(CONST_SHUTDOWNPRIVILEGE, FALSE) End If Set objSAHelper = Nothing If bInErrorMode = true Then bRebootingMachine = false InformationText.innerText = strRebootErrorText 'display error text InformationText.style.display = "" 'hide the shutdown page SaLogo.style.display = "none" SaShutdownText.style.display = "none" SaDownArrow.style.display = "none" End If End Sub --> </SCRIPT> </HEAD> <BODY RIGHTMARGIN=0 LEFTMARGIN=0 OnKeydown="KeyDown"> <IMG ID="SaLogo" STYLE="position:absolute; top:0; left=0; display:none" SRC="localui_salogo.bmp" BORDER=0> <A ID="InformationText" OnKeydown="KeyDown" STYLE="position:absolute; top:0; left:0; font-size:10; font-family=arial;" > </A> <A ID="SaShutdownText" STYLE="position:absolute; top:36; left:0; font-size:10; font-family=arial; display:none"> </A> <IMG ID="SaDownArrow" STYLE="position:absolute; top:48; left=0; display:none" SRC="localui_shutting_down.bmp" BORDER=0> </BODY> </HTML>