Example #1
0
        public ActionResult GetViewToken(string email)
        {
            var validator = new IsEmailAttribute();

            if (!validator.IsValid(email))
            {
                return(ResultData(null, false, validator.ErrorMessage));
            }

            if (RedisHelper.Exists("get:" + email))
            {
                RedisHelper.Expire("get:" + email, 120);
                return(ResultData(null, false, "发送频率限制,请在2分钟后重新尝试发送邮件!请检查你的邮件,若未收到,请检查你的邮箱地址或邮件垃圾箱!"));
            }

            if (!UserInfoService.Any(b => b.Email.Equals(email)))
            {
                return(ResultData(null, false, "您目前没有权限访问这个链接,请联系站长开通访问权限!"));
            }

            var token = SnowFlake.GetInstance().GetUniqueShortId(6);

            RedisHelper.Set("token:" + email, token, 86400);
            BackgroundJob.Enqueue(() => CommonHelper.SendMail(Request.Host + "博客访问验证码", $"{Request.Host}本次验证码是:<span style='color:red'>{token}</span>,有效期为24h,请按时使用!", email, ClientIP));
            RedisHelper.Set("get:" + email, token, 120);
            return(ResultData(null));
        }
        public ActionResult GetViewToken([FromServices] IUserInfoService userInfoService, string email)
        {
            if (string.IsNullOrEmpty(email) || !email.MatchEmail().isMatch)
            {
                return(ResultData(null, false, "请输入正确的邮箱!"));
            }

            if (RedisHelper.Exists("get:" + email))
            {
                RedisHelper.Expire("get:" + email, 120);
                return(ResultData(null, false, "发送频率限制,请在2分钟后重新尝试发送邮件!请检查你的邮件,若未收到,请检查你的邮箱地址或邮件垃圾箱!"));
            }

            if (!userInfoService.Any(b => b.Email == email))
            {
                return(ResultData(null, false, "您目前没有权限访问这个链接,请联系站长开通访问权限!"));
            }

            var token = SnowFlake.GetInstance().GetUniqueShortId(6);

            RedisHelper.Set("token:" + email, token, 86400);
            BackgroundJob.Enqueue(() => CommonHelper.SendMail(Request.Host + "博客访问验证码", $"{Request.Host}本次验证码是:<span style='color:red'>{token}</span>,有效期为24h,请按时使用!", email, HttpContext.Connection.RemoteIpAddress.ToString()));
            RedisHelper.Set("get:" + email, token, 120);
            return(ResultData(null));
        }
        public async Task <ActionResult> SendCode(string email)
        {
            if (string.IsNullOrEmpty(email) || !email.MatchEmail().isMatch)
            {
                return(ResultData(null, false, "请输入正确的邮箱!"));
            }

            if (await RedisHelper.ExistsAsync("get:" + email))
            {
                await RedisHelper.ExpireAsync("get:" + email, 120);

                return(ResultData(null, false, "发送频率限制,请在2分钟后重新尝试发送邮件!请检查你的邮件,若未收到,请检查你的邮箱地址或邮件垃圾箱!"));
            }

            string code = SnowFlake.GetInstance().GetUniqueShortId(6);
            await RedisHelper.SetAsync("code:" + email, code, 86400);

            BackgroundJob.Enqueue(() => CommonHelper.SendMail(Request.Host + "博客验证码", $"{Request.Host}本次验证码是:<span style='color:red'>{code}</span>,有效期为24h,请按时使用!", email, ClientIP));
            await RedisHelper.SetAsync("get:" + email, code, 120);

#if !DEBUG
            return(ResultData(null, true, "验证码发送成功!"));
#else
            return(ResultData(null, true, "验证码:" + code));
#endif
        }
        public ActionResult UploadFile(IFormFile file)
        {
            string path;
            string filename = SnowFlake.GetInstance().GetUniqueId() + Path.GetExtension(file.FileName);

            switch (file.ContentType)
            {
            case var _ when file.ContentType.StartsWith("image"):
                path = Path.Combine(_hostingEnvironment.WebRootPath, "upload", "images", filename);

                var dir = Path.GetDirectoryName(path);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                {
                    file.CopyTo(fs);
                }
                var(url, success) = CommonHelper.UploadImage(path);
                if (success)
                {
                    BackgroundJob.Enqueue(() => System.IO.File.Delete(path));
                    return(ResultData(url));
                }
                break;

            case var _ when file.ContentType.StartsWith("audio") || file.ContentType.StartsWith("video"):
                path = Path.Combine(_hostingEnvironment.WebRootPath, "upload", "media", filename);

                break;

            case var _ when file.ContentType.StartsWith("text") || (ContentType.Doc + "," + ContentType.Xls + "," + ContentType.Ppt + "," + ContentType.Pdf).Contains(file.ContentType):
                path = Path.Combine(_hostingEnvironment.WebRootPath, "upload", "docs", filename);

                break;

            default:
                path = Path.Combine(_hostingEnvironment.WebRootPath, "upload", "files", filename);
                break;
            }
            try
            {
                var dir = Path.GetDirectoryName(path);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                {
                    file.CopyTo(fs);
                }
                return(ResultData(path.Substring(_hostingEnvironment.WebRootPath.Length).Replace("\\", "/")));
            }
            catch (Exception e)
            {
                LogManager.Error(e);
                return(ResultData(null, false, "文件上传失败!"));
            }
        }
