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.
564 lines
38 KiB
564 lines
38 KiB
<HTML>
|
|
<!-- Copyright (c) Microsoft Corporation. All rights reserved.-->
|
|
<HEAD>
|
|
|
|
<TITLE>Hostname Setting Page</TITLE>
|
|
|
|
<SCRIPT LANGUAGE="VBScript">
|
|
<!--
|
|
Option Explicit
|
|
|
|
'Windows constants for key codes
|
|
Public Const RightArrow = 39
|
|
Public Const LeftArrow = 37
|
|
Public Const EnterKey = 13
|
|
Public Const EscapeKey = 27
|
|
Public Const UpArrow = 38
|
|
Public Const DownArrow = 40
|
|
|
|
|
|
'Timer for idle timeout
|
|
Dim iIdleTimeOut
|
|
|
|
'Flag for errors
|
|
Dim bInErrorMode
|
|
|
|
'Reboot confirmation mode
|
|
Dim bInConfirmationMode
|
|
|
|
'Domain error text
|
|
Dim strDomainErrorText
|
|
|
|
'Unknown error text
|
|
Dim strUnknownErrorText
|
|
|
|
'Reboot confirmation text
|
|
Dim strRebootConfirmationText
|
|
|
|
'Duplicate machine name error text
|
|
Dim strDuplicateErrorText
|
|
|
|
'Password reset error text
|
|
Dim strRebootErrorText
|
|
|
|
'Confirmation text for resetting password
|
|
Dim strConfirmRebootText
|
|
|
|
'Shutdown text
|
|
Dim strShutdownText
|
|
|
|
'Header for computer name
|
|
Dim strComputerNameHeader
|
|
|
|
'Is machine part of domain
|
|
Dim bPartOfDomain
|
|
|
|
'Is the name entered duplicate
|
|
Dim bInDuplicateMode
|
|
|
|
'Flag for status of the page
|
|
Dim bRebootingMachine
|
|
|
|
'----------------------------------------------------------------------------
|
|
' Function: Window_OnLoad
|
|
' Description: Initialization routine for the page
|
|
' Input Variables: None
|
|
' Output Variables: None
|
|
' Return Values: None
|
|
' Global Variables: iIdleTimeOut,strWaitText,bInErrorMode,strIpAddressInvalidText
|
|
'----------------------------------------------------------------------------
|
|
|
|
Sub Window_OnLoad()
|
|
|
|
'Localization manager object
|
|
Dim objLocMgr
|
|
|
|
'Replacement strings
|
|
Dim varReplacementStrings
|
|
|
|
'SaHelper component object
|
|
Dim objSaHelper
|
|
|
|
'Current hostname
|
|
Dim strHostname
|
|
|
|
'Resource ID for unknown error text
|
|
Const UNKNOWN_ERROR_TEXT = "&H40020004"
|
|
|
|
'Resource ID for reboot error text
|
|
Const REBOOT_CONFIRMATION_TEXT = "&H40020003"
|
|
|
|
'Resource ID for domain error text
|
|
Const DOMAIN_ERROR_TEXT = "&H40020001"
|
|
|
|
'Resource ID for duplicate machine name error text
|
|
Const DUPLICATE_ERROR_TEXT = "&H40020002"
|
|
|
|
'Resource ID for reboot error text
|
|
Const REBOOT_ERROR_TEXT = "&H4002000E"
|
|
|
|
'Resource ID for shutting down text
|
|
Const SHUTTINGDOWN_TEXT = "&H40020011"
|
|
|
|
'Resource ID for computer name header
|
|
Const COMPNAMEHEADER_TEXT = "&H40020014"
|
|
|
|
On Error Resume Next
|
|
Err.Clear
|
|
|
|
|
|
bInErrorMode = false
|
|
bInConfirmationMode = false
|
|
bInDuplicateMode = false
|
|
bRebootingMachine = false
|
|
|
|
'Set the max size for computer name
|
|
HostNameEntry.MaxSize = 16
|
|
'Set the char set
|
|
HostNameEntry.TextCharSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 "
|
|
|
|
Err.Clear
|
|
|
|
'Create the localization manager
|
|
Set objLocMgr = CreateObject("ServerAppliance.LocalizationManager")
|
|
|
|
If Err.number = 0 Then
|
|
'Get the strings
|
|
strUnknownErrorText = objLocMgr.GetString("salocaluimsg.dll",UNKNOWN_ERROR_TEXT,varReplacementStrings)
|
|
strRebootConfirmationText = objLocMgr.GetString("salocaluimsg.dll",REBOOT_CONFIRMATION_TEXT,varReplacementStrings)
|
|
strDomainErrorText = objLocMgr.GetString("salocaluimsg.dll",DOMAIN_ERROR_TEXT,varReplacementStrings)
|
|
strDuplicateErrorText = objLocMgr.GetString("salocaluimsg.dll",DUPLICATE_ERROR_TEXT,varReplacementStrings)
|
|
strRebootErrorText = objLocMgr.GetString("salocaluimsg.dll",REBOOT_ERROR_TEXT,varReplacementStrings)
|
|
strShutdownText = objLocMgr.GetString("salocaluimsg.dll",SHUTTINGDOWN_TEXT,varReplacementStrings)
|
|
strComputerNameHeader = objLocMgr.GetString("salocaluimsg.dll",COMPNAMEHEADER_TEXT,varReplacementStrings)
|
|
Set objLocMgr = Nothing
|
|
End If
|
|
|
|
Err.Clear
|
|
|
|
'get the current configuration
|
|
Set objSaHelper = CreateObject("ServerAppliance.SAHelper")
|
|
If Err.number = 0 Then
|
|
|
|
bPartOfDomain = objSaHelper.IsPartOfDomain
|
|
If Err.number <> 0 Then
|
|
InformationText.innerText = strUnknownErrorText
|
|
InformationText.style.display = ""
|
|
bInErrorMode = true
|
|
ElseIf bPartOfDomain = true Then
|
|
InformationText.innerText = strDomainErrorText
|
|
InformationText.style.display = ""
|
|
Else
|
|
Err.Clear
|
|
strHostname = objSaHelper.HostName
|
|
If Err.number = 0 Then
|
|
HostNameEntry.TextValue = strHostname
|
|
HostNameEntry.style.display = ""
|
|
HeaderText.innerText = strComputerNameHeader
|
|
HeaderText.style.display = ""
|
|
HostNameEntry.focus
|
|
Else
|
|
InformationText.innerText = strUnknownErrorText
|
|
InformationText.style.display = ""
|
|
bInErrorMode = true
|
|
End If
|
|
|
|
End If
|
|
|
|
Set objSaHelper = Nothing
|
|
Else
|
|
InformationText.innerText = strUnknownErrorText
|
|
InformationText.style.display = ""
|
|
bInErrorMode = true
|
|
End If
|
|
|
|
'set the information to display during reboot
|
|
ServeLocalUILogo
|
|
SaShutdownText.innerText = strShutdownText
|
|
|
|
'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,UpArrow,TRUE
|
|
objKeypad.Setkey 1,DownArrow,FALSE
|
|
objKeypad.Setkey 2,LeftArrow,FALSE
|
|
objKeypad.Setkey 3,RightArrow,FALSE
|
|
objKeypad.Setkey 4,EscapeKey,FALSE
|
|
objKeypad.Setkey 5,EnterKey,FALSE
|
|
|
|
Set objKeypad = Nothing
|
|
End If
|
|
|
|
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: 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: HostNameEntry_OperationCanceled
|
|
' Description: Handles escape key press for hostname entry control
|
|
' Goes back to tasks page
|
|
' Input Variables: None
|
|
' Output Variables: None
|
|
' Return Values: None
|
|
' Global Variables: None
|
|
'----------------------------------------------------------------------------
|
|
Sub HostNameEntry_OperationCanceled()
|
|
|
|
If bInDuplicateMode = true Then
|
|
bInDuplicateMode = false
|
|
Exit Sub
|
|
End If
|
|
|
|
window.history.go(-1)
|
|
|
|
End Sub
|
|
|
|
'----------------------------------------------------------------------------
|
|
' Function: HostNameEntry_KeyPressed
|
|
' Description: Handles any key press for hostname entry control
|
|
' Resets the idle timeout timer
|
|
' Input Variables: None
|
|
' Output Variables: None
|
|
' Return Values: None
|
|
' Global Variables: None
|
|
'----------------------------------------------------------------------------
|
|
Sub HostNameEntry_KeyPressed()
|
|
|
|
window.clearTimeOut(iIdleTimeOut)
|
|
iIdleTimeOut = window.SetTimeOut("IdleHandler()",300000)
|
|
|
|
End Sub
|
|
|
|
'----------------------------------------------------------------------------
|
|
' Function: HostNameEntry_DataEntered
|
|
' Description: Handles enter key press for hostname entry control
|
|
' Displays confirmation for reboot
|
|
' Input Variables: None
|
|
' Output Variables: None
|
|
' Return Values: None
|
|
' Global Variables: None
|
|
'----------------------------------------------------------------------------
|
|
Sub HostNameEntry_DataEntered()
|
|
|
|
'SaHelper component object
|
|
Dim objSaHelper
|
|
|
|
If bInDuplicateMode = true Then
|
|
bInDuplicateMode = false
|
|
Exit Sub
|
|
End If
|
|
|
|
On Error Resume Next
|
|
Err.Clear
|
|
|
|
|
|
'Hide the data entry control
|
|
HostNameEntry.style.display ="none"
|
|
HeaderText.style.display ="none"
|
|
|
|
Set objSaHelper = CreateObject("ServerAppliance.SAHelper")
|
|
|
|
If Err.number = 0 Then
|
|
|
|
bInDuplicateMode = objSaHelper.IsDuplicateMachineName(HostNameEntry.TextValue)
|
|
If Err.number <> 0 Then
|
|
InformationText.innerText = strUnknownErrorText
|
|
InformationText.style.display = ""
|
|
bInErrorMode = true
|
|
ElseIf bInDuplicateMode = true Then
|
|
InformationText.innerText = strDuplicateErrorText
|
|
InformationText.style.display = ""
|
|
Else
|
|
'Display the confirmation text
|
|
|
|
InformationText.innerText = strRebootConfirmationText
|
|
InformationText.style.display = ""
|
|
InformationText.focus
|
|
bInConfirmationMode = true
|
|
End If
|
|
Set objSaHelper = Nothing
|
|
|
|
Else
|
|
InformationText.innerText = strUnknownErrorText
|
|
InformationText.style.display = ""
|
|
bInErrorMode = true
|
|
End If
|
|
|
|
End Sub
|
|
|
|
'----------------------------------------------------------------------------
|
|
' Function: KeyDown
|
|
' Description: Handles key presses
|
|
' Input Variables: None
|
|
' Output Variables: None
|
|
' Return Values: None
|
|
' Global Variables: None
|
|
'----------------------------------------------------------------------------
|
|
Sub KeyDown()
|
|
|
|
'SaHelper component object
|
|
Dim objSaHelper
|
|
On Error Resume Next
|
|
Err.Clear
|
|
|
|
'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 we are in error mode go to tasks page
|
|
If bInErrorMode = true or bPartOfDomain = true Then
|
|
|
|
If window.event.keycode = EscapeKey or window.event.keycode = EnterKey Then
|
|
window.history.go(-1)
|
|
End If
|
|
End If
|
|
'If the name entered is duplicate, display the data entry component
|
|
If bInDuplicateMode = true Then
|
|
If window.event.keycode = EscapeKey or window.event.keycode = EnterKey Then
|
|
InformationText.style.display = "none"
|
|
HostNameEntry.style.display =""
|
|
HeaderText.style.display =""
|
|
HostNameEntry.focus
|
|
End If
|
|
End If
|
|
|
|
If bInConfirmationMode = true Then
|
|
'User canceled go back to hostname data control
|
|
If window.event.keycode = EscapeKey Then
|
|
window.history.go(-1)
|
|
End If
|
|
|
|
If window.event.keycode = EnterKey Then
|
|
Set objSaHelper = CreateObject("ServerAppliance.SAHelper")
|
|
|
|
If Err.number = 0 Then
|
|
|
|
objSaHelper.HostName = HostNameEntry.TextValue
|
|
If Err.number <> 0 Then
|
|
bInConfirmationMode = false
|
|
InformationText.innerText = strUnknownErrorText
|
|
bInErrorMode = true
|
|
Else
|
|
bInConfirmationMode = false
|
|
bRebootingMachine = true
|
|
RebootTheMachine
|
|
End If
|
|
Set objSaHelper = Nothing
|
|
|
|
Else
|
|
bInConfirmationMode = false
|
|
InformationText.innerText = strUnknownErrorText
|
|
bInErrorMode = true
|
|
End If
|
|
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">
|
|
|
|
<OBJECT STYLE="position:absolute; top:32; left=0; WIDTH=128; HEIGHT=32; display=none;"
|
|
ID="HostNameEntry" CLASSID="CLSID:538D1B58-8D5A-47C5-9867-4B6230A94EAC" VIEWASTEXT>
|
|
</OBJECT>
|
|
|
|
<IMG ID="SaLogo" STYLE="position:absolute; top:0; left=0; display:none"
|
|
SRC="localui_salogo.bmp" BORDER=0>
|
|
|
|
<A ID="HeaderText" OnKeydown="KeyDown"
|
|
STYLE="position:absolute; top:16; left:0; font-size:10; font-family=arial; display=none;" >
|
|
</A>
|
|
|
|
<A ID="InformationText" OnKeydown="KeyDown"
|
|
STYLE="position:absolute; top:0; left:0; font-size:10; font-family=arial; display=none;" >
|
|
</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>
|