コード例 #1
0
        public ActionResult Login(string token = "")
        {
            string uName       = Request.Form["userName"];
            string uPwd        = Request.Form["userPassword"];
            string uValidate   = Request.Form["validate"];
            string serviceCode = Session["ValidateCode"] as string;//服务器端验证码

            if (!string.IsNullOrEmpty(uName) && !string.IsNullOrEmpty(uPwd) && uValidate.Equals(serviceCode))
            {
                try
                {
                    if (ScanDataBaseManager.IsUser(uName, uPwd))
                    {
                        Guid guid = Guid.NewGuid();

                        CookieTools.AddCookie("token", guid.ToString(), "");
                        CookieTools.AddCookie("uName", uName, "");

                        CacheTools.CacheInsert(uName, guid.ToString(), DateTime.Now.AddDays(1));

                        TempData["LoginState"] = 1;

                        return(Redirect("Index"));
                    }
                }
                catch (Exception e)
                {
                }
            }

            return(View("Login"));
        }
コード例 #2
0
ファイル: Rights.cs プロジェクト: windygu/AllInOneAV
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var uNameStr = filterContext.RequestContext.HttpContext.Request.Cookies.AllKeys.FirstOrDefault(x => x == "uName");
            var tokenStr = filterContext.RequestContext.HttpContext.Request.Cookies.AllKeys.FirstOrDefault(x => x == "token");

            if (uNameStr != null && tokenStr != null)
            {
                var uName = filterContext.RequestContext.HttpContext.Request.Cookies.Get("uName");
                var token = filterContext.RequestContext.HttpContext.Request.Cookies.Get("token");

                var guid = CacheTools.GetCache <string>(uName.Value);

                if (token.Value == guid)
                {
                    base.OnActionExecuting(filterContext);
                }
                else
                {
                    filterContext.RequestContext.HttpContext.Response.Redirect("/webav/NoRights");
                }
            }
            else
            {
                filterContext.RequestContext.HttpContext.Response.Redirect("/webav/NoRights");
            }
        }
コード例 #3
0
ファイル: C.cs プロジェクト: 775083111/GMS
        /// <summary>
        /// 方便用户直接使用C.R() 来获取资源文件,更少的参数,可以采用 RpcContext.R("key")
        /// </summary>
        /// <param name="resourceName">资源key</param>
        /// <param name="lang">语言种类</param>
        /// <returns>资源文字</returns>
        public static string R(string resourceName, string lang)
        {
            string field = CacheTools.GetPublicResourceKey(lang);
            var    res   = ResourceCache.Instance.GetHash <string>(field, resourceName);

            return(string.IsNullOrEmpty(res) ? resourceName : res); // 没有取到资源文件把key原样返回;
            // return ResourceCache.Instance.GetHash<string>(resourceName, $"LocalResource.{subSystem}.{lang}");
        }
コード例 #4
0
        private static void UpdateCache()
        {
            if (!CacheTools.HasCache("cache-prefix"))
            {
                var allPrefix = ScanDataBaseManager.GetPrefix().Select(x => x.Prefix).ToList();
                allPrefix = allPrefix.OrderByDescending(x => x.Length).ToList();

                CacheTools.CacheInsert("cache-prefix", allPrefix, DateTime.Now.AddDays(1));
            }
        }
コード例 #5
0
        public static List <AV> GetClosetMatch(string inputName)
        {
            List <AV>     ret = new List <AV>();
            List <string> allPossibleMatch = new List <string>();

            inputName = inputName.ToUpper();

            if (!CacheTools.HasCache("cache-prefix"))
            {
                UpdateCache();
            }

            var allPrefix = CacheTools.GetCache <List <string> >("cache-prefix");

            foreach (var prefix in allPrefix)
            {
                if (inputName.Contains(prefix))
                {
                    var pattern    = prefix + "{1}-?\\d{1,5}";
                    var possibleId = Regex.Match(inputName, pattern).Value;

                    if (possibleId.Contains("-"))
                    {
                        allPossibleMatch.Add(possibleId);
                    }
                    else
                    {
                        bool          isFirst = true;
                        StringBuilder sb      = new StringBuilder();

                        foreach (var c in possibleId)
                        {
                            if (c >= '0' && c <= '9')
                            {
                                if (isFirst)
                                {
                                    sb.Append("-");
                                    isFirst = false;
                                }
                            }
                            sb.Append(c);
                        }

                        allPossibleMatch.Add(sb.ToString());
                    }
                }
            }

            ret = JavDataBaseManager.GetAllAV(allPossibleMatch);
            ret = ret.OrderByDescending(x => x.AvLength).ToList();

            return(ret);
        }