Example #5
0
        public ActionResult GetViewToken(string email)
        {
            if (string.IsNullOrEmpty(email) || !email.MatchEmail())
            {
                return(ResultData(null, false, "请输入正确的邮箱!"));
            }

            if (RedisHelper.Exists("get:" + email))
            {
                RedisHelper.Expire("get:" + email, 120);
                return(ResultData(null, false, "发送频率限制,请在2分钟后重新尝试发送邮件!请检查你的邮件,若未收到,请检查你的邮箱地址或邮件垃圾箱!"));
            }

            if (!BroadcastService.Any(b => b.Email.Equals(email) && b.SubscribeType == SubscribeType.ArticleToken))
            {
                return(ResultData(null, false, "您目前没有权限访问这个链接,请联系站长开通访问权限!"));
            }

            var token = SnowFlake.GetInstance().GetUniqueShortId(6);

            RedisHelper.Set("token:" + email, token, 86400);
            BackgroundJob.Enqueue(() => CommonHelper.SendMail(CommonHelper.SystemSettings["Domain"] + "博客访问验证码", $"{CommonHelper.SystemSettings["Domain"]}本次验证码是:<span style='color:red'>{token}</span>,有效期为24h,请按时使用!", email));
            RedisHelper.Set("get:" + email, token, 120);
            return(ResultData(null));
        }
Example #6
0
        /// <summary>
        /// 每天的任务
        /// </summary>
        public void EverydayJob()
        {
            CommonHelper.IPErrorTimes.RemoveWhere(kv => kv.Value < 100);                      //将访客访问出错次数少于100的移开
            RedisHelper.Set("ArticleViewToken", SnowFlake.GetInstance().GetUniqueShortId(6)); //更新加密文章的密码
            RedisHelper.IncrBy("Interview:RunningDays");
            DateTime time = DateTime.Now.AddMonths(-1);

            _searchDetailsService.DeleteEntitySaved(s => s.SearchTime < time);
        }
        public async Task <ActionResult> UploadFile(IFormFile file)
        {
            string path;
            string filename = SnowFlake.GetInstance().GetUniqueId() + Path.GetExtension(file.FileName);

            switch (file.ContentType)
            {
            case var _ when file.ContentType.StartsWith("image"):
                var(url, success) = await ImagebedClient.UploadImage(file.OpenReadStream(), file.FileName);

                if (success)
                {
                    return(ResultData(url));
                }

                path = Path.Combine(HostEnvironment.WebRootPath, "upload", "images", filename);
                var dir = Path.GetDirectoryName(path);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }

                await using (var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                {
                    file.CopyTo(fs);
                }

                break;

            case var _ when file.ContentType.StartsWith("audio") || file.ContentType.StartsWith("video"):
                path = Path.Combine(HostEnvironment.WebRootPath, "upload", "media", filename);

                break;

            case var _ when file.ContentType.StartsWith("text") || (ContentType.Doc + "," + ContentType.Xls + "," + ContentType.Ppt + "," + ContentType.Pdf).Contains(file.ContentType):
                path = Path.Combine(HostEnvironment.WebRootPath, "upload", "docs", filename);

                break;

            default:
                path = Path.Combine(HostEnvironment.WebRootPath, "upload", "files", filename);
                break;
            }
            try
            {
                await SaveFile(file, path);

                return(ResultData(path.Substring(HostEnvironment.WebRootPath.Length).Replace("\\", "/")));
            }
            catch (Exception e)
            {
                LogManager.Error(e);
                return(ResultData(null, false, "文件上传失败!"));
            }
        }
        public ActionResult ViewToken()
        {
            if (!RedisHelper.Exists("ArticleViewToken"))
            {
                RedisHelper.Set("ArticleViewToken", SnowFlake.GetInstance().GetUniqueShortId(6));
            }

            var token = RedisHelper.Get("ArticleViewToken");

            return(ResultData(token));
        }
