Customizing Citrix Access Gateway

The information below is available in several different Citrix articles. I am putting in here mainly for my reference but if anyone else find it useful then all the better.

This blog post details customizing Citrix Access Gateway Enterprise Edition.

Disable haSync
If you are running in a HA setup you will want to set the secondary node to stay secondary so that the NetScalers don’t failover when you are rebooting.

To do this run this command on the secondary node.

Set node -hastatus staysecondary

save config

Preparing the NetScaler
1. Connect to the Primary NetScaler using WinSCP

2. Create the following directory /var/customizations

3. Copy






4. Create a file called rc.netscaler in /flash/nsconfig

5. Edit the rc.netscaler file and add the following lines

cp /var/customizations/login.js /netscaler/ns_gui/vpn/login.js

cp /var/customizations/index.html /netscaler/ns_gui/vpn/index.html

cp /var/customizations/en.xml /netscaler/ns_gui/vpn/resources/en.xml

6. Save the file

Customizing Password Fields
1. Open /var/customizations/login.js

2. Search for the following text

if ( pwc == 2 ) { document.write(‘ 1’); }

3. Edit this line to remove the “1” so that the line looks like this

if ( pwc == 2 ) { document.write(‘ ‘); }


4. Save the file

Disclaimer text
1. Open /var/customizations/index.html

2. Add the text, highlighted in bold, as shown in the following snippet:


<tr><td colspan=3></td></tr>
10px;”>User name:
<SCRIPT language=JavaScript>ns_showpwd();</SCRIPT>
<input type=”submit” value=”Log On” onclick=”ns_check();” onmouseover=”this.className=’CTX_CaxtonButton_Hover’;” onmouseout=”this.className=’CTX_CaxtonButton’;” name=”LogonButton” disabled=”true”/></td>
<!– Disclaimer customization –>
<input type=”checkbox” name=”chk1_button” onClick=”enableLogonButton(this);”/> Please enter you disclaimer text here
<!– End of Disclaimer customization–>
3. Save the file

4. Open /var/customizations/login.js

5. Add  following function at the end of the file:

function enableLogonButton(obj)


var loginForm = document.vpnForm;








6. Save the file

Restart the Primary NetScaler for changes to take effect.

Once you are happy that all the customizations are working correctly copy



to the secondary NetScaler and restart it also.

Enable synchronisation again by running the following command

set node –hasync enable


Be the first to comment!

Join the discussion