Compression configuration example using Csharp and NetScaler XML API

Added by Vishal Ganeriwala , last edited by Vishal Ganeriwala on Apr 29, 2008
Tags: 

Compression configuration example using Csharp and NetScaler XML API

Summary

Compression configuration example using Csharp and NetScaler XML API

Code Snippet

using System;
using System.Runtime.Remoting;
using System.Xml.Serialization;
using System.Web.Services;
    
	namespace NSConfig {
		public class ClientService : NSConfigService

                {
                        private static string cookie = null;
                        /* override the getWebRequest to send cookie */
                        protected override System.Net.WebRequest  GetWebRequest(Uri uri)
                        {
                                System.Net.HttpWebRequest req = (System.Net.HttpWebRequest) base.GetWebRequest(uri);
                                if (cookie != null)
                                {
                                        req.Headers.Add("Set-Cookie", cookie);
                                }
                                return req;
                        }
                        /* override the getWebResponse to get the cookie */

                        protected override System.Net.WebResponse GetWebResponse(System.Net.WebRequest req)
                        {
                               System.Net.HttpWebResponse rep = (System.Net.HttpWebResponse) base.GetWebResponse(req);
                               if (rep.Headers["Set-Cookie"] != null)
                                {
                                       cookie = rep.Headers["Set-Cookie"];
                                }
                                return rep;
			}
                        public ClientService()
                        {
                                // Change the IP address pointing to netscaler.
                                this.Url = "http://10.102.4.111:18000";
                        }
                        public ClientService(string servername)
                        {
                                this.Url = "http://"+servername+"/soap";;
                        }
                }
	
	class cmp 
	{
 		static ClientService client=null;
 
		[STAThread]
		static void Main(string[] args)
		{
			if ( args.Length < 3)
			{
				Console.WriteLine("Usage: getConfig <NS IP> username password");
				return;
			}
			string serverip = args[0];
			string username = args[1];
			string password = args[2];
			try {
          			Console.WriteLine("\nConnecting to server "+serverip+" ............\n");
				client = new ClientService(serverip);

				client.CookieContainer = new System.Net.CookieContainer();
				simpleResult result = client.login(username,password) ;
				Console.WriteLine("login : "+result.message);
       
				result = client.enablensfeature(featureEnum.CMP);
				Console.WriteLine("enablensfeature	CMP : " + result.message);

				result = client.setservice_cmp("svc1",yesnoEnum.YES);
				Console.WriteLine("setservice_cmp	svc1 : " + result.message);

				result = client.setservice_cmp("svc2",yesnoEnum.NO);
				Console.WriteLine("setservice_cmp	svc2 : " + result.message);

				result = client.addcmppolicy("cmp1","url == /testsite/file5.html","nocompress");
				Console.WriteLine("addcmppolicy	cmp1 : " + result.message);

				result = client.bindcmpglobal_policy("cmp1",0xFFFFFFFF,enabledisabledEnum.VALNOTSET);
				Console.WriteLine("bindcmpglobal_policy	cmp1 : " + result.message);

				result = client.addpolicyexpression("ex1","RES.HTTP.HEADER Content-Type CONTAINS application/msword");
				Console.WriteLine("addpolicyexpression	ex1 : " + result.message);

				result = client.addcmppolicy("cmp2","ex1","deflate");
				Console.WriteLine("addcmppolicy	cmp2 : " + result.message);

				result = client.bindcmpglobal_policy("cmp2",0xFFFFFFFF,enabledisabledEnum.VALNOTSET);
				Console.WriteLine("bindcmpglobal_policy	cmp2 : " + result.message);

				result = client.addcmppolicy("cmp3","url contains file50 || RES.HTTP.HEADER Content-Type CONTAINS text/css","compresss");
				Console.WriteLine("addcmppolicy	cmp3 : " + result.message);

				result = client.bindlbvserver_policy("lbvip1","cmp3",0xFFFFFFFF,null,vserverbindpointEnum.VALNOTSET,false,policylabelinvoketypeEnum.VALNOTSET,null);
				Console.WriteLine("bindlbvserver_policy	lbvip1 : " + result.message);

				result = client.addpolicyexpression("ex2","HEADER User-Agent CONTAINS MSIE");
				Console.WriteLine("addpolicyexpression	ex2 : " + result.message);

				result = client.addpolicyexpression("ex3","RES.HTTP.HEADER Content-Type CONTAINS application/vnd.ms-excel");
				Console.WriteLine("addpolicyexpression	ex3 : " + result.message);

				result = client.addcmppolicy("cmp4","ex2&&ex3","gzip");
				Console.WriteLine("addcmppolicy	cmp4 : " + result.message);

				result = client.bindlbvserver_policy("lbvip2","cmp4",0xFFFFFFFF,null,vserverbindpointEnum.VALNOTSET,false,policylabelinvoketypeEnum.VALNOTSET,null);
				Console.WriteLine("bindlbvserver_policy	lbvip2 : " + result.message);

				result = client.logout();
				Console.WriteLine("logout : " + result.message); 
			}
			catch (Exception ex) {
			      Console.WriteLine( "Exception: "+ex.ToString());
			}
		}

	}
	}

More Information