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.
 
 
 
 
 
 

592 lines
13 KiB

/*++
Copyright (c) 1999-2000 Microsoft Corporation
Module Name:
RAClient.js
Abstract:
Contains Javascript code common to both client and server side UI
Author:
Rajesh Soy 10/00
Revision History:
Rajesh Soy - created 10/25/2000
--*/
#include "debug_decl.inc"
#include "constants.inc"
/*
* Localizable Constants, text and messages
*/
var L_SAYS_Text = " says: ";
var L_INITIALHELPERCHAT1_Text = "----------<BR>Welcome to Remote Assistance.<BR>To explore your options, click Help.<P>";
var L_INITIALHELPERCHAT2_Text = " is connected to <BR>";
var L_RCCTL_Text = "Remote Assistance failed. Please try again. ";
var L_NOIP_Text = "There is no Internet connection. To use Remote Assistance, please connect to the Internet. ";
//
// Configuration stuff
//
#ifdef _VOIPENABLED
var g_bVoIPEnabled = true; // JPEREZ: Enabled March 1, 2001 - // ADHOC, Disabling VoIP for the moment.
#else
var g_bVoIPEnabled = false;
#endif
//
// Globals
//
var g_szLocalUser = null;
var g_oShell = null;
var g_oEnv = null;
#ifdef _BVT
var g_szExpertComputer = null;
var g_szNoviceComputer = null;
var g_szNoviceCredentials = null;
var g_szBVTDir = null;
var g_iTest = 0;
var g_szBuild = null;
var g_bBVT = false;
function TestInfo()
{
this.TEST = null;
this.BUILD = null;
this.MACHINE = null;
this.RESULT = null;
this.CONTACT = null;
this.MGR_CONTACT = null;
this.DEV_PRIME = null;
this.DEV_ALT = null;
this.TEST_PRIME = null;
this.TEST_ALT = null;
this.START_TIME = null;
this.END_TIME = null;
}
#define szCONTACT "David Holcomb (dholcomb), x6-9764"
#define szMGR_CONTACT "Mazhar Mohammad (mazharm), x6-7103"
#define szDEV_PRIME "Rajesh Soy (nsoy), x3-9938"
#define szDEV_ALT "Steve Shih (steveshi), x3-3498"
#define szTEST_PRIME "Miguel Lacouture-Amaya (miguell), x5-3510"
#define szTEST_ALT "Dave Ferguson (WIMME) (dferg), 5-7079"
var g_oBVT = new Array( 7 );
function InitBVT()
{
var iRetVal = 0;
try
{
if( null == g_oShell) { g_oShell = new ActiveXObject("WScript.Shell"); }
if(null == g_oEnv) { g_oEnv = g_oShell.Environment("process"); }
g_szNoviceComputer = g_oEnv("NOVICECOMPUTER");
g_szNoviceCredentials = g_oEnv("NOVICEUSERID");
g_szBVTDir = g_oEnv("RABVTDIR");
g_szExpertComputer = g_oEnv("COMPUTERNAME");
g_szBuild = g_oEnv( "BUILD" );
for( var i = 0; i < 7; i++)
{
g_oBVT[ i ] = new TestInfo();
g_oBVT[ i ].BUILD = g_szBuild;
g_oBVT[ i ].MACHINE = g_szExpertComputer;
g_oBVT[ i ].CONTACT = szCONTACT;
g_oBVT[ i ].MGR_CONTACT = szMGR_CONTACT;
g_oBVT[ i ].DEV_PRIME = szDEV_PRIME;
g_oBVT[ i ].DEV_ALT = szDEV_ALT;
g_oBVT[ i ].TEST_PRIME = szTEST_PRIME;
g_oBVT[ i ].TEST_ALT = szTEST_ALT;
}
g_bBVT = true;
}
catch(error)
{
iRetVal = error.number;
}
return iRetVal;
}
function ReportBVTResult( szResult )
{
var iRetVal = 0;
try
{
var oDate = new Date();
g_oBVT[ g_iTest ].END_TIME = oDate.toLocaleString();
if( szResult == c_szBVTPASS )
{
g_oBVT[ g_iTest ].RESULT = c_szPASS;
}
else
{
g_oBVT[ g_iTest ].RESULT = c_szFAIL;
}
g_iTest++;
}
catch(error)
{
iRetVal = error.number;
}
return iRetVal;
}
function ShutDownBVT()
{
try
{
var Fso = new ActiveXObject("Scripting.FileSystemObject");
var FileName = g_szBVTDir + "\\RABVTResult.txt";
var fileHandle = Fso.OpenTextFile( FileName, 2, -2 );
for (var i=0; i < 7; i++)
{
if( null != g_oBVT[ i ].TEST )
{
fileHandle.WriteLine( "[TESTRESULT]");
fileHandle.WriteLine( " ");
fileHandle.WriteLine( "TEST: " + g_oBVT[ i ].TEST );
fileHandle.WriteLine( "BUILD: " + g_oBVT[ i ].BUILD );
fileHandle.WriteLine( "MACHINE: " + g_oBVT[ i ].MACHINE );
fileHandle.WriteLine( "RESULT: " + g_oBVT[i].RESULT );
fileHandle.WriteLine( "CONTACT: " + g_oBVT[ i ].CONTACT);
fileHandle.WriteLine( "MGR CONTACT: " + g_oBVT[ i ].MGR_CONTACT );
fileHandle.WriteLine( "DEV PRIME: " + g_oBVT[ i ].DEV_PRIME );
fileHandle.WriteLine( "DEV ALT: " + g_oBVT[ i ].DEV_ALT );
fileHandle.WriteLine( "TEST PRIME: " + g_oBVT[ i ].TEST_PRIME );
fileHandle.WriteLine( "TEST ALT: " + g_oBVT[ i ].TEST_ALT );
fileHandle.WriteLine( "START TIME: " + g_oBVT[ i ].START_TIME);
fileHandle.WriteLine( "END TIME: " + g_oBVT[ i ].END_TIME );
fileHandle.WriteLine( " ");
fileHandle.WriteLine( "[/TESTRESULT]");
fileHandle.WriteLine( " ");
fileHandle.WriteLine( " ");
fileHandle.WriteLine( " ");
}
}
fileHandle.Close();
}
catch(error)
{
alert("Error: " + error.description);
}
}
#endif
function DisplayMessage( szMsg )
{
TraceFunctEnter( "DisplayMessage" );
try
{
var vArgs = new Array(1);
vArgs[0] = szMsg; // Message
var vRetVal = window.showModelessDialog( c_szMsgURL, vArgs, c_szMsgSpecs );
}
catch(error)
{
FatalError( error.description, error );
}
TraceFunctLeave();
}
function SoundBeep()
{
TraceFunctEnter("SoundBeep");
#ifdef _BEEP
try
{
if( null == g_oShell) { g_oShell = new ActiveXObject("WScript.Shell"); }
g_oShell.SendKeys("%c");
}
catch(error)
{
FatalError( error.description );
}
#endif
TraceFunctLeave();
return g_szLocalUser;
}
//
// GetLocalUser: Obtains the domain\username of local user
//
function GetLocalUser()
{
TraceFunctEnter("GetLocalUser");
try
{
if( null == g_oShell) { g_oShell = new ActiveXObject("WScript.Shell"); }
if(null == g_oEnv) { g_oEnv = g_oShell.Environment("process"); }
var szTmp = g_oEnv("USERNAME");
if( szTmp.length < 20 )
{
g_szLocalUser = szTmp;
}
else
{
g_szLocalUser = szTmp.slice(0, 20) + "...";
}
g_szLocalUser = EscapedName( g_szLocalUser );
}
catch(error)
{
FatalError( error.description );
}
TraceFunctLeave();
return g_szLocalUser;
}
//
// GetLocalIPAddr: Fetch the IP address of the local machine
//
function GetLocalIPAddr()
{
var oSetting = null;
var ip = null;
try
{
oSetting = new ActiveXObject( szProgIDEscalationSetting );
ip = oSetting.GetIPAddress;
if (ip.length == 0) {
alert(L_NOIP_Text);
return ip;
}
oSetting = null;
}
catch(e)
{
FatalError(L_RCCTL_Text, e);
return ip;
}
return ip;
}
//
// ChangeHCToKioskMode: Changes from full HC view to kiosk mode view
//
function ChangeHCToKioskMode(left, top, width, height)
{
TraceFunctEnter("ChangeHCToKioskMode");
try
{
DebugTrace("Changing to kioskmode");
//
// In order to use this, include the following in your HTM file:
// <HTML XMLNS:helpcenter>
// <style>
// helpcenter\:context
// {
// behavior : url(#default#pch_context);
// }
// </style>
//
// <helpcenter:context id=idCtx />
//
idCtx.ChangeContext( "kioskmode", "");
idCtx.setWindowDimensions( left, top, width, height);
}
catch(error)
{
FatalError( L_RCCTL_Text, error );
}
TraceFunctLeave();
}
//
// GetWinDir: Returns path to SystemRoot
//
function GetWinDir()
{
TraceFunctEnter("GetWinDir");
var szWinDir = null;
try
{
if( null == g_oShell) { g_oShell = new ActiveXObject("WScript.Shell"); }
if(null == g_oEnv) { g_oEnv = g_oShell.Environment("process"); }
szWinDir = g_oEnv("SystemRoot");
}
catch(error)
{
FatalError(error.description, error);
}
TraceFunctLeave();
return szWinDir;
}
//
// LaunchHelp: Launches Help topic in kioskmode Helpctr
//
function LaunchHelp( nTopicId )
{
TraceFunctEnter("LaunchHelp");
try
{
var szURL = 'hcp://CN=Microsoft%20Corporation,L=Redmond,S=Washington,C=US/Remote%20Assistance/Common/RAHelp.htm?' + nTopicId;
var szWinDir = GetWinDir();
window.showModelessDialog( szURL, szWinDir, "dialogHeight:400px;dialogWidth:550px;status:no;resizable:yes;help:no" );
}
catch(error)
{
FatalError(error.description, error);
}
TraceFunctLeave();
return;
}
function LaunchHelpEx( nTopicId )
{
TraceFunctEnter("LaunchHelp");
try
{
var szURL = 'hcp://system/Remote%20Assistance/Common/RAHelp.htm?' + nTopicId;
var szWinDir = GetWinDir();
window.showModelessDialog( szURL, szWinDir, "dialogHeight:440px;dialogWidth:385px;status:no;resizable:no;help:no" );
}
catch(error)
{
FatalError(error.description, error);
}
TraceFunctLeave();
return;
}
function FatalError( szMessage, error, bClose)
{
try
{
var szMsg = null;
#ifdef _BVT
if( true == g_bBVT )
{
if( (szMessage == null) || (szMessage.length < 5))
{
szMessage = L_RCCTL_Text;
}
var vArgs = new Array(1);
vArgs[0] = szMessage;
DebugTrace( "Function: " + g_szFuncName + "\nError Message: " + szMessage + "\nError Description: " + error.description + "\nError Number: " + error.number);
var vRetVal = window.showModalDialog( c_szMsgURL + '?' + szMessage, vArgs, c_szMsgSpecs );
AddOpenSubWin( vRetVal );
ShutDownBVT();
}
else
{
if( (szMessage == null) || (szMessage.length < 5))
{
szMessage = L_RCCTL_Text;
}
var vArgs = new Array(1);
vArgs[0] = szMessage;
DebugTrace( "Function: " + g_szFuncName + "\nError Message: " + szMessage + "\nError Description: " + error.description + "\nError Number: " + error.number);
var vRetVal = window.showModalDialog( c_szMsgURL + '?' + szMessage, vArgs, c_szMsgSpecs );
AddOpenSubWin( vRetVal );
}
#else
if( (szMessage == null) || (szMessage.length < 5))
{
szMessage = L_RCCTL_Text;
}
var vArgs = new Array(1);
vArgs[0] = szMessage;
DebugTrace( "Function: " + g_szFuncName + "\nError Message: " + szMessage + "\nError Description: " + error.description + "\nError Number: " + error.number);
var vRetVal = window.showModalDialog( c_szMsgURL + '?' + szMessage, vArgs, c_szMsgSpecs );
AddOpenSubWin( vRetVal );
#endif
}
catch(x)
{
// ...
}
}
//
// Collection of open sub-windows
//
var openWins = new Array(10); // Hope not to open more than 10 sub-windows at any given time
var openWinCnt = 0; // Count of open windows
function AddOpenSubWin( win )
{
try
{
openWins[openWinCnt%10] = win;
openWinCnt++;
}
catch(error)
{
// Ignore
}
}
function CloseOpenSubWin()
{
var i = 0;
for ( i=0; i< 10; i++)
{
if(null != openWins[i])
{
try
{
if(openWins[i].closed == false)
{
openWins[i].close();
}
}
catch(error)
{
// Ignore
}
}
}
}
//
// Chat Stuff
//
function FormatChatMsg( szMsg )
{
var szNewText = '<BR><font id="MsgTxt" name="MsgTxt" class="sys-font-body sys-color-body-helper">' + szMsg + '</font><P>';
return szNewText;
}
function CreateChatGreeting( szLocalUser, szRemoteUser )
{
szLocalUser = EscapedName( szLocalUser );
szRemoteUser = EscapedName( szRemoteUser );
var szNewText = FormatChatMsg( L_INITIALHELPERCHAT1_Text + "<P>" + szLocalUser + L_INITIALHELPERCHAT2_Text + szRemoteUser + ".<P>" + L_INITIALHELPERCHAT3_Text );
return szNewText;
}
function FormatSendChatText( szUser, szChatText )
{
var szNewText = '<BR><font id="MsgTxt" name="MsgTxt" class="styChatColorBlue styText">' + szUser + L_SAYS_Text + '</font><BR>&nbsp;&nbsp;&nbsp;&nbsp;<font class="styText styBlack">' + szChatText + '</font>';
return szNewText;
}
//
// Key tracking
//
var iKeyCode = new Array(3);
var iKeyCnt = 0;
function IsAlpha( keyCode )
{
var fRetVal = false;
alert("keyCode: " + keyCode);
if( ( 64 < keyCode) && ( keyCode < 91) )
{
fRetVal = true;
}
return fRetVal;
}
//
// Escape funny characters in name
//
var L_DOTS_Text = "...";
function EscapedName( szName )
{
TraceFunctEnter("EscapeName");
try
{
var szTmp = new String( szName );
var re = /&/g;
var szEscapedName = szTmp.replace( re, "&amp;" );
var re = /</g;
szEscapedName = szEscapedName.replace( re, "&lt;" );
re = />/g;
szEscapedName = szEscapedName.replace( re, "&gt;" );
#if 0
if( szEscapedName.length > 60 )
{
szEscapedName = szEscapedName.slice(0, 60) + L_DOTS_Text;
}
#endif
}
catch(error)
{
alert(parent.parent.L_RCCTL_Text);
return;
}
TraceFunctLeave();
return szEscapedName;
}