Microsoft Exchange 2013 HTTPS Offloaded Example
- Last Updated: December 11, 2024
- 3 minute read
- LoadMaster
- LoadMaster LTSF
- Documentation
This script replicates the same configuration and settings that would be applied if the Exchange 2013 template had been used to configure a Virtual Service..
A file called exchange.sh is run which contains all of the information below. The variables are set as follows:
- $1 - The username (bal)
- $2 - The password (1fourall)
- $3 - The LoadMaster IP address (20.200.50.50)
- $4 - The IP address of the Virtual Service (20.200.50.200)
A redirect Virtual Service called Exchange HTTPS Offloaded - HTTPS Redirect is created.
Another Virtual Service called Exchange HTTPS Offloaded is also created.
sh exchange.sh bal 1fourall 20.200.50.50 20.200.50.200
## Exchange 2013 HTTPS Offloaded##Redirect Virtual Servicecurl -k -u $1:$2 "https://$3/access/addvs?vs=$4&port=80&prot=tcp&Nickname=Exchange%202013%20HTTPS%20Offloaded%20-%20HTTP%20Redirect&forcel7=1&errorcode=302&errorurl=https:\/\/%25h%25s&checktype=none" #Main Virtual Servicecurl -k -u $1:$2 "https://$3/access/addvs?vs=$4&port=443&prot=tcp&Nickname=Exchange%202013%20HTTPS%20Offloaded&Enable=Y&ForceL7=Y&SSLAcceleration=Y&SSLReverse=N&SSLReencrypt=N&Intercept=N&Transparent=Y&Schedule=rr&IdleTime=1800&CheckUse1.1=N&CheckType=http" ## Exchange 2013 HTTPS Offloaded - ActiveSync##Counter to increment arrays for returned SubVS and Real Server indicescounter=0;#Find the VSIndex and the RsIndex of the first subvs created and store in arrayssubvsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/modvs?vs=$4&port=443&prot=tcp&createsubvs=" | xpath Response/Success/Data/SubVS/VSIndex/"text()")rsindexarray[$counter]=$(curl -k "https://$1:$2@$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS/RsIndex/"text()")#echo "Sub VS index is $counter"#curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&nickname=Exchange%202013%20HTTPS%20Offloaded%20-%20ActiveSync&Forward=nat&Weight=1000&Limit=0&Enable=Y"curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&CheckPort=443&CheckUse1.1=Y&CheckURL=/microsoft-server-activesync/healthcheck.htm&CheckType=https"## Exchange 2013 HTTPS Offloaded - Autodiscover#let counter=$counter+1curl -k -u $1:$2 "https://$3/access/modvs?vs=$4&port=443&prot=tcp&createsubvs="#Get indicessubvsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/VSIndex/"text()")rsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/RsIndex/"text()")curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&nickname=Exchange%202013%20HTTPS%20Offloaded%20-%20Autodiscover&Forward=nat&Weight=1000&Limit=0&Enable=Y"curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&CheckPort=443&CheckUse1.1=Y&CheckURL=/autodiscover/healthcheck.htm&CheckType=https"## Exchange 2013 HTTPS Offloaded - ECP#let counter=$counter+1curl -k -u $1:$2 "https://$3/access/modvs?vs=$4&port=443&prot=tcp&createsubvs="#Get indicessubvsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/VSIndex/"text()")rsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/RsIndex/"text()")curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&nickname=Exchange%202013%20HTTPS%20Offloaded%20-%20ECP&Forward=nat&Weight=1000&Limit=0&Enable=Y"curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&CheckPort=443&CheckUse1.1=Y&CheckURL=/ecp/healthcheck.htm&CheckType=https"## Exchange 2013 HTTPS Offloaded - EWS#let counter=$counter+1curl -k -u $1:$2 "https://$3/access/modvs?vs=$4&port=443&prot=tcp&createsubvs="#Get indicessubvsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/VSIndex/"text()")rsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/RsIndex/"text()") curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&nickname=Exchange%202013%20HTTPS%20Offloaded%20-%20EWS&Forward=nat&Weight=1000&Limit=0&Enable=Y"curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&CheckPort=443&CheckUse1.1=Y&CheckURL=/ews/healthcheck.htm&CheckType=https"## Exchange 2013 HTTPS Offloaded - MAPI#let counter=$counter+1curl -k -u $1:$2 "https://$3/access/modvs?vs=$4&port=443&prot=tcp&createsubvs="#Get indicessubvsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/VSIndex/"text()")rsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/RsIndex/"text()")curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&nickname=Exchange%202013%20HTTPS%20Offloaded%20-%20MAPI&Forward=nat&Weight=1000&Limit=0&Enable=Y"curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&CheckPort=443&CheckUse1.1=Y&CheckURL=/mapi/healthcheck.htm&CheckType=https"## Exchange 2013 HTTPS Offloaded - OAB#let counter=$counter+1curl -k -u $1:$2 "https://$3/access/modvs?vs=$4&port=443&prot=tcp&createsubvs=" #Get indicessubvsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/VSIndex/"text()")rsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/RsIndex/"text()")curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&nickname=Exchange%202013%20HTTPS%20Offloaded%20-%20OAB&Forward=nat&Weight=1000&Limit=0&Enable=Y"curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&CheckPort=443&CheckUse1.1=Y&CheckURL=/oab/healthcheck.htm&CheckType=https"## Exchange 2013 HTTPS Offloaded - OWA#let counter=$counter+1curl -k -u $1:$2 "https://$3/access/modvs?vs=$4&port=443&prot=tcp&createsubvs="#Get indicessubvsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/VSIndex/"text()")rsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/RsIndex/"text()")curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&nickname=Exchange%202013%20HTTPS%20Offloaded%20-%20OWA&Forward=nat&Weight=1000&Limit=0&Enable=Y"curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&CheckPort=443&CheckUse1.1=Y&CheckURL=/owa/healthcheck.htm&CheckType=https" ## Exchange 2013 HTTPS Offloaded - PowerShell#let counter=$counter+1curl -k -u $1:$2 "https://$3/access/modvs?vs=$4&port=443&prot=tcp&createsubvs="#Get indicessubvsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/VSIndex/"text()")rsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/RsIndex/"text()")curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&nickname=Exchange%202013%20HTTPS%20Offloaded%20-%20PowerShell&Forward=nat&Weight=1000&Limit=0&Enable=Y"curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&CheckPort=443&CheckUse1.1=Y&CheckURL=/powershell&CheckType=https"## Exchange 2013 HTTPS Offloaded - RCP Forward#let counter=$counter+1curl -k -u $1:$2 "https://$3/access/modvs?vs=$4&port=443&prot=tcp&createsubvs="#Get indicessubvsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/VSIndex/"text()")rsindexarray[$counter]=$(curl -k -u $1:$2 "https://$3/access/showvs?vs=$4&port=443&prot=tcp" | xpath Response/Success/Data/SubVS[last\(\)]/RsIndex/"text()") curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&nickname=Exchange%202013%20HTTPS%20Offloaded%20-%20RPC&Forward=nat&Weight=1000&Limit=0&Enable=Y"curl -k -u $1:$2 "https://$3/access/modvs?vs=${subvsindexarray[$counter]}&CheckPort=443&CheckUse1.1=Y&CheckURL=/rpc/healthcheck.htm&CheckType=https"Note: The script below creates the necessary content rules. If these rules already exist on the LoadMaster, an error will occur.
## Create the content rules#rand=$RANDOMcurl -k -u $1:$2 "https://$3/access/addrule?name=Root_$rand&pattern=/^\/$/"curl -k -u $1:$2 "https://$3/access/addrule?name=ActiveSync_$rand&pattern=/^\/microsoft-server-activesync.*/&nocase=1"curl -k -u $1:$2 "https://$3/access/addrule?name=Autodiscover_$rand&pattern=/^\/autodiscover.*/&nocase=1"curl -k -u $1:$2 "https://$3/access/addrule?name=ECP_$rand&pattern=/^\/ecp.*/&nocase=1"curl -k -u $1:$2 "https://$3/access/addrule?name=EWS_$rand&pattern=/^\/ews.*/&nocase=1"curl -k -u $1:$2 "https://$3/access/addrule?name=MAPI_$rand&pattern=/^\/mapi.*/&nocase=1"curl -k -u $1:$2 "https://$3/access/addrule?name=OAB_$rand&pattern=/^\/oab.*/&nocase=1"curl -k -u $1:$2 "https://$3/access/addrule?name=OWA_$rand&pattern=/^\/owa.*/&nocase=1"curl -k -u $1:$2 "https://$3/access/addrule?name=PowerShell_$rand&pattern=/^\/powershell.*/&nocase=1"curl -k -u $1:$2 "https://$3/access/addrule?name=RPC_$rand&pattern=/^\/rpc.*/&nocase=1"curl -k -u $1:$2 "https://$3/access/addrule?name=Redirect_Root_$rand&type=4&replacement=/owa&pattern="/^\/$/""## Add the rules to the correct Virtual Service##Add the rule to the parent Virtual Servicecurl -k -u $1:$2 "https://$1:$2@$3/access/addrequestrule?vs=$4&port=443&prot=tcp&rule=Redirect_Root_$rand"#Add rules to the SubVScurl -k -u $1:$2 "https://$1:$2@$3/access/addrsrule?vs=$4&port=443&prot=tcp&rs=%21${rsindexarray[0]}amp;rule=ActiveSync_$rand"curl -k -u $1:$2 "https://$1:$2@$3/access/addrsrule?vs=$4&port=443&prot=tcp&rs=%21${rsindexarray[1]}&rule=Autodiscover_$rand"curl -k -u $1:$2 "https://$1:$2@$3/access/addrsrule?vs=$4&port=443&prot=tcp&rs=%21${rsindexarray[2]}&rule=ECP_$rand"curl -k -u $1:$2 "https://$1:$2@$3/access/addrsrule?vs=$4&port=443&prot=tcp&rs=%21${rsindexarray[3]}&rule=EWS_$rand"curl -k -u $1:$2 "https://$1:$2@$3/access/addrsrule?vs=$4&port=443&prot=tcp&rs=%21${rsindexarray[4]}&rule=MAPI_$rand"curl -k -u $1:$2 "https://$1:$2@$3/access/addrsrule?vs=$4&port=443&prot=tcp&rs=%21${rsindexarray[5]}&rule=OAB_$rand"curl -k -u $1:$2 "https://$1:$2@$3/access/addrsrule?vs=$4&port=443&prot=tcp&rs=%21${rsindexarray[6]}&rule=OWA_$rand"curl -k -u $1:$2 "https://$1:$2@$3/access/addrsrule?vs=$4&port=443&prot=tcp&rs=%21${rsindexarray[7]}&rule=PowerShell_$rand"curl -k -u $1:$2 "https://$1:$2@$3/access/addrsrule?vs=$4&port=443&prot=tcp&rs=%21${rsindexarray[8]}&rule=RPC_$rand"