Example #9
0
        public List <string> CreateId()
        {
            var set = new HashSet <string>();

            for (int i = 0; i < 100; i++)
            {
                set.Add(SnowFlake.GetInstance().GetUniqueId());
            }

            return(set.ToList());
        }
        /// <summary>
        /// 创建一个会议室
        /// </summary>
        /// <param name="creator">创建者</param>
        /// <returns></returns>
        public static MeetingRoom Create(string creator)
        {
            var code = SnowFlake.GetInstance().GetUniqueShortId(8).ToUpper();

            var room = new MeetingRoom(code);

            var message = new Message(null, "System", $"{creator} 创建了会议", "zh-cn");

            room._messages.Add(message);

            return(room);
        }
Example #11
0
        public async Task <ActionResult> UploadFile([FromServices] ImagebedClient imagebedClient, IFormFile file, CancellationToken cancellationToken)
        {
            string path;
            string filename = SnowFlake.GetInstance().GetUniqueId() + Path.GetExtension(file.FileName);
            var    pathBase = CommonHelper.SystemSettings.GetOrAdd("UploadPath", "upload").Trim('/', '\\');

            switch (file.ContentType)
            {
            case var _ when file.ContentType.StartsWith("image"):
            {
                await using var stream = file.OpenReadStream();
                var(url, success)      = await imagebedClient.UploadImage(stream, file.FileName, cancellationToken);

                if (success)
                {
                    return(ResultData(url));
                }

                path = Path.Combine(HostEnvironment.WebRootPath, pathBase, "images", filename);
                var dir = Path.GetDirectoryName(path);
                Directory.CreateDirectory(dir);
                await using var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                await file.CopyToAsync(fs);

                break;
            }

            case var _ when file.ContentType.StartsWith("audio") || file.ContentType.StartsWith("video"):
                path = Path.Combine(HostEnvironment.WebRootPath, pathBase, "media", filename);

                break;

            case var _ when file.ContentType.StartsWith("text") || (ContentType.Doc + "," + ContentType.Xls + "," + ContentType.Ppt + "," + ContentType.Pdf).Contains(file.ContentType):
                path = Path.Combine(HostEnvironment.WebRootPath, pathBase, "docs", filename);

                break;

            default:
                path = Path.Combine(HostEnvironment.WebRootPath, pathBase, "files", filename);
                break;
            }
            try
            {
                await SaveFile(file, path);

                return(ResultData(path.Substring(HostEnvironment.WebRootPath.Length).Replace("\\", "/")));
            }
            catch (Exception e)
            {
                LogManager.Error(e);
                return(ResultData(null, false, "文件上传失败!"));
            }
        }