コード例 #6
0
        public ActionResult Logout()
        {
            var uName = CookieTools.GetCookie("uName").Value;

            if (!string.IsNullOrEmpty(uName))
            {
                CacheTools.CacheRemove(uName);

                CookieTools.RemoveCookie(uName);
                CookieTools.RemoveCookie("token");
            }

            return(View("Index"));
        }
コード例 #7
0
        public ActionResult Catelog(int limitGiga = 0, int page = 1, int pageSize = 200)
        {
            var    scanResult = new List <ScanResult>();
            var    toBe       = new List <ScanResult>();
            string scanCache  = "scan";

            if (CacheTools.HasCache(scanCache))
            {
                scanResult = CacheTools.GetCache <List <ScanResult> >(scanCache);
            }
            else
            {
                scanResult = ScanDataBaseManager.GetMatchScanResult();
                CacheTools.CacheInsert(scanCache, scanResult, DateTime.Now.AddHours(3));
            }

            scanResult = scanResult.Where(x => !string.IsNullOrEmpty(x.Location)).ToList();

            if (limitGiga > 0)
            {
                double limit = (double)limitGiga * 1024 * 1024 * 1024;
                ApplicationLog.Debug("catelog -> limitGiga: " + limitGiga + " limit: " + limit);
                ApplicationLog.Debug("catelog -> beforeCount: " + scanResult.Count);

                foreach (var s in scanResult)
                {
                    if (new FileInfo(s.AvFilePath).Length >= limit)
                    {
                        toBe.Add(s);
                    }
                }

                ApplicationLog.Debug("catelog -> afterCount: " + toBe.Count);
            }
            else
            {
                toBe = scanResult;
            }

            var pageContent = toBe.OrderByDescending(x => x.ReleaseDate).Skip((page - 1) * pageSize).Take(pageSize).ToList();

            ViewData.Add("avs", pageContent);
            ViewData.Add("count", (int)Math.Ceiling((decimal)toBe.Count / pageSize));
            ViewData.Add("size", pageSize);
            ViewData.Add("current", page);
            ViewData.Add("total", toBe.Count);
            ViewData.Add("limit", limitGiga);

            return(View());
        }
コード例 #8
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            WebViewLog log = new WebViewLog();

            log.IPAddress  = filterContext.RequestContext.HttpContext.Request.UserHostAddress;
            log.Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
            log.UserAgent  = filterContext.RequestContext.HttpContext.Request.UserAgent;
            log.Action     = filterContext.ActionDescriptor.ActionName;

            var    arrParameter = filterContext.ActionDescriptor.GetParameters();
            string paramter     = "?";

            foreach (var pName in arrParameter)
            {
                var parameterValue = filterContext.ActionParameters[pName.ParameterName];

                paramter += pName.ParameterName + "=" + parameterValue.ToString() + "&";
            }
            log.Parameter = paramter;

            var uNameStr = filterContext.RequestContext.HttpContext.Request.Cookies.AllKeys.FirstOrDefault(x => x == "uName");
            var tokenStr = filterContext.RequestContext.HttpContext.Request.Cookies.AllKeys.FirstOrDefault(x => x == "token");

            if (uNameStr != null && tokenStr != null)
            {
                var uName = filterContext.RequestContext.HttpContext.Request.Cookies.Get("uName");
                var token = filterContext.RequestContext.HttpContext.Request.Cookies.Get("token");

                var guid = CacheTools.GetCache <string>(uName.Value);

                if (token.Value == guid)
                {
                    log.IsLogin = 1;
                    ScanDataBaseManager.InserWebViewLog(log);
                    base.OnActionExecuting(filterContext);
                }
                else
                {
                    ScanDataBaseManager.InserWebViewLog(log);
                    filterContext.RequestContext.HttpContext.Response.Redirect("/webav/NoRights");
                }
            }
            else
            {
                ScanDataBaseManager.InserWebViewLog(log);
                filterContext.RequestContext.HttpContext.Response.Redirect("/webav/NoRights");
            }

            ScanDataBaseManager.InserWebViewLog(log);
        }
