using System; using System.Net; using System.Web; namespace UpsN { public class UpsNOMOWAgent { public bool getDeviceAuth(string secretKey, string registeredUrl, string uniqueId, HttpRequestBase request) { string url = "https://www.mellow-fellows.com/OMOW/"; System.Net.WebClient wc = new UpsNWebClient(); System.Collections.Specialized.NameValueCollection ps = new System.Collections.Specialized.NameValueCollection(); ps.Add("secretKey", secretKey); ps.Add("url", registeredUrl); ps.Add("uniqueId", uniqueId); ps.Add("remoteAddr", IPHelper.GetIPAddress(request)); ps.Add("userAgent", request.UserAgent); byte[] resData = null; string resText = ""; try { resData = wc.UploadValues(url, ps); resText = System.Text.Encoding.UTF8.GetString(resData); } catch (WebException e) { Console.WriteLine(e.Message); if (e.Status == WebExceptionStatus.ConnectFailure) { resText = "SUCCESS"; } } wc.Dispose(); return ("SUCCESS" == resText); } } public class UpsNWebClient : WebClient { private int timeout = 60000; public int Timeout { get { return timeout; } set { timeout = value; } } protected override WebRequest GetWebRequest(Uri uri) { WebRequest w = base.GetWebRequest(uri); w.Timeout = timeout; return w; } } public class IPHelper { public static string GetIPAddress(HttpRequestBase request) { string HttpVia = request.ServerVariables["HTTP_VIA"]; string HttpXForwardedFor = request.ServerVariables["HTTP_X_FORWARDED_FOR"]; string RemoteAddr = request.ServerVariables["REMOTE_ADDR"]; string result = "127.0.0.1"; string tempIP = string.Empty; if (HttpVia != null) { tempIP = HttpXForwardedFor; } else { tempIP = RemoteAddr; } if (!IsIPV4(tempIP) || tempIP == "127.0.0.1 ") { try { string hostName = System.Net.Dns.GetHostName(); foreach (IPAddress ip in Dns.GetHostAddresses(hostName)) { if (IsIPV4(ip)) { result = ip.ToString(); break; } } } catch { } } else { result = tempIP; } return result; } private static bool IsIPV4(string input) { bool result = false; IPAddress address = null; if (IPAddress.TryParse(input, out address)) { result = IsIPV4(address); } return result; } private static bool IsIPV4(IPAddress address) { bool result = false; switch (address.AddressFamily) { case System.Net.Sockets.AddressFamily.InterNetwork: result = true; break; case System.Net.Sockets.AddressFamily.InterNetworkV6: break; default: break; } return result; } } }