Citrix XenDesktop is an user-centric desktop virtualization solution that provides a complete system for desktop delivery. XenDesktop dynamically assembles virtual desktops on-demand, providing users a new personalized desktop each time they log on. Cirtix works similarly to Citrix Presentation Server where the user first login to a web page for authentication and then fetch the Virtualized Desktop using the ICA protocol.
Steps: (All files are pasted below)
- Copy the SSLVPNTemplate.XML into 'c:\Whale-Com\e-Gap\von\conf\customupate'
- Copy the 'WizardDefaultParam.ini' into 'c:\Whale-Com\e-Gap\von\conf\wizarddefaults\customupdate'
- Copy the 'FormLogin.xml' into 'c:\Whale-Com\e-Gap\von\conf\FormLogin\customupdate'
- Copy the 'WhlFiltSecureRemote_HTTPS.xml' into 'c:\Whale-Com\e-Gap\von\WebSites\\conf\customupdate'I found this to be in C:\Whale-com\e-Gap\von\conf\WebSites\\conf\CustomUpdate - DHW
IAG Configuration:
- Login to the IAG GUI
- Add a Browser-Embeded application
- Select Citrix Xendesktop template
- In Server Settings, make sure you include all IPs/hosts for the Virtualized Desktops.
- Activate an select the second check option, 'Apply changes made to the external configuration settings'
Content of 'SSLVPNTemplate.XML':
<config>
<templates>
<!--
*********************************************************************************
** Citrix XenDesktop Server **
*********************************************************************************
-->
<!-- Auto-Sense mode -->
<template name="CitrixXenDesktop" wfehandler="yes" userrights="0" use-with-lsp="yes" default="yes"><!--All Platforms-->
<port id="0" remoteport="1494,2598" flags="73" default="yes"/><!--All Platforms-->
</template>
</templates>
<content-filters>
</content-filters>
<access-lists>
</access-lists>
<WFEConfiguration>
<!-- Citrix XenDesktop configuration handler -->
<Handler Type="INIFile" Template="CitrixXenDesktop"><!--All Platforms-->
<Constraints Operator="AND">
<Constraint Type="URL">
<URL Host=".*">/Citrix/.*launch.*.(asp|ica).*</URL>
</Constraint>
<Constraint Type="ContentType">
<ContentType>application/x-ica</ContentType>
</Constraint>
<Constraint Type="ApplicationType">
<ApplicationType>CitrixXenDesktop</ApplicationType>
</Constraint>
</Constraints>
<Data>
<!-- References used later on -->
<References>
<Reference name="DisableMappedPrinters" type="SessionVariable">
<Container index="Pol_DisableCitrixMappedPrinters"/>
</Reference>
<Reference name="WIO" type="SessionVariable">
<Container index="eGapComponents_WIOC_Running"/>
</Reference>
</References>
<!-- Forces removal of ICA file -->
<ValueChange condition="WIO" positiveLogic="false">
<SectionName>WFClient</SectionName>
<ValueName>RemoveICAFile</ValueName>
<Value>yes</Value>
</ValueChange>
<!-- Proxy* settings for Citrix clients with version 7.0 or higher to use HTTPS proxy -->
<ValueChange condition="WIO" positiveLogic="false">
<SectionName expression="true">.*</SectionName>
<ValueName>ProxyType</ValueName>
</ValueChange>
<ValueChange condition="WIO" positiveLogic="false">
<SectionName>WFClient</SectionName>
<ValueName>ProxyType</ValueName>
<Value>Secure</Value>
</ValueChange>
<ValueChange condition="WIO" positiveLogic="false">
<SectionName>WFClient</SectionName>
<ValueName>ProxyHost</ValueName>
<Value>127.0.0.1:10081</Value>
</ValueChange>
<!-- This configures SOCKS settings for older clients -->
<ValueChange condition="WIO" positiveLogic="false">
<SectionName>WFClient</SectionName>
<ValueName>ICASOCKSProtocolVersion</ValueName>
<Value>5</Value>
</ValueChange>
<ValueChange condition="WIO" positiveLogic="false">
<SectionName>WFClient</SectionName>
<ValueName>ICASOCKSProxyHost</ValueName>
<Value>127.0.0.1</Value>
</ValueChange>
<ValueChange condition="WIO" positiveLogic="false">
<SectionName>WFClient</SectionName>
<ValueName>ICASOCKSProxyPortNumber</ValueName>
<Value>1081</Value>
</ValueChange>
<!-- AttachmentWiper helper - configures cache directory -->
<ValueChange>
<SectionName>WFClient</SectionName>
<ValueName>PersistentCachePath</ValueName>
<Value>..\WhlCitrixCache</Value>
</ValueChange>
<!-- Client printer mapping -->
<ValueChange condition="DisableMappedPrinters">
<SectionName>WFClient</SectionName>
<ValueName>CPMAllowed</ValueName>
<Value>Off</Value>
</ValueChange>
<ValueChange condition="DisableMappedPrinters">
<SectionName>WFClient</SectionName>
<ValueName>VSLAllowed</ValueName>
<Value>Off</Value>
</ValueChange>
</Data>
</Handler>
<!-- Citrix XenDesktop Embedded clients handler -->
<Handler Type="Applet" Template="CitrixXenDesktop"><!--All Platforms-->
<Constraints Operator="AND">
<Constraint Type="URL">
<URL Host=".*">/Citrix/.*appembed.*\.asp.*</URL>
</Constraint>
<Constraint Type="ApplicationType">
<ApplicationType>CitrixXenDesktop</ApplicationType>
</Constraint>
</Constraints>
<Data>
<Applet>
<Constraint name="name" value="javaclient"/>
<Constraint name="code" value="com.citrix.ConnectionCenter"/>
<ParamChange name="ProxyType" value="socksv5" condition="eGapComponents_WIOC_Running" positiveLogic="false"/>
<ParamChange name="ProxyHost" value="127.0.0.1:1081" condition="eGapComponents_WIOC_Running"
positiveLogic="false"/>
<!-- Disable (semi) automatically created printers based on policy -->
<ParamChange name="user.localclientprinters" value="" condition="Pol_DisableCitrixMappedPrinters"/>
</Applet>
</Data>
</Handler>
</WFEConfiguration>
</config>
Content of 'WizardDefaultParam.ini' :
Application_List
NumOfApps=1
App1=CitrixXenDesktop
CitrixXenDesktop
EE=1
Name=Citrix XenDesktop Server
AppType=2
WhaleApp=0
Types=1,2
LegalCharsSet=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:@&=$+_-!',;~{}/
DangerousCharsSet=/\\:*?""<>|.%
DangerousCharsIncludeNull=1
ParamNameCaseSensitive=0
ParamValCaseSensitive=0
UrlCaseSensitive=0
AllowWebdav=0
PassLogoffToRWS=0
ReplyToAuth=0
UseSNT=0
Image=images/AppIcons/Citrix.gif
SSLVpnTemplate=CitrixXenDesktop
SSLVpnContentType=application/x-ica
SSLVPNNumOfElements=2
SSLVPNElement0ID=0IPBIND
SSLVPNElement1ID=0
0IPBINDName=Citrix VDI Servers:
0IPBINDType=0
0IPBINDGuiType=2
0IPBINDValidation=IP/DNS NotEmpty
0Name=Citrix VDI Ports:
0Type=1
0GuiType=0
0Value=1494,2598,3389,80,443
0Validation=Ports
OpenNewPage=1
FormLogin=1
ReplyToAuthType=1
UseLLNMode=1
ShowNote=2
ActivateSmugglingProtection=1
MaxHTTPBodySize=49152
ContentTypeList=application/x-www-form-urlencoded|multipart/form-data
Content of 'WhlFiltSecureRemote_HTTPS.xml':
<WHLFILTSECUREREMOTE ver="2.2">
<DATA_CHANGE>
<!-- To fix the Citrix XenDesktop's initial client detection that occurs prior to displaying the login page -->
<APPLICATION>
<APPLICATION_TYPE>CitrixXenDesktop</APPLICATION_TYPE>
<URL>
<NAME>.*silentDetection.aspx.*</NAME>
<ADD_SIGNATURE encoding="" location="before">/Citrix/DesktopWeb/");</ADD_SIGNATURE>
</URL>
</APPLICATION>
</DATA_CHANGE>
</WHLFILTSECUREREMOTE>
Content of 'Formlogin.XML' :
<WHLFILTFORMLOGIN ver="1.0">
<APPLICATION>
<!-- The Application tag was missing - DHW -->
<APPLICATION_TYPE>CitrixXenDesktop</APPLICATION_TYPE>
<USAGE description="form_login">
<PRIMARY_HOST_URL><![CDATA[/Citrix/.*/auth/login.aspx]]></PRIMARY_HOST_URL>
<SECONDARY_HOST_URL><![CDATA[/Citrix/.*/auth/login.aspx]]></SECONDARY_HOST_URL>
<SECONDARY_HOST_URL><![CDATA[/Citrix/.*/auth/login.aspx]]></SECONDARY_HOST_URL>
<USER_AGENT>
<AGENT_TYPE search="group">all_supported</AGENT_TYPE>
<POLICY>multiplatform</POLICY>
</USER_AGENT>
<MULTIPLE_LOGIN>true</MULTIPLE_LOGIN>
<LOGIN_FORM>
<NAME>CitrixForm</NAME>
<METHOD>POST</METHOD>
<CONTROL handling="dummy_value">
<TYPE>USER_NAME</TYPE>
<NAME>user</NAME>
<DEF_VALUE>whaleusr</DEF_VALUE>
</CONTROL>
<CONTROL handling="dummy_value">
<TYPE>PASSWORD</TYPE>
<NAME>password</NAME>
<DEF_VALUE>whlpass</DEF_VALUE>
</CONTROL>
<CONTROL handling="dummy_value">
<TYPE>DOMAIN</TYPE>
<NAME>domain</NAME>
<DEF_VALUE>whldomain</DEF_VALUE>
</CONTROL>
<LOGIN_EVALUATOR indicate="failure">
<SEARCH encoding="">ERROR:</SEARCH>
<SEARCH encoding="">credentials supplied were invalid</SEARCH>
</LOGIN_EVALUATOR>
</LOGIN_FORM>
</USAGE>
</APPLICATION>
</WHLFILTFORMLOGIN>