using System; using System.Collections; using System.Net; using System.Net.NetworkInformation; using System.Text; namespace NJCIT { class LoginServer { private static readonly string[] domainStr = new string[] { "studentphone", "student" }; private static readonly string initURL = "http://n.njcit.cn/index.php/index/init"; private static readonly string logoutURL = "http://n.njcit.cn/index.php/index/logout"; private static ArrayList result = null; public static bool Online = false; public static bool Logouted = false; // 静态初始化 static LoginServer() { UpdateResult(HttpConect(initURL)); } // 获取登录信息 public static ArrayList GetInformation() { UpdateResult(HttpConect(initURL)); return result; } // 执行登录 public static void DoLogin(string username, int domain, string password) { string[] textArray = new string[] { "http://n.njcit.cn/index.php/index/login?username=", username, "&domain=" + domainStr[domain] + "&password=", password, "&enablemacauth=1" }; UpdateResult(HttpConect(string.Concat(textArray))); } // 退出登录 public static void DoLogout() { UpdateResult(HttpConect(logoutURL)); Logouted = true; } // 处理登录返回结果 private static void UpdateResult(string str) { if (str != null) { string[] strArray = str.Replace("{", "").Replace("}", "").Replace("\"", "").Split(new char[] { ',' }); if (strArray != null) { ArrayList list = new ArrayList(); if (strArray.Length == 3) { list.Add("认证失败, 请检查密码及账户状态!"); Online = false; } else if (strArray.Length == 1) { list.Add("认证失败,账户已锁定!"); Online = false; } else if (strArray.Length == 4) { list.Add("认证失败,并发登录超过最大限制!"); Online = false; } else { list.Add("用户已登录"); if (strArray.Length == 11) { list.Add(ParseData(strArray[2])); list.Add(ParseData(strArray[3])); list.Add(ParseData(strArray[4])); list.Add(ParseData(strArray[6])); list.Add(ParseData(strArray[8])); list.Add(ParseData(strArray[9])); } else { list.Add(ParseData(strArray[2])); list.Add(ParseData(strArray[3])); list.Add(ParseData(strArray[4])); list.Add(ParseData(strArray[6])); list.Add(ParseData(strArray[9])); list.Add(ParseData(strArray[10])); } Online = true; } result = list; } } } // Http连接 private static string HttpConect(string URL) { Ping ping = new Ping(); PingReply reply = ping.Send("n.njcit.cn", 1000); if (reply.Status != IPStatus.Success) { return null; } try { WebClient client = new WebClient { Credentials = CredentialCache.DefaultCredentials }; byte[] bytes = client.DownloadData(URL); return Encoding.UTF8.GetString(bytes); } catch (Exception) { return null; } } // 解析数据 private static string ParseData(string str) { char[] separator = new char[] { ':' }; return str.Split(separator)[1]; } } }