コード例 #9
0
        /// <summary>
        /// 根据当前用户cookie,判断是否登录
        /// </summary>
        /// <returns></returns>
        public static Users GetUserInfoSession(HttpContext context)
        {
            var token = context.GetCookie();

            if (token.IsNullOrWhiteSpace())
            {
                return(null);
            }
            var user = CacheTools.GetData <Users>(token);

            if (user != null)
            {
                //失效时间顺延
                SetUserInfoSession(token, user);
            }
            return(user);
        }
コード例 #10
0
        /// <summary>
        /// 检查当前用户是否已经存在于数据库
        /// </summary>
        /// <param name="context"></param>
        public void OnActionExecuting(ActionExecutingContext context)
        {
            //home允许无身份访问
            if (!context.HttpContext.IsFromWx())
            {
                return;
            }

            var code = context.HttpContext.Request.Query["code"].ToString();

            //如果请求参数有code,则从wx获取用户身份
            if (!code.IsNullOrWhiteSpace())
            {
                //获取access_token、userinfo等
                var webToken = context.HttpContext.GetWebToken(code);
                if (webToken != null && !string.IsNullOrWhiteSpace(webToken.Openid))
                {
                    //context.HttpContext.SetCookie(webToken.Openid);
                    BaseCore.CurrentContext.SetCookie(webToken.Openid);
                    WxUsers.GetWxUserInfoAndInsertToDb(webToken.Openid);
                    #region 获取当前用户信息,并缓存
                    var userInfo = new UserContext().GetUserDTOByOpenid(webToken.Openid);
                    var ip       = context.HttpContext.Connection.RemoteIpAddress;
                    var port     = context.HttpContext.Connection.RemotePort;
                    //todo:考虑在缓存时,对key添加上ip/mac地址标识。
                    CacheTools.SetData(webToken.Openid + ip + port, userInfo);
                    #endregion
                }
            }


            //若不是,取身份信息
            var userOpenid = BaseCore.CurrentContext.GetCookie();
            if (string.IsNullOrWhiteSpace(userOpenid))
            {
                //无身份信息跳回主页
                //context.HttpContext.Response.Redirect();
                if (!string.IsNullOrWhiteSpace(context.HttpContext.Request.Path.Value.Trim('/')))
                {
                    context.Result = new Microsoft.AspNetCore.Mvc.RedirectResult($"/?redirectUrl=" + WebUtility.UrlEncode(context.HttpContext.Request.Path));
                }
                return;
            }
        }