Example #12
0
        /// <summary>
        /// 通用文件上传
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        private async Task <ResultInfo> FileUpload(IFormFile file)
        {
            if (file == null)
            {
                return(FailResp("上传文件为空!"));
            }
            string filename = $"{DateTime.Now:yyyyMMddHHmmss}" + SnowFlake.GetInstance().GetUniqueShortId(9) + Path.GetExtension(file.FileName);
            string path;

            switch (file.ContentType)
            {
            case var _ when file.ContentType.StartsWith("image"):
                path = Path.Combine(_hostingEnvironment.WebRootPath, "upload", "images", $"{DateTime.Now:yyyy}/{DateTime.Now:MM}/{DateTime.Now:dd}", filename);

                break;

            case var _ when file.ContentType.StartsWith("audio") || file.ContentType.StartsWith("video"):
                path = Path.Combine(_hostingEnvironment.WebRootPath, "upload", "media", $"{DateTime.Now:yyyy}/{DateTime.Now:MM}/{DateTime.Now:dd}", filename);

                break;

            case var _ when file.ContentType.StartsWith("text") || (ContentType.Doc + "," + ContentType.Xls + "," + ContentType.Ppt + "," + ContentType.Pdf).Contains(file.ContentType):
                path = Path.Combine(_hostingEnvironment.WebRootPath, "upload", "docs", $"{DateTime.Now:yyyy}/{DateTime.Now:MM}/{DateTime.Now:dd}", filename);

                break;

            default:
                path = Path.Combine(_hostingEnvironment.WebRootPath, "upload", "files", $"{DateTime.Now:yyyy}/{DateTime.Now:MM}/{DateTime.Now:dd}", filename);
                break;
            }
            try
            {
                var dir = Path.GetDirectoryName(path);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                {
                    await file.CopyToAsync(fs);
                }
                return(SuccResp(path.Substring(_hostingEnvironment.WebRootPath.Length).Replace("\\", "/")));
            }
            catch (Exception e)
            {
                LogManager.Error(GetType(), e);
                return(FailResp("文件上传失败!"));
            }
        }
Example #13
0
        /// <summary>
        /// 上传图片到人民网图床
        /// </summary>
        /// <returns></returns>
        public static (string url, bool success) UploadPeople(Stream stream, string ext)
        {
            bool success = false;

            using (var httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.UserAgent.Add(ProductInfoHeaderValue.Parse("Chrome/72.0.3626.96"));
                using (var sc = new StreamContent(stream))
                {
                    using (var mc = new MultipartFormDataContent
                    {
                        { sc, "Filedata", SnowFlake.GetInstance().GetUniqueId() + ext },
                        { new StringContent(ext), "filetype" }
                    })
                    {
                        var str = httpClient.PostAsync("http://bbs1.people.com.cn/postImageUpload.do", mc).ContinueWith(t =>
                        {
                            if (t.IsCompletedSuccessfully)
                            {
                                var res = t.Result;
                                if (res.IsSuccessStatusCode)
                                {
                                    string result = res.Content.ReadAsStringAsync().Result;
                                    string url    = "http://bbs1.people.com.cn" + (string)JObject.Parse(result)["imageUrl"];
                                    if (url.EndsWith(ext))
                                    {
                                        success = true;
                                        return(url);
                                    }
                                }
                            }

                            return("");
                        }).Result;
                        if (!success)
                        {
                            Console.WriteLine("人民网图床上传接口都挂掉了,重试sm.ms图床");
                            return(UploadImageFallback(stream, ext));
                        }
                        return(str, success);
                    }
                }
            }
        }
Example #14
0
        /// <summary>
        /// 每天的任务
        /// </summary>
        public void EverydayJob()
        {
            CommonHelper.IPErrorTimes.RemoveWhere(kv => kv.Value < 100);                      //将访客访问出错次数少于100的移开
            RedisHelper.Set("ArticleViewToken", SnowFlake.GetInstance().GetUniqueShortId(6)); //更新加密文章的密码
            RedisHelper.IncrBy("Interview:RunningDays");
            DateTime time = DateTime.Now.AddMonths(-1);

            _searchDetailsService.DeleteEntitySaved(s => s.SearchTime < time);
            foreach (var p in _postService.GetAll().AsParallel())
            {
                try
                {
                    p.AverageViewCount = p.PostAccessRecord.Average(r => r.ClickCount);
                    p.TotalViewCount   = p.PostAccessRecord.Sum(r => r.ClickCount);
                    _postService.UpdateEntity(p);
                    _postService.SaveChanges();
                }
                catch (Exception)
                {
                }
            }
        }
