Added copy of the Original RDWeb pages
BIN
RDSFactorWeb/RDWeb/Pages/App_Data/ASPNETDB.MDF
Normal file
BIN
RDSFactorWeb/RDWeb/Pages/App_Data/allusers_tswa.log
Normal file
BIN
RDSFactorWeb/RDWeb/Pages/App_Data/aspnetdb_log.ldf
Normal file
BIN
RDSFactorWeb/RDWeb/Pages/Bin/en/TSPortalWebPart.resources.dll
Normal file
BIN
RDSFactorWeb/RDWeb/Pages/Bin/tsportalwebpart.dll
Normal file
137
RDSFactorWeb/RDWeb/Pages/Default.aspx
Normal file
|
@ -0,0 +1,137 @@
|
|||
<%@ Page Language="C#" %>
|
||||
<HTML>
|
||||
<HEAD>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
<script language="C#" runat="server">
|
||||
|
||||
void goToFolder(string getLangVal)
|
||||
{
|
||||
Response.Redirect(getLangVal + "/Default.aspx" + Request.Url.Query,true);
|
||||
}
|
||||
|
||||
void Page_Load(Object sender, EventArgs e)
|
||||
{
|
||||
// Deny requests with "additional path information"
|
||||
if (Request.PathInfo.Length != 0)
|
||||
{
|
||||
Response.StatusCode = 404;
|
||||
Response.End();
|
||||
}
|
||||
|
||||
string langCode = null;
|
||||
System.Globalization.CultureInfo culture;
|
||||
|
||||
// For each request initialize the culture values with
|
||||
// the user language as specified by the browser.
|
||||
if (Request.UserLanguages != null)
|
||||
{
|
||||
for (int i = 0; i < Request.UserLanguages.Length; i++)
|
||||
{
|
||||
string strLanguage = Request.UserLanguages[i];
|
||||
|
||||
// Note that the languages other than the first are in
|
||||
// the format of
|
||||
// "<Language>;<q=<weight>>" (e.g., "en-us;q=0.5")
|
||||
if (strLanguage.IndexOf(';') >= 0)
|
||||
{
|
||||
strLanguage = strLanguage.Substring(0, strLanguage.IndexOf(';'));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
culture = System.Globalization.CultureInfo.CreateSpecificCulture(strLanguage);
|
||||
|
||||
// Make sure that the directory is present
|
||||
string physicalPath = Server.MapPath(culture.Name + "/" + "default.aspx");
|
||||
|
||||
if ((physicalPath.Length != 0) && (System.IO.File.Exists(physicalPath)))
|
||||
{
|
||||
langCode = culture.Name;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// Some cultures are not supported and will cause an
|
||||
// exception to throw. In this case,
|
||||
// we ignore the exception and try the next culture
|
||||
// based on client language preference.
|
||||
// Note that if no culture can be set properly, then
|
||||
// the default culture will be used.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (String.IsNullOrEmpty(langCode))
|
||||
{
|
||||
// Default to Installed language
|
||||
culture = System.Globalization.CultureInfo.InstalledUICulture;
|
||||
|
||||
// But first make sure that the directory is present
|
||||
string physicalPath = Server.MapPath(culture.Name + "/" + "default.aspx");
|
||||
|
||||
if ((physicalPath.Length != 0) && (System.IO.File.Exists(physicalPath)))
|
||||
{
|
||||
langCode = culture.Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
// In some cases we have to use common culture parents to determine where to redirect
|
||||
// We gather up the hierarchies of the ui culture and of installed language cultures
|
||||
// comparing their hierarchies until we find some sort of match
|
||||
physicalPath = Server.MapPath(".");
|
||||
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(physicalPath);
|
||||
System.IO.DirectoryInfo[] cultureDirectories = dirInfo.GetDirectories("*-*");
|
||||
langCode = "";
|
||||
|
||||
while(culture != culture.Parent && culture.Parent != null)
|
||||
{
|
||||
culture = culture.Parent;
|
||||
|
||||
foreach(System.IO.DirectoryInfo cultureDir in cultureDirectories)
|
||||
{
|
||||
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CreateSpecificCulture(cultureDir.Name);
|
||||
|
||||
while(ci != ci.Parent && ci.Parent != null)
|
||||
{
|
||||
ci = ci.Parent;
|
||||
|
||||
if(ci.Name == culture.Name)
|
||||
{
|
||||
langCode = cultureDir.Name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(langCode != "")
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
catch(Exception)
|
||||
{
|
||||
// See above about cultures and exceptions, in this case we fallback to en-us
|
||||
}
|
||||
}
|
||||
|
||||
// fallback to english if all else fails
|
||||
physicalPath = Server.MapPath(langCode + "/" + "default.aspx");
|
||||
if ((physicalPath.Length == 0) || !(System.IO.File.Exists(physicalPath)))
|
||||
{
|
||||
langCode = "en-us";
|
||||
}
|
||||
}
|
||||
|
||||
goToFolder(langCode);
|
||||
return;
|
||||
}
|
||||
|
||||
</script>
|
20
RDSFactorWeb/RDWeb/Pages/Default.aspx.cs
Normal file
|
@ -0,0 +1,20 @@
|
|||
//
|
||||
// Copyright (C) Microsoft. All rights reserved.
|
||||
//
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
|
||||
public partial class _Default : System.Web.UI.Page
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
6
RDSFactorWeb/RDWeb/Pages/RenderFail.css
Normal file
|
@ -0,0 +1,6 @@
|
|||
/*
|
||||
These rules should only take effect when some failure
|
||||
has occurred to prevent normal XSLT processing
|
||||
*/
|
||||
RDWAPage > * {display:none}
|
||||
RenderFailureMessage {display:block}
|
771
RDSFactorWeb/RDWeb/Pages/Site.xsl
Normal file
|
@ -0,0 +1,771 @@
|
|||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:appfeed="http://schemas.microsoft.com/ts/2007/05/tswf"
|
||||
xmlns:str="urn:microsoft.com:rdwastrings">
|
||||
<xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.01//EN" doctype-system="http://www.w3.org/TR/html4/strict.dtd" encoding="UTF-8"/>
|
||||
|
||||
<xsl:variable name="baseurl" select="/RDWAPage/@baseurl"/>
|
||||
<xsl:variable name="rdcinstallurl" select="/RDWAPage/AppFeed[1]/@rdcinstallurl"/>
|
||||
<xsl:variable name="showpubliccheckbox" select="/RDWAPage/AppFeed[1]/@showpubliccheckbox = 'true'"/>
|
||||
<xsl:variable name="showoptimizeexperience" select="/RDWAPage/AppFeed[1]/@showoptimizeexperience = 'true'"/>
|
||||
<xsl:variable name="optimizeexperiencestate" select="/RDWAPage/AppFeed[1]/@optimizeexperiencestate = 'true'"/>
|
||||
<xsl:variable name="privatemode" select="/RDWAPage/AppFeed[1]/@privatemode = 'true'"/>
|
||||
<xsl:variable name="appfeedcontents" select="/RDWAPage/AppFeed[1]"/>
|
||||
<xsl:variable name="strings" select="document(concat($baseurl,'RDWAStrings.xml'))/str:strings/string"/>
|
||||
|
||||
<!-- top level document structure -->
|
||||
<xsl:template match="/RDWAPage">
|
||||
<html>
|
||||
<head id="Head1">
|
||||
<xsl:if test="$baseurl">
|
||||
<base><xsl:attribute name="href"><xsl:value-of select="$baseurl"/></xsl:attribute></base>
|
||||
</xsl:if>
|
||||
<title ID="PAGE_TITLE"><xsl:value-of select="$strings[@id = 'PageTitle']"/></title>
|
||||
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<link href="tswa.css" rel="stylesheet" type="text/css" />
|
||||
<xsl:apply-templates select="Style"/>
|
||||
|
||||
<script language="javascript" type="text/javascript" src='../renderscripts.js'/>
|
||||
<script language="javascript" type="text/javascript" src='../webscripts-domain.js'/>
|
||||
<script language="javascript" type="text/javascript">
|
||||
var sHelpSource = "<xsl:value-of select="@helpurl"/>";
|
||||
<xsl:value-of select="HeaderJS[1]"/>
|
||||
<xsl:if test="$baseurl">
|
||||
strBaseUrl = "<xsl:value-of select="$baseurl"/>";
|
||||
</xsl:if>
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<xsl:apply-templates select="BodyAttr/@*"/>
|
||||
|
||||
<noscript><xsl:copy-of select="$strings[@id = 'NoScriptWarning']/node()"/></noscript>
|
||||
|
||||
<xsl:apply-templates select="@domainuser"/>
|
||||
|
||||
<xsl:comment>Page Table</xsl:comment>
|
||||
<table border="0" align="center" cellpadding="0" cellspacing="0">
|
||||
|
||||
<xsl:comment>1st Row (Empty)</xsl:comment>
|
||||
<tr>
|
||||
<td height="20"></td>
|
||||
</tr>
|
||||
|
||||
<xsl:comment>2nd Row (Top Border Images)</xsl:comment>
|
||||
<tr>
|
||||
<td>
|
||||
<table width="932" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td width="15" height="15" background="../images/top_left.png"></td>
|
||||
<td width="902" height="15" background="../images/top_mid.png"></td>
|
||||
<td width="15" height="15" background="../images/top_right.png"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<xsl:comment>3rd Row (Main)</xsl:comment>
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
<xsl:comment>Contents and Controls Table (1 Row, 3 Columns)</xsl:comment>
|
||||
<table width="932" border="0" cellpadding="0" cellspacing="0">
|
||||
|
||||
<tr>
|
||||
<xsl:comment>Col 1 - Left Border Images</xsl:comment>
|
||||
<td width="15" background="../images/left_mid.png"> </td>
|
||||
|
||||
<xsl:comment>Col 2 - Contents and Controls</xsl:comment>
|
||||
<td width="902">
|
||||
|
||||
<xsl:comment>Inner Contents and Controls Table (8 Rows, 1 Column)</xsl:comment>
|
||||
<table width="900" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="pageBorder">
|
||||
|
||||
<xsl:comment>1st Row - RD Web Access Logo</xsl:comment>
|
||||
<tr>
|
||||
<td height="24" bgcolor="#7EA3BE">
|
||||
<table border="0" align="right" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td>
|
||||
<img src="../images/logo_01.png" width="16" height="16"/>
|
||||
</td>
|
||||
<td width="5"> </td>
|
||||
<td class="headingTSWA">
|
||||
<xsl:value-of select="$strings[@id = 'HeadingRDWA']"/>
|
||||
</td>
|
||||
<td width="9"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<xsl:comment>Row - Empty</xsl:comment>
|
||||
<tr>
|
||||
<td height="1"></td>
|
||||
</tr>
|
||||
|
||||
<xsl:comment>3rd Row - Customizable Banner and Text Row</xsl:comment>
|
||||
<tr>
|
||||
<td height="90" background="../images/banner_01.jpg">
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td width="30"> </td>
|
||||
|
||||
<xsl:comment>Replaceable Company Logo Image</xsl:comment>
|
||||
<td>
|
||||
<img src="../images/logo_02.png" width="48" height="48"/>
|
||||
</td>
|
||||
<td width="10"> </td>
|
||||
|
||||
<xsl:comment>Replaceable Company Logo Text and Application Type</xsl:comment>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td class="headingCompanyName"><xsl:value-of select="@workspacename"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="headingApplicationName">
|
||||
<xsl:value-of select="$strings[@id = 'HeadingApplicationName']"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<xsl:comment>4th Row - Navigation Table</xsl:comment>
|
||||
<xsl:choose>
|
||||
<xsl:when test="NavBar[1]">
|
||||
<xsl:apply-templates select="NavBar[1]"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<tr>
|
||||
<td class="cellSecondaryNavigationBar" height="40">
|
||||
<xsl:comment>Login Page only contains Help link</xsl:comment>
|
||||
<table border="0" cellpadding="0" cellspacing="0" class="linkSecondaryNavigiationBar">
|
||||
<tr>
|
||||
<td>
|
||||
<a id='PORTAL_HELP' href="javascript:onClickHelp()">
|
||||
<xsl:value-of select="$strings[@id = 'Help']"/>
|
||||
</a>
|
||||
</td>
|
||||
<td width="30"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:comment>5th Row - Image</xsl:comment>
|
||||
<tr>
|
||||
<td>
|
||||
<img src="../images/bar_03.jpg" width="900" height="10"/>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<xsl:comment>6th Row - Empty</xsl:comment>
|
||||
<tr>
|
||||
<td height="10"></td>
|
||||
</tr>
|
||||
|
||||
<xsl:comment>7th Row - Visible Controls</xsl:comment>
|
||||
<tr>
|
||||
<td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="HTMLMainContent[1]">
|
||||
<xsl:copy-of select="HTMLMainContent[1]/*"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="AppFeed[1]">
|
||||
<div id="homemain">
|
||||
<div id="content">
|
||||
<xsl:apply-templates select="AppFeed[1]"/>
|
||||
</div>
|
||||
</div>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<xsl:copy-of select="ExtraRows[1]/*"/>
|
||||
|
||||
<xsl:comment>8th Row - Footer</xsl:comment>
|
||||
<tr>
|
||||
<td height="50" background="../images/banner_02.jpg" bgcolor="#D7E7F7">
|
||||
<table width="100%" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<xsl:comment>Windows Server Logo</xsl:comment>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td width="30"> </td>
|
||||
<td>
|
||||
<img src="../images/WS_h_c.png" width="143" height="20"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<xsl:comment>Microsoft Logo</xsl:comment>
|
||||
<td class="cellMSLogo">
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td>
|
||||
<img src="../images/mslogo_black.png" width="63" height="10"/>
|
||||
</td>
|
||||
<td width="30"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
<xsl:comment>Col 3 - Right Border Images</xsl:comment>
|
||||
<td width="15" background="../images/right_mid.png"> </td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<xsl:comment>4th Row (Bottom Border Images) </xsl:comment>
|
||||
<tr>
|
||||
<td>
|
||||
<table width="932" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td width="15" height="15" background="../images/bottom_left.png"></td>
|
||||
<td width="902" height="15" background="../images/bottom_mid.png"></td>
|
||||
<td width="15" height="15" background="../images/bottom_right.png"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<xsl:comment>5th Row (Empty)</xsl:comment>
|
||||
<tr>
|
||||
<td height="20"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/RDWAPage/Style">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@condition">
|
||||
<xsl:comment>[<xsl:value-of select="@condition"/>]>
|
||||
<style>
|
||||
<xsl:value-of select="."/>
|
||||
</style>
|
||||
<![endif]</xsl:comment>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<style>
|
||||
<xsl:value-of select="."/>
|
||||
</style>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/RDWAPage/BodyAttr/@*">
|
||||
<xsl:attribute name="{name(.)}"><xsl:value-of select="."/></xsl:attribute>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/RDWAPage/@domainuser">
|
||||
<form name="FrmUserInfo" id="FrmUserInfo">
|
||||
<input type="hidden" id="DomainUserName" name="DomainUserName">
|
||||
<xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
|
||||
</input>
|
||||
</form>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/RDWAPage/NavBar">
|
||||
<tr>
|
||||
<td height="40">
|
||||
|
||||
<table width="100%" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" class="linkPrimaryNavigiationBar">
|
||||
<tr>
|
||||
<td width="30"> </td>
|
||||
<xsl:apply-templates select="Tab"/>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
|
||||
<td class="cellSecondaryNavigationBar">
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0" class="linkSecondaryNavigiationBar">
|
||||
<tr>
|
||||
<td>
|
||||
<a id='PORTAL_HELP' href="javascript:onClickHelp()">
|
||||
<xsl:value-of select="$strings[@id = 'Help']"/>
|
||||
</a>
|
||||
</td>
|
||||
<xsl:if test="@showsignout = 'true'">
|
||||
<td width="15"> </td>
|
||||
<td class="dividerInNavigationBar">|</td>
|
||||
<td width="15"> </td>
|
||||
<td>
|
||||
<a id='PORTAL_SIGNOUT' href="javascript:onUserDisconnect()" target="_self">
|
||||
<xsl:value-of select="$strings[@id = 'SignOut']"/>
|
||||
</a>
|
||||
</td>
|
||||
</xsl:if>
|
||||
<td width="30"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/RDWAPage/NavBar/Tab">
|
||||
<xsl:if test="position() != 1">
|
||||
<td width="15"> </td>
|
||||
<td class="dividerInNavigationBar">|</td>
|
||||
<td width="15"> </td>
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="../@activetab = @id">
|
||||
<td class="headingForActivePageInNavigationBar">
|
||||
<xsl:attribute name='id'><xsl:value-of select='@id'/></xsl:attribute>
|
||||
<xsl:value-of select='.'/>
|
||||
</td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td>
|
||||
<a target="_self">
|
||||
<xsl:attribute name='href'><xsl:value-of select='@href'/></xsl:attribute>
|
||||
<xsl:attribute name='id'><xsl:value-of select='@id'/></xsl:attribute>
|
||||
<xsl:value-of select='.'/>
|
||||
</a>
|
||||
</td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/RDWAPage/AppFeed">
|
||||
<xsl:apply-templates select="$appfeedcontents/appfeed:ResourceCollection"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="appfeed:ResourceCollection">
|
||||
<xsl:variable name="feedidprefix">AppFeed_<xsl:value-of select="generate-id()"/></xsl:variable>
|
||||
<div style="display:none;height:0px; width:0px; background-color:Transparent;">
|
||||
<xsl:attribute name="id"><xsl:value-of select="$feedidprefix"/>oDivMsRdpClient</xsl:attribute>
|
||||
|
||||
<script type="text/javascript" language="javascript">
|
||||
var MsRdpClientShell;
|
||||
var ActiveXMode;
|
||||
|
||||
function <xsl:value-of select="$feedidprefix"/>window_onload() {
|
||||
|
||||
ActiveXMode = <xsl:value-of select="$feedidprefix"/>LoadControl();
|
||||
|
||||
if (ActiveXMode && <xsl:value-of select="$feedidprefix"/>Controls.PORTAL_REMOTE_DESKTOPS != null)
|
||||
{
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.PORTAL_REMOTE_DESKTOPS.style.display = "inline";
|
||||
}
|
||||
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.PleaseWait.style.display="none";
|
||||
|
||||
<xsl:value-of select="$feedidprefix"/>EnableAppDisplay();
|
||||
}
|
||||
|
||||
|
||||
function <xsl:value-of select="$feedidprefix"/>EnableAppDisplay() {
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.AppDisplay.style.display = "block";
|
||||
|
||||
if (ActiveXMode)
|
||||
{
|
||||
<xsl:if test="$showpubliccheckbox">
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.contentPublicCheckbox.style.display = "block";
|
||||
</xsl:if>
|
||||
|
||||
<xsl:if test="$showoptimizeexperience">
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.contentShowOptimizeExperience.style.display = "block";
|
||||
</xsl:if>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function <xsl:value-of select="$feedidprefix"/>LoadControl() {
|
||||
var retval = true;
|
||||
|
||||
try
|
||||
{
|
||||
var WebAccessControlPresent = <xsl:value-of select="$feedidprefix"/>IsWebAccessControlPresent();
|
||||
|
||||
var obj = "<object type='application/x-oleobject'";
|
||||
obj += "id='MsRdpClient' name='MsRdpClient'";
|
||||
obj += "onerror='<xsl:value-of select="$feedidprefix"/>OnControlLoadError'";
|
||||
obj += "height='0' width='0'";
|
||||
if ( WebAccessControlPresent ) {
|
||||
obj += "classid='CLSID:6A5B0C7C-5CCB-4F10-A043-B8DE007E1952'>";
|
||||
}
|
||||
else {
|
||||
obj += "classid='CLSID:7390f3d8-0439-4c05-91e3-cf5cb290c3d0'>";
|
||||
}
|
||||
obj += "</object>";
|
||||
obj += "<script language='javascript' type='text/javascript'> var MsRdpClient = document.getElementById('MsRdpClient'); <\/script>";
|
||||
|
||||
document.getElementById("<xsl:value-of select="$feedidprefix"/>oDivMsRdpClient").insertAdjacentHTML("beforeEnd",obj);
|
||||
if ( WebAccessControlPresent ) {
|
||||
MsRdpClientShell = MsRdpClient;
|
||||
}
|
||||
else {
|
||||
MsRdpClientShell = MsRdpClient.MsRdpClientShell;
|
||||
}
|
||||
|
||||
if (!MsRdpClient || MsRdpClientShell == null) {
|
||||
retval = false;
|
||||
<xsl:value-of select="$feedidprefix"/>OnControlLoadError();
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
retval = false;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
function <xsl:value-of select="$feedidprefix"/>OnControlLoadError() {
|
||||
<xsl:value-of select="$feedidprefix"/>ActiveXMode = false;
|
||||
}
|
||||
|
||||
|
||||
function <xsl:value-of select="$feedidprefix"/>IsWebAccessControlPresent() {
|
||||
var retval = false;
|
||||
try {
|
||||
var WebAccessControl = new ActiveXObject("MsRdpWebAccess.MsRdpClientShell");
|
||||
if ( WebAccessControl ) {
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
catch(e) {
|
||||
retval = false;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
<xsl:if test="$showpubliccheckbox">
|
||||
function <xsl:value-of select="$feedidprefix"/>toggle(e) {
|
||||
if (e.id == "<xsl:value-of select="$feedidprefix"/>p2M") {
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.p2M.style.display = "none";
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.p2L.style.display = "";
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.privateMore.style.display = "";
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.contentPublicCheckbox.className = "tswa_PublicCheckboxMore";
|
||||
<xsl:choose>
|
||||
<xsl:when test="$showoptimizeexperience = 'true'">
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.contentShowOptimizeExperience.className = "tswa_ShowOptimizeExperienceShiftedUp";
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.AppDisplay.style.height = (<xsl:value-of select="$feedidprefix"/>Controls.AppDisplay.offsetHeight - 60) + "px"; // 440px
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.AppDisplay.style.height = (<xsl:value-of select="$feedidprefix"/>Controls.AppDisplay.offsetHeight - 40) + "px"; // 440px
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
} else if (e.id == "<xsl:value-of select="$feedidprefix"/>p2L") {
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.p2M.style.display = "";
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.p2L.style.display = "none";
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.privateMore.style.display = "none";
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.contentPublicCheckbox.className = "tswa_PublicCheckboxLess";
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="$showoptimizeexperience = 'true'">
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.contentShowOptimizeExperience.className = "tswa_ShowOptimizeExperience";
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.AppDisplay.style.height = (<xsl:value-of select="$feedidprefix"/>Controls.AppDisplay.offsetHeight + 60) + "px"; // 440px
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$feedidprefix"/>Controls.AppDisplay.style.height = (<xsl:value-of select="$feedidprefix"/>Controls.AppDisplay.offsetHeight + 40) + "px"; // 440px
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
}
|
||||
}
|
||||
</xsl:if>
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>content</xsl:attribute>
|
||||
|
||||
<div class="tswa_appboard" style="display:none;">
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>PleaseWait</xsl:attribute>
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="100%" height="100%">
|
||||
<tr>
|
||||
<td align="center" valign="middle">
|
||||
<xsl:copy-of select="$strings[@id = 'SearchingForApps']/node()"/><img src="../images/rapwait.gif" style="width:122px;height:32px;vertical-align:middle;"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" language="javascript">
|
||||
document.getElementById("<xsl:value-of select="$feedidprefix"/>PleaseWait").style.display="block";
|
||||
</script>
|
||||
|
||||
<div class="tswa_appboard tswa_appdisplay" style="display:none;top:0px;overflow:auto;">
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>AppDisplay</xsl:attribute>
|
||||
|
||||
<!-- deal with folder icons and labels -->
|
||||
<div class="tswa_CurrentFolderLabel"><xsl:value-of select="$strings[@id = 'CurrentFolder']"/><span><xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>CurrentFolderPath</xsl:attribute><xsl:value-of select="appfeed:Publisher[1]/@DisplayFolder"/></span></div>
|
||||
|
||||
<!-- Display the parent folder icon, if needed -->
|
||||
<xsl:if test="appfeed:Publisher[1]/@DisplayFolder != '/'">
|
||||
<div tabindex="0"
|
||||
onkeypress="onmouseup()"
|
||||
class="tswa_up_boss"
|
||||
onmouseover='tswa_bossOver(this)'
|
||||
onmouseout='tswa_bossOut(this)'
|
||||
title='Up'>
|
||||
<xsl:attribute name='onmouseup'>window.location.href='<xsl:value-of select='$baseurl'/>Default.aspx'</xsl:attribute>
|
||||
<div class="tswa_boss_spacer">
|
||||
<img class="tswa_vis0" src='../images/ivmo.png' />
|
||||
<img class="tswa_iconimg" src="../images/up.png"/>
|
||||
<div class="tswa_ttext">
|
||||
<xsl:value-of select="$strings[@id = 'ParentFolder']"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xsl:if>
|
||||
|
||||
<!-- display icons for any subfolders -->
|
||||
<xsl:apply-templates select="appfeed:Publisher[1]/appfeed:SubFolders[1]/appfeed:Folder">
|
||||
<xsl:sort select="@Name"/>
|
||||
</xsl:apply-templates>
|
||||
|
||||
<xsl:apply-templates select="appfeed:Publisher[1]/appfeed:Resources[1]/appfeed:Resource"/>
|
||||
</div>
|
||||
|
||||
<xsl:if test="$showoptimizeexperience = 'true'">
|
||||
<div class='tswa_ShowOptimizeExperience' style="display:none;">
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>contentShowOptimizeExperience</xsl:attribute>
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top" style="width:30px;font-size:12px;">
|
||||
<input type="checkbox" value="ON">
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>chkShowOptimizeExperience</xsl:attribute>
|
||||
<xsl:if test="$optimizeexperiencestate = 'true'">
|
||||
<xsl:attribute name="checked">checked</xsl:attribute>
|
||||
</xsl:if>
|
||||
</input>
|
||||
</td>
|
||||
<td valign="top" style="padding-top:2px;font-size:12px;">
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>ShowOptimizeExperienceText</xsl:attribute>
|
||||
<xsl:value-of select="$strings[@id = 'OptimizeMyExperience']"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:if test="$showpubliccheckbox">
|
||||
<div class='tswa_PublicCheckboxLess' style="display:none;">
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>contentPublicCheckbox</xsl:attribute>
|
||||
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="top" style="width:30px;font-size:12px;">
|
||||
<input type="checkbox" value="ON">
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>PublicCheckbox</xsl:attribute>
|
||||
<xsl:if test="$privatemode = 'true'">
|
||||
<xsl:attribute name="checked">checked</xsl:attribute>
|
||||
</xsl:if>
|
||||
</input>
|
||||
</td>
|
||||
<td valign="top" style="padding-top:2px;font-size:12px;">
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>SecurityText2</xsl:attribute>
|
||||
<xsl:value-of select="$strings[@id = 'PrivateComputer']"/>
|
||||
<span>
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>p2M</xsl:attribute>
|
||||
<xsl:attribute name='onclick'><xsl:value-of select="$feedidprefix"/>toggle(this);</xsl:attribute>
|
||||
(<a><xsl:attribute name="href">javascript:<xsl:value-of select="$feedidprefix"/>toggle(this)</xsl:attribute><xsl:value-of select="$strings[@id = 'MoreInformation']"/></a>)
|
||||
|
||||
|
||||
</span><span style="display:none">
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>privateMore</xsl:attribute>
|
||||
<br />
|
||||
<xsl:value-of select="$strings[@id = 'PrivateMore']"/>
|
||||
<span>
|
||||
<xsl:attribute name='id'><xsl:value-of select="$feedidprefix"/>p2L</xsl:attribute>
|
||||
<xsl:attribute name='onclick'><xsl:value-of select="$feedidprefix"/>toggle(this);</xsl:attribute>
|
||||
(<a><xsl:attribute name="href">javascript:<xsl:value-of select="$feedidprefix"/>toggle(this)</xsl:attribute><xsl:value-of select="$strings[@id = 'HideMore']"/></a>)
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</xsl:if>
|
||||
|
||||
</div>
|
||||
<script type="text/javascript" language="javascript">
|
||||
|
||||
var <xsl:value-of select="$feedidprefix"/>Controls = {
|
||||
AppDisplay: document.getElementById("<xsl:value-of select="$feedidprefix"/>AppDisplay"),
|
||||
contentPublicCheckbox: document.getElementById("<xsl:value-of select="$feedidprefix"/>contentPublicCheckbox"),
|
||||
PublicCheckbox: document.getElementById("<xsl:value-of select="$feedidprefix"/>PublicCheckbox"),
|
||||
contentShowOptimizeExperience: document.getElementById("<xsl:value-of select="$feedidprefix"/>contentShowOptimizeExperience"),
|
||||
chkShowOptimizeExperience: document.getElementById("<xsl:value-of select="$feedidprefix"/>chkShowOptimizeExperience"),
|
||||
p2M: document.getElementById("<xsl:value-of select="$feedidprefix"/>p2M"),
|
||||
p2L: document.getElementById("<xsl:value-of select="$feedidprefix"/>p2L"),
|
||||
privateMore: document.getElementById("<xsl:value-of select="$feedidprefix"/>privateMore"),
|
||||
PleaseWait: document.getElementById("<xsl:value-of select="$feedidprefix"/>PleaseWait"),
|
||||
PORTAL_REMOTE_DESKTOPS: document.getElementById("PORTAL_REMOTE_DESKTOPS")
|
||||
};
|
||||
|
||||
function tswa_bossOver(obj){
|
||||
obj.children[0].children[0].className = 'tswa_vis1';
|
||||
obj.children[0].style.padding = "10px 3px 2px 2px";
|
||||
}
|
||||
function tswa_bossOut(obj){
|
||||
obj.children[0].children[0].className = "tswa_vis0";
|
||||
obj.children[0].style.padding = "12px 1px 0px 4px";
|
||||
}
|
||||
|
||||
function goRDP(pid, rdpContents, url) {
|
||||
if (ActiveXMode) {
|
||||
try {
|
||||
goRDPAx(pid, rdpContents);
|
||||
} catch (e) {
|
||||
location.href = url;
|
||||
}
|
||||
}
|
||||
else {
|
||||
location.href = url;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function goRDPAx(pid, arg) {
|
||||
var strRdpFileContents = arg;
|
||||
|
||||
// Try adding the User Name to RdpContents.
|
||||
if ( typeof getUserNameRdpProperty == 'function' ) {
|
||||
strRdpFileContents += getUserNameRdpProperty();
|
||||
}
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="$showpubliccheckbox">
|
||||
MsRdpClientShell.PublicMode = !<xsl:value-of select="$feedidprefix"/>Controls.PublicCheckbox.checked;
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
MsRdpClientShell.PublicMode = <xsl:choose>
|
||||
<xsl:when test="not($privatemode)">true</xsl:when>
|
||||
<xsl:otherwise>false</xsl:otherwise>
|
||||
</xsl:choose>;
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:if test="$showoptimizeexperience">
|
||||
if (<xsl:value-of select="$feedidprefix"/>Controls.chkShowOptimizeExperience.checked) {
|
||||
var objRegExp = new RegExp("connection type:i:([0-9]+)", "i");
|
||||
var iIndex = strRdpFileContents.search( objRegExp );
|
||||
<!-- Add 'connection type' if it does exist otherwise replace. -->
|
||||
if ( -1 == iIndex ) {
|
||||
if ( "\\n" != strRdpFileContents.charAt(strRdpFileContents.length-1) ) {
|
||||
strRdpFileContents += "\\r\\n";
|
||||
}
|
||||
strRdpFileContents += "connection type:i:6\\r\\n";
|
||||
} else {
|
||||
strRdpFileContents = strRdpFileContents.replace(objRegExp, "connection type:i:6");
|
||||
}
|
||||
}
|
||||
</xsl:if>
|
||||
|
||||
MsRdpClientShell.RdpFileContents = unescape(strRdpFileContents);
|
||||
|
||||
try {
|
||||
MsRdpClientShell.Launch();
|
||||
}
|
||||
catch(e){
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function goNonRDP(pid, arg) {
|
||||
try {
|
||||
location.href = unescape(arg);
|
||||
}
|
||||
catch(e){
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
<xsl:value-of select="$feedidprefix"/>window_onload();
|
||||
</script>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="appfeed:Resource">
|
||||
<div
|
||||
class="tswa_boss"
|
||||
tabindex="0"
|
||||
onkeypress="onmouseup()"
|
||||
onmouseover='tswa_bossOver(this)'
|
||||
onmouseout='tswa_bossOut(this)'>
|
||||
<xsl:attribute name='onmouseup'>
|
||||
<xsl:choose>
|
||||
<xsl:when test="appfeed:HostingTerminalServers/appfeed:HostingTerminalServer[1]/appfeed:ResourceFile/@FileExtension = '.rdp' and appfeed:HostingTerminalServers/appfeed:HostingTerminalServer[1]/appfeed:ResourceFile/appfeed:Content and appfeed:HostingTerminalServers/appfeed:HostingTerminalServer[1]/appfeed:ResourceFile/@URL">goRDP(this, '<xsl:value-of select='appfeed:HostingTerminalServers/appfeed:HostingTerminalServer[1]/appfeed:ResourceFile/appfeed:Content'/>', '<xsl:value-of select='appfeed:HostingTerminalServers/appfeed:HostingTerminalServer[1]/appfeed:ResourceFile/@URL'/>');</xsl:when>
|
||||
<xsl:otherwise>goNonRDP(this, '<xsl:value-of select='appfeed:HostingTerminalServers/appfeed:HostingTerminalServer[1]/appfeed:ResourceFile/appfeed:Content'/>');</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name='title'><xsl:value-of select="@Title"/></xsl:attribute>
|
||||
<div class="tswa_boss_spacer">
|
||||
<img class="tswa_vis0" src='../images/ivmo.png' />
|
||||
<img class="tswa_iconimg">
|
||||
<xsl:attribute name="src">
|
||||
<xsl:value-of select="appfeed:Icons/appfeed:Icon32[@Dimensions = '32x32' and @FileType = 'Png']/@FileURL"/>
|
||||
</xsl:attribute>
|
||||
</img>
|
||||
<div class="tswa_ttext">
|
||||
<xsl:value-of select="@Title"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="appfeed:Folder">
|
||||
<xsl:variable name="folderName" select="substring-after(@Name, '/')"/>
|
||||
<div
|
||||
class="tswa_folder_boss"
|
||||
tabindex="0"
|
||||
onkeypress="onmouseup()"
|
||||
onmouseover='tswa_bossOver(this)'
|
||||
onmouseout='tswa_bossOut(this)'>
|
||||
<xsl:attribute name='onmouseup'>window.location.href='<xsl:value-of select='$baseurl'/>Default.aspx/' + encodeURIComponent('<xsl:value-of select='$folderName'/>')</xsl:attribute>
|
||||
<xsl:attribute name='title'>
|
||||
<xsl:value-of select="$folderName"/>
|
||||
</xsl:attribute>
|
||||
<div class="tswa_boss_spacer">
|
||||
<img class="tswa_vis0" src='../images/ivmo.png' />
|
||||
<img class="tswa_iconimg" src="../images/folder.png"/>
|
||||
<div class="tswa_ttext">
|
||||
<xsl:value-of select="$folderName"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
125
RDSFactorWeb/RDWeb/Pages/Web.config
Normal file
|
@ -0,0 +1,125 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Note: As an alternative to hand editing this file you can use the
|
||||
web admin tool to configure settings for your application. Use
|
||||
the Website->Asp.Net Configuration option in Visual Studio.
|
||||
A full list of settings and comments can be found in
|
||||
machine.config.comments usually located in
|
||||
\Windows\Microsoft.Net\Framework\v2.x\Config
|
||||
-->
|
||||
<configuration>
|
||||
<!-- Admin Defined settings -->
|
||||
<appSettings>
|
||||
<!-- PasswordChangeEnabled: Provides password change page for users. Value must be "true" or "false" -->
|
||||
<add key="PasswordChangeEnabled" value="false" />
|
||||
|
||||
<!-- LocalHelp: Displays local help for users, instead of the web-based help. Value must be "true" or "false" -->
|
||||
<add key="LocalHelp" value="false" />
|
||||
|
||||
<!-- ShowDesktops: Displays or hides the Remote Desktops tab. Value must be "true" or "false" -->
|
||||
<add key="ShowDesktops" value="true" />
|
||||
|
||||
<!-- DefaultTSGateway: Admin can preset this to a given Gateway name, or set to "" for no gateway. -->
|
||||
<add key="DefaultTSGateway" value="" />
|
||||
|
||||
<!-- GatewayCredentialsSource: TS Gateway Authentication Type.
|
||||
Admins can preset this.
|
||||
0 = User Password
|
||||
1 = Smartcard
|
||||
4 = "Ask me later"
|
||||
-->
|
||||
<add key="GatewayCredentialsSource" value="4" />
|
||||
|
||||
<!-- Devices and resources: Preset the Checkbox values to either true or false -->
|
||||
<add key="xPrinterRedirection" value="true" />
|
||||
<add key="xClipboard" value="true" />
|
||||
<add key="xDriveRedirection" value="false" />
|
||||
<add key="xPnPRedirection" value="false" />
|
||||
<add key="xPortRedirection" value="false" />
|
||||
|
||||
<!-- Public/Private Mode Timeout for FBA -->
|
||||
<add key="PublicModeSessionTimeoutInMinutes" value="20" />
|
||||
<add key="PrivateModeSessionTimeoutInMinutes" value="240" />
|
||||
|
||||
<!-- Checkbox to opt for optimized LAN experience -->
|
||||
<add key="ShowOptimizeExperience" value="false" />
|
||||
<add key="OptimizeExperienceState" value="false" />
|
||||
|
||||
</appSettings>
|
||||
|
||||
<connectionStrings/>
|
||||
|
||||
<system.web>
|
||||
<!--
|
||||
The <authentication> section enables configuration
|
||||
of the security authentication mode used by
|
||||
ASP.NET to identify an incoming user.
|
||||
-->
|
||||
<!--
|
||||
To turn on Windows Authentication:
|
||||
- uncomment <authentication mode="Windows"/> section
|
||||
- and comment out:
|
||||
1) <authentication mode="Forms"> section.
|
||||
2) <modules> and <security> sections in <system.webServer> section at the end of the file.
|
||||
3) Optional: Windows Authentication will work in https. However, to turn off https, disable 'Require SSL' for both RDWeb and RDWeb/Pages VDIR.
|
||||
Launch IIS Manager UI, click on RDWeb VDIR, double click on SSL Settings in the middle pane, uncheck 'Require SSL' and
|
||||
click Apply in the top right in the right pane. Repeat the steps for RDWeb/Pages VDIR.
|
||||
-->
|
||||
|
||||
<!--
|
||||
<authentication mode="Windows"/>
|
||||
-->
|
||||
<authentication mode="Forms">
|
||||
<forms loginUrl="default.aspx" name="TSWAAuthHttpOnlyCookie" protection="All" requireSSL="true" />
|
||||
</authentication>
|
||||
|
||||
<webParts>
|
||||
<personalization defaultProvider="TSPortalProvider">
|
||||
<providers>
|
||||
<add name="TSPortalProvider" type="Microsoft.TerminalServices.Publishing.Portal.TSPortalProvider"/>
|
||||
</providers>
|
||||
<authorization>
|
||||
<allow users="*" verbs="enterSharedScope">
|
||||
</allow>
|
||||
</authorization>
|
||||
</personalization>
|
||||
</webParts>
|
||||
</system.web>
|
||||
|
||||
<system.webServer>
|
||||
<modules runAllManagedModulesForAllRequests="true">
|
||||
<remove name="FormsAuthentication" />
|
||||
<add name="RDWAFormsAuthenticationModule" type="Microsoft.TerminalServices.Publishing.Portal.FormAuthentication.TSDomainFormsAuthentication" />
|
||||
</modules>
|
||||
|
||||
<security>
|
||||
<authentication>
|
||||
<windowsAuthentication enabled="false" />
|
||||
<anonymousAuthentication enabled="true" />
|
||||
</authentication>
|
||||
</security>
|
||||
<httpRedirect enabled="false" />
|
||||
</system.webServer>
|
||||
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="TSPortalWebPart" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="6.0.0.0" newVersion="6.1.0.0"/>
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
|
||||
<location path="rdp">
|
||||
<system.web>
|
||||
<authorization>
|
||||
<deny users="?" />
|
||||
</authorization>
|
||||
</system.web>
|
||||
<system.webServer>
|
||||
<handlers>
|
||||
<add name="RDWAResourceFileHandler" path="rdp" verb="*" type="Microsoft.TerminalServices.Publishing.Portal.ResourceFileHandler" preCondition="integratedMode" allowPathInfo="true"/>
|
||||
</handlers>
|
||||
</system.webServer>
|
||||
</location>
|
||||
</configuration>
|
2
RDSFactorWeb/RDWeb/Pages/WebFeed.aspx
Normal file
|
@ -0,0 +1,2 @@
|
|||
<%@ Page Language="C#" CodeFile="WebFeed.aspx.cs" Inherits="TSWF_PagesVdir.TsWebFeed" Trace="false" %>
|
||||
<%=oXML%>
|
99
RDSFactorWeb/RDWeb/Pages/WebFeed.aspx.cs
Normal file
|
@ -0,0 +1,99 @@
|
|||
//
|
||||
// Copyright (C) Microsoft. All rights reserved.
|
||||
//
|
||||
using Microsoft.TerminalServices.Publishing.Portal;
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.Security;
|
||||
using System.Web.Configuration;
|
||||
using System.Xml;
|
||||
using Microsoft.TerminalServices.Publishing.Portal.FormAuthentication;
|
||||
|
||||
namespace TSWF_PagesVdir
|
||||
{
|
||||
public partial class TsWebFeed : System.Web.UI.Page
|
||||
{
|
||||
public string oXML;
|
||||
|
||||
protected void Page_Init(object sender, EventArgs e)
|
||||
{
|
||||
AuthenticationMode eAuthenticationMode = AuthenticationMode.None;
|
||||
string strUserIdentity = "";
|
||||
|
||||
AuthenticationSection objAuthenticationSection = ConfigurationManager.GetSection("system.web/authentication") as AuthenticationSection;
|
||||
if ( objAuthenticationSection != null )
|
||||
{
|
||||
eAuthenticationMode = objAuthenticationSection.Mode;
|
||||
}
|
||||
|
||||
if ( eAuthenticationMode == AuthenticationMode.Forms )
|
||||
{
|
||||
if ( HttpContext.Current.User.Identity.IsAuthenticated == false )
|
||||
{
|
||||
Uri baseUrl = new Uri(PageContentsHelper.GetBaseUri(Context), Request.FilePath + "/..");
|
||||
string queryString = PageContentsHelper.AppendTenantIdToQuery("?ReturnUrl=../WebFeed.aspx");
|
||||
Response.Redirect(baseUrl.ToString() + "default.aspx" + queryString);
|
||||
}
|
||||
|
||||
TSFormAuthTicketInfo objTSFormAuthTicketInfo = new TSFormAuthTicketInfo(HttpContext.Current);
|
||||
strUserIdentity = objTSFormAuthTicketInfo.UserIdentity;
|
||||
//
|
||||
// TODO: Need to correctly call this
|
||||
//
|
||||
//Response.Write("\nshowWorkspaceNotification();");
|
||||
}
|
||||
|
||||
HttpContext.Current.Response.AppendHeader("Vary", "Accept");
|
||||
|
||||
FeedXmlVersion xmlVersion;
|
||||
string contentType;
|
||||
ContentNegotiationHelper.GetPreferredXmlVersion(out xmlVersion, out contentType);
|
||||
|
||||
// downlevel requests cannot specify a folder
|
||||
if (xmlVersion == FeedXmlVersion.Win7
|
||||
&& Request.PathInfo.Length != 0)
|
||||
{
|
||||
Response.StatusCode = 404;
|
||||
Response.End();
|
||||
}
|
||||
|
||||
HttpContext.Current.Response.ContentType = contentType;
|
||||
|
||||
string rdpRenderMode = HttpContext.Current.Request.Params.Get("rdpRender");
|
||||
bool rdpEmbed = !String.IsNullOrEmpty(rdpRenderMode) && rdpRenderMode.Trim().ToLower(CultureInfo.InvariantCulture).Equals("inline");
|
||||
|
||||
try
|
||||
{
|
||||
WebFeed tswf = new WebFeed(rdpEmbed ? RdpType.Both : RdpType.Link, false);
|
||||
oXML = tswf.GenerateFeed(strUserIdentity, xmlVersion, Request.PathInfo, true);
|
||||
}
|
||||
catch (WorkspaceUnknownFolderException)
|
||||
{
|
||||
Response.StatusCode = 404;
|
||||
Response.End();
|
||||
}
|
||||
catch (InvalidTenantException)
|
||||
{
|
||||
Response.StatusCode = 404;
|
||||
Response.End();
|
||||
}
|
||||
catch (WorkspaceUnavailableException wue)
|
||||
{
|
||||
// This exception is raised when we cannot contact the appropriate sources to obtain the workspace information.
|
||||
// This is an edge case that can ocurr e.g. if the cpub server we're pointing to is down.
|
||||
Response.StatusCode = 503;
|
||||
// Write a simple text error string to the body, so that if an administrator happens to be accessing the feed via a browser, we can point them in the right direction
|
||||
// We need to wrap this in some sort of tags, otherwise IE does not display the message (since it expects an XML content-type)
|
||||
Response.Write("<Error>" + wue.Message + "</Error>");
|
||||
Response.End();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
536
RDSFactorWeb/RDWeb/Pages/en-US/Default.aspx
Normal file
|
@ -0,0 +1,536 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<% @Page Language="C#" Debug="false" ResponseEncoding="utf-8" ContentType="text/xml" %>
|
||||
<% @Import Namespace="System.Globalization" %>
|
||||
<% @Import Namespace="System.Web.Configuration" %>
|
||||
<% @Import Namespace="System.Security" %>
|
||||
<% @Import Namespace="Microsoft.TerminalServices.Publishing.Portal.FormAuthentication" %>
|
||||
<% @Import Namespace="Microsoft.TerminalServices.Publishing.Portal" %>
|
||||
<script runat="server">
|
||||
|
||||
//
|
||||
// Customizable Text
|
||||
//
|
||||
string L_CompanyName_Text = "Work Resources";
|
||||
|
||||
//
|
||||
// Localizable Text
|
||||
//
|
||||
const string L_RemoteAppProgramsLabel_Text = "RemoteApp and Desktops";
|
||||
const string L_DesktopTab_Text = "Connect to a remote PC";
|
||||
const string L_BadFolderErrorTitle_Text = "Folder does not exist. Redirecting...";
|
||||
const string L_BadFolderErrorBody_Text = "You have attempted to load a folder that does not exist. In a moment, you will be redirected to the top-level folder.";
|
||||
const string L_RenderFailTitle_Text = "Error: Unable to display RD Web Access";
|
||||
const string L_RenderFailP1_Text = "An unexpected error has occurred that is preventing this page from being displayed correctly.";
|
||||
const string L_RenderFailP2_Text = "Viewing this page in Internet Explorer with the Enhanced Security Configuration enabled can cause such an error.";
|
||||
const string L_RenderFailP3_Text = "Please try loading this page without the Enhanced Security Configuration enabled. If this error continues to be displayed, please contact your administrator.";
|
||||
|
||||
//
|
||||
// Page Variables
|
||||
//
|
||||
public string sHelpSourceServer, sLocalHelp, sRDCInstallUrl, strWorkspaceName;
|
||||
public Uri baseUrl, stylesheetUrl, renderFailCssUrl;
|
||||
public bool bShowPublicCheckBox = false, bPrivateMode = false, bRTL = false;
|
||||
public int SessionTimeoutInMinutes = 0;
|
||||
public bool bShowOptimizeExperience = false, bOptimizeExperienceState = false;
|
||||
public AuthenticationMode eAuthenticationMode = AuthenticationMode.None;
|
||||
public string strTicketName = "";
|
||||
public string strDomainUserName = "", strUserIdentity = "";
|
||||
public string strAppFeed;
|
||||
|
||||
public WorkspaceInfo objWorkspaceInfo = null;
|
||||
|
||||
protected void Page_PreInit(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
string strReturnUrl = "";
|
||||
string strReturnUrlPage = "";
|
||||
|
||||
// gives us https://<hostname>[:port]/rdweb/pages/<lang>/
|
||||
baseUrl = new Uri(new Uri(PageContentsHelper.GetBaseUri(Context), Request.FilePath), ".");
|
||||
|
||||
try
|
||||
{
|
||||
string strShowOptimzeExperienceValue = ConfigurationManager.AppSettings["ShowOptimizeExperience"];
|
||||
if ( String.IsNullOrEmpty(strShowOptimzeExperienceValue) == false )
|
||||
{
|
||||
if ( strShowOptimzeExperienceValue.Equals( System.Boolean.TrueString, StringComparison.OrdinalIgnoreCase) )
|
||||
{
|
||||
bShowOptimizeExperience = true;
|
||||
string strOptimizeExperienceStateValue = ConfigurationManager.AppSettings["OptimizeExperienceState"];
|
||||
if ( String.IsNullOrEmpty(strOptimizeExperienceStateValue) == false )
|
||||
{
|
||||
if ( strOptimizeExperienceStateValue.Equals( System.Boolean.TrueString, StringComparison.OrdinalIgnoreCase) )
|
||||
{
|
||||
bOptimizeExperienceState = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception objException)
|
||||
{
|
||||
}
|
||||
|
||||
AuthenticationSection objAuthenticationSection = ConfigurationManager.GetSection("system.web/authentication") as AuthenticationSection;
|
||||
if ( objAuthenticationSection != null )
|
||||
{
|
||||
eAuthenticationMode = objAuthenticationSection.Mode;
|
||||
}
|
||||
|
||||
if ( Request.QueryString != null )
|
||||
{
|
||||
NameValueCollection objQueryString = Request.QueryString;
|
||||
|
||||
if ( objQueryString["ReturnUrl"] != null )
|
||||
{
|
||||
strReturnUrlPage = objQueryString["ReturnUrl"];
|
||||
strReturnUrl = "?ReturnUrl=" + HttpUtility.UrlEncode(strReturnUrlPage);
|
||||
}
|
||||
}
|
||||
|
||||
if ( eAuthenticationMode == AuthenticationMode.Forms )
|
||||
{
|
||||
if ( HttpContext.Current.User.Identity.IsAuthenticated == false )
|
||||
{
|
||||
string strQueryString;
|
||||
if (String.IsNullOrEmpty(strReturnUrl))
|
||||
{
|
||||
strQueryString = "?ReturnUrl=" + Request.Path;
|
||||
}
|
||||
else
|
||||
{
|
||||
strQueryString = strReturnUrl;
|
||||
}
|
||||
|
||||
Response.Redirect(new Uri(baseUrl, "login.aspx" + PageContentsHelper.AppendTenantIdToQuery(strQueryString)).AbsoluteUri);
|
||||
}
|
||||
|
||||
TSFormAuthTicketInfo objTSFormAuthTicketInfo = new TSFormAuthTicketInfo(HttpContext.Current);
|
||||
strUserIdentity = objTSFormAuthTicketInfo.UserIdentity;
|
||||
bPrivateMode = objTSFormAuthTicketInfo.PrivateMode;
|
||||
strDomainUserName = objTSFormAuthTicketInfo.DomainUserName;
|
||||
|
||||
if ( bPrivateMode == true )
|
||||
{
|
||||
try
|
||||
{
|
||||
string strPrivateModeSessionTimeoutInMinutes = ConfigurationManager.AppSettings["PrivateModeSessionTimeoutInMinutes"].ToString();
|
||||
SessionTimeoutInMinutes = Int32.Parse(strPrivateModeSessionTimeoutInMinutes);
|
||||
}
|
||||
catch (Exception objException)
|
||||
{
|
||||
Console.WriteLine("\nException : " + objException.Message);
|
||||
SessionTimeoutInMinutes = 240;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
string strPublicModeSessionTimeoutInMinutes = ConfigurationManager.AppSettings["PublicModeSessionTimeoutInMinutes"].ToString();
|
||||
SessionTimeoutInMinutes = Int32.Parse(strPublicModeSessionTimeoutInMinutes);
|
||||
}
|
||||
catch (Exception objException)
|
||||
{
|
||||
Console.WriteLine("\nException : " + objException.Message);
|
||||
SessionTimeoutInMinutes = 20;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( eAuthenticationMode == AuthenticationMode.Windows )
|
||||
{
|
||||
bShowPublicCheckBox = true;
|
||||
}
|
||||
|
||||
sRDCInstallUrl = ConfigurationManager.AppSettings["rdcInstallUrl"];
|
||||
|
||||
sLocalHelp = ConfigurationManager.AppSettings["LocalHelp"];
|
||||
|
||||
stylesheetUrl = new Uri(baseUrl, "../Site.xsl");
|
||||
renderFailCssUrl = new Uri(baseUrl, "../RenderFail.css");
|
||||
|
||||
if ((sLocalHelp != null) && (sLocalHelp == "true"))
|
||||
sHelpSourceServer = "./rap-help.htm";
|
||||
else
|
||||
sHelpSourceServer = "http://go.microsoft.com/fwlink/?LinkId=141038";
|
||||
|
||||
try {
|
||||
bRTL = CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft;
|
||||
}
|
||||
catch( NullReferenceException ) {
|
||||
}
|
||||
|
||||
WebFeed tswf = null;
|
||||
try
|
||||
{
|
||||
tswf = new WebFeed(RdpType.Both, true);
|
||||
strAppFeed = tswf.GenerateFeed(
|
||||
strUserIdentity,
|
||||
FeedXmlVersion.Win8,
|
||||
(Request.PathInfo.Length > 0) ? Request.PathInfo : "/",
|
||||
false);
|
||||
}
|
||||
catch (WorkspaceUnknownFolderException)
|
||||
{
|
||||
BadFolderRedirect();
|
||||
}
|
||||
catch (InvalidTenantException)
|
||||
{
|
||||
Response.StatusCode = 404;
|
||||
Response.End();
|
||||
}
|
||||
catch (WorkspaceUnavailableException wue)
|
||||
{
|
||||
// This exception is raised when we cannot contact the appropriate sources to obtain the workspace information.
|
||||
// This is an edge case that can ocurr e.g. if the cpub server we're pointing to is down and the values are not specified in the Web.config.
|
||||
Response.StatusCode = 503;
|
||||
Response.End();
|
||||
}
|
||||
|
||||
if ( tswf != null )
|
||||
{
|
||||
objWorkspaceInfo = tswf.GetFetchedWorkspaceInfo();
|
||||
if ( objWorkspaceInfo != null )
|
||||
{
|
||||
strWorkspaceName = objWorkspaceInfo.WorkspaceName;
|
||||
}
|
||||
}
|
||||
if ( String.IsNullOrEmpty(strWorkspaceName ) )
|
||||
{
|
||||
strWorkspaceName = L_CompanyName_Text;
|
||||
}
|
||||
}
|
||||
|
||||
protected void Page_Init(object sender, EventArgs e)
|
||||
{
|
||||
Response.Cache.SetCacheability(HttpCacheability.NoCache);
|
||||
}
|
||||
|
||||
private void BadFolderRedirect()
|
||||
{
|
||||
Response.ContentType = "text/html";
|
||||
Response.Write(
|
||||
@"<html>
|
||||
<head>
|
||||
<meta http-equiv=""refresh"" content=""10;url=" + Request.FilePath + @"""/>
|
||||
<title>" + L_BadFolderErrorTitle_Text + @"</title>
|
||||
</head>
|
||||
<body>
|
||||
<p id=""BadFolder1"">" + L_BadFolderErrorBody_Text + @"</p>
|
||||
</body>
|
||||
</html>");
|
||||
Response.End();
|
||||
}
|
||||
|
||||
</script>
|
||||
<%="<?xml-stylesheet type=\"text/xsl\" href=\"" + SecurityElement.Escape(stylesheetUrl.AbsoluteUri) + "\"?>"%>
|
||||
<%="<?xml-stylesheet type=\"text/css\" href=\"" + SecurityElement.Escape(renderFailCssUrl.AbsoluteUri) + "\"?>"%>
|
||||
<RDWAPage
|
||||
helpurl="<%=sHelpSourceServer%>"
|
||||
domainuser="<%=SecurityElement.Escape(strDomainUserName)%>"
|
||||
workspacename="<%=SecurityElement.Escape(strWorkspaceName)%>"
|
||||
baseurl="<%=SecurityElement.Escape(baseUrl.AbsoluteUri)%>"
|
||||
>
|
||||
<RenderFailureMessage>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title><%=L_RenderFailTitle_Text%></title>
|
||||
</head>
|
||||
<body>
|
||||
<h1><%=L_RenderFailTitle_Text%></h1>
|
||||
<p><%=L_RenderFailP1_Text%></p>
|
||||
<p><%=L_RenderFailP2_Text%></p>
|
||||
<p><%=L_RenderFailP3_Text%></p>
|
||||
</body>
|
||||
</html>
|
||||
</RenderFailureMessage>
|
||||
<HeaderJS>
|
||||
bFormAuthenticationMode = false;
|
||||
<% if ( eAuthenticationMode == AuthenticationMode.Forms ) { %>
|
||||
bFormAuthenticationMode = true;
|
||||
<% } %>
|
||||
iSessionTimeout = parseInt("<%=SessionTimeoutInMinutes%>");
|
||||
</HeaderJS>
|
||||
<BodyAttr
|
||||
onload="onAuthenticatedPageload(event)"
|
||||
onunload="onPageUnload(event)"
|
||||
onmousedown="onUserActivity(event)"
|
||||
onmousewheel="onUserActivity(event)"
|
||||
onscroll="onUserActivity(event)"
|
||||
onkeydown="onUserActivity(event)" />
|
||||
<NavBar
|
||||
<% if ( eAuthenticationMode == AuthenticationMode.Forms ) { %>
|
||||
showsignout="true"
|
||||
<% } %>
|
||||
activetab="PORTAL_REMOTE_PROGRAMS"
|
||||
>
|
||||
<Tab id="PORTAL_REMOTE_PROGRAMS" href="Default.aspx"><%=L_RemoteAppProgramsLabel_Text%></Tab>
|
||||
<%
|
||||
if (ConfigurationManager.AppSettings["ShowDesktops"].ToString() == "true")
|
||||
{
|
||||
%>
|
||||
<Tab id="PORTAL_REMOTE_DESKTOPS" href="Desktops.aspx"><%=L_DesktopTab_Text%></Tab>
|
||||
<%
|
||||
}
|
||||
%>
|
||||
|
||||
</NavBar>
|
||||
<Style>
|
||||
.tswa_appboard {width:850px;}
|
||||
.tswa_ShowOptimizeExperienceShiftedUp
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:397px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
|
||||
#PORTAL_REMOTE_DESKTOPS
|
||||
{
|
||||
display:none;
|
||||
}
|
||||
<%
|
||||
if ( bShowPublicCheckBox )
|
||||
{
|
||||
%>
|
||||
.tswa_ShowOptimizeExperience
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:445px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
<%
|
||||
}
|
||||
else
|
||||
{
|
||||
%>
|
||||
.tswa_ShowOptimizeExperience
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:462px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
<%
|
||||
}
|
||||
%>
|
||||
.tswa_PublicCheckboxMore
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:417px;
|
||||
width:850px;
|
||||
height:50px;
|
||||
border-top: 1px solid gray;
|
||||
background-color:white;
|
||||
z-index:4000;
|
||||
padding-top:4px;
|
||||
}
|
||||
|
||||
.tswa_PublicCheckboxLess
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:462px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
|
||||
<% if (bRTL) { %>
|
||||
/* Rules that are specific to RTL language environments */
|
||||
|
||||
.tswa_appboard
|
||||
{
|
||||
padding-right:10px;
|
||||
}
|
||||
|
||||
.tswa_boss, .tswa_folder_boss, .tswa_up_boss
|
||||
{
|
||||
float:right;
|
||||
}
|
||||
|
||||
.tswa_error_icon
|
||||
{
|
||||
margin-left: 0px;
|
||||
padding-left: 0px;
|
||||
margin-right:10px;
|
||||
padding-right:45px;
|
||||
}
|
||||
|
||||
.tswa_error_msg
|
||||
{
|
||||
margin-left:0px;
|
||||
padding-right:0px;
|
||||
margin-right:55px;
|
||||
padding-left:10px;
|
||||
}
|
||||
|
||||
<% } %>
|
||||
</Style>
|
||||
<Style condition="if IE 6">
|
||||
.tswa_appdisplay
|
||||
{
|
||||
background-color:transparent;left:5px;top:0px;height:450px;width:850px;
|
||||
}
|
||||
|
||||
|
||||
.tswa_ShowOptimizeExperienceShiftedUp
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:415px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
|
||||
<%
|
||||
if ( bShowPublicCheckBox )
|
||||
{
|
||||
%>
|
||||
.tswa_ShowOptimizeExperience
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:463px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
<%
|
||||
}
|
||||
else
|
||||
{
|
||||
%>
|
||||
.tswa_ShowOptimizeExperience
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:480px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
<%
|
||||
}
|
||||
%>
|
||||
.tswa_PublicCheckboxMore
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:435px;
|
||||
width:850px;
|
||||
height:50px;
|
||||
border-top: 1px solid gray;
|
||||
background-color:white;
|
||||
z-index:4000;
|
||||
padding-top:4px;
|
||||
}
|
||||
|
||||
.tswa_PublicCheckboxLess
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:480px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
</Style>
|
||||
<Style condition="if gte IE 7">
|
||||
.tswa_appdisplay
|
||||
{
|
||||
background-color:transparent;
|
||||
left:5px;
|
||||
top:0px;
|
||||
height:440px;
|
||||
width:850px;
|
||||
}
|
||||
|
||||
.tswa_ShowOptimizeExperienceShiftedUp
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:397px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
<%
|
||||
if ( bShowPublicCheckBox )
|
||||
{
|
||||
%>
|
||||
.tswa_ShowOptimizeExperience
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:445px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
<%
|
||||
}
|
||||
else
|
||||
{
|
||||
%>
|
||||
.tswa_ShowOptimizeExperience
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:462px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
<%
|
||||
}
|
||||
%>
|
||||
.tswa_PublicCheckboxMore
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:417px;
|
||||
width:850px;
|
||||
height:50px;
|
||||
border-top: 1px solid gray;
|
||||
background-color:white;
|
||||
z-index:4000;
|
||||
padding-top:4px;
|
||||
}
|
||||
|
||||
.tswa_PublicCheckboxLess
|
||||
{
|
||||
position:absolute;
|
||||
left:10px;
|
||||
top:462px;
|
||||
width:850px;
|
||||
height:20px;
|
||||
background-color:white;
|
||||
}
|
||||
</Style>
|
||||
<AppFeed
|
||||
showpubliccheckbox="<%=bShowPublicCheckBox.ToString().ToLower()%>"
|
||||
privatemode="<%=bPrivateMode.ToString().ToLower()%>"
|
||||
showoptimizeexperience="<%=bShowOptimizeExperience.ToString().ToLower()%>"
|
||||
optimizeexperiencestate="<%=bOptimizeExperienceState.ToString().ToLower()%>"
|
||||
<%
|
||||
if (!String.IsNullOrEmpty(sRDCInstallUrl)) {
|
||||
%>
|
||||
rdcinstallurl="<%=SecurityElement.Escape(sRDCInstallUrl)%>"
|
||||
<%
|
||||
}
|
||||
%>
|
||||
>
|
||||
<%=strAppFeed%>
|
||||
</AppFeed>
|
||||
</RDWAPage>
|
973
RDSFactorWeb/RDWeb/Pages/en-US/Desktops.aspx
Normal file
|
@ -0,0 +1,973 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="../Site.xsl"?>
|
||||
<?xml-stylesheet type="text/css" href="../RenderFail.css"?>
|
||||
<% @Page Language="C#" Debug="false" ResponseEncoding="utf-8" ContentType="text/xml" %>
|
||||
<% @Import Namespace="System.Globalization " %>
|
||||
<% @Import Namespace="System.Web.Configuration" %>
|
||||
<% @Import Namespace="System.Security" %>
|
||||
<% @Import Namespace="Microsoft.TerminalServices.Publishing.Portal.FormAuthentication" %>
|
||||
<% @Import Namespace="Microsoft.TerminalServices.Publishing.Portal" %>
|
||||
<script runat="server">
|
||||
|
||||
//
|
||||
// Customizable Text
|
||||
//
|
||||
string L_CompanyName_Text = "Work Resources";
|
||||
|
||||
//
|
||||
// Localizable Text
|
||||
//
|
||||
const string L_RemoteAppProgramsLabel_Text = "RemoteApp and Desktops";
|
||||
const string L_DesktopTab_Text = "Connect to a remote PC";
|
||||
const string L_SignOutTab_Text = "Sign out";
|
||||
const string L_HelpTab_Text = "Help";
|
||||
const string L_DesktopHeader_Text = "Remote Desktop Services Remote Desktop Web Connection";
|
||||
const string L_DesktopDesc_Text = "Enter the name of the remote computer that you want to connect to, specify options, and then click Connect.";
|
||||
const string L_Options_Text = "<u>O</u>ptions";
|
||||
const string L_ConnectionOptionsHeader_Text = "Connection options";
|
||||
const string L_RemoteDesktopSize_Text = "<u>R</u>emote desktop size:";
|
||||
const string L_FullScreenLabel_Text = "Full screen";
|
||||
const string L_800x600Label_Text = "800 x 600 pixels";
|
||||
const string L_1024x768Label_Text = "1024 x 768 pixels";
|
||||
const string L_1280x1024Label_Text = "1280 x 1024 pixels";
|
||||
const string L_1600x1200Label_Text = "1600 x 1200 pixels";
|
||||
const string L_ConnectLabel_Text = "Co<u>n</u>nect";
|
||||
const string L_MachineNameAccessKey_Text = "c";
|
||||
const string L_MachineName_Text = "<u>C</u>onnect to:";
|
||||
const string L_ResolutionAccessKey_Text = "r";
|
||||
const string L_Resolution_Text="<u>R</u>emote desktop size:";
|
||||
const string L_OptionsAccessKey_Text = "o";
|
||||
const string L_ConnectAccessKey_Text = "n";
|
||||
const string L_DevAndRes_Text = "Devices and resources";
|
||||
const string L_DevAndResDesc_Text = "Select the devices and resources that you want to use in your remote session.";
|
||||
const string L_PrinterLabel_Text = "Prin<u>t</u>ers";
|
||||
const string L_ClipboardLabel_Text = "C<u>l</u>ipboard";
|
||||
const string L_DrivesLabel_Text = "Dr<u>i</u>ves";
|
||||
const string L_PNPLabel_Text = "Supported Plug and Pl<u>a</u>y devices";
|
||||
const string L_SerialLabel_Text = "S<u>e</u>rial ports";
|
||||
const string L_PrinterRedirectionAccessKey_Text = "t";
|
||||
const string L_ClipboardAccessKey_Text = "l";
|
||||
const string L_DrivesAccessKey_Text = "i";
|
||||
const string L_PNPAccessKey_Text="a";
|
||||
const string L_SerialAccessKey_Text="e";
|
||||
const string L_AdditionalOptions_Text = "Additional options";
|
||||
const string L_SoundLabel_Text = "Remote computer <u>s</u>ound:";
|
||||
const string L_SoundToComputerLabel_Text = "Bring to this computer";
|
||||
const string L_SoundDisabledLabel_Text = "Do not play";
|
||||
const string L_SoundAtServerLabel_Text = "Leave at remote computer";
|
||||
const string L_KeyLabel_Text = "Apply <u>k</u>eyboard shortcuts:";
|
||||
const string L_KeyAtServerLabel_Text = "On the remote computer";
|
||||
const string L_KeyAtComputerLabel_Text = "On the local computer";
|
||||
const string L_KeyAtServerFullScreenLabel_Text = "In Full screen mode only";
|
||||
const string L_PerformanceLabel_Text = "<u>P</u>erformance:";
|
||||
const string L_ModemLabel_Text = "Modem (56 Kbps)";
|
||||
const string L_LowSpeedBroadbandLabel_Text = "Low-speed broadband (256 Kbps - 2 Mbps)";
|
||||
const string L_SatelliteLabel_Text = "Satellite (2 Mbps - 16 Mbps with high latency)";
|
||||
const string L_HighSpeedBroadbandLabel_Text = "High-speed broadband (2 Mbps - 10 Mbps)";
|
||||
const string L_WANLabel_Text = "WAN (10 Mbps or higher with high latency)";
|
||||
const string L_LANLabel_Text = "LAN (10 Mbps or higher)";
|
||||
const string L_AutoDetectBandWidth_Text = "Detect connection quality automatically";
|
||||
const string L_KeyboardAccessKey_Text = "k";
|
||||
const string L_PerformanceAccessKey_Text = "p";
|
||||
const string L_SoundAccessKey_Text = "s";
|
||||
const string L_PrivateDesc_Text = "By selecting this option you can save your credentials so that they can be used in the future when connecting to these programs. Before you select this option, please ensure that saving your credentials is in compliance with your organization's security policy.";
|
||||
const string L_HideInfoLabel_Text = "Hide additional information...";
|
||||
const string L_MoreInfoLabel_Text = "More information...";
|
||||
const string L_PrivateLabel_Text = "I am using a private computer that complies with my organization's security policy.";
|
||||
const string L_InvalidMachineName_Text = "You must enter a remote computer name.";
|
||||
const string L_RenderFailTitle_Text = "Error: Unable to display RD Web Access";
|
||||
const string L_RenderFailP1_Text = "An unexpected error has occurred that is preventing this page from being displayed correctly.";
|
||||
const string L_RenderFailP2_Text = "Viewing this page in Internet Explorer with the Enhanced Security Configuration enabled can cause such an error.";
|
||||
const string L_RenderFailP3_Text = "Please try loading this page without the Enhanced Security Configuration enabled. If this error continues to be displayed, please contact your administrator.";
|
||||
|
||||
//
|
||||
// Page Variables
|
||||
//
|
||||
public string sHelpSourceServer, sLocalHelp;
|
||||
public bool bPrivateMode = false;
|
||||
public int SessionTimeoutInMinutes = 0;
|
||||
public string DefaultTSGateway = "";
|
||||
public string GatewayCredentialsSource = "";
|
||||
public string xPrinterRedirection;
|
||||
public string xClipboard;
|
||||
public string xDriveRedirection;
|
||||
public string xPnPRedirection;
|
||||
public string xPortRedirection;
|
||||
public string strDomainUserName = "";
|
||||
public AuthenticationMode eAuthenticationMode = AuthenticationMode.None;
|
||||
public Uri baseUrl;
|
||||
|
||||
public WorkspaceInfo objWorkspaceInfo = null;
|
||||
|
||||
protected void Page_PreInit(object sender, EventArgs e)
|
||||
{
|
||||
// Deny requests with "additional path information"
|
||||
if (Request.PathInfo.Length != 0)
|
||||
{
|
||||
Response.StatusCode = 404;
|
||||
Response.End();
|
||||
}
|
||||
|
||||
// gives us https://<hostname>[:port]/rdweb/pages/<lang>/
|
||||
baseUrl = new Uri(new Uri(PageContentsHelper.GetBaseUri(Context), Request.FilePath), ".");
|
||||
|
||||
AuthenticationSection objAuthenticationSection = ConfigurationManager.GetSection("system.web/authentication") as AuthenticationSection;
|
||||
if ( objAuthenticationSection != null )
|
||||
{
|
||||
eAuthenticationMode = objAuthenticationSection.Mode;
|
||||
}
|
||||
|
||||
if ( eAuthenticationMode == AuthenticationMode.Forms )
|
||||
{
|
||||
if ( HttpContext.Current.User.Identity.IsAuthenticated == false )
|
||||
{
|
||||
Response.Redirect("login.aspx?ReturnUrl=desktops.aspx");
|
||||
}
|
||||
TSFormAuthTicketInfo objTSFormAuthTicketInfo = new TSFormAuthTicketInfo(HttpContext.Current);
|
||||
bPrivateMode = objTSFormAuthTicketInfo.PrivateMode;
|
||||
strDomainUserName = objTSFormAuthTicketInfo.DomainUserName;
|
||||
|
||||
if ( bPrivateMode == true )
|
||||
{
|
||||
try
|
||||
{
|
||||
string strPrivateModeSessionTimeoutInMinutes = ConfigurationManager.AppSettings["PrivateModeSessionTimeoutInMinutes"].ToString();
|
||||
SessionTimeoutInMinutes = Int32.Parse(strPrivateModeSessionTimeoutInMinutes);
|
||||
}
|
||||
catch (Exception objException)
|
||||
{
|
||||
Console.WriteLine("\nException : " + objException.Message);
|
||||
SessionTimeoutInMinutes = 240;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
string strPublicModeSessionTimeoutInMinutes = ConfigurationManager.AppSettings["PublicModeSessionTimeoutInMinutes"].ToString();
|
||||
SessionTimeoutInMinutes = Int32.Parse(strPublicModeSessionTimeoutInMinutes);
|
||||
}
|
||||
catch (Exception objException)
|
||||
{
|
||||
Console.WriteLine("\nException : " + objException.Message);
|
||||
SessionTimeoutInMinutes = 20;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
objWorkspaceInfo = PageContentsHelper.GetWorkspaceInfo();
|
||||
if ( objWorkspaceInfo != null )
|
||||
{
|
||||
string strWorkspaceName = objWorkspaceInfo.WorkspaceName;
|
||||
if ( String.IsNullOrEmpty(strWorkspaceName ) == false )
|
||||
{
|
||||
L_CompanyName_Text = strWorkspaceName;
|
||||
}
|
||||
}
|
||||
|
||||
sLocalHelp = ConfigurationManager.AppSettings["LocalHelp"];
|
||||
|
||||
if ((sLocalHelp != null) && (sLocalHelp == "true"))
|
||||
sHelpSourceServer = "./rap-help.htm";
|
||||
else
|
||||
sHelpSourceServer = "http://go.microsoft.com/fwlink/?LinkId=141038";
|
||||
|
||||
}
|
||||
|
||||
protected void Page_Init(object sender, EventArgs e)
|
||||
{
|
||||
DefaultTSGateway = ConfigurationManager.AppSettings["DefaultTSGateway"].ToString();
|
||||
GatewayCredentialsSource = ConfigurationManager.AppSettings["GatewayCredentialsSource"].ToString();
|
||||
|
||||
xPrinterRedirection = ConfigurationManager.AppSettings["xPrinterRedirection"].ToString();
|
||||
xClipboard = ConfigurationManager.AppSettings["xClipboard"].ToString();
|
||||
xDriveRedirection = ConfigurationManager.AppSettings["xDriveRedirection"].ToString();
|
||||
xPnPRedirection = ConfigurationManager.AppSettings["xPnPRedirection"].ToString();
|
||||
xPortRedirection = ConfigurationManager.AppSettings["xPortRedirection"].ToString();
|
||||
|
||||
Response.Cache.SetCacheability(HttpCacheability.NoCache);
|
||||
}
|
||||
private string IsChecked(string xArg)
|
||||
{
|
||||
return (xArg == "true") ? "checked='checked'" : "";
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<RDWAPage
|
||||
helpurl="<%=sHelpSourceServer%>"
|
||||
domainuser="<%=SecurityElement.Escape(strDomainUserName)%>"
|
||||
workspacename="<%=SecurityElement.Escape(L_CompanyName_Text)%>"
|
||||
baseurl="<%=SecurityElement.Escape(baseUrl.AbsoluteUri)%>"
|
||||
>
|
||||
<RenderFailureMessage>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title><%=L_RenderFailTitle_Text%></title>
|
||||
</head>
|
||||
<body>
|
||||
<h1><%=L_RenderFailTitle_Text%></h1>
|
||||
<p><%=L_RenderFailP1_Text%></p>
|
||||
<p><%=L_RenderFailP2_Text%></p>
|
||||
<p><%=L_RenderFailP3_Text%></p>
|
||||
</body>
|
||||
</html>
|
||||
</RenderFailureMessage>
|
||||
<HeaderJS>
|
||||
bFormAuthenticationMode = false;
|
||||
<% if ( eAuthenticationMode == AuthenticationMode.Forms ) { %>
|
||||
bFormAuthenticationMode = true;
|
||||
<% } %>
|
||||
iSessionTimeout = parseInt("<%=SessionTimeoutInMinutes%>");
|
||||
</HeaderJS>
|
||||
<BodyAttr onload="onAuthenticatedPageload(event)" onunload="onPageUnload(event)" onmousedown="onUserActivity(event)" onmousewheel="onUserActivity(event)" onscroll="onUserActivity(event)" onkeydown="onUserActivity(event)"/>
|
||||
<NavBar
|
||||
<% if ( eAuthenticationMode == AuthenticationMode.Forms ) { %>
|
||||
showsignout="true"
|
||||
<% } %>
|
||||
activetab="PORTAL_REMOTE_DESKTOPS"
|
||||
>
|
||||
<Tab id="PORTAL_REMOTE_PROGRAMS" href="Default.aspx"><%=L_RemoteAppProgramsLabel_Text%></Tab>
|
||||
<Tab id="PORTAL_REMOTE_DESKTOPS" href="Desktops.aspx"><%=L_DesktopTab_Text%></Tab>
|
||||
</NavBar>
|
||||
<HTMLMainContent>
|
||||
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td width="30"> </td>
|
||||
|
||||
|
||||
<td>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
|
||||
<tr height="20">
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%=L_DesktopDesc_Text%></td>
|
||||
</tr>
|
||||
|
||||
<tr height="20">
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b><%=L_ConnectionOptionsHeader_Text%></b></td>
|
||||
</tr>
|
||||
|
||||
<tr height="7">
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td align="right" valign="middle" style="width:160px;padding-bottom:3px;">
|
||||
<label accesskey="<%=L_MachineNameAccessKey_Text %>" for="MachineName"><%=L_MachineName_Text %></label>
|
||||
</td>
|
||||
<td width="7"></td>
|
||||
<td valign="top" style="padding-bottom:4px;padding-right:4px;" colspan="2">
|
||||
 <input name="MachineName" maxlength="255" id="MachineName" class="textInputField" type="text"
|
||||
onfocus="updateConnectButtonState(this);" onblur="updateConnectButtonState(this);"
|
||||
onkeyup="onConnectToKeyUp(this);" onpropertychange="onConnectToPropertyChange(this);"/>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="trErrorInvalidMachine" style="display:none" >
|
||||
<td align="right" valign="top"> </td>
|
||||
<td width="7"></td>
|
||||
<td height="20"> <span class="wrng"><%=L_InvalidMachineName_Text%></span></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td align="right" valign="top">
|
||||
<label accesskey="<%=L_ResolutionAccessKey_Text %>" for="comboResolution"><%=L_Resolution_Text %></label>
|
||||
</td>
|
||||
<td width="7"></td>
|
||||
<td valign="top" style="padding-bottom: 4px;">
|
||||
 <select class="topspace" id="comboResolution" style="width: 270px" name="comboResolution">
|
||||
<option value="0" selected="selected"><%=L_FullScreenLabel_Text %></option>
|
||||
<option value="1"><%=L_800x600Label_Text %></option>
|
||||
<option value="2"><%=L_1024x768Label_Text %></option>
|
||||
<option value="3"><%=L_1280x1024Label_Text %></option>
|
||||
<option value="4"><%=L_1600x1200Label_Text %></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right" valign="top"> </td>
|
||||
<td width="7"></td>
|
||||
<td valign="top" style="padding-top: 4px; padding-bottom: 10px;">
|
||||
 <button type="button" id="ButtonOptions" name="ButtonOptions" class="formButton" onclick="jscript:hideshowOptions();" accesskey="<%=L_OptionsAccessKey_Text %>"><%=L_Options_Text %> >></button>
|
||||
 <button type="button" id="ButtonConnect" name="ButtonConnect" disabled="disabled" class="formButton" onclick="BtnConnect()" accesskey="<%=L_ConnectAccessKey_Text %>"><%=L_ConnectLabel_Text %></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr height="20">
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<!-- ******************** Hidden Row for 'Additional Options' ******************** -->
|
||||
<tr>
|
||||
<td>
|
||||
<table cellpadding="0" cellspacing="0" border="0" id="opt_panel" style="visibility: hidden;">
|
||||
|
||||
<tr>
|
||||
<td><b><%=L_DevAndRes_Text%></b></td>
|
||||
</tr>
|
||||
|
||||
<tr height="7">
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%=L_DevAndResDesc_Text %></td>
|
||||
</tr>
|
||||
|
||||
<tr height="7">
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td width="167"></td>
|
||||
<td>
|
||||
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td><input type="checkbox" value="OFF" id="xPrinterRedirection" name="xPrinterRedirection" <%=IsChecked(xPrinterRedirection)%>/></td>
|
||||
<td><label accesskey="<%=L_PrinterRedirectionAccessKey_Text %>" for="xPrinterRedirection"><%=L_PrinterLabel_Text %></label></td>
|
||||
<td width="7"></td>
|
||||
<td><input type="checkbox" value="OFF" id="xClipboard" name="xClipboard" <%=IsChecked(xClipboard)%>/></td>
|
||||
<td><label accesskey="<%=L_ClipboardAccessKey_Text %>" for="xClipboard"><%=L_ClipboardLabel_Text %></label></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><input type="checkbox" value="OFF" id="xDriveRedirection" name="xDriveRedirection" <%=IsChecked(xDriveRedirection)%> /></td>
|
||||
<td><label id="xDriveRedirection_Label" accesskey="<%=L_DrivesAccessKey_Text %>" for="xDriveRedirection"><%=L_DrivesLabel_Text %> </label></td>
|
||||
<td width="7"></td>
|
||||
<td><input type="checkbox" value="OFF" id="xPnPRedirection" name="xPnPRedirection" <%=IsChecked(xPnPRedirection)%> /></td>
|
||||
<td><label id="xPnPRedirection_Label" accesskey="<%=L_PNPAccessKey_Text %>" for="xPnPRedirection"><%=L_PNPLabel_Text %></label></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><input type="checkbox" value="OFF" id="xPortRedirection" name="xPortRedirection" <%=IsChecked(xPortRedirection)%> /></td>
|
||||
<td><label id="xPortRedirection_Label" accesskey="<%=L_SerialAccessKey_Text %>" for="xPortRedirection"><%=L_SerialLabel_Text %></label></td>
|
||||
<td width="7"></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr height="20">
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<td><b><%=L_AdditionalOptions_Text%></b></td>
|
||||
</tr>
|
||||
|
||||
<tr height="7">
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
<table cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td align="right" valign="top" width="160">
|
||||
<label accesskey="<%=L_SoundAccessKey_Text %>" for="comboAudio"><%=L_SoundLabel_Text %></label>
|
||||
</td>
|
||||
<td width="7"></td>
|
||||
<td valign="top" style="padding-bottom: 4px;" width="300">
|
||||
 <select class="topspace" id="comboAudio" style="width: 270px" name="comboAudio">
|
||||
<option value="0" selected="selected"><%=L_SoundToComputerLabel_Text %></option>
|
||||
<option value="1"><%=L_SoundAtServerLabel_Text %></option>
|
||||
<option value="2"><%=L_SoundDisabledLabel_Text %></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right" valign="top">
|
||||
<label accesskey="<%=L_KeyboardAccessKey_Text %>" for="comboKeyboard"><%=L_KeyLabel_Text %></label>
|
||||
</td>
|
||||
<td width="7"></td>
|
||||
<td valign="top" style="padding-bottom: 4px;">
|
||||
 <select class="topspace" id="comboKeyboard" style="width: 270px" name="comboKeyboard">
|
||||
<option value="0"><%=L_KeyAtComputerLabel_Text %></option>
|
||||
<option value="1"><%=L_KeyAtServerLabel_Text %></option>
|
||||
<option value="2" selected="selected"><%=L_KeyAtServerFullScreenLabel_Text %></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right" valign="top">
|
||||
<label accesskey="<%=L_PerformanceAccessKey_Text %>" for="comboPerfomance"><%=L_PerformanceLabel_Text %></label>
|
||||
</td>
|
||||
<td width="7"></td>
|
||||
<td valign="top" style="padding-bottom: 4px;">
|
||||
 <select class="topspace" id="comboPerfomance" style="width: 270px" name="comboPerfomance"
|
||||
onchange="jscript:setPerf();">
|
||||
<option value="1"><%=L_ModemLabel_Text%></option>
|
||||
<option value="2"><%=L_LowSpeedBroadbandLabel_Text%></option>
|
||||
<option value="3"><%=L_SatelliteLabel_Text%></option>
|
||||
<option value="4"><%=L_HighSpeedBroadbandLabel_Text%></option>
|
||||
<option value="5"><%=L_WANLabel_Text%></option>
|
||||
<option value="6"><%=L_LANLabel_Text%></option>
|
||||
<option value="7" selected="selected"><%=L_AutoDetectBandWidth_Text%></option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<div style="display:none;height:0px; width:0px; background-color:Transparent;">
|
||||
<script type="text/vbscript" language="vbscript">
|
||||
<!--
|
||||
Function TSMsgBox(sMsg, iButtons, sTitle)
|
||||
TSMsgBox = MsgBox(sMsg, iButtons, sTitle)
|
||||
End Function
|
||||
-->
|
||||
</script>
|
||||
<span id="DefaultTSGateway" style="display:none"><%=SecurityElement.Escape(DefaultTSGateway) %></span>
|
||||
<span id="GatewayCredentialsSource" style="display:none"><%=SecurityElement.Escape(GatewayCredentialsSource) %></span>
|
||||
<script type="text/javascript" language="javascript">
|
||||
<![CDATA[
|
||||
var DefaultTSGateway = document.getElementById("DefaultTSGateway").innerHTML;
|
||||
var GatewayCredentialsSource = document.getElementById("GatewayCredentialsSource").innerHTML;
|
||||
|
||||
document.getElementById("MachineName").focus()
|
||||
window.onerror = fnErrTrap;
|
||||
var vbCritical = 16;
|
||||
var vbInformation = 64;
|
||||
var L_sTitle_Text = "Remote Desktop Connection";
|
||||
|
||||
function updateConnectButtonState( objMachineName )
|
||||
{
|
||||
if ( objMachineName.value.length == 0 )
|
||||
{
|
||||
document.getElementById("ButtonConnect").disabled = true;
|
||||
}
|
||||
else if ( objMachineName.value.length > 0 )
|
||||
{
|
||||
hideElement(document.getElementById("trErrorInvalidMachine"));
|
||||
document.getElementById("ButtonConnect").disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
function onConnectToFocus( objMachineName )
|
||||
{
|
||||
updateConnectButtonState( objMachineName );
|
||||
}
|
||||
|
||||
function onConnectToBlur( objMachineName )
|
||||
{
|
||||
updateConnectButtonState( objMachineName );
|
||||
}
|
||||
|
||||
function onConnectToPropertyChange( objMachineName )
|
||||
{
|
||||
// make sure it it's the value that changed
|
||||
if ( window.event.propertyName == "value" )
|
||||
{
|
||||
updateConnectButtonState( objMachineName );
|
||||
}
|
||||
}
|
||||
|
||||
function TestMN(s)
|
||||
{
|
||||
//-- Admins can set up their own validation here --//
|
||||
var r, re;
|
||||
|
||||
//
|
||||
// Match between 1 and 256 occurences of these characters: "\f\n\r\t'space'"*+,;=?|¦"
|
||||
// starting from a word boundary (/b).
|
||||
// See: http://msdn.microsoft.com/en-us/library/1400241x(VS.85).aspx
|
||||
//
|
||||
re = new RegExp("[\b\f\n\r\t\x20\x22\x2A-\x2C\x3B-\x3F\x7C\xA6]{1,256}");
|
||||
r = s.match(re);
|
||||
var retval = (r == null)? false : true;
|
||||
return retval;
|
||||
}
|
||||
|
||||
function TestTxt( objMachineName )
|
||||
{
|
||||
var retval = false;
|
||||
if ( TestMN(objMachineName.value) )
|
||||
{
|
||||
document.getElementById("ButtonConnect").disabled = true;
|
||||
showElement(document.getElementById("trErrorInvalidMachine"));
|
||||
retval = true;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
function onConnectToKeyUp( objMachineName )
|
||||
{
|
||||
if ( window.event.keyCode == 13 )
|
||||
{
|
||||
if ( objMachineName.value.length > 0 )
|
||||
{
|
||||
BtnConnect();
|
||||
}
|
||||
else
|
||||
{
|
||||
showElement(document.getElementById("trErrorInvalidMachine"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function fnErrTrap(sMsg,sUrl,sLine)
|
||||
{
|
||||
var retval;
|
||||
var L_errMsg_Text = "To use this Web site, your computer must be running the Remote Desktop Connection (RDC) client. \n\nTo continue, install the latest RDC client and the most recent updates from the Microsoft Update Web site, and then try again.";
|
||||
if (sMsg.indexOf('is undefined') != -1)
|
||||
{
|
||||
retval = TSMsgBox(L_errMsg_Text, vbInformation, L_sTitle_Text);
|
||||
}
|
||||
else if (sMsg.indexOf('is null or not an object') != -1)
|
||||
{
|
||||
retval = TSMsgBox(L_errMsg_Text, vbInformation, L_sTitle_Text);
|
||||
}
|
||||
else if (sMsg.indexOf('canceled by the user') != -1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
var L_errMsg2_Text = "An application error was caught:\n\nError:%ErrorMessage%\nURL:%URL%\nLine:%ErrorLineNumber%" ; // {Placeholder="%ErrorMessage%","%URL%","%ErrorLineNumber%"}
|
||||
var errMsg2 = L_errMsg2_Text
|
||||
errMsg2 = errMsg2.replace("%ErrorMessage%",sMsg);
|
||||
errMsg2 = errMsg2.replace("%ErrorNumber%",sURL);
|
||||
errMsg2 = errMsg2.replace("%ErrorLineNumber%",sLine);
|
||||
|
||||
retval = TSMsgBox(L_errMsg2_Text, vbInformation, L_sTitle_Text);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
var WebAccessControlPresent = IsWebAccessControlPresent();
|
||||
|
||||
try
|
||||
{
|
||||
document.write("<object type=\"application/x-oleobject\"");
|
||||
document.write("id=\"MsRdpClient\" name=\"MsRdpClient\"");
|
||||
document.write("onerror=\"OnControlLoadError\"");
|
||||
document.write("height=\"0\" width=\"0\"");
|
||||
if ( WebAccessControlPresent ) {
|
||||
document.write("classid=\"CLSID:6A5B0C7C-5CCB-4F10-A043-B8DE007E1952\">");
|
||||
}
|
||||
else {
|
||||
document.write("classid=\"CLSID:4eb89ff4-7f78-4a0f-8b8d-2bf02e94e4b2\">");
|
||||
}
|
||||
document.write("</object>");
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
|
||||
var MsRdpClientShell;
|
||||
var MsRdpClient = document.getElementById("MsRdpClient");
|
||||
|
||||
if ( WebAccessControlPresent ) {
|
||||
MsRdpClientShell = MsRdpClient;
|
||||
}
|
||||
else {
|
||||
MsRdpClientShell = MsRdpClient.MsRdpClientShell;
|
||||
}
|
||||
|
||||
function OnControlLoadError()
|
||||
{
|
||||
var L_errMsgLoad_Text = "A problem was detected while loading the ActiveX Control.";
|
||||
var retval = TSMsgBox(L_errMsgLoad_Text, vbInformation, L_sTitle_Text);
|
||||
return true;
|
||||
}
|
||||
|
||||
function IsWebAccessControlPresent()
|
||||
{
|
||||
var retval = false;
|
||||
try {
|
||||
var WebAccessControl = new ActiveXObject("MsRdpWebAccess.MsRdpClientShell");
|
||||
if ( WebAccessControl ) {
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
catch(e) {
|
||||
retval = false;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" language="javascript">MsRdpClient.MsRdpClientShell</script>
|
||||
<script type="text/javascript" language="javascript">
|
||||
<![CDATA[
|
||||
|
||||
function CheckDisableRedirections()
|
||||
{
|
||||
var fRedirsAllowed = false;
|
||||
|
||||
try
|
||||
{
|
||||
fRedirsAllowed = MsRdpClient.GetSecuredRedirsEnabled();
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
// If the client doesnt have the new SecuredRedirections check, fall-back...
|
||||
fRedirsAllowed = MsRdpClient.SecuredSettingsEnabled;
|
||||
}
|
||||
|
||||
if (!fRedirsAllowed)
|
||||
{
|
||||
document.getElementById("xDriveRedirection").checked = false;
|
||||
document.getElementById("xPnPRedirection").checked = false;
|
||||
document.getElementById("xPortRedirection").checked = false;
|
||||
|
||||
document.getElementById("xDriveRedirection").disabled = true;
|
||||
document.getElementById("xPnPRedirection").disabled = true;
|
||||
document.getElementById("xPortRedirection").disabled = true;
|
||||
|
||||
document.getElementById("xDriveRedirection_Label").disabled = true;
|
||||
document.getElementById("xPnPRedirection_Label").disabled = true;
|
||||
document.getElementById("xPortRedirection_Label").disabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
function hideshowOptions()
|
||||
{
|
||||
if (document.getElementById("opt_panel").style.visibility == "hidden") {
|
||||
document.getElementById("opt_panel").style.visibility = "visible";
|
||||
document.getElementById("ButtonOptions").innerHTML = "<%= L_Options_Text%>" +" <<";
|
||||
}
|
||||
else {
|
||||
document.getElementById("opt_panel").style.visibility = "hidden";
|
||||
document.getElementById("ButtonOptions").innerHTML = "<%= L_Options_Text%>" +" >>";
|
||||
}
|
||||
}
|
||||
|
||||
var objPerformanceOptions = new Array(8);
|
||||
|
||||
function setPerf()
|
||||
{
|
||||
var iIndex;
|
||||
|
||||
for (iIndex = 0; iIndex < objPerformanceOptions.length; iIndex++)
|
||||
{
|
||||
objPerformanceOptions[iIndex] = 0;
|
||||
}
|
||||
|
||||
//
|
||||
// Based on the choosen Performance option
|
||||
// from the Experience tab, turn ON specific options.
|
||||
//
|
||||
switch(parseInt(document.getElementById("comboPerfomance").value)) {
|
||||
case 1: // Modem
|
||||
objPerformanceOptions[6] = 1;
|
||||
break;
|
||||
case 2: // Low-speed broadband
|
||||
objPerformanceOptions[5] = 1;
|
||||
objPerformanceOptions[6] = 1;
|
||||
break;
|
||||
case 3: // Satellite
|
||||
case 4: // High-speed broadband
|
||||
objPerformanceOptions[2] = 1;
|
||||
objPerformanceOptions[5] = 1;
|
||||
objPerformanceOptions[6] = 1;
|
||||
break;
|
||||
case 5: // WAN
|
||||
case 6: // LAN
|
||||
objPerformanceOptions[0] = 1;
|
||||
objPerformanceOptions[1] = 1;
|
||||
objPerformanceOptions[2] = 1;
|
||||
objPerformanceOptions[3] = 1;
|
||||
objPerformanceOptions[4] = 1;
|
||||
objPerformanceOptions[5] = 1;
|
||||
objPerformanceOptions[6] = 1;
|
||||
break;
|
||||
case 7:
|
||||
objPerformanceOptions[5] = 1;
|
||||
objPerformanceOptions[6] = 1;
|
||||
objPerformanceOptions[7] = 1;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function setRes()
|
||||
{
|
||||
var retval;
|
||||
var iRes = GetParam("comboResolution", false, "0");
|
||||
var RDPstr1 = "screen mode id:i:2\n";
|
||||
var RDPstr2 = "Desktop Size ID:i:" + iRes + "\n";
|
||||
|
||||
if (iRes == "0") {
|
||||
retval = RDPstr1;
|
||||
}
|
||||
else {
|
||||
retval = RDPstr2;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
function flipBit (iVal)
|
||||
{
|
||||
return (iVal == 1) ? 0:1;
|
||||
}
|
||||
|
||||
function BtnConnect()
|
||||
{
|
||||
var iConnectionType = 0;
|
||||
var RDPstr = "full address:s:" + GetParam("MachineName", true, "") + "\n";
|
||||
RDPstr += "authentication level:i:2\n";
|
||||
RDPstr += "gatewayhostname:s:" + DefaultTSGateway + "\n";
|
||||
RDPstr += "gatewaycredentialssource:i:" + GatewayCredentialsSource + "\n";
|
||||
if ((DefaultTSGateway != null) && (DefaultTSGateway.length > 0)) {
|
||||
RDPstr += "gatewayusagemethod:i:2\n";
|
||||
RDPstr += "gatewayprofileusagemethod:i:1\n";
|
||||
}
|
||||
else {
|
||||
RDPstr += "gatewayusagemethod:i:2\n";
|
||||
RDPstr += "gatewayprofileusagemethod:i:0\n";
|
||||
}
|
||||
|
||||
setPerf();
|
||||
RDPstr += "disable wallpaper:i:" + flipBit(objPerformanceOptions[0]).toString() + "\n";
|
||||
RDPstr += "allow font smoothing:i:" + objPerformanceOptions[1].toString() + "\n";
|
||||
RDPstr += "allow desktop composition:i:" + objPerformanceOptions[2].toString() + "\n";
|
||||
RDPstr += "disable full window drag:i:" + flipBit(objPerformanceOptions[3]).toString() + "\n";
|
||||
RDPstr += "disable menu anims:i:" + flipBit(objPerformanceOptions[4]).toString() + "\n";
|
||||
RDPstr += "disable themes:i:" + flipBit(objPerformanceOptions[5]).toString() + "\n";
|
||||
RDPstr += "bitmapcachepersistenable:i:" + objPerformanceOptions[6].toString() + "\n";
|
||||
|
||||
RDPstr += "bandwidthautodetect:i:1\n";
|
||||
RDPstr += "networkautodetect:i:" + objPerformanceOptions[7].toString() + "\n";
|
||||
|
||||
iConnectionType = document.getElementById("comboPerfomance").value;
|
||||
|
||||
if (iConnectionType == 7) {
|
||||
//
|
||||
// default to lowspeed-broadband
|
||||
//
|
||||
iConnectionType = 2;
|
||||
}
|
||||
|
||||
RDPstr += "connection type:i:" + iConnectionType + "\n";
|
||||
|
||||
RDPstr += setRes();
|
||||
RDPstr += "displayconnectionbar:i:1\n";
|
||||
RDPstr += "session bpp:i:32\n";
|
||||
|
||||
RDPstr += "redirectclipboard:i:" + GetParam("xClipboard", false, "0") + "\n";
|
||||
if (GetParam("xDriveRedirection", false, "0") == 1)
|
||||
{
|
||||
RDPstr += "redirectdrives:i:1\n";
|
||||
RDPstr += "drivestoredirect:s:*\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
RDPstr += "redirectdrives:i:0\n";
|
||||
}
|
||||
RDPstr += "redirectcomports:i:" + GetParam("xPortRedirection", false, "0") + "\n";
|
||||
RDPstr += "devicestoredirect:s:" + ((document.getElementById("xPnPRedirection").checked) ? "*" : "") + "\n";
|
||||
RDPstr += "keyboardhook:i:" + parseInt(document.getElementById("comboKeyboard").value) + "\n";
|
||||
RDPstr += "audiomode:i:" + parseInt(document.getElementById("comboAudio").value) + "\n";
|
||||
|
||||
RDPstr += "redirectprinters:i:" + GetParam("xPrinterRedirection", false, "0") + "\n";
|
||||
RDPstr += "redirectsmartcards:i:1\n";
|
||||
RDPstr += "compression:i:1\n";
|
||||
RDPstr += "autoreconnection enabled:i:1\n";
|
||||
RDPstr += getUserNameRdpProperty();
|
||||
RDPstr += "";
|
||||
|
||||
<%
|
||||
if ( eAuthenticationMode == AuthenticationMode.Forms )
|
||||
{
|
||||
%>
|
||||
MsRdpClientShell.PublicMode = <%=(!bPrivateMode).ToString().ToLower(CultureInfo.InvariantCulture)%>;
|
||||
<%
|
||||
}
|
||||
else
|
||||
{
|
||||
%>
|
||||
MsRdpClientShell.PublicMode = !(document.getElementById("PublicCheckbox").checked);
|
||||
<%
|
||||
}
|
||||
%>
|
||||
|
||||
MsRdpClientShell.RdpFileContents = RDPstr;
|
||||
if (TestTxt(document.getElementById("MachineName"))== false)
|
||||
{
|
||||
try
|
||||
{
|
||||
MsRdpClientShell.Launch();
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
if (e.number==-2147467259)
|
||||
{
|
||||
var L_ErrMsgLaunch_Text = "The security settings of your browser are preventing this Remote Desktop Services website from launching the remote program. Please add this Remote Desktop Services website to the Trusted sites or Local intranet zone of your browser and try again.";
|
||||
var retval = TSMsgBox(L_ErrMsgLaunch_Text, vbInformation, L_sTitle_Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw e
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById("MachineName").focus();
|
||||
}
|
||||
}
|
||||
|
||||
function GetParam(sParam, bReqd, vDefault)
|
||||
{
|
||||
var obj = document.getElementById(sParam);
|
||||
if(obj != null)
|
||||
{
|
||||
switch(obj.tagName)
|
||||
{
|
||||
case "SELECT":
|
||||
return obj.selectedIndex;
|
||||
break;
|
||||
case "INPUT":
|
||||
if (obj.type == "checkbox") return ((obj.checked) ? 1 : 0);
|
||||
if (obj.type == "hidden") return obj.value;
|
||||
if (obj.type == "text") return obj.value;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((bReqd) && ((vDefault == "") || (vDefault == null) || (obj == null)))
|
||||
{
|
||||
var L_ErrMsgInvalid_Text = "%ParameterName% is not a valid or available parameter name."; // {Placeholder="%ParameterName%"}
|
||||
var errMsgInvalid = sParam;
|
||||
errMsgInvalid = errMsgInvalid.replace("%ParameterName%", sParam);
|
||||
var retval = TSMsgBox(errMsgInvalid, vbInformation, L_sTitle_Text);
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return vDefault;
|
||||
}
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</HTMLMainContent>
|
||||
<ExtraRows>
|
||||
<!-- Row 7.1 - Empty -->
|
||||
<tr>
|
||||
<td height="40">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<%
|
||||
if ( eAuthenticationMode == AuthenticationMode.Windows )
|
||||
{
|
||||
%>
|
||||
<!-- Row 7.2 - Checkbox -->
|
||||
<tr>
|
||||
<td height="30">
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td width="30"> </td>
|
||||
<td>
|
||||
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" id='contentPublicCheckbox' class='tswa_PublicCheckboxLess' >
|
||||
<tr>
|
||||
<td valign="top" width="30">
|
||||
<input id='PublicCheckbox' type="checkbox" value="ON" />
|
||||
</td>
|
||||
<td id='SecurityText2' valign="top" style="padding-top:2px"><%=L_PrivateLabel_Text %>
|
||||
<span id='p2M' onclick="toggle(this);">(<a href="javascript:toggle(this)"><%=L_MoreInfoLabel_Text %></a>)</span>
|
||||
<span id='privateMore' style="display:none"><br /><%=L_PrivateDesc_Text %>
|
||||
<span id='p2L' onclick="toggle(this);">(<a href="javascript:toggle(this)"><%=L_HideInfoLabel_Text %></a>)</span>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!--[if IE 6]>
|
||||
<script type="text/javascript" language="javascript">
|
||||
document.styleSheets[0].addRule('.tswa_PublicCheckboxMore', 'position:relative');
|
||||
document.styleSheets[0].addRule('.tswa_PublicCheckboxLess', 'position:relative');
|
||||
</script>
|
||||
<![endif]-->
|
||||
<!--[if IE 7]>
|
||||
<script type="text/javascript" language="javascript">
|
||||
document.styleSheets[0].addRule('.tswa_PublicCheckboxMore', 'position:relative');
|
||||
document.styleSheets[0].addRule('.tswa_PublicCheckboxLess', 'position:relative');
|
||||
</script>
|
||||
<![endif]-->
|
||||
|
||||
<script type="text/javascript" language="javascript">
|
||||
function toggle(e)
|
||||
{
|
||||
if (e.id == "p2M")
|
||||
{
|
||||
p2M.style.display = "none";
|
||||
p2L.style.display = "";
|
||||
privateMore.style.display = "";
|
||||
contentPublicCheckbox.className = "tswa_PublicCheckboxMore";
|
||||
}
|
||||
else if (e.id == "p2L")
|
||||
{
|
||||
p2M.style.display = "";
|
||||
p2L.style.display = "none";
|
||||
privateMore.style.display = "none";
|
||||
contentPublicCheckbox.className = "tswa_PublicCheckboxLess";
|
||||
}
|
||||
}
|
||||
|
||||
CheckDisableRedirections();
|
||||
document.getElementById("MachineName").focus();
|
||||
</script>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
}
|
||||
%>
|
||||
</ExtraRows>
|
||||
</RDWAPage>
|
||||
|
||||
|
22
RDSFactorWeb/RDWeb/Pages/en-US/RDWAStrings.xml
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0"?>
|
||||
<rdwastr:strings xmlns:rdwastr="urn:microsoft.com:rdwastrings">
|
||||
<string id="PageTitle">RD Web Access</string>
|
||||
<string id="NoScriptWarning">
|
||||
<p id="NoScript1">RD Web Access requires JScript. This Web browser either does not support JScript, or scripts are being blocked.</p>
|
||||
<br/>
|
||||
<br/>
|
||||
<p id="NoScript2">To find out whether your browser supports JScript, or to allow scripts, see the browser's online Help.</p>
|
||||
</string>
|
||||
<string id="HeadingRDWA">RD Web Access</string>
|
||||
<string id="HeadingApplicationName">RemoteApp and Desktop Connection</string>
|
||||
<string id="Help">Help</string>
|
||||
<string id="SignOut">Sign out</string>
|
||||
<string id="SearchingForApps">Searching for available RemoteApp programs... </string>
|
||||
<string id="CurrentFolder">Current folder: </string>
|
||||
<string id="ParentFolder">Up</string>
|
||||
<string id="OptimizeMyExperience">Optimize my experience for a LAN network when connecting to the computer or application.</string>
|
||||
<string id="PrivateComputer">I am using a private computer that complies with my organization's security policy.</string>
|
||||
<string id="MoreInformation">More information...</string>
|
||||
<string id="PrivateMore">By selecting this option you can save your credentials so that they can be used in the future when connecting to these programs. Before you select this option, please ensure that saving your credentials is in compliance with your organization's security policy.</string>
|
||||
<string id="HideMore">Hide additional information...</string>
|
||||
</rdwastr:strings>
|
633
RDSFactorWeb/RDWeb/Pages/en-US/login.aspx
Normal file
|
@ -0,0 +1,633 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="../Site.xsl"?>
|
||||
<?xml-stylesheet type="text/css" href="../RenderFail.css"?>
|
||||
<% @Page Language="C#" Debug="false" ResponseEncoding="utf-8" ContentType="text/xml" %>
|
||||
<% @Import Namespace="System " %>
|
||||
<% @Import Namespace="System.Security" %>
|
||||
<% @Import Namespace="Microsoft.TerminalServices.Publishing.Portal.FormAuthentication" %>
|
||||
<% @Import Namespace="Microsoft.TerminalServices.Publishing.Portal" %>
|
||||
<script language="C#" runat=server>
|
||||
|
||||
//
|
||||
// Customizable Text
|
||||
//
|
||||
string L_CompanyName_Text = "Work Resources";
|
||||
|
||||
//
|
||||
// Localizable Text
|
||||
//
|
||||
const string L_DomainUserNameLabel_Text = "Domain\\user name:";
|
||||
const string L_PasswordLabel_Text = "Password:";
|
||||
const string L_PasswordExpiredChangeBeginning_Text = "Your password is expired. Click ";
|
||||
const string L_PasswordExpiredChangeLink_Text = "here";
|
||||
const string L_PasswordExpiredChangeEnding_Text = " to change it.";
|
||||
const string L_PasswordExpiredNoChange_Text = "Your password is expired. Please contact your administrator for assistance.";
|
||||
const string L_ExistingWorkspaceLabel_Text = "Another user of your computer is currently using this connection. This user must disconnect before you can log on.";
|
||||
const string L_DisconnectedWorkspaceLabel_Text = "Another user of your computer has disconnected from this connection. Please type your user name and password again.";
|
||||
const string L_LogonFailureLabel_Text = "The user name or password that you entered is not valid. Try typing it again.";
|
||||
const string L_DomainNameMissingLabel_Text = "You must enter a valid domain name.";
|
||||
const string L_AuthorizationFailureLabel_Text = "You aren’t authorized to log on to this connection. Contact your system administrator for authorization.";
|
||||
const string L_ServerConfigChangedLabel_Text = "Your RD Web Access session expired due to configuration changes on the remote computer. Please sign in again.";
|
||||
const string L_SecurityLabel_Text = "Security";
|
||||
const string L_ShowExplanationLabel_Text = "show explanation";
|
||||
const string L_HideExplanationLabel_Text = "hide explanation";
|
||||
const string L_PublicLabel_Text = "This is a public or shared computer";
|
||||
const string L_PublicExplanationLabel_Text = "Select this option if you use RD Web Access on a public computer. Be sure to log off when you have finished using RD Web Access and close all windows to end your session.";
|
||||
const string L_PrivateLabel_Text = "This is a private computer";
|
||||
const string L_PrivateExplanationLabel_Text = "Select this option if you are the only person who uses this computer. Your server will allow a longer period of inactivity before logging you off.";
|
||||
const string L_PrivateWarningLabel_Text = "Warning: By selecting this option, you confirm that this computer complies with your organization's security policy.";
|
||||
const string L_PrivateWarningLabelNoAx_Text = "Warning: By logging in to this web page, you confirm that this computer complies with your organization's security policy.";
|
||||
const string L_SignInLabel_Text = "Sign in";
|
||||
const string L_TSWATimeoutLabel_Text = "To protect against unauthorized access, your RD Web Access session will automatically time out after a period of inactivity. If your session ends, refresh your browser and sign in again.";
|
||||
const string L_RenderFailTitle_Text = "Error: Unable to display RD Web Access";
|
||||
const string L_RenderFailP1_Text = "An unexpected error has occurred that is preventing this page from being displayed correctly.";
|
||||
const string L_RenderFailP2_Text = "Viewing this page in Internet Explorer with the Enhanced Security Configuration enabled can cause such an error.";
|
||||
const string L_RenderFailP3_Text = "Please try loading this page without the Enhanced Security Configuration enabled. If this error continues to be displayed, please contact your administrator.";
|
||||
const string L_GenericClaimsAuthErrorLabel_Text = "We can't sign you in right now. Please try again later.";
|
||||
const string L_WrongAxVersionWarningLabel_Text = "You don't have the right version of Remote Desktop Connection to use RD Web Access.";
|
||||
const string L_ClaimsDomainUserNameLabel_Text = "Username@domain:";
|
||||
|
||||
//
|
||||
// Page Variables
|
||||
//
|
||||
public string strErrorMessageRowStyle;
|
||||
public bool bFailedLogon = false, bFailedAuthorization = false, bFailedAuthorizationOverride = false, bServerConfigChanged = false, bWorkspaceInUse = false, bWorkspaceDisconnected = false, bPasswordExpired = false, bPasswordExpiredNoChange = false;
|
||||
public string strWorkSpaceID = "";
|
||||
public string strRDPCertificates = "";
|
||||
public string strRedirectorName = "";
|
||||
public string strClaimsHint = "";
|
||||
public string strReturnUrl = "";
|
||||
public string strReturnUrlPage = "";
|
||||
public string strPasswordExpiredQueryString = "";
|
||||
public string strEventLogUploadAddress = "";
|
||||
public string sHelpSourceServer, sLocalHelp;
|
||||
public Uri baseUrl;
|
||||
|
||||
public string strPrivateModeTimeout = "240";
|
||||
public string strPublicModeTimeout = "20";
|
||||
|
||||
public WorkspaceInfo objWorkspaceInfo = null;
|
||||
|
||||
void Page_PreInit(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
// Deny requests with "additional path information"
|
||||
if (Request.PathInfo.Length != 0)
|
||||
{
|
||||
Response.StatusCode = 404;
|
||||
Response.End();
|
||||
}
|
||||
|
||||
// gives us https://<hostname>[:port]/rdweb/pages/<lang>/
|
||||
baseUrl = new Uri(new Uri(PageContentsHelper.GetBaseUri(Context), Request.FilePath), ".");
|
||||
|
||||
sLocalHelp = ConfigurationManager.AppSettings["LocalHelp"];
|
||||
if ((sLocalHelp != null) && (sLocalHelp == "true"))
|
||||
{
|
||||
sHelpSourceServer = "./rap-help.htm";
|
||||
}
|
||||
else
|
||||
{
|
||||
sHelpSourceServer = "http://go.microsoft.com/fwlink/?LinkId=141038";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
strPrivateModeTimeout = ConfigurationManager.AppSettings["PrivateModeSessionTimeoutInMinutes"].ToString();
|
||||
strPublicModeTimeout = ConfigurationManager.AppSettings["PublicModeSessionTimeoutInMinutes"].ToString();
|
||||
}
|
||||
catch (Exception objException)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
if ( Request.QueryString != null )
|
||||
{
|
||||
NameValueCollection objQueryString = Request.QueryString;
|
||||
if ( objQueryString["ReturnUrl"] != null )
|
||||
{
|
||||
strReturnUrlPage = objQueryString["ReturnUrl"];
|
||||
strReturnUrl = "?ReturnUrl=" + HttpUtility.UrlEncode(strReturnUrlPage);
|
||||
}
|
||||
if ( objQueryString["Error"] != null )
|
||||
{
|
||||
if ( objQueryString["Error"].Equals("WkSInUse", StringComparison.CurrentCultureIgnoreCase) )
|
||||
{
|
||||
bWorkspaceInUse = true;
|
||||
}
|
||||
else if ( objQueryString["Error"].Equals("WkSDisconnected", StringComparison.CurrentCultureIgnoreCase) )
|
||||
{
|
||||
bWorkspaceDisconnected = true;
|
||||
}
|
||||
else if ( objQueryString["Error"].Equals("UnauthorizedAccess", StringComparison.CurrentCultureIgnoreCase) )
|
||||
{
|
||||
bFailedAuthorization = true;
|
||||
}
|
||||
else if ( objQueryString["Error"].Equals("UnauthorizedAccessOverride", StringComparison.CurrentCultureIgnoreCase) )
|
||||
{
|
||||
bFailedAuthorization = true;
|
||||
bFailedAuthorizationOverride = true;
|
||||
}
|
||||
else if ( objQueryString["Error"].Equals("ServerConfigChanged", StringComparison.CurrentCultureIgnoreCase) )
|
||||
{
|
||||
bServerConfigChanged = true;
|
||||
}
|
||||
else if ( objQueryString["Error"].Equals("PasswordExpired", StringComparison.CurrentCultureIgnoreCase) )
|
||||
{
|
||||
string strPasswordChangeEnabled = ConfigurationManager.AppSettings["PasswordChangeEnabled"];
|
||||
|
||||
if (strPasswordChangeEnabled != null && strPasswordChangeEnabled.Equals("true", StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
bPasswordExpired = true;
|
||||
if (objQueryString["UserName"] != null)
|
||||
{
|
||||
strPasswordExpiredQueryString = "?UserName=" + Uri.EscapeDataString(objQueryString["UserName"]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bPasswordExpiredNoChange = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Special case to handle 'ServerConfigChanged' error from Response's Location header.
|
||||
//
|
||||
try
|
||||
{
|
||||
if ( Response.Headers != null )
|
||||
{
|
||||
NameValueCollection objResponseHeader = Response.Headers;
|
||||
if ( !String.IsNullOrEmpty( objResponseHeader["Location"] ) )
|
||||
{
|
||||
Uri objLocationUri = new Uri( objResponseHeader["Location"] );
|
||||
if ( objLocationUri.Query.IndexOf("ServerConfigChanged") != -1 )
|
||||
{
|
||||
if ( !bFailedAuthorization )
|
||||
{
|
||||
bServerConfigChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception objException)
|
||||
{
|
||||
}
|
||||
|
||||
if ( HttpContext.Current.User.Identity.IsAuthenticated != true )
|
||||
{
|
||||
// Only do this if we are actually rendering the login page, if we are just redirecting there is no need for these potentially expensive calls
|
||||
objWorkspaceInfo = PageContentsHelper.GetWorkspaceInfo();
|
||||
if ( objWorkspaceInfo != null )
|
||||
{
|
||||
strWorkSpaceID = objWorkspaceInfo.WorkspaceId;
|
||||
strRedirectorName = objWorkspaceInfo.RedirectorName;
|
||||
string strWorkspaceName = objWorkspaceInfo.WorkspaceName;
|
||||
if ( String.IsNullOrEmpty(strWorkspaceName ) == false )
|
||||
{
|
||||
L_CompanyName_Text = strWorkspaceName;
|
||||
}
|
||||
if (!String.IsNullOrEmpty(objWorkspaceInfo.EventLogUploadAddress))
|
||||
{
|
||||
strEventLogUploadAddress = objWorkspaceInfo.EventLogUploadAddress;
|
||||
}
|
||||
}
|
||||
strRDPCertificates = PageContentsHelper.GetRdpSigningCertificateHash();
|
||||
strClaimsHint = PageContentsHelper.GetClaimsHint();
|
||||
}
|
||||
|
||||
if ( HttpContext.Current.User.Identity.IsAuthenticated == true )
|
||||
{
|
||||
SafeRedirect(strReturnUrlPage);
|
||||
}
|
||||
else if ( HttpContext.Current.Request.HttpMethod.Equals("POST", StringComparison.CurrentCultureIgnoreCase) == true )
|
||||
{
|
||||
bFailedLogon = true;
|
||||
if ( bFailedAuthorization )
|
||||
{
|
||||
bFailedAuthorization = false; // Make sure to show one message.
|
||||
}
|
||||
}
|
||||
|
||||
if (bPasswordExpired)
|
||||
{
|
||||
bFailedLogon = false;
|
||||
}
|
||||
|
||||
if (bFailedAuthorizationOverride)
|
||||
{
|
||||
bFailedLogon = false;
|
||||
}
|
||||
|
||||
Response.Cache.SetCacheability(HttpCacheability.NoCache);
|
||||
}
|
||||
|
||||
private void SafeRedirect(string strRedirectUrl)
|
||||
{
|
||||
string strRedirectSafeUrl = null;
|
||||
|
||||
if (!String.IsNullOrEmpty(strRedirectUrl))
|
||||
{
|
||||
Uri baseUrl = PageContentsHelper.GetBaseUri(Context);
|
||||
Uri redirectUri = new Uri(new Uri(baseUrl, Request.FilePath), strRedirectUrl + PageContentsHelper.AppendTenantIdToQuery(String.Empty));
|
||||
|
||||
if (
|
||||
redirectUri.Authority.Equals(baseUrl.Authority) &&
|
||||
redirectUri.Scheme.Equals(baseUrl.Scheme)
|
||||
)
|
||||
{
|
||||
strRedirectSafeUrl = redirectUri.AbsoluteUri;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (strRedirectSafeUrl == null)
|
||||
{
|
||||
strRedirectSafeUrl = "default.aspx" + PageContentsHelper.AppendTenantIdToQuery(String.Empty);
|
||||
}
|
||||
|
||||
Response.Redirect(strRedirectSafeUrl);
|
||||
}
|
||||
</script>
|
||||
<RDWAPage
|
||||
helpurl="<%=sHelpSourceServer%>"
|
||||
workspacename="<%=SecurityElement.Escape(L_CompanyName_Text)%>"
|
||||
baseurl="<%=SecurityElement.Escape(baseUrl.AbsoluteUri)%>"
|
||||
>
|
||||
<RenderFailureMessage>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title><%=L_RenderFailTitle_Text%></title>
|
||||
</head>
|
||||
<body>
|
||||
<h1><%=L_RenderFailTitle_Text%></h1>
|
||||
<p><%=L_RenderFailP1_Text%></p>
|
||||
<p><%=L_RenderFailP2_Text%></p>
|
||||
<p><%=L_RenderFailP3_Text%></p>
|
||||
</body>
|
||||
</html>
|
||||
</RenderFailureMessage>
|
||||
<BodyAttr
|
||||
onload="onLoginPageLoad(event)"
|
||||
onunload="onPageUnload(event)"/>
|
||||
<HTMLMainContent>
|
||||
|
||||
<form id="FrmLogin" name="FrmLogin" action="login.aspx<%=SecurityElement.Escape(PageContentsHelper.AppendTenantIdToQuery(strReturnUrl))%>" method="post" onsubmit="return onLoginFormSubmit()">
|
||||
|
||||
<input type="hidden" name="WorkSpaceID" value="<%=SecurityElement.Escape(strWorkSpaceID)%>"/>
|
||||
<input type="hidden" name="RDPCertificates" value="<%=SecurityElement.Escape(strRDPCertificates)%>"/>
|
||||
<input type="hidden" name="PublicModeTimeout" value="<%=SecurityElement.Escape(strPublicModeTimeout)%>"/>
|
||||
<input type="hidden" name="PrivateModeTimeout" value="<%=SecurityElement.Escape(strPrivateModeTimeout)%>"/>
|
||||
<input type="hidden" name="WorkspaceFriendlyName" value="<%=SecurityElement.Escape(L_CompanyName_Text)%>"/>
|
||||
<input type="hidden" name="EventLogUploadAddress" value="<%=SecurityElement.Escape(strEventLogUploadAddress)%>"/>
|
||||
<input type="hidden" name="RedirectorName" value="<%=SecurityElement.Escape(strRedirectorName)%>"/>
|
||||
<input type="hidden" name="ClaimsHint" value="<%=SecurityElement.Escape(strClaimsHint)%>"/>
|
||||
<input type="hidden" name="ClaimsToken" value=""/>
|
||||
|
||||
<input name="isUtf8" type="hidden" value="1"/>
|
||||
<input type="hidden" name="flags" value="0"/>
|
||||
|
||||
|
||||
<table id="tableLoginDisabled" width="300" border="0" align="center" cellpadding="0" cellspacing="0" style="display:none">
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="wrng"><%=L_WrongAxVersionWarningLabel_Text%></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="50"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table id="tableLoginForm" width="300" border="0" align="center" cellpadding="0" cellspacing="0" style="display:none">
|
||||
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table width="300" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td id="tdDomainUserNameLabel" width="130" align="right" style="display:none"><%=L_DomainUserNameLabel_Text%></td>
|
||||
<td id="tdClaimsDomainUserNameLable" width="130" align="right" style="display:none"><%=L_ClaimsDomainUserNameLabel_Text%></td>
|
||||
<td width="7"></td>
|
||||
<td align="right">
|
||||
<label><input id="DomainUserName" name="DomainUserName" type="text" class="textInputField" runat="server" size="25" autocomplete="off" /></label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="7"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table width="300" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td width="130" align="right"><%=L_PasswordLabel_Text%></td>
|
||||
<td width="7"></td>
|
||||
<td align="right">
|
||||
<label><input id="UserPass" name="UserPass" type="password" class="textInputField" runat="server" size="25" autocomplete="off" /></label>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
strErrorMessageRowStyle = "style=\"display:none\"";
|
||||
if ( bPasswordExpiredNoChange == true)
|
||||
{
|
||||
strErrorMessageRowStyle = "style=\"display:\"";
|
||||
}
|
||||
%>
|
||||
<tr id="trPasswordExpiredNoChange" <%=strErrorMessageRowStyle%> >
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="wrng"><%=L_PasswordExpiredNoChange_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
strErrorMessageRowStyle = "style=\"display:none\"";
|
||||
if ( bPasswordExpired == true)
|
||||
{
|
||||
strErrorMessageRowStyle = "style=\"display:\"";
|
||||
}
|
||||
%>
|
||||
<tr id="trPasswordExpired" <%=strErrorMessageRowStyle%> >
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="wrng"><%=L_PasswordExpiredChangeBeginning_Text%><a id = "passwordchangelink" href="password.aspx<%=strPasswordExpiredQueryString%>"><%=L_PasswordExpiredChangeLink_Text%></a><%=L_PasswordExpiredChangeEnding_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
strErrorMessageRowStyle = "style=\"display:none\"";
|
||||
if ( bWorkspaceInUse == true )
|
||||
{
|
||||
strErrorMessageRowStyle = "style=\"display:\"";
|
||||
}
|
||||
%>
|
||||
<tr id="trErrorWorkSpaceInUse" <%=strErrorMessageRowStyle%> >
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="wrng"><%=L_ExistingWorkspaceLabel_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
strErrorMessageRowStyle = "style=\"display:none\"";
|
||||
if ( bWorkspaceDisconnected == true )
|
||||
{
|
||||
strErrorMessageRowStyle = "style=\"display:\"";
|
||||
}
|
||||
%>
|
||||
<tr id="trErrorWorkSpaceDisconnected" <%=strErrorMessageRowStyle%> >
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="wrng"><%=L_DisconnectedWorkspaceLabel_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
strErrorMessageRowStyle = "style=\"display:none\"";
|
||||
if ( bFailedLogon == true )
|
||||
{
|
||||
strErrorMessageRowStyle = "style=\"display:\"";
|
||||
}
|
||||
%>
|
||||
<tr id="trErrorIncorrectCredentials" <%=strErrorMessageRowStyle%> >
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="wrng"><%=L_LogonFailureLabel_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="trErrorDomainNameMissing" style="display:none" >
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="wrng"><%=L_DomainNameMissingLabel_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
strErrorMessageRowStyle = "style=\"display:none\"";
|
||||
if ( bFailedAuthorization || bFailedAuthorizationOverride )
|
||||
{
|
||||
strErrorMessageRowStyle = "style=\"display:\"";
|
||||
}
|
||||
%>
|
||||
<tr id="trErrorUnauthorizedAccess" <%=strErrorMessageRowStyle%> >
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="wrng"><%=L_AuthorizationFailureLabel_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<%
|
||||
strErrorMessageRowStyle = "style=\"display:none\"";
|
||||
if ( bServerConfigChanged )
|
||||
{
|
||||
strErrorMessageRowStyle = "style=\"display:\"";
|
||||
}
|
||||
%>
|
||||
<tr id="trErrorServerConfigChanged" <%=strErrorMessageRowStyle%> >
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="wrng"><%=L_ServerConfigChangedLabel_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr id="trErrorGenericClaimsAuthFailure" style="display:none" >
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="wrng"><%=L_GenericClaimsAuthErrorLabel_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="1" bgcolor="#CCCCCC"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td><%=L_SecurityLabel_Text%> <span id="spanToggleSecExplanation" style="display:none">(<a href="javascript:onclickExplanation('lnkShwSec')" id="lnkShwSec"><%=L_ShowExplanationLabel_Text%></a><a href="javascript:onclickExplanation('lnkHdSec')" id="lnkHdSec" style="display:none"><%=L_HideExplanationLabel_Text%></a>)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="5"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="0" style="display:none" id="tablePublicOption" >
|
||||
<tr>
|
||||
<td width="30">
|
||||
<label><input id="rdoPblc" type="radio" name="MachineType" value="public" class="rdo" onclick="onClickSecurity()" /></label>
|
||||
</td>
|
||||
<td><%=L_PublicLabel_Text%></td>
|
||||
</tr>
|
||||
<tr id="trPubExp" style="display:none" >
|
||||
<td width="30"></td>
|
||||
<td><span class="expl"><%=L_PublicExplanationLabel_Text%></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="7"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="0" style="display:none" id="tablePrivateOption" >
|
||||
<tr>
|
||||
<td width="30">
|
||||
<label><input id="rdoPrvt" type="radio" name="MachineType" value="private" class="rdo" onclick="onClickSecurity()" checked="checked" /></label>
|
||||
</td>
|
||||
<td><%=L_PrivateLabel_Text%></td>
|
||||
</tr>
|
||||
<tr id="trPrvtExp" style="display:none" >
|
||||
<td width="30"></td>
|
||||
<td><span class="expl"><%=L_PrivateExplanationLabel_Text%></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="7"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<tr id="trPrvtWrn" style="display:none" >
|
||||
<td width="30"></td>
|
||||
<td><span class="wrng"><%=L_PrivateWarningLabel_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="0">
|
||||
<tr id="trPrvtWrnNoAx" style="display:none">
|
||||
<td><span class="wrng"><%=L_PrivateWarningLabelNoAx_Text%></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right"><label><input type="submit" class="formButton" id="btnSignIn" value="<%=L_SignInLabel_Text%>" /></label>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="1" bgcolor="#CCCCCC"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="20"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><%=L_TSWATimeoutLabel_Text%></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td height="30"> </td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
</HTMLMainContent>
|
||||
</RDWAPage>
|
65
RDSFactorWeb/RDWeb/Pages/en-US/logoff.aspx
Normal file
|
@ -0,0 +1,65 @@
|
|||
<% @Page Language="C#" Debug="true" %>
|
||||
|
||||
<script language="C#" runat=server>
|
||||
|
||||
void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
// Deny requests with "additional path information"
|
||||
if (Request.PathInfo.Length != 0)
|
||||
{
|
||||
Response.StatusCode = 404;
|
||||
Response.End();
|
||||
}
|
||||
|
||||
string strQueryString = "";
|
||||
|
||||
if ( HttpContext.Current.User.Identity.IsAuthenticated == true )
|
||||
{
|
||||
Response.Redirect( "default.aspx" + AppendTenantIdToQuery(String.Empty) );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( Request.QueryString != null )
|
||||
{
|
||||
NameValueCollection objQueryString = Request.QueryString;
|
||||
|
||||
if ( objQueryString["Error"] != null )
|
||||
{
|
||||
if ( objQueryString["Error"].Equals("WkSInUse", StringComparison.CurrentCultureIgnoreCase) )
|
||||
{
|
||||
strQueryString = "?Error=WkSInUse";
|
||||
}
|
||||
else if ( objQueryString["Error"].Equals("WkSDisconnected", StringComparison.CurrentCultureIgnoreCase) )
|
||||
{
|
||||
strQueryString = "?Error=WkSDisconnected";
|
||||
}
|
||||
}
|
||||
}
|
||||
Response.Redirect( "login.aspx" + AppendTenantIdToQuery(strQueryString) );
|
||||
}
|
||||
}
|
||||
|
||||
// BUGBUG: Temporary workaround while we need to expose the tenant ID as a query string to end-users
|
||||
private const string tenantIdLabel = "tenantId";
|
||||
public static string AppendTenantIdToQuery(string strQueryString)
|
||||
{
|
||||
if(HttpContext.Current.Request.QueryString != null)
|
||||
{
|
||||
if(!String.IsNullOrEmpty(HttpContext.Current.Request.QueryString[tenantIdLabel]))
|
||||
{
|
||||
string strTenantIdParams = tenantIdLabel + "=" + HttpUtility.UrlEncode(HttpContext.Current.Request.QueryString[tenantIdLabel]);
|
||||
if(String.IsNullOrEmpty(strQueryString))
|
||||
{
|
||||
return "?" + strTenantIdParams;
|
||||
}
|
||||
else
|
||||
{
|
||||
return strQueryString + "&" + strTenantIdParams;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return strQueryString;
|
||||
}
|
||||
|
||||
</script>
|
BIN
RDSFactorWeb/RDWeb/Pages/en-US/password.aspx
Normal file
429
RDSFactorWeb/RDWeb/Pages/en-US/rap-help.htm
Normal file
|
@ -0,0 +1,429 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
|
||||
<title ID=HELP_TITLE>RD Web Access Help</title>
|
||||
<style>
|
||||
.style1 {
|
||||
|
||||
}
|
||||
.TSHelp{
|
||||
font-family: "Segoe UI", "Calibri", Tahoma, sans-serif;
|
||||
font-size: 12px;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
color: #000000;
|
||||
line-height: normal;
|
||||
text-transform: none;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
.UI{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
li {
|
||||
margin-bottom: 3pt;
|
||||
margin-top: 3pt;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: small;
|
||||
color: #006666;
|
||||
}
|
||||
|
||||
.WebUI {
|
||||
font-weight: bold;
|
||||
}
|
||||
a:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
-->
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body lang=EN-US link=blue vlink=purple class="TSHelp">
|
||||
|
||||
|
||||
|
||||
<a name="_TopOfPage"></a><br><ID ID=INTRODUCTION>
|
||||
<p>For the most current version of this information, see <a href="http://go.microsoft.com/fwlink/?LinkId=141038">http://go.microsoft.com/fwlink/?LinkId=141038</a>.</p>
|
||||
<p>The Remote Desktop Web Access (RD Web Access) Web site enables you to use a web browser to access RemoteApp and Desktop Connections.</p>
|
||||
</ID>
|
||||
<h3 ID=TOPICS>Help Topics</h3>
|
||||
<ul>
|
||||
<li id=REMOTE_APP_DESKTOP_CONNECTIONS><a href="#UserTopic_What_is_RemoteApp_and_Desktop_Connections">What is RemoteApp and Desktop Connections?</a></li>
|
||||
<li id=REMOTE_PROGRAMS><a href="#UserTopic_What_are_Remote_Programs">What is RemoteApp?</a></li>
|
||||
<li id=STARTING_REMOTE_PROGRAMS><a href="#UserTopic_Starting_a_RemoteProgram">Starting a RemoteApp program</a></li>
|
||||
<li id=STARTING_REMOTE_DESKTOP_TAB><a href="#UserTopic_What_is_the_Remote_Desktop_tab">What is the Remote Desktop tab?</a></li>
|
||||
<li id=PUBLIC_PRIVATE_MODE><a href="#UserTopic_Public_Private_Mode">Public vs. private computer settings</a></li>
|
||||
<li id=COMPUTER_REQ><a href="#UserTopic_Computer_requirements">Computer requirements</a></li>
|
||||
<li id=CONTROL><a href="#UserTopic_Get_ActiveX">I am prompted to run the Remote Desktop Services ActiveX Client control. How do I do that?</a></li>
|
||||
</ul>
|
||||
|
||||
<hr>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<h3><a name="UserTopic_What_is_RemoteApp_and_Desktop_Connections"><id id=REMOTE_APP_DESKTOP_CONNECTIONS2>What is RemoteApp and Desktop Connection?</id></a></h3>
|
||||
<p ID=REMOTE_PROGRAMS_EXPLANATION >RemoteApp and Desktop Connection gives you a customized view of RemoteApp programs and virtual desktops
|
||||
that have been made available to you by your network administrator.</p>
|
||||
<p id=BACK><a href="#_TopOfPage">Back to topics</a></p>
|
||||
|
||||
<hr>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<h3><a name="UserTopic_What_are_Remote_Programs"><id id=REMOTE_PROGRAMS2>What is RemoteApp?</id></a></h3>
|
||||
<p ID=REMOTE_PROGRAMS_EXPLANATION >Using RemoteApp, you can access programs on a remote computer through Remote Desktop Services.
|
||||
Although the programs are running on a remote computer, RemoteApp programs behave as if they are running on your local computer.
|
||||
For example, a RemoteApp program has its own entry in the taskbar, and you can resize, minimize, or maximize the program window.</p>
|
||||
<p id=BACK><a href="#_TopOfPage">Back to topics</a></p>
|
||||
|
||||
<hr>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
||||
<h3 id=STARTING_REMOTE_PROGRAMS2><a name="UserTopic_Starting_a_RemoteProgram">Starting a RemoteApp program</a></h3>
|
||||
<p ID=STARTING_REMOTE_PROGRAMS_EXPLANATION >To start a RemoteApp program or Remote Desktop session,
|
||||
click the program icon in RD Web Access. When you're prompted for user credentials,
|
||||
log on with your network user name and password.</p>
|
||||
<p id=BACK><a href="#_TopOfPage">Back to topics</a></p>
|
||||
|
||||
<hr>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
||||
<h3 id=STARTING_REMOTE_DESKTOP_TAB2><a name="UserTopic_What_is_the_Remote_Desktop_tab">What is the Remote Desktop tab?</a></h3>
|
||||
<p ID=STARTING_REMOTE_DESKTOP_TAB_EXPLANATION >The Remote Desktop tab allows you to connect from the RD Web Access website
|
||||
to any desktop that is configured to accept Remote Desktop connections.</p>
|
||||
<p id=BACK><a href="#_TopOfPage">Back to topics</a></p>
|
||||
|
||||
<hr>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
||||
<h3 id=PUBLIC_PRIVATE_MODE2><a name="UserTopic_Public_Private_Mode">Public vs. private computer settings</a></h3>
|
||||
<p ID=PUBLIC_PRIVATE_MODE_EXPLANATION >If you connect to the RD Web Access site from a public computer,
|
||||
such as a kiosk computer in a public establishment, or from a computer that you share with other users,
|
||||
click <b>This is a public or shared computer</b>. You will need to provide both your user name and password
|
||||
each time you sign in to the RD Web Access website.<br><br>
|
||||
If you're using a work computer assigned to you, that you don't share with other people, click
|
||||
<b>This is a private computer</b>. Your user name will be remembered, so you'll only have to provide your password
|
||||
each time you sign in to the RD Web Access website.<br><br>
|
||||
To protect against unauthorized access, RD Web Access sessions automatically end after a period of inactivity.
|
||||
If your RD Web Access session ends, you'll need to sign in again. The amount of time before a session ends
|
||||
is determined by your administrator.
|
||||
</p>
|
||||
<p id=BACK><a href="#_TopOfPage">Back to topics</a></p>
|
||||
|
||||
<hr>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
||||
<h3 id=COMPUTER_REQ2><a name="UserTopic_Computer_requirements">Computer requirements</a></h3>
|
||||
<p ID=COMPUTER_REQ_EXPLANATION >To use RD Web Access, your computer must be running at least Internet Explorer 6.0 and
|
||||
a version of Remote Desktop Connection (RDC) that supports at least Remote Desktop Protocol (RDP) 6.1.<BR><BR>
|
||||
To determine the RDP version that RDC supports, start Remote Desktop Connection,
|
||||
click the icon in the upper-left corner of the Remote Desktop Connection dialog box, and then click About.
|
||||
The RDP version that RDC supports is listed in the About Remote Desktop Connection dialog box.<BR><BR>
|
||||
RDC 6.1 supports Remote Desktop Protocol 6.1. RDC 6.1 is included with the following operating systems:<BR><BR>
|
||||
<ul>
|
||||
<li ID=LONGHORN >Windows Server 2008 </li>
|
||||
<li ID=VISTA >Windows Vista with SP1</li>
|
||||
<li ID=XP >Windows XP with SP3</li>
|
||||
</ul>
|
||||
|
||||
The version of RDC in Windows 7 and Windows Server 2008 R2 supports RDP 7.0.<BR><BR>
|
||||
Additionally, the Remote Desktop Services ActiveX Client control must be enabled. The ActiveX control
|
||||
is included with RDC 6.1 and the version of RDC in Windows 7 and Windows Server 2008 R2.<BR><BR>
|
||||
The version of RDC that you're using determines which features of RD Web Access are available to you.<BR><BR>
|
||||
For more information about client requirements for using RD Web Access, see
|
||||
<a href="http://go.microsoft.com/fwlink/?LinkId=142240">http://go.microsoft.com/fwlink/?LinkId=142240</a>.
|
||||
</p>
|
||||
<p id=BACK><a href="#_TopOfPage">Back to topics</a></p>
|
||||
|
||||
<hr>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<h3 id=CONTROL2><a name="UserTopic_Get_ActiveX">I am prompted to run the Remote Desktop Services ActiveX Client control. How can I do that?</a></h3>
|
||||
<p ID=CONTROL_EXPLANATION >If you're prompted to run the Remote Desktop Services ActiveX Client control when you access RD Web Access,
|
||||
do either of the following, depending on your operating system:
|
||||
<ul>
|
||||
<li ID=LONGHORN >If you're running Windows Server 2003 or Windows XP, and you’re prompted to run the
|
||||
Remote Desktop Services ActiveX Client control, click the message line,
|
||||
click <b>Run ActiveX Control</b>, and then click <b>Run</b>.
|
||||
After you have enabled the control, refresh the Web page.</li>
|
||||
<li ID=VISTA >If you're running Windows Server 2008 or Windows Vista, click the warning message on
|
||||
the Internet Explorer Information bar, point to <b>Add-on Disabled</b>,
|
||||
and then click <b>Run ActiveX Control</b>. When you do this, you might see a
|
||||
security warning. Make sure that the publisher of the ActiveX control is "Microsoft Corporation"
|
||||
before you click <b>Run</b>.</li>
|
||||
<li ID=XP >If you're running Windows Server 2008 R2 or Windows 7, in addition to the above steps, you can
|
||||
choose to allow the ActiveX control to run only on this website.</li>
|
||||
</ul>
|
||||
|
||||
If the Internet Explorer Information bar doesn't appear, you can enable the ActiveX control by using
|
||||
the <b>Manage Add-ons</b> tool on the <b>Tools</b> menu of Internet Explorer.<BR><BR>
|
||||
If your computer meets all of the client requirements but you do not see any programs listed,
|
||||
contact your network administrator or the webmaster of the website.
|
||||
</p>
|
||||
<p id=BACK><a href="#_TopOfPage">Back to topics</a></p>
|
||||
|
||||
<hr>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
<p> </p>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
|
284
RDSFactorWeb/RDWeb/Pages/en-US/tswa.css
Normal file
|
@ -0,0 +1,284 @@
|
|||
|
||||
#content
|
||||
{
|
||||
position:relative;
|
||||
height:490px;
|
||||
background-color:white;
|
||||
color:Black;
|
||||
vertical-align:top;
|
||||
margin:0px;
|
||||
padding:5px;
|
||||
}
|
||||
|
||||
#homemain
|
||||
{
|
||||
position:relative;
|
||||
top:0px;
|
||||
width:900px;
|
||||
margin-top:0px;
|
||||
padding:0px;
|
||||
background-color:Transparent;
|
||||
text-align:left;
|
||||
z-index:0;
|
||||
}
|
||||
|
||||
body
|
||||
{
|
||||
background-image: url(../images/bg_globe_01.jpg);
|
||||
background-attachment: fixed;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
margin-left: 0px;
|
||||
margin-top: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 0px;
|
||||
background-color: #7fa4bf;
|
||||
}
|
||||
|
||||
body,td,th,select
|
||||
{
|
||||
font-family: "Segoe UI", "Calibri", Tahoma, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.pageBorder
|
||||
{
|
||||
border: 1px solid #444444;
|
||||
}
|
||||
|
||||
.textInputField
|
||||
{
|
||||
font-family: "Segoe UI", "Calibri", Tahoma, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #000000;
|
||||
background-color: #EAF4FF;
|
||||
}
|
||||
|
||||
.formButton
|
||||
{
|
||||
font-family: "Segoe UI", "Calibri", Tahoma, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
/* Style for the Apply button in the Web-Part Edit Zone */
|
||||
#ApplyButton
|
||||
{
|
||||
font-family: "Segoe UI", "Calibri", Tahoma, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
|
||||
.wrng
|
||||
{
|
||||
color: #C00000
|
||||
}
|
||||
|
||||
.expl
|
||||
{
|
||||
color: #336699
|
||||
}
|
||||
|
||||
|
||||
.headingCompanyName
|
||||
{
|
||||
font-size: 24px;
|
||||
font-family: "Segoe UI", "Calibri", Tahoma, sans-serif;
|
||||
}
|
||||
|
||||
|
||||
td.cellMSLogo > table
|
||||
{
|
||||
margin-right:0;
|
||||
margin-left:auto;
|
||||
}
|
||||
|
||||
td.cellSecondaryNavigationBar > table
|
||||
{
|
||||
margin-right:0;
|
||||
margin-left:auto;
|
||||
}
|
||||
|
||||
.headingApplicationName
|
||||
{
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.headingTSWA
|
||||
{
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.headingForActivePageInNavigationBar
|
||||
{
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
color: #336699;
|
||||
}
|
||||
|
||||
.linkPrimaryNavigiationBar a
|
||||
{
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.linkPrimaryNavigiationBar a:hover
|
||||
{
|
||||
color: #336699;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
.linkSecondaryNavigiationBar a
|
||||
{
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.linkSecondaryNavigiationBar a:hover
|
||||
{
|
||||
color: #336699;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.dividerInNavigationBar
|
||||
{
|
||||
color: #CCCCCC;
|
||||
}
|
||||
|
||||
.tswa_appboard
|
||||
{
|
||||
background-color:transparent;
|
||||
position:relative;
|
||||
top:18px;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
.tswa_boss, .tswa_folder_boss, .tswa_up_boss
|
||||
{
|
||||
position:relative;
|
||||
width:83px;
|
||||
height:90px;
|
||||
margin:0px;
|
||||
padding:0px;
|
||||
background-color:Transparent;
|
||||
text-align:center;
|
||||
vertical-align:middle;
|
||||
float:left;
|
||||
}
|
||||
|
||||
.tswa_boss_spacer
|
||||
{
|
||||
margin: 0px;
|
||||
padding: 12px 1px 0px 4px;
|
||||
}
|
||||
|
||||
.tswa_boss_img
|
||||
{
|
||||
border:none;
|
||||
}
|
||||
|
||||
.tswa_iconimg
|
||||
{
|
||||
position:relative;
|
||||
margin:0px;
|
||||
top:-4px;
|
||||
width:32px;
|
||||
height:32px;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.tswa_ttext
|
||||
{
|
||||
position:relative;
|
||||
top:-1px;
|
||||
width:70px;
|
||||
height:42px;
|
||||
font-size:11px;
|
||||
line-height:13px;
|
||||
text-overflow:ellipsis;
|
||||
overflow:hidden;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.tswa_vis0
|
||||
{
|
||||
visibility:hidden;
|
||||
position:absolute;
|
||||
top:0px;
|
||||
left:3px;
|
||||
height:85px;
|
||||
width:77px;
|
||||
background-color:Transparent;
|
||||
}
|
||||
|
||||
.tswa_vis1
|
||||
{
|
||||
visibility:visible;
|
||||
position:absolute;
|
||||
top:0px;
|
||||
left:3px;
|
||||
height:85px;
|
||||
width:77px;
|
||||
background-color:Transparent;
|
||||
}
|
||||
|
||||
.tswa_PublicCheckboxMore
|
||||
{
|
||||
position:relative;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
.tswa_PublicCheckboxLess
|
||||
{
|
||||
position:relative;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
.tswa_ShowOptimizeExperienceShiftedUp
|
||||
{
|
||||
position:relative;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
.tswa_ShowOptimizeExperience
|
||||
{
|
||||
position:relative;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
.tswa_error_icon
|
||||
{
|
||||
background-color:Transparent;
|
||||
font-size:17px;
|
||||
line-height:32px;
|
||||
height:32px;
|
||||
width:300px;
|
||||
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, src='../images/erroricon.png',sizingMethod='crop');
|
||||
margin-left:10px;
|
||||
padding-left:45px
|
||||
}
|
||||
|
||||
.tswa_error_msg
|
||||
{
|
||||
font-size:12px;
|
||||
margin-left:55px;
|
||||
padding-right:10px;
|
||||
}
|
||||
|
||||
.tswa_CurrentFolderLabel
|
||||
{
|
||||
font-family: "Segoe UI", "Calibri", Tahoma, sans-serif;
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
text-decoration : none;
|
||||
margin-left: 25px;
|
||||
margin-bottom: 10px;
|
||||
}
|
BIN
RDSFactorWeb/RDWeb/Pages/images/Ivmo.png
Normal file
After Width: | Height: | Size: 668 B |
BIN
RDSFactorWeb/RDWeb/Pages/images/WS_h_c.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/Warning24.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/banner_01.jpg
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/banner_02.jpg
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/bar_03.jpg
Normal file
After Width: | Height: | Size: 7.1 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/bg_globe_01.jpg
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/bottom_left.png
Normal file
After Width: | Height: | Size: 252 B |
BIN
RDSFactorWeb/RDWeb/Pages/images/bottom_mid.png
Normal file
After Width: | Height: | Size: 224 B |
BIN
RDSFactorWeb/RDWeb/Pages/images/bottom_right.png
Normal file
After Width: | Height: | Size: 264 B |
BIN
RDSFactorWeb/RDWeb/Pages/images/clear.gif
Normal file
After Width: | Height: | Size: 43 B |
BIN
RDSFactorWeb/RDWeb/Pages/images/erroricon.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/folder.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/left_mid.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
RDSFactorWeb/RDWeb/Pages/images/logo_01.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/logo_02.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/mslogo_black.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/rapwait.gif
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
RDSFactorWeb/RDWeb/Pages/images/right_mid.png
Normal file
After Width: | Height: | Size: 214 B |
BIN
RDSFactorWeb/RDWeb/Pages/images/top_left.png
Normal file
After Width: | Height: | Size: 234 B |
BIN
RDSFactorWeb/RDWeb/Pages/images/top_mid.png
Normal file
After Width: | Height: | Size: 206 B |
BIN
RDSFactorWeb/RDWeb/Pages/images/top_right.png
Normal file
After Width: | Height: | Size: 271 B |
BIN
RDSFactorWeb/RDWeb/Pages/images/up.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
613
RDSFactorWeb/RDWeb/Pages/renderscripts.js
Normal file
|
@ -0,0 +1,613 @@
|
|||
var helpPopup = null;
|
||||
var strTSWACookieName = "TSWAAuthClientSideCookie";
|
||||
var strTransparentGif = "../images/clear.gif";
|
||||
var g_objWorkspace = null;
|
||||
var g_activeXSSOMode = false;
|
||||
var g_activeXSSOModeSet = false;
|
||||
var g_workspaceObjectVersion = -1;
|
||||
var bFormAuthenticationMode = false;
|
||||
var iSessionTimeout = 0;
|
||||
var iConstSecToMilliSec = 1000;
|
||||
var iConstMinuteToMilliSec = (60 * iConstSecToMilliSec);
|
||||
var iConstPreAutoDisconnectFactor = (4 / 5); // To make it 80% of iAutoDisconnectSessionTimeout.
|
||||
var iConstPreAutoDisconnectThreshold = (2 * iConstSecToMilliSec); // After which onPreAutoDisconnect should not be set.
|
||||
var iAutoDisconnectTimerId = null;
|
||||
var iPreAutoDisconnectTimerId = null;
|
||||
var iAutoDisconnectSessionTimeout = 0;
|
||||
var iPreAutoDisconnectSessionTimeout = 0;
|
||||
var objPageLoadTime = null;
|
||||
var objLastUserActivityTime = null;
|
||||
var objXmlHttp = null;
|
||||
var bAsyncPageRequestSucceeded = false;
|
||||
var bIsUserActive = false;
|
||||
var strBaseUrl = "";
|
||||
|
||||
|
||||
function clearAutoDisconnectTimer()
|
||||
{
|
||||
if ( iAutoDisconnectTimerId != null )
|
||||
{
|
||||
clearTimeout( iAutoDisconnectTimerId );
|
||||
iAutoDisconnectTimerId = null;
|
||||
}
|
||||
}
|
||||
|
||||
function clearPreAutoDisconnectTimer()
|
||||
{
|
||||
if ( iPreAutoDisconnectTimerId != null )
|
||||
{
|
||||
clearTimeout( iPreAutoDisconnectTimerId );
|
||||
iPreAutoDisconnectTimerId = null;
|
||||
}
|
||||
}
|
||||
|
||||
function onPageload(e) {
|
||||
//
|
||||
// Browser Name in the form : 'MSIE x.x'.
|
||||
//
|
||||
var iePattern = /MSIE (\d+)\./;
|
||||
var ieMatch = iePattern.exec(window.navigator.userAgent);
|
||||
|
||||
if (ieMatch) {
|
||||
if (parseInt(ieMatch[1]) <= 6)
|
||||
{
|
||||
ApplyPngTransparency();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onPageUnload(e)
|
||||
{
|
||||
clearAutoDisconnectTimer();
|
||||
clearPreAutoDisconnectTimer();
|
||||
if ( helpPopup != null && helpPopup.closed == false )
|
||||
{
|
||||
helpPopup.close();
|
||||
}
|
||||
}
|
||||
|
||||
function onAuthenticatedPageload(e)
|
||||
{
|
||||
if ( bFormAuthenticationMode == true )
|
||||
{
|
||||
objLastUserActivityTime = objPageLoadTime = new Date();
|
||||
iAutoDisconnectSessionTimeout = (iSessionTimeout * iConstMinuteToMilliSec);
|
||||
iPreAutoDisconnectSessionTimeout = (iConstPreAutoDisconnectFactor * iAutoDisconnectSessionTimeout);
|
||||
|
||||
//
|
||||
// Show Workspace Notification
|
||||
// Setup onAutoDisconnect timer regardless of onAuthenticated succcess/failure to preserve old behavior
|
||||
//
|
||||
onAuthenticated();
|
||||
iAutoDisconnectTimerId = setTimeout( "onAutoDisconnect()", iAutoDisconnectSessionTimeout );
|
||||
//
|
||||
// Setup onPreAutoDisconnect timer to keep web and workspace runtime in sync with user activity
|
||||
// if the workspace runtime supports OnAuthenticatedEx i.e. updating expiry timer.
|
||||
//
|
||||
if ( iPreAutoDisconnectSessionTimeout > iConstPreAutoDisconnectThreshold )
|
||||
{
|
||||
iPreAutoDisconnectTimerId = setTimeout( "onPreAutoDisconnect()", iPreAutoDisconnectSessionTimeout );
|
||||
}
|
||||
}
|
||||
onPageload(e);
|
||||
}
|
||||
|
||||
function onClickHelp()
|
||||
{
|
||||
if ( helpPopup == null || helpPopup.closed == true )
|
||||
{
|
||||
helpPopup = window.open( sHelpSource,
|
||||
"_blank",
|
||||
"height=600px, width=600px, left=600, top=150, toolbar=no, resizable=yes, scrollbars=yes, menubar=no" );
|
||||
}
|
||||
else
|
||||
{
|
||||
helpPopup.close();
|
||||
helpPopup = null;
|
||||
}
|
||||
}
|
||||
|
||||
function onAutoDisconnect()
|
||||
{
|
||||
if ( bAsyncPageRequestSucceeded )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var iErrorCode;
|
||||
var objWorkspace = null;
|
||||
var strWorkspaceId = "";
|
||||
var strCookieContents = getCookieContents(strTSWACookieName);
|
||||
|
||||
if ( null != strCookieContents )
|
||||
{
|
||||
strWorkspaceId = decodeURIComponent( getCookieCrumbValue(strCookieContents, "WorkSpaceID") );
|
||||
}
|
||||
|
||||
if (strWorkspaceId != null &&
|
||||
strWorkspaceId != "" &&
|
||||
GetActiveXSSOMode())
|
||||
{
|
||||
try
|
||||
{
|
||||
objWorkspace = GetWorkspaceObject();
|
||||
objWorkspace.ClearWorkspaceCredential( strWorkspaceId );
|
||||
}
|
||||
catch (objException)
|
||||
{
|
||||
objWorkspace = null;
|
||||
iErrorCode = (objException.number & 0xFFFF);
|
||||
}
|
||||
}
|
||||
|
||||
window.location = strBaseUrl + "LogOff.aspx" + window.location.search;
|
||||
}
|
||||
|
||||
function onUserDisconnect()
|
||||
{
|
||||
var objWorkspace = null;
|
||||
var iErrorCode;
|
||||
var strWorkspaceId = "";
|
||||
var strCookieContents = getCookieContents(strTSWACookieName);
|
||||
|
||||
if ( null != strCookieContents )
|
||||
{
|
||||
strWorkspaceId = decodeURIComponent( getCookieCrumbValue(strCookieContents, "WorkSpaceID") );
|
||||
}
|
||||
|
||||
if (strWorkspaceId != null &&
|
||||
strWorkspaceId != "" &&
|
||||
GetActiveXSSOMode())
|
||||
{
|
||||
try
|
||||
{
|
||||
objWorkspace = GetWorkspaceObject();
|
||||
objWorkspace.DisconnectWorkspace( strWorkspaceId );
|
||||
}
|
||||
catch (objException)
|
||||
{
|
||||
objWorkspace = null;
|
||||
iErrorCode = (objException.number & 0xFFFF);
|
||||
}
|
||||
}
|
||||
|
||||
window.location = strBaseUrl + "LogOff.aspx" + window.location.search;
|
||||
}
|
||||
|
||||
function onClickSecurity() {
|
||||
var bPrivateMode = document.getElementById("rdoPrvt").checked;
|
||||
var objPassword = document.getElementById("UserPass");
|
||||
var objDomainUserName = document.getElementById("DomainUserName");
|
||||
|
||||
if (GetActiveXSSOMode()) {
|
||||
document.getElementById("trPrvtWrn").style.display = bPrivateMode ? "" : "none";
|
||||
}
|
||||
|
||||
if ( bPrivateMode )
|
||||
{
|
||||
document.FrmLogin["flags"].value |= 4;
|
||||
if ( objPassword && objDomainUserName )
|
||||
{
|
||||
objPassword.setAttribute("autocomplete", "on");
|
||||
objDomainUserName.setAttribute("autocomplete", "on");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.FrmLogin["flags"].value &= ~4;
|
||||
if ( objPassword && objDomainUserName )
|
||||
{
|
||||
objPassword.setAttribute("autocomplete", "off");
|
||||
objDomainUserName.setAttribute("autocomplete", "off");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function showElement(objElement)
|
||||
{
|
||||
objElement.style.display = "";
|
||||
}
|
||||
|
||||
function hideElement(objElement)
|
||||
{
|
||||
objElement.style.display = "none";
|
||||
}
|
||||
|
||||
function onclickExplanation(id)
|
||||
{
|
||||
var objElement = document.getElementById(id);
|
||||
if ( objElement.tagName=="IMG" )
|
||||
{
|
||||
objElement = objElement.parentElement;
|
||||
}
|
||||
|
||||
switch(objElement)
|
||||
{
|
||||
case document.getElementById("lnkShwSec"):
|
||||
hideElement(document.getElementById("lnkShwSec"));
|
||||
showElement(document.getElementById("lnkHdSec"));
|
||||
showElement(document.getElementById("trPubExp"));
|
||||
showElement(document.getElementById("trPrvtExp"));
|
||||
document.getElementById("lnkHdSec").focus();
|
||||
break;
|
||||
|
||||
case document.getElementById("lnkHdSec"):
|
||||
showElement(document.getElementById("lnkShwSec"));
|
||||
hideElement(document.getElementById("lnkHdSec"));
|
||||
hideElement(document.getElementById("trPubExp"));
|
||||
hideElement(document.getElementById("trPrvtExp"));
|
||||
document.getElementById("lnkShwSec").focus();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function getCookieContents(strNameOfCookie)
|
||||
{
|
||||
var objCookieContents = null;
|
||||
var iStartIndex, iEndIndex;
|
||||
|
||||
if ( strNameOfCookie != null &&
|
||||
strNameOfCookie != "" &&
|
||||
document.cookie.length > 0 )
|
||||
{
|
||||
iStartIndex = document.cookie.indexOf( strNameOfCookie + "=" );
|
||||
if ( iStartIndex != -1 )
|
||||
{
|
||||
iStartIndex = iStartIndex + strNameOfCookie.length + 1;
|
||||
iEndIndex = document.cookie.indexOf( ";", iStartIndex );
|
||||
if ( iEndIndex == -1 )
|
||||
{
|
||||
iEndIndex = document.cookie.length;
|
||||
}
|
||||
objCookieContents = document.cookie.substring( iStartIndex, iEndIndex );
|
||||
}
|
||||
}
|
||||
return objCookieContents;
|
||||
}
|
||||
|
||||
function getCookieCrumbValue(strCookieContents, strCookieCrumbName)
|
||||
{
|
||||
var strCookieCrumbValue = "";
|
||||
|
||||
if ( strCookieContents != null &&
|
||||
strCookieContents != "" &&
|
||||
strCookieCrumbName != null &&
|
||||
strCookieCrumbName != ""
|
||||
)
|
||||
{
|
||||
//
|
||||
// strCookieContents is in the form '<Name1>=<Value1>&<Name2>=<Value2>'.
|
||||
//
|
||||
var objCookieCrumbs = strCookieContents.split("&");
|
||||
for (var iIndex = 0; iIndex < objCookieCrumbs.length; iIndex++)
|
||||
{
|
||||
var objCookieCrumb = objCookieCrumbs[iIndex].split("=");
|
||||
|
||||
if ( strCookieCrumbName.toLowerCase() == objCookieCrumb[0].toLowerCase() )
|
||||
{
|
||||
strCookieCrumbValue = objCookieCrumb[1];
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return strCookieCrumbValue;
|
||||
}
|
||||
|
||||
function onAuthenticated()
|
||||
{
|
||||
var iErrorCode;
|
||||
var objWorkspace = null;
|
||||
var bCountUnauthenticatedCredentials = true;
|
||||
var bIsOnAuthenticatedCalled = false;
|
||||
var bIsWorkspaceCredentialSpecified = false;
|
||||
var objForm = document.getElementById("FrmUserInfo");
|
||||
var strLoggedOnDomainUserName = objForm.elements["DomainUserName"].value;
|
||||
|
||||
var strCookieContents = getCookieContents(strTSWACookieName);
|
||||
var strWorkspaceId = decodeURIComponent( getCookieCrumbValue(strCookieContents, "WorkSpaceID") );
|
||||
var strDomainUserName = decodeURIComponent( getCookieCrumbValue(strCookieContents, "Name") );
|
||||
|
||||
if ( strWorkspaceId != null && strWorkspaceId != "" )
|
||||
{
|
||||
if ( strDomainUserName == null || strDomainUserName == "" ||
|
||||
strLoggedOnDomainUserName == null || strLoggedOnDomainUserName == ""
|
||||
)
|
||||
{
|
||||
//
|
||||
// This should never happen.
|
||||
//
|
||||
return;
|
||||
}
|
||||
|
||||
var strQueryStringPreamble = "?";
|
||||
if (window.location.search) {
|
||||
strQueryStringPreamble = window.location.search + "&";
|
||||
}
|
||||
|
||||
if ( strDomainUserName.toLowerCase() == strLoggedOnDomainUserName.toLowerCase()) {
|
||||
if (GetActiveXSSOMode()) {
|
||||
try {
|
||||
objWorkspace = GetWorkspaceObject();
|
||||
bIsWorkspaceCredentialSpecified = objWorkspace.IsWorkspaceCredentialSpecified(strWorkspaceId,
|
||||
bCountUnauthenticatedCredentials);
|
||||
if (bIsWorkspaceCredentialSpecified) {
|
||||
bIsOnAuthenticatedCalled = true;
|
||||
objWorkspace.OnAuthenticated(strWorkspaceId, strDomainUserName);
|
||||
}
|
||||
}
|
||||
catch (objException) {
|
||||
objWorkspace = null;
|
||||
iErrorCode = (objException.number & 0xFFFF);
|
||||
|
||||
if (bIsOnAuthenticatedCalled) {
|
||||
//
|
||||
// 183 = ERROR_ALREADY_EXISTS.
|
||||
//
|
||||
if (iErrorCode == 183) {
|
||||
window.location = strBaseUrl + "LogOff.aspx" + strQueryStringPreamble + "Error=WkSInUse";
|
||||
}
|
||||
//
|
||||
// 1168 = ERROR_NOT_FOUND.
|
||||
//
|
||||
if (iErrorCode == 1168) {
|
||||
window.location = strBaseUrl + "LogOff.aspx" + strQueryStringPreamble + "Error=WkSDisconnected";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// Ideally check workspace state before redirecting; if it has been authenticatd as well.
|
||||
//
|
||||
window.location = strBaseUrl + "LogOff.aspx" + strQueryStringPreamble + "Error=WkSInUse";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function GetWorkspaceObject()
|
||||
{
|
||||
if( g_objWorkspace == null )
|
||||
{
|
||||
var objClientShell = new ActiveXObject("MsRdpWebAccess.MsRdpClientShell");
|
||||
|
||||
g_objWorkspace = objClientShell.MsRdpWorkspace3;
|
||||
if(g_objWorkspace != null)
|
||||
{
|
||||
g_workspaceObjectVersion = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_objWorkspace = objClientShell.MsRdpWorkspace2;
|
||||
if(g_objWorkspace != null)
|
||||
{
|
||||
g_workspaceObjectVersion = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_objWorkspace = objClientShell.MsRdpWorkspace;
|
||||
if(g_objWorkspace != null)
|
||||
{
|
||||
g_workspaceObjectVersion = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_workspaceObjectVersion = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return g_objWorkspace;
|
||||
}
|
||||
|
||||
function GetActiveXSSOMode() {
|
||||
|
||||
if (!g_activeXSSOModeSet) {
|
||||
g_activeXSSOMode = false;
|
||||
|
||||
try {
|
||||
if (GetWorkspaceObject() != null) {
|
||||
g_activeXSSOMode = true;
|
||||
}
|
||||
}
|
||||
catch (objException) {
|
||||
}
|
||||
|
||||
g_activeXSSOModeSet = true;
|
||||
}
|
||||
|
||||
return g_activeXSSOMode;
|
||||
}
|
||||
|
||||
function GetWorkspaceObjectVersion()
|
||||
{
|
||||
if (g_workspaceObjectVersion == -1) {
|
||||
try {
|
||||
GetWorkspaceObject();
|
||||
}
|
||||
catch (objException) {
|
||||
}
|
||||
}
|
||||
|
||||
return g_workspaceObjectVersion;
|
||||
}
|
||||
|
||||
function ApplyPngTransparency()
|
||||
{
|
||||
var objDocumentElements = document.all;
|
||||
var objElement;
|
||||
|
||||
for (var iIndex = objDocumentElements.length - 1; iIndex >=0; iIndex--)
|
||||
{
|
||||
objElement = objDocumentElements[iIndex];
|
||||
// background pngs
|
||||
if ( objElement.currentStyle.backgroundImage.match(/\.png/i) != null )
|
||||
{
|
||||
ApplyPngTransparencyToBackground(objElement);
|
||||
}
|
||||
// image elements
|
||||
if ( objElement.tagName == 'IMG' && objElement.src.match(/\.png$/i) != null )
|
||||
{
|
||||
ApplyPngTransparencyToImage(objElement);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ApplyPngTransparencyToBackground(objBackground)
|
||||
{
|
||||
var strSizingMethod = 'scale';
|
||||
var strBackgroundImageUrl = objBackground.currentStyle.backgroundImage;
|
||||
var strBackgroundImage = strBackgroundImageUrl.substring(5, strBackgroundImageUrl.length-2);
|
||||
|
||||
if ( objBackground.currentStyle.backgroundRepeat == 'no-repeat' )
|
||||
{
|
||||
strSizingMethod = 'crop';
|
||||
}
|
||||
objBackground.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + strBackgroundImage + "', sizingMethod='" + strSizingMethod + "')";
|
||||
objBackground.style.backgroundImage = 'url(' + strTransparentGif + ')';
|
||||
}
|
||||
|
||||
function ApplyPngTransparencyToImage(objImage)
|
||||
{
|
||||
var strImage = objImage.src;
|
||||
objImage.style.width = objImage.width + "px";
|
||||
objImage.style.height = objImage.height + "px";
|
||||
objImage.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + strImage + "', sizingMethod='scale')";
|
||||
objImage.src = strTransparentGif;
|
||||
}
|
||||
|
||||
function getUserNameRdpProperty()
|
||||
{
|
||||
var strUserNameRdpProperty = "";
|
||||
var strCookieContents = getCookieContents(strTSWACookieName);
|
||||
var strDomainUserName = decodeURIComponent( getCookieCrumbValue(strCookieContents, "Name") );
|
||||
|
||||
if ( strDomainUserName != null && strDomainUserName != "" )
|
||||
{
|
||||
strUserNameRdpProperty = "UserName:s:" + strDomainUserName + "\n";
|
||||
}
|
||||
|
||||
return strUserNameRdpProperty;
|
||||
}
|
||||
|
||||
function getXmlHttpObject()
|
||||
{
|
||||
if ( objXmlHttp == null )
|
||||
{
|
||||
if ( window.XMLHttpRequest )
|
||||
{
|
||||
// code for IE7+, Firefox, Chrome, Opera, Safari
|
||||
objXmlHttp = new XMLHttpRequest();
|
||||
}
|
||||
else if ( window.ActiveXObject )
|
||||
{
|
||||
// code for IE6, IE5
|
||||
objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
}
|
||||
return objXmlHttp;
|
||||
}
|
||||
|
||||
function onXmlHttpRequestStateChanged()
|
||||
{
|
||||
if ( objXmlHttp.readyState == 4 && objXmlHttp.status == 200 )
|
||||
{
|
||||
//
|
||||
// Set 'bAsyncPageRequestSucceeded' flag to true
|
||||
// to prevent onAutoDisconnect from disconnecting workspace.
|
||||
//
|
||||
bAsyncPageRequestSucceeded = true;
|
||||
|
||||
//
|
||||
// Calculate User Acivity Window and call into workspace runtime asking to update the timeout.
|
||||
//
|
||||
var objCurrentTime = new Date();
|
||||
var iRemainingAutoDisconnectSessionTimeout = iAutoDisconnectSessionTimeout - (objCurrentTime.getTime() - objLastUserActivityTime.getTime());
|
||||
|
||||
onAuthenticated();
|
||||
iAutoDisconnectSessionTimeout = iRemainingAutoDisconnectSessionTimeout;
|
||||
iPreAutoDisconnectSessionTimeout = (iConstPreAutoDisconnectFactor * iAutoDisconnectSessionTimeout);
|
||||
objLastUserActivityTime = objPageLoadTime = objCurrentTime;
|
||||
|
||||
//
|
||||
// Reset AutoDisconnect timers.
|
||||
//
|
||||
clearAutoDisconnectTimer();
|
||||
clearPreAutoDisconnectTimer();
|
||||
if ( iPreAutoDisconnectSessionTimeout > iConstPreAutoDisconnectThreshold )
|
||||
{
|
||||
iPreAutoDisconnectTimerId = setTimeout( "onPreAutoDisconnect()", iPreAutoDisconnectSessionTimeout );
|
||||
}
|
||||
iAutoDisconnectTimerId = setTimeout( "onAutoDisconnect()", iAutoDisconnectSessionTimeout );
|
||||
|
||||
//
|
||||
// Set bAsyncPageRequestSucceeded and bIsUserActive flags to false.
|
||||
//
|
||||
bAsyncPageRequestSucceeded = false;
|
||||
bIsUserActive = false;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function onPreAutoDisconnect()
|
||||
{
|
||||
//
|
||||
// If user has not made any activity,
|
||||
// reset onPreAutoDisconnect for the remaining time.
|
||||
//
|
||||
if ( bIsUserActive != true )
|
||||
{
|
||||
//
|
||||
// Calculate User Acivity Window and call into workspace runtime asking to update the timeout.
|
||||
//
|
||||
var objCurrentTime = new Date();
|
||||
var iRemainingAutoDisconnectSessionTimeout = iAutoDisconnectSessionTimeout - (objCurrentTime.getTime() - objPageLoadTime.getTime());
|
||||
iRemainingAutoDisconnectSessionTimeout = (iConstPreAutoDisconnectFactor * iRemainingAutoDisconnectSessionTimeout);
|
||||
|
||||
//
|
||||
// Reset AutoDisconnect timers.
|
||||
//
|
||||
clearPreAutoDisconnectTimer();
|
||||
if ( iRemainingAutoDisconnectSessionTimeout > iConstPreAutoDisconnectThreshold )
|
||||
{
|
||||
iPreAutoDisconnectTimerId = setTimeout( "onPreAutoDisconnect()", iRemainingAutoDisconnectSessionTimeout );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Turn off the flags.
|
||||
//
|
||||
bAsyncPageRequestSucceeded = false;
|
||||
|
||||
//
|
||||
// Send a background async request to the server to refresh the tick.
|
||||
// Not using window.location.reload as that refreshes the page in browser leading to bad UX.
|
||||
//
|
||||
objXmlHttp = getXmlHttpObject();
|
||||
if ( objXmlHttp == null )
|
||||
{
|
||||
return; // browser does not support XMLHTTP - fail silently
|
||||
}
|
||||
|
||||
objXmlHttp.onreadystatechange = onXmlHttpRequestStateChanged;
|
||||
objXmlHttp.open( "GET", window.location, true);
|
||||
objXmlHttp.send( null );
|
||||
}
|
||||
|
||||
function onUserActivity( objEvent )
|
||||
{
|
||||
objLastUserActivityTime = new Date();
|
||||
if ( bIsUserActive != true )
|
||||
{
|
||||
bIsUserActive = true;
|
||||
}
|
||||
}
|
181
RDSFactorWeb/RDWeb/Pages/tswf.xsd
Normal file
|
@ -0,0 +1,181 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema targetNamespace="http://schemas.microsoft.com/ts/2007/05/tswf" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/ts/2007/05/tswf" xmlns:mstns="http://schemas.microsoft.com/ts/2007/05/tswf" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.1">
|
||||
<xs:element name="ResourceCollection" type="ResourceCollectionType" />
|
||||
<xs:complexType name="ResourceCollectionType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Publisher" type="PublisherType" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:key name="ResourceIDKey">
|
||||
<xs:selector xpath="mstns:Resources/mstns:Resource" />
|
||||
<xs:field xpath="@ID" />
|
||||
</xs:key>
|
||||
<xs:key name="TerminalServerIDKey">
|
||||
<xs:selector xpath="mstns:TerminalServers/mstns:TerminalServer" />
|
||||
<xs:field xpath="@ID" />
|
||||
</xs:key>
|
||||
<xs:keyref name="ResourceToTerminalServerRef" refer="TerminalServerIDKey">
|
||||
<xs:selector xpath="mstns:Resources/mstns:Resource/mstns:HostingTerminalServers/mstns:HostingTerminalServer/mstns:TerminalServerRef" />
|
||||
<xs:field xpath="@Ref" />
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="SchemaVersion" type="xs:string" use="required" />
|
||||
<xs:attribute name="PubDate" type="xs:dateTime" />
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PublisherType">
|
||||
<xs:sequence>
|
||||
<xs:element name="SubFolders" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Folder" type="FolderType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="Resources">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Resource" type="ResourceType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="TerminalServers">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="TerminalServer" type="TerminalServerType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="LastUpdated" type="xs:dateTime" />
|
||||
<xs:attribute name="Name" type="xs:string" />
|
||||
<xs:attribute name="ID" type="xs:string" />
|
||||
<xs:attribute name="Description" type="xs:string" />
|
||||
<xs:attribute name="SupportsReconnect" type="xs:boolean" />
|
||||
<xs:attribute name="DisplayFolder" type="xs:string"/>
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
<!-- Resource and related Types -->
|
||||
<xs:complexType name="ResourceType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Icons" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="IconRaw" type="IconType" />
|
||||
<xs:element name="Icon16" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon32" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon48" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon64" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon100" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon256" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon" type="IconType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="FileExtensions" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="FileExtension" type="FileExtensionType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="Folders" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="Folder" type="FolderType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="HostingTerminalServers">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="HostingTerminalServer" type="HostingTerminalServerType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="ID" type="xs:string" use="required" />
|
||||
<xs:attribute name="Alias" type="xs:string" />
|
||||
<xs:attribute name="Title" type="xs:string" />
|
||||
<xs:attribute name="LastUpdated" type="xs:dateTime" />
|
||||
<xs:attribute name="Type">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Desktop" />
|
||||
<xs:enumeration value="RemoteApp" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="RequiredCommandLine" type="xs:string" />
|
||||
<xs:attribute name="ExecutableName" type="xs:string" />
|
||||
<xs:attribute name="ShowByDefault" type="xs:boolean" />
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IconType">
|
||||
<xs:sequence>
|
||||
<xs:element name="FileContent" type="xs:string" minOccurs="0" maxOccurs="1" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Dimensions" type="xs:string" />
|
||||
<xs:attribute name="FileType" type="xs:string" />
|
||||
<xs:attribute name="FileURL" type="xs:string" />
|
||||
<xs:attribute name="Index" type="xs:integer" />
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="FileExtensionType">
|
||||
<xs:sequence>
|
||||
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" type="xs:string" />
|
||||
<xs:attribute name="PrimaryHandler" type="xs:string" />
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
<xs:element name="FileAssociationIcons">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="IconRaw" type="IconType" />
|
||||
<xs:element name="Icon16" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon32" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon48" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon64" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon100" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon256" type="IconType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="Icon" type="IconType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:complexType name="TerminalServerRefType">
|
||||
<xs:attribute name="Ref" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="FolderType">
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ResourceFileType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Content" type="xs:string" minOccurs="0" maxOccurs="1" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="URL" type="xs:string" />
|
||||
<xs:attribute name="FileExtension" type="xs:string" default=".rdp" />
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="HostingTerminalServerType">
|
||||
<xs:sequence>
|
||||
<xs:element name="ResourceFile" type="ResourceFileType" minOccurs="0" maxOccurs="1" />
|
||||
<xs:element name="TerminalServerRef" type="TerminalServerRefType" />
|
||||
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
|
||||
</xs:sequence>
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
<!-- TerminalServer and related Types -->
|
||||
<xs:complexType name="TerminalServerType">
|
||||
<xs:attribute name="ID" type="xs:string" use="required" />
|
||||
<xs:attribute name="Name" type="xs:string" />
|
||||
<xs:attribute name="LastUpdated" type="xs:dateTime" />
|
||||
<xs:anyAttribute processContents="lax" />
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
180
RDSFactorWeb/RDWeb/Pages/webscripts-domain.js
Normal file
|
@ -0,0 +1,180 @@
|
|||
|
||||
function onLoginFormSubmit()
|
||||
{
|
||||
var bStopSubmission = false;
|
||||
var iErrorCode;
|
||||
var objForm = document.getElementById("FrmLogin");
|
||||
var strDomainName = null;
|
||||
var strDomainUserName = "";
|
||||
var strPassword = "";
|
||||
var strWorkspaceId = "";
|
||||
var strWorkspaceFriendlyName = "";
|
||||
var strRedirectorName = "";
|
||||
var strRDPCertificates = "";
|
||||
var bPrivateMode = document.getElementById("rdoPrvt").checked;
|
||||
var strTimeout = "0";
|
||||
|
||||
hideElement(document.getElementById("trErrorWorkSpaceInUse"));
|
||||
hideElement(document.getElementById("trErrorWorkSpaceDisconnected"));
|
||||
hideElement(document.getElementById("trErrorIncorrectCredentials"));
|
||||
hideElement(document.getElementById("trErrorDomainNameMissing"));
|
||||
hideElement(document.getElementById("trErrorUnauthorizedAccess"));
|
||||
hideElement(document.getElementById("trErrorServerConfigChanged"));
|
||||
|
||||
if ( objForm != null )
|
||||
{
|
||||
strDomainUserName = objForm.elements["DomainUserName"].value;
|
||||
strPassword = objForm.elements["UserPass"].value;
|
||||
strWorkspaceId = objForm.elements["WorkSpaceID"].value;
|
||||
strRDPCertificates = objForm.elements["RDPCertificates"].value;
|
||||
strWorkspaceFriendlyName = objForm.elements["WorkspaceFriendlyName"].value;
|
||||
strRedirectorName = objForm.elements["RedirectorName"].value;
|
||||
|
||||
if( bPrivateMode )
|
||||
{
|
||||
strTimeout = objForm.elements["PrivateModeTimeout"].value;
|
||||
}
|
||||
else
|
||||
{
|
||||
strTimeout = objForm.elements["PublicModeTimeout"].value;
|
||||
}
|
||||
|
||||
if ( -1 != strDomainUserName.indexOf("\\") )
|
||||
{
|
||||
strDomainName = strDomainUserName.substring( 0, strDomainUserName.indexOf("\\") );
|
||||
}
|
||||
else if ( -1 != strDomainUserName.indexOf("@") )
|
||||
{
|
||||
strDomainName = strDomainUserName.substring( strDomainUserName.indexOf("@") + 1, strDomainUserName.length );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ( strDomainUserName == null || strDomainUserName == "" ||
|
||||
strPassword == null || strPassword == "" )
|
||||
{
|
||||
showElement(document.getElementById("trErrorIncorrectCredentials"));
|
||||
bStopSubmission = true;
|
||||
}
|
||||
else if ( strDomainName == null || strDomainName == "" || strDomainName == "." )
|
||||
{
|
||||
showElement(document.getElementById("trErrorDomainNameMissing"));
|
||||
bStopSubmission = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strWorkspaceId != null &&
|
||||
strWorkspaceId != "" &&
|
||||
GetActiveXSSOMode())
|
||||
{
|
||||
try
|
||||
{
|
||||
var iWorkspaceVersion = GetWorkspaceObjectVersion();
|
||||
var objWorkspace = GetWorkspaceObject();
|
||||
|
||||
if (iWorkspaceVersion >= 2)
|
||||
{
|
||||
objWorkspace.StartWorkspaceEx(
|
||||
strWorkspaceId,
|
||||
strWorkspaceFriendlyName,
|
||||
strRedirectorName,
|
||||
strDomainUserName,
|
||||
strPassword,
|
||||
strRDPCertificates,
|
||||
parseInt(strTimeout),
|
||||
0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
objWorkspace.StartWorkspace(
|
||||
strWorkspaceId,
|
||||
strDomainUserName,
|
||||
strPassword,
|
||||
strRDPCertificates,
|
||||
parseInt(strTimeout),
|
||||
0);
|
||||
}
|
||||
}
|
||||
catch (objException)
|
||||
{
|
||||
iErrorCode = (objException.number & 0xFFFF);
|
||||
|
||||
//
|
||||
// 183 = ERROR_ALREADY_EXISTS.
|
||||
//
|
||||
if ( iErrorCode == 183 )
|
||||
{
|
||||
showElement(document.getElementById("trErrorWorkSpaceInUse"));
|
||||
bStopSubmission = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// return false to stop form submission
|
||||
return !bStopSubmission;
|
||||
}
|
||||
|
||||
function onLoginPageLoad(e)
|
||||
{
|
||||
var strDomainUserName = ""; // CrumbName: Name
|
||||
var strMachineType = ""; // CrumbName: MachineType
|
||||
var strWorkSpaceID = ""; // CrumbName: WorkSpaceID
|
||||
var strCookieContents = "";
|
||||
var iIndex;
|
||||
var bActiveXSSOMode = GetActiveXSSOMode(); // as a side-effect, this caches the workspace ActiveX object
|
||||
|
||||
onPageload(e); // call the parent event
|
||||
|
||||
document.getElementById("tableLoginForm").style.display = "";
|
||||
document.getElementById("tdDomainUserNameLabel").style.display = "";
|
||||
|
||||
if (bActiveXSSOMode) {
|
||||
|
||||
document.getElementById("tablePublicOption").style.display = "";
|
||||
document.getElementById("tablePrivateOption").style.display = "";
|
||||
document.getElementById("spanToggleSecExplanation").style.display = "";
|
||||
document.getElementById("rdoPblc").checked = true;
|
||||
}
|
||||
else {
|
||||
|
||||
document.getElementById("trPrvtWrnNoAx").style.display = "";
|
||||
}
|
||||
onClickSecurity();
|
||||
|
||||
strCookieContents = getCookieContents(strTSWACookieName);
|
||||
|
||||
if ( null != strCookieContents )
|
||||
{
|
||||
strDomainUserName = decodeURIComponent( getCookieCrumbValue(strCookieContents, "Name") );
|
||||
strMachineType = getCookieCrumbValue(strCookieContents, "MachineType");
|
||||
strWorkSpaceID = decodeURIComponent( getCookieCrumbValue(strCookieContents, "WorkSpaceID") );
|
||||
|
||||
if ( strMachineType != "" &&
|
||||
strMachineType == "private")
|
||||
{
|
||||
document.getElementById("DomainUserName").value = strDomainUserName;
|
||||
document.getElementById("rdoPrvt").checked = "private";
|
||||
onClickSecurity();
|
||||
}
|
||||
|
||||
//
|
||||
// Set focus on UserName or Password field.
|
||||
//
|
||||
if ( strDomainUserName != "" )
|
||||
{
|
||||
document.getElementById("UserPass").focus();
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById("DomainUserName").focus();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById("DomainUserName").focus();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|