コード例 #11
0
ファイル: RpcContextExtensions.cs プロジェクト: 775083111/GMS
        /// <summary>
        /// 得到指定key的资源信息,默认按照 微服务名称获取相关信息
        ///
        /// </summary>
        /// <param name="context">上下文</param>
        /// <param name="key">key</param>
        /// <returns>资源</returns>
        public static string R(this RpcContext context, string key)
        {
            key = key.Trim();
            var user = context.GetUserContext();

            string field = CacheTools.GetPublicResourceKey(context.Language);

            string res = string.Empty;

            if (user == null)
            {
                res = ResourceCache.Instance.GetHash <string>(field, key);
            }
            else
            {
                // 从Redis先获取 租户级别的Key,如果没有
                var ttField = CacheTools.GetUdfResourceKey(user.TTID, context.Language);
                res = ResourceCache.Instance.GetHash <string>(ttField, key);
                if (res == null)
                {
                    // 否则拉初始资源到租户级别Key中
                    var defaultRes = ResourceCache.Instance.GetHash <string>(field, key);

                    // 避免null 值建立多个key
                    if (defaultRes != null)
                    {
                        ResourceCache.Instance.SetHash <string>(ttField, new KeyValuePair <string, string>(key, defaultRes));
                        var keyTtids = CacheTools.GetUdfTtidsKey();
                        ResourceCache.Instance.SetHash <string>(keyTtids, new KeyValuePair <string, string>($"{user.TTID}.{context.Language}", string.Empty));
                        res = defaultRes;
                    }
                }
            }

            return(string.IsNullOrEmpty(res) ? key : res); // 没有取到资源文件把key原样返回;
        }
コード例 #12
0
 public static void DeleteUserInfoSession(string userName)
 {
     CacheTools.DeleteData(userName);
 }
コード例 #13
0
 public static void SetUserInfoSession(string userName, Users userInfo)
 {
     CacheTools.SetData(userName, userInfo);
 }
コード例 #14
0
        public ActionResult GetAv(string search, bool onlyExist = false, string searchType = "all", int page = 1, int pageSize = 20)
        {
            var    scanResult = new List <ScanResult>();
            string scanCache  = "scan";

            if (CacheTools.HasCache(scanCache))
            {
                scanResult = CacheTools.GetCache <List <ScanResult> >(scanCache);
            }
            else
            {
                scanResult = ScanDataBaseManager.GetMatchScanResult();
                CacheTools.CacheInsert(scanCache, scanResult, DateTime.Now.AddHours(3));
            }

            if (onlyExist)
            {
                scanResult = scanResult.Where(x => !string.IsNullOrEmpty(x.Location)).ToList();
            }

            var toBePlay = new List <ScanResult>();
            List <ScanResult> namePlay     = new List <ScanResult>();
            List <ScanResult> actressPlay  = new List <ScanResult>();
            List <ScanResult> categoryPlay = new List <ScanResult>();
            List <ScanResult> prefixPlay   = new List <ScanResult>();
            List <ScanResult> direPlay     = new List <ScanResult>();

            if (searchType == "all" || searchType == "id")
            {
                foreach (var r in scanResult)
                {
                    if (r.AvId == search.ToUpper())
                    {
                        toBePlay.Add(r);
                    }
                }
            }

            if (searchType == "all" || searchType == "actress")
            {
                foreach (var r in scanResult)
                {
                    foreach (var ac in r.ActressList)
                    {
                        if (ac.Contains(search))
                        {
                            toBePlay.Add(r);
                        }
                    }
                }
            }

            if (searchType == "all" || searchType == "category")
            {
                foreach (var r in scanResult)
                {
                    foreach (var ca in r.CategoryList)
                    {
                        if (ca.Contains(search))
                        {
                            toBePlay.Add(r);
                        }
                    }
                }
            }

            if (searchType == "all" || searchType == "prefix")
            {
                foreach (var r in scanResult)
                {
                    if (r.Prefix.Contains(search.ToUpper()))
                    {
                        toBePlay.Add(r);
                    }
                }
            }

            if (searchType == "all" || searchType == "director")
            {
                foreach (var r in scanResult)
                {
                    if (r.Director.Contains(search))
                    {
                        toBePlay.Add(r);
                    }
                }
            }

            var pageContent = toBePlay.OrderByDescending(x => x.ReleaseDate).Skip((page - 1) * pageSize).Take(pageSize).ToList();

            ViewData.Add("avs", pageContent);
            ViewData.Add("search", search);
            ViewData.Add("count", (int)Math.Ceiling((decimal)toBePlay.Count / pageSize));
            ViewData.Add("size", pageSize);
            ViewData.Add("current", page);
            ViewData.Add("total", toBePlay.Count);

            return(View());
        }