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, "文件上传失败!")); } }
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)); }
/// <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)); }
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); }
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, "文件上传失败!")); } }
/// <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("文件上传失败!")); } }
/// <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); } } } }
/// <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) { } } }
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 }
private Mananger() { _containerBuilder = new ContainerBuilder(); _snowFlake = SnowFlake.GetInstance(); }
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()); }
/// <summary> /// 每天的任务 /// </summary> public void EverydayJob() { CommonHelper.IPErrorTimes.RemoveWhere(kv => kv.Value < 100); //将访客访问出错次数少于100的移开 RedisHelper.Set("ArticleViewToken", SnowFlake.GetInstance().GetUniqueShortId(6)); //更新加密文章的密码 RedisHelper.IncrBy("Interview:RunningDays"); }