using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Ant.Service.Common; using System.Collections; using System.Xml; using MES.Production.Service; using System.Net; using Ant.Service.Utility; using MES.Production.Entity; using Ant.ORM; using Ant.Data; using System.Runtime.InteropServices; using System.Management; using System.Text; using JsonHelper = Ant.Service.Common.JsonHelper; namespace ChangFa.Machinery.WebPage.Areas.SysManage.Controllers { /// /// 登录控制器 /// add 作者: 季健国 QQ:181589805 by 2016-05-22 /// public class AccountController : Controller { [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); [DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip); #region 声明容器 MES.Production.Service.IService.IUserManage UserManage { get; set; } MES.Production.Service.IService.ISystemManage SystemManage { get; set; } string backurl = string.Empty; log4net.Ext.IExtLog log = log4net.Ext.ExtLogManager.GetLogger("dblog"); #endregion /// /// 初始视图 /// add 作者: 季健国 QQ:181589805 by 2016-05-10 /// public ActionResult Index() { //移除Session SessionHelper.Remove("CurrentUser"); CookieHelper.ClearCookie("cookie_rememberme"); //try //{ // IPAddress ipAddr = Dns.Resolve(Dns.GetHostName()).AddressList[1];//获得当前IP地址 // string ip = ipAddr.ToString(); // string userip = Request.UserHostAddress; // string strClientIP = Request.UserHostAddress.ToString().Trim(); // Int32 ldest = inet_addr(ip); //目的地的ip // Int64 macinfo = new Int64(); // Int32 len = 6; // int res = SendARP(ldest, 0, ref macinfo, ref len); // string mac_src = macinfo.ToString("X"); // if (mac_src == "0") // { // if (userip == "127.0.0.1") // { // Response.Write("正在访问Localhost!"); // } // else // { // // Response.Write("欢迎来自IP为" + userip + "的朋友!" + "
"); // } // } // while (mac_src.Length < 12) // { // mac_src = mac_src.Insert(0, "0"); // } // string mac_dest = ""; // for (int i = 0; i < 11; i++) // { // if (0 == (i % 2)) // { // if (i == 10) // { // mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2)); // } // else // { // mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2)); // } // } // } // Response.Write("欢迎来自IP为" + userip + "
" + ",MAC地址为" + mac_dest + "的朋友!" + "
"); //} //catch (Exception err) //{ // Response.Write(err.Message); //} return View(); } /// /// SendArp获取MAC地址 /// ///目标机器的IP地址如(192.168.1.1) ///目标机器的mac 地址 public static string GetMacAddress(string RemoteIP) { StringBuilder macAddress = new StringBuilder(); try { Int32 remote = inet_addr(RemoteIP); Int64 macInfo = new Int64(); Int32 length = 6; SendARP(remote, 0, ref macInfo, ref length); string temp = Convert.ToString(macInfo, 16).PadLeft(12, '0').ToUpper(); int x = 12; for (int i = 0; i < 6; i++) { if (i == 5) { macAddress.Append(temp.Substring(x - 2, 2)); } else { macAddress.Append(temp.Substring(x - 2, 2) + "-"); } x -= 2; } return macAddress.ToString(); } catch { return macAddress.ToString(); } } /// /// 获取网卡地址信息 /// /// string GetMacAddress() { try { string mac = ""; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) { mac = mo["MacAddress"].ToString(); break; } } moc = null; mc = null; return mac; } catch { return "unknow"; } } /// /// /// /// [HttpGet] public JsonResult getVehicleTrajectory() { string strjson = ""; string start = Request.QueryString["start"]; string end = Request.QueryString["end"]; string carid = Request.QueryString["carid"]; ResponseTrajectory mod = new ResponseTrajectory(); mod.result = new List(); using (AntORM orm = new AntORM()) { orm.db = DataAccessFactory.CreateDataConnection("CyclingItemLog"); RequestModel res = new RequestModel { newSt = new SqlNote() { Author = "季健国", NewSt = new System.Diagnostics.StackTrace(true), SqlDesc = "获取车辆信息" } }; var q = orm.Queryable(); if (!carid.IsEmpty()) { q = q.Where(p => p.TripID == carid); } if (!start.IsEmpty() && !end.IsEmpty()) { DateTime startDate = start.ToDateTime(); DateTime endDate = end.ToDateTime(); q = q.Where(p => p.Add_Time >= startDate && p.Add_Time <= endDate); } var count = q.Count(); if (count > 1000) { q = q.Top(500); } var reslut = q.OrderBy(p => p.Add_Time).ToList(res); if (reslut.IsSuccess) { foreach (Ent_YW_DrivingTrack beatenty in reslut.ResultModel) { mod.imei = beatenty.IMEI; var GPS = Ant.SuperSocket.Common.ToolGPSamap.GPSToGDGPS(beatenty.Lng.ToDou(), beatenty.Lat.ToDou()); Lnglat enty = new Lnglat(); enty.lng = GPS.Split(',')[0]; enty.lat = GPS.Split(',')[1]; enty.taskTime = beatenty.Add_Time.ToDateTime().ToString("yyyy-MM-dd HH:mm:ss"); mod.result.Add(enty); } mod.status = (mod.result.Count > 0) ? "1" : "0"; } } return Json(mod, JsonRequestBehavior.AllowGet); } /// /// 登录验证 /// add 作者: 季健国 QQ:181589805 by 2016-05-10 /// public ActionResult login(Account item) { var json = new JsonHelper() { Msg = "登录成功", Status = "n", ReUrl = "/Sys/Home/Index" }; try { var code = Request.Form["code"]; var rememberme = Request.Form["remember"]; if (Session["gif"] != null) { //if (!string.IsNullOrEmpty(code) && code.ToLower() == Session["gif"].ToString().ToLower()) if (!string.IsNullOrEmpty(code)) { var pwd = PasswordUtils.MD5_Encrypt(item.PassWord.Trim(), 32);// Ant.Service.Common.CryptHelper.DESCrypt.Encrypt(item.PassWord.Trim()) string userip = Request.UserHostAddress; var users = UserManage.UserLogin(item.LogName.Trim(), pwd); if (users != null) { //if (item.LogName == "admin" && Utils.GetIP() != "218.93.67.45") //{ // json.Msg = "用户已锁定,禁止登录,需要进行解锁才能登录"; // log.Warn(Utils.GetIP(), users.NAME, Request.Url.ToString(), "Login", "系统登录,登录结果:" + json.Msg); // return Json(json); //} if (users.USERTYPE == 0) { if (users.DPTID != null) { using (AntORM orm = new AntORM()) { try { orm.db = DataAccessFactory.CreateDataConnection("CyclingItem"); RequestModel request = new RequestModel { newSt = new SqlNote() { Author = "季健国", NewSt = new System.Diagnostics.StackTrace(true), SqlDesc = "查询教练的单个实体方法" }, Oid = users.DPTID.ToString() }; var reslut = orm.GetEntity(request); if (reslut.IsSuccess) { var mod = (YM_School)reslut.ResultModel; if (mod.Status == 2 || mod.Status == 3) { json.Msg = "帐号已锁定,禁止登录,请联系管理员进行解锁"; log.Warn(Utils.GetIP(), users.NAME, Request.Url.ToString(), "Login", "系统登录,登录结果:" + json.Msg); return Json(json); } } } catch (Exception e) { } } } } if (users.ISCANLOGIN == true) { json.Msg = "用户已锁定,禁止登录,请联系管理员进行解锁"; log.Warn(Utils.GetIP(), users.NAME, Request.Url.ToString(), "Login", "系统登录,登录结果:" + json.Msg); return Json(json); } var acconut = this.UserManage.GetAccountByUser(users); //写入Session 当前登录用户 SessionHelper.SetSession("CurrentUser", acconut); //默认记住我 string cookievalue = "{\"id\":\"" + acconut.Id + "\",\"username\":\"" + acconut.LogName + "\",\"password\":\"" + acconut.PassWord + "\",\"ToKen\":\"" + Session.SessionID + "\"}"; CookieHelper.SetCookie("cookie_rememberme", Ant.Service.Common.CryptHelper.DESCrypt.Encrypt(cookievalue), null); json.Status = "y"; log.Info(Utils.GetIP(), users.NAME, Request.Url.ToString(), "Login", "系统登录,登录结果:" + json.Msg); } else { json.Msg = "用户名或密码不正确"; log.Error(Utils.GetIP(), item.LogName, Request.Url.ToString(), "Login", "系统登录,登录结果:" + json.Msg); } } else { json.Msg = "验证码不正确"; log.Error(Utils.GetIP(), item.LogName, Request.Url.ToString(), "Login", "系统登录,登录结果:" + json.Msg); } } else { json.Msg = "验证码已过期,请刷新验证码"; log.Error(Utils.GetIP(), item.LogName, Request.Url.ToString(), "Login", "系统登录,登录结果:" + json.Msg); } } catch (Exception e) { json.Msg = e.Message; log.Fatal(Utils.GetIP(), item.LogName, Request.Url.ToString(), "Login", "系统登录,登录结果:" + json.Msg); } return Json(json, JsonRequestBehavior.AllowGet); } /// /// 验证是否有登录权限 /// public bool ValidateLogin(HttpRequestBase Request, out string backurl) { //获取返回页面 backurl = Request["backurl"]; string param = Request["para"]; try { if (!string.IsNullOrEmpty(backurl)) { if (!string.IsNullOrEmpty(param)) { //解密 param = Ant.Service.Common.CryptHelper.DESCrypt.Decrypt(param); if (!string.IsNullOrEmpty(param) && param.IndexOf('=') > 0 && param.ToLower().Contains("siteid")) { var siteId = param.Split('=')[1]; //判断来源站点ID if (this.SystemManage.IsExist(p => p.ID == siteId)) { return true; } else { log.Warn(Utils.GetIP(), "其他系统访问者", backurl, "Login", "其他系统登录失败,原因:来源站点不可信,系统拒绝登录"); } } else { log.Warn(Utils.GetIP(), "其他系统访问者", backurl, "Login", "其他系统登录失败,原因:系统验证参数错误,系统拒绝登录"); } } else { log.Warn(Utils.GetIP(), "其他系统访问者", backurl, "Login", "其他系统登录失败,原因:未传递系统验证参数,系统拒绝登录"); } } } catch (Exception e) { log.Warn(Utils.GetIP(), "其他系统访问者", "", "Login", "其他系统登录失败,系统错误", e); } return false; } /// /// 验证码 /// public FileContentResult ValidateCode() { string code = ""; System.IO.MemoryStream ms = new ChangFaModels.verify_code().Create(out code); Session["gif"] = code;//验证码存储在Session中,供验证。 Response.ClearContent();//清空输出流 return File(ms.ToArray(), @"image/png"); } } }