Example #15
0
        public ActionResult SendCode(string email)
        {
            if (string.IsNullOrEmpty(email) || !email.MatchEmail())
            {
                return(ResultData(null, false, "请输入正确的邮箱!"));
            }

            if (RedisHelper.Exists("get:" + email))
            {
                RedisHelper.Expire("get:" + email, 120);
                return(ResultData(null, false, "发送频率限制,请在2分钟后重新尝试发送邮件!请检查你的邮件,若未收到,请检查你的邮箱地址或邮件垃圾箱!"));
            }

            string code = SnowFlake.GetInstance().GetUniqueShortId(6);

            RedisHelper.Set("code:" + email, code, 86400);
            BackgroundJob.Enqueue(() => CommonHelper.SendMail(CommonHelper.SystemSettings["Domain"] + "博客验证码", $"{CommonHelper.SystemSettings["Domain"]}本次验证码是:<span style='color:red'>{code}</span>,有效期为24h,请按时使用!", email));
            RedisHelper.Set("get:" + email, code, 120);
#if !DEBUG
            return(ResultData(null, true, "验证码发送成功!"));
#else
            return(ResultData(null, true, "验证码:" + code));
#endif
        }
Example #16
0
        private Mananger()
        {
            _containerBuilder = new ContainerBuilder();

            _snowFlake = SnowFlake.GetInstance();
        }
Example #17
0
        public async Task <IActionResult> PostUserRegisterAsync([FromHeader] String source,
                                                                [FromHeader] String authorization,
                                                                [FromBody] RegisterPost item)
        {
            var response = new Response <JwtAuthorData>();
            var message  = string.Empty;

            try {
                var entity = await _IMemberInfosRepository.FirstOrDefaultAsync(a => a.Uid == item.uid && a.OpenId == item.openid && a.IsEnable == 1);

                if (entity == null)
                {
                    entity             = new MemberInfos();
                    entity.Code        = SnowFlake.GetInstance().GetUniqueShortId(8);
                    entity.NickName    = item.name;
                    entity.Name        = item.name;
                    entity.Sex         = item.gender == "男" ? 1 : 0;
                    entity.Avatar      = item.iconurl;
                    entity.Uid         = item.uid;
                    entity.OpenId      = item.openid;
                    entity.Phone       = item.phone;
                    entity.Password    = Tools.Md5("000000");
                    entity.Beans       = 0;
                    entity.BeansTotals = 0;

                    entity.NewsNumber      = 0;
                    entity.FollowNumber    = 0;
                    entity.FavoritesNumber = 0;
                    entity.FansNumber      = 0;

                    entity.IsNoviceTask  = 0;
                    entity.IsEnable      = 1;
                    entity.LastLoginTime = System.DateTime.Now;
                    entity.CreateTime    = System.DateTime.Now;
                    entity.Remarks       = "微信首次登录注册。";

                    await _IMemberInfosRepository.AddAsync(entity);

                    await _IMemberInfosRepository.SaveChangesAsync();

                    message = "初始登录密码为【000000】";

                    var taskNoviceLogs = await _ITaskInfoRepository.Query(a => a.IsNoviceTask == 1 && a.IsEnable == 1)
                                         .Select(a => new TaskNoviceLog()
                    {
                        TaskId        = a.TaskId,
                        CategoryFixed = a.CategoryFixed,
                        CategoryDay   = a.CategoryDay,
                        MemberId      = entity.MemberId,
                        IsEnable      = 1
                    })
                                         .ToListAsync();

                    await _ITaskNoviceLogRepository.BatchAddAsync(taskNoviceLogs);
                }
                else
                {
                    message = "已注册,初始登录密码为【000000】";
                }
                var result = _IJwtRedis.Create(entity);
                if (result != null)
                {
                    //await _IJwtRedis.DeactivateAsync(authorization);
                    response.Code    = true;
                    response.Message = message;
                    response.Data    = result;
                }
                else
                {
                    return(BadRequest("授权失败!"));
                }
            }
            catch (Exception ex) {
                response.SetError(ex, this._ILogger);
            }
            return(response.ToHttpResponse());
        }
Example #18
0
 /// <summary>
 /// 每天的任务
 /// </summary>
 public void EverydayJob()
 {
     CommonHelper.IPErrorTimes.RemoveWhere(kv => kv.Value < 100);                      //将访客访问出错次数少于100的移开
     RedisHelper.Set("ArticleViewToken", SnowFlake.GetInstance().GetUniqueShortId(6)); //更新加密文章的密码
     RedisHelper.IncrBy("Interview:RunningDays");
 }