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.
 
 
 
 
 
 

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