AppExpert is the Application Intelligent framework which has an extremely powerful expression language. The expression language covers all the protocol layers with self driven object oriented model build in sync with protocol flow and behavior. The NetScaler UI has a easy way of configuring these expressions along with context sensitive help provided for end user. Thus to be able to use this expression language user does not require different protocol knowledge at different layers. An application user who does not have Networking exposure can also write powerful expressions which will work on different protocol layers. The expression language can be used in building policy rule and different part of actions as applicable. Any expression prefix is a complete expression in itself. For example, following prefix is a complete expression that returns the URL coming in the HTTP request:

HTTP.REQ.URL

We can combine prefixes with simple operations to determine TRUE and FALSE values, which can be taken as policy rule.

HTTP.REQ.URL.CONTAINS(“mylocation”)

We can also use complex operations on individual prefixes and multiple prefixes within an expression:

HTTP.REQ.URL.LENGTH + HTTP.REQ.COOKIE.LENGTH <= 500

The expression flow is shown in this diagram:

Here are a few examples of different expressions:

CLIENT.ETHER.[DSTMAC ] – Looking at Client source or destination MAC

CLIENT.INTERFACE.ID.EQ(“id”) – Ensuring the interface through which client request came in

CLIENT.IPV6.[DST] – Client source or destination IPv6 address

CLIENT.SSL.CIPHER_BITS – Cipher bit strength negotiated for the SSL session

CLIENT.SSL.CLIENT_CERT – Looking at the Client certificate presented by SSL client in handshake

CLIENT.TCP.PAYLOAD() – Looking inside the client TCP payload of specified size

HTTP.REQ.HEADER(“header_name”) – Returns the content of the specified HTTP header

HTTP.RES.BODY(10).CONTAINS(“X”) – Returns TRUE/FALSE based on expression match with Response body

SYS.HTTP_CALLOUT(http_callout) – Invoking HTTP Callout entity on NetScaler

SYS.CHECK_LIMIT – Invoking Rate Limit entity on NetScaler

For the expression language there is also a way to be able to invoke the old classic style expressions.

SYS.EVAL_CLASSIC_EXPR(“expression”)