public GARequestObject Dequeue() { GARequestObject requestObject = null; lock (this.gaRequestQueue.SyncRoot) { lock (padlock) { if (this.gaRequestQueue.Count > 0) { requestObject = (GARequestObject)this.gaRequestQueue.Dequeue(); requestObject.requestCount = this.gaRequestQueue.Count; /*String key = requestObject.requestTime.ToShortDateString() + "_" + requestObject.requestTime.ToLongTimeString() + "_" + requestObject.ipAddress + "_" + requestObject.el; * this.toBeRemoveFileList.Add(key); * if (toBeRemoveFileList.Count > 20) * { * foreach (String lKey in this.toBeRemoveFileList) * { * this.uniqueFileList.Remove(lKey); * } * this.toBeRemoveFileList.Clear(); * }*/ } } } return(requestObject); }
public void writeToFile(String threadName, GARequestObject requestObject) { updateLoggerFile(); String theTimeStamp = ""; if (requestObject.requestTime != null) { theTimeStamp = requestObject.requestTime.ToShortDateString() + " " + requestObject.requestTime.ToLongTimeString() + "\t"; } this.file.WriteLine(threadName + "(" + requestObject.requestCount + ")\t" + theTimeStamp + requestObject.ipAddress + "\t" + requestObject.el + "\t" + requestObject.userAgent + "\t" + requestObject.returnRequestCode + "\t" + requestObject.requestStatus + "\t" + requestObject.referrer); this.file.Flush(); }
public void Enqueue(GARequestObject requestObject) { lock (this.gaRequestQueue.SyncRoot) { lock (padlock) { /*String key = requestObject.requestTime.ToShortDateString() + "_" + requestObject.requestTime.ToLongTimeString() + "_" + requestObject.ipAddress + "_" + requestObject.el; * if (!this.uniqueFileList.Contains(key)) * { * this.gaRequestQueue.Enqueue(requestObject); * this.uniqueFileList.Add(key); * }*/ this.gaRequestQueue.Enqueue(requestObject); } } }
private void writeToFile(GARequestObject requestObject) { DateTime currDate = System.DateTime.Now; if (currDate.Day != date.Day) { date = System.DateTime.Now; this.file.Flush(); this.file.Close(); this.file = TextWriter.Synchronized(new System.IO.StreamWriter(LOG_FILE_DIR + "gaLogFile" + date.Year + date.Month + date.Day + ".log", true)); } String theTimeStamp = ""; if (requestObject.requestTime != null) { theTimeStamp = requestObject.requestTime.ToShortDateString() + " " + requestObject.requestTime.ToLongTimeString() + "\t"; } this.file.WriteLine(theTimeStamp + requestObject.ipAddress + "\t" + requestObject.el + "\t" + requestObject.userAgent); this.file.Flush(); }
IAsyncResult Application_EndRequest(Object source, EventArgs e, AsyncCallback cb, Object state) { HttpApplication application = (HttpApplication)source; HttpContext context = application.Context; if (context.Response.StatusCode != 200) { return(new GaIAsyncResult(false)); } string filePath = context.Request.FilePath; string fileExtension = VirtualPathUtility.GetExtension(filePath); String ipAddress = context.Request.UserHostAddress; String userAgent = context.Request.UserAgent; DateTime requestTime = context.Timestamp; Boolean filter = false; foreach (String pattern in filtredIps) { if (ipAddress.StartsWith(pattern)) { filter = true; } } if (filter) { return(new GaIAsyncResult(false)); } if (!extensions.ContainsKey(fileExtension.ToLower())) { return(new GaIAsyncResult(false)); } Uri uri = context.Request.UrlReferrer; String urlReferrer = ""; if (uri != null) { urlReferrer = uri.ToString(); } String[] languages = context.Request.UserLanguages; String userLanguage = ""; if (languages != null && languages.Length > 0) { userLanguage = languages[0]; } ServicePointManager.Expect100Continue = false; GARequestObject requestObject = new GARequestObject("1", GA_TRACKING_ID, "555", "event", extensions[fileExtension.ToLower()], "DOWNLOAD", filePath, "1", ipAddress, userAgent, requestTime, context.Response.StatusCode, context.Response.Status, urlReferrer, 0); if (requestObject != null) { //Debug.WriteLine("filePath : " + filePath); WebClient client = new WebClient(); WebProxy wp = new WebProxy(OECD_PROXY); client.Proxy = wp; client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"); if (SEND_TO_GA) { NameValueCollection collection = new NameValueCollection(); collection.Add("v", requestObject.v); collection.Add("tid", requestObject.tid); collection.Add("cid", requestObject.cid); collection.Add("t", requestObject.t); collection.Add("ec", requestObject.ec); collection.Add("ea", requestObject.ea); collection.Add("el", requestObject.el); collection.Add("ev", requestObject.ev); if (requestObject.referrer != null && (requestObject.referrer.Trim().Length > 0)) { collection.Add("dr", requestObject.referrer); } try { client.UploadValuesAsync( new Uri("http://www.google-analytics.com/collect"), collection ); } catch (System.Net.WebException webE) { //Debug.WriteLine(webE.Message); } } if (LOG_TO_FILE) { writeToFile(requestObject); } //Debug.WriteLine("Application_EndRequest sending object to GA : " + requestObject.el); } return(new GaIAsyncResult(true)); }
public void ThreadRun() { //ArrayList requests = new ArrayList(); while (true) { if (this.threadGaRequestQueue.Count() > 0) { try { GARequestObject requestObject = this.threadGaRequestQueue.Dequeue(); //logger.writeToFile("ThreadRun "); /*lock (this.threadGaRequestQueue.SyncRoot) * { * if (threadGaRequestQueue.Count > 0) * { * requestObject = (GARequestObject)this.threadGaRequestQueue.Dequeue(); * requestObject.requestCount = this.threadGaRequestQueue.Count; * } * }*/ if (requestObject != null) { //logger.writeToFile("ThreadRun " + requestObject); if (sendToGa) { NameValueCollection collection = new NameValueCollection(); collection.Add("v", requestObject.v); collection.Add("tid", requestObject.tid); collection.Add("cid", requestObject.cid); collection.Add("t", requestObject.t); collection.Add("ec", requestObject.ec); collection.Add("ea", requestObject.ea); collection.Add("el", requestObject.el); collection.Add("ev", requestObject.ev); if (requestObject.referrer != null && (requestObject.referrer.Trim().Length > 0)) { collection.Add("dr", requestObject.referrer); } //requestObject.userAgent = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"; try { this.client.Headers.Add(HttpRequestHeader.UserAgent, requestObject.userAgent); this.client.UploadValues( new Uri("http://www.google-analytics.com/collect"), collection ); this.client.Dispose(); } catch (System.Net.WebException e) { //Debug.WriteLine(e.Message); this.logger.writeToFile(e.Message); } collection.Clear(); collection = null; } if (logToFile) { //writeToFile(requestObject); this.logger.writeToFile(this.name, requestObject); } //Debug.WriteLine("threadGaRequestQueue(" + this.name + ") sending object to GA : " + requestObject.el); //requestObject = null; } } catch (Exception e) { } } else { Thread.Sleep(500); } //Debug.WriteLine("threadGaRequestQueue(" + this.name + ") sleeping : " + threadGaRequestQueue.Count); } }
/* private void Application_BeginRequest(Object source, EventArgs e) * { * // Create HttpApplication and HttpContext objects to access * // request and response properties. * /*HttpApplication application = (HttpApplication)source; * * HttpContext context = application.Context; * string filePath = context.Request.FilePath; * string fileExtension = VirtualPathUtility.GetExtension(filePath);* / * }*/ private void Application_EndRequest(Object source, EventArgs e) { try { HttpApplication application = (HttpApplication)source; HttpContext context = application.Context; if (context.Response.StatusCode != 200) { return; } String range = context.Request.Headers.Get("Range"); if (range != null && range.Trim().Length > 0) { return; } string filePath = context.Request.FilePath; if (filePath == null || filePath.StartsWith("/redirect/")) { return; } string fileExtension = VirtualPathUtility.GetExtension(filePath); String ipAddress = context.Request.UserHostAddress; String userAgent = context.Request.UserAgent; DateTime requestTime = context.Timestamp; Boolean filter = false; foreach (String pattern in filtredIps) { if (ipAddress.StartsWith(pattern)) { filter = true; break; } } if (filter) { return; } if (!extensions.ContainsKey(fileExtension.ToLower())) { return; } if (userAgent != null) { String lUserAgent = userAgent.ToUpper(); filter = false; foreach (String bot in filtredBots) { if (lUserAgent.Contains(bot)) { filter = true; break; } } if (filter) { return; } //if (this.filtredBots.co lUserAgent) /*if (lUserAgent.Contains("GOOGLEBOT") || lUserAgent.Contains("YANDEXBOT") || lUserAgent.Contains("BINGBOT") || lUserAgent.Contains("BAIDUSPIDER") || lUserAgent.Contains("TWITTERBOT") || lUserAgent.Contains("YOUDAOBOT") || lUserAgent.Contains("YOLINKBOT") || lUserAgent.Contains("PAPERLIBOT") || lUserAgent.Contains("VOILABOT") || lUserAgent.Contains("SHOWYOUBOT") || lUserAgent.Contains("EXABOT") || lUserAgent.Contains("MAIL.RU_BOT")) || { || return; || }*/ } Uri uri = context.Request.UrlReferrer; String urlReferrer = ""; if (uri != null) { urlReferrer = uri.ToString(); } String[] languages = context.Request.UserLanguages; String userLanguage = ""; if (languages != null && languages.Length > 0) { userLanguage = languages[0]; } ServicePointManager.Expect100Continue = false; GARequestObject gaRequestObject = new GARequestObject("1", GA_TRACKING_ID, "555", "event", extensions[fileExtension.ToLower()], "DOWNLOAD", filePath, "1", ipAddress, userAgent, requestTime, context.Response.StatusCode, range, urlReferrer, 0); if (gaRequestObject != null) { //Debug.WriteLine("filePath : " + filePath); //Queue.Synchronized(this.gaRequestQueue); //Queue mySyncdQ = Queue.Synchronized(this.gaRequestQueue); /*lock (this.gaRequestQueue.SyncRoot) * { * this.gaRequestQueue.Enqueue(gaRequestObject); * }*/ this.gaRequestQueue.Enqueue(gaRequestObject); } } catch (Exception ee) { logger.writeToFile(ee.Message); } }