Beispiel #1
0
        /// <summary>
        /// 激活
        /// </summary>
        private static void Activation()
        {
            var users = new List <User>();

            lock (lockObj)
            {
                using (var db = new ResumeMatchDBEntities())
                {
                    db.UsingTransaction(() =>
                    {
                        var time = DateTime.UtcNow.AddHours(-1);

                        users = db.User.Where(w => w.Status == 0 && w.Platform == 3 && (!w.IsLocked || w.IsLocked && w.LockedTime < time)).ToList();

                        foreach (var user in users)
                        {
                            user.IsLocked = true;

                            user.LockedTime = DateTime.UtcNow;
                        }

                        db.SaveChanges();
                    });
                }
            }

            if (users.Count == 0)
            {
                return;
            }

            #region 获取未读邮件列表

            var seenUids = new List <string>();

            var messages = EmailFactory.FetchUnseenMessages("pop.exmail.qq.com", 995, true, Global.Email, Global.PassWord, seenUids);

            using (var db = new ResumeMatchDBEntities())
            {
                var userIdArr = users.Select(s => s.Id).ToArray();

                var userList = db.User.Where(w => userIdArr.Any(a => a == w.Id));

                foreach (var user in userList)
                {
                    user.IsLocked = false;

                    var message = messages.FirstOrDefault(f => f.message.Headers.To.FirstOrDefault()?.Address == user.Email);

                    if (message == null)
                    {
                        continue;
                    }

                    var content = Encoding.Default.GetString(message.message.RawMessage);

                    if (!Regex.IsMatch(content, "(?s)token=(.+?)</a>"))
                    {
                        LogFactory.Error($"未匹配到激活码!响应源:{content}", MessageSubjectEnum.JianLiKa);

                        continue;
                    }

                    var activationCode = Regex.Match(content, "(?s)token=(.+?)</a>").Result("$1").Substring(2);

                    var host = string.Empty;

                    //if (Global.IsEnanbleProxy)
                    //{
                    //    if (!string.IsNullOrWhiteSpace(user.Host))
                    //    {
                    //        host = user.Host;

                    //        GetProxy("JLK_Activation",user.Host);
                    //    }
                    //}

                    var dataResult = Activation(activationCode, user.Email, host);

                    //ReleaseProxy("JLK_Activation", host);

                    if (dataResult == null)
                    {
                        continue;
                    }

                    if (!dataResult.IsSuccess)
                    {
                        LogFactory.Error(dataResult.ErrorMsg, MessageSubjectEnum.JianLiKa);

                        continue;
                    }

                    user.Status = 1;

                    LogFactory.Info($"激活成功!邮箱:{user.Email}", MessageSubjectEnum.JianLiKa);

                    if (!EmailFactory.DeleteMessageByMessageId("pop.exmail.qq.com", 995, true, Global.Email, Global.PassWord, message.message.Headers.MessageId))
                    {
                        LogFactory.Error($"删除激活邮件失败,邮箱地址:{user.Email}", MessageSubjectEnum.JianLiKa);
                    }
                }

                db.TransactionSaveChanges();
            }

            #endregion
        }
        /// <summary>
        /// 激活
        /// </summary>
        /// <returns></returns>
        private DataResult Activation()
        {
            var dataResult = new DataResult();

            using (var db = new ResumeRepairDBEntities())
            {
                var list = db.FenJianLi.Where(w => !w.IsActivation).ToList();

                if (list.Count == 0)
                {
                    return(dataResult);
                }

                #region 获取未读邮件列表

                var seenUids = new List <string>();

                var messages = EmailFactory.FetchUnseenMessages("pop.exmail.qq.com", 995, true, Global.Email, Global.PassWord, seenUids);

                foreach (var userEmail in list)
                {
                    var message = messages.FirstOrDefault(f => f.message.Headers.To.FirstOrDefault()?.Address == userEmail.Email);

                    if (message == null)
                    {
                        //dataResult.IsSuccess = false;

                        //dataResult.ErrorMsg += $"获取激活邮件失败!,找不到邮件!邮箱地址:{userEmail.Email}";

                        continue;
                    }

                    var content = Encoding.Default.GetString(message.message.RawMessage);

                    var url = string.Empty;

                    if (Regex.IsMatch(content, "(?s)code=(.+?)</a>"))
                    {
                        url = "http://www.fenjianli.com/register/checkEmailOfCode.htm?code=" + Regex.Match(content, "(?s)code=(.+?)</a>").Result("$1").Substring(2);
                    }

                    var html = RequestFactory.QueryRequest(url);

                    if (!html.Contains("成功"))
                    {
                        dataResult.IsSuccess = false;

                        dataResult.ErrorMsg += $"激活失败!,邮箱地址:{userEmail.Email}{Environment.NewLine}";

                        continue;
                    }

                    userEmail.IsActivation = true;

                    FenJianLiScheduling.ssf.SetText(FenJianLiScheduling.ssf.fjl_tbx_RegisterActivation, $"激活成功!邮箱:{userEmail.Email}");

                    if (!EmailFactory.DeleteMessageByMessageId("pop.exmail.qq.com", 995, true, Global.Email, Global.PassWord, message.message.Headers.MessageId))
                    {
                        FenJianLiScheduling.ssf.SetText(FenJianLiScheduling.ssf.fjl_tbx_RegisterActivation, $"删除激活邮件失败,邮箱地址:{userEmail.Email}");
                    }
                }

                #endregion

                db.SaveChanges();
            }

            return(dataResult);
        }
        /// <summary>
        /// 激活
        /// </summary>
        private void Activation()
        {
            var users = new List <User>();

            lock (lockObj)
            {
                using (var db = new ResumeMatchDBEntities())
                {
                    db.UsingTransaction(() =>
                    {
                        var time = DateTime.UtcNow.AddHours(-1);

                        users = db.User.Where(w => w.Status == 0 && w.Platform == 4 /*&& (!w.IsLocked || w.IsLocked && w.LockedTime < time)*/).ToList();

                        foreach (var user in users)
                        {
                            user.IsLocked = true;

                            user.LockedTime = DateTime.UtcNow;
                        }

                        db.SaveChanges();
                    });
                }
            }

            if (users.Count == 0)
            {
                return;
            }

            #region 获取未读邮件列表

            var seenUids = new List <string>();

            var messages = EmailFactory.FetchUnseenMessages("pop.exmail.qq.com", 995, true, Global.Email, Global.PassWord, seenUids);

            using (var db = new ResumeMatchDBEntities())
            {
                var userIdArr = users.Select(s => s.Id).ToArray();

                var userList = db.User.Where(w => userIdArr.Any(a => a == w.Id));

                foreach (var user in userList)
                {
                    user.IsLocked = false;

                    var message = messages.FirstOrDefault(f => f.message.Headers.To.FirstOrDefault()?.Address == user.Email && f.message.Headers.From.Address == "*****@*****.**");

                    if (message == null)
                    {
                        continue;
                    }

                    var content = Encoding.UTF8.GetString(message.message.FindFirstHtmlVersion().Body);

                    if (!Regex.IsMatch(content, "(?s)完成验证.+?com/track/click/(.+?html)"))
                    {
                        LogFactory.Error($"未匹配到激活码!响应源:{content}", MessageSubjectEnum.ZhaoPinGou);

                        continue;
                    }

                    var url = "http://sctrack.info.zhaopingou.com/track/click/" + Regex.Match(content, "(?s)完成验证.+?com/track/click/(.+?html)\".style").Result("$1");

                    var host = string.Empty;

                    //if (Global.IsEnanbleProxy)
                    //{
                    //    if (!string.IsNullOrWhiteSpace(user.Host))
                    //    {
                    //        host = user.Host;

                    //        GetProxy("ZPG_Activation",user.Host);
                    //    }
                    //}
                    var dataResult = Activation(url, user.Email, host);

                    //ReleaseProxy("ZPG_Activation", host);

                    if (dataResult == null)
                    {
                        continue;
                    }

                    if (!dataResult.IsSuccess)
                    {
                        LogFactory.Error(dataResult.ErrorMsg, MessageSubjectEnum.ZhaoPinGou);

                        continue;
                    }

                    user.Status = 1;

                    LogFactory.Info($"激活成功!邮箱:{user.Email}", MessageSubjectEnum.ZhaoPinGou);

                    if (!EmailFactory.DeleteMessageByMessageId("pop.exmail.qq.com", 995, true, Global.Email, Global.PassWord, message.message.Headers.MessageId))
                    {
                        LogFactory.Error($"删除激活邮件失败,邮箱地址:{user.Email}", MessageSubjectEnum.ZhaoPinGou);
                    }
                }

                db.TransactionSaveChanges();
            }

            #endregion
        }
        private DataResult Activation()
        {
            var dataResult = new DataResult();

            using (var db = new ResumeRepairDBEntities())
            {
                var list = db.Pin101.Where(w => !w.IsActivation).ToList();

                if (list.Count == 0)
                {
                    return(dataResult);
                }

                #region 获取未读邮件列表

                var seenUids = new List <string>();

                var messages = EmailFactory.FetchUnseenMessages("pop.exmail.qq.com", 995, true, Global.Email, Global.PassWord, seenUids);

                foreach (var userEmail in list)
                {
                    var message = messages.FirstOrDefault(f => f.message.Headers.To.FirstOrDefault()?.Address == userEmail.Email);

                    if (message == null)
                    {
                        //dataResult.IsSuccess = false;

                        //dataResult.ErrorMsg += $"获取激活邮件失败!,找不到邮件!邮箱地址:{userEmail.Email}";

                        continue;
                    }

                    var content = Encoding.UTF8.GetString(message.message.FindFirstHtmlVersion().Body);

                    var url = string.Empty;
                    //var referer = string.Empty;

                    //if (Regex.IsMatch(content, "(?s)(http://sctrack.+?html)"))
                    //{
                    //    url = Regex.Match(content, "(?s)(http://sctrack.+?html)").Result("$1");
                    //}

                    if (Regex.IsMatch(content, "(?s)php\\?s=(.+?/istype/\\d+)"))
                    {
                        url = "http://www.101pin.com/index.php?s=" + Regex.Match(content, "(?s)php\\?s=(.+?/istype/\\d+)").Result("$1");
                    }

                    var html = RequestFactory.QueryRequest(url, accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");

                    if (!html.Contains("成功"))
                    {
                        dataResult.IsSuccess = false;

                        dataResult.ErrorMsg += $"激活失败!,邮箱地址:{userEmail.Email}{Environment.NewLine}";

                        continue;
                    }

                    userEmail.IsActivation = true;

                    Pin101Scheduling.ssf.SetText(Pin101Scheduling.ssf.fjl_tbx_RegisterActivation, $"激活成功!邮箱:{userEmail.Email}");

                    if (!EmailFactory.DeleteMessageByMessageId("pop.exmail.qq.com", 995, true, Global.Email, Global.PassWord, message.message.Headers.MessageId))
                    {
                        Pin101Scheduling.ssf.SetText(Pin101Scheduling.ssf.fjl_tbx_RegisterActivation, $"删除激活邮件失败,邮箱地址:{userEmail.Email}");
                    }
                }

                #endregion

                db.SaveChanges();
            }

            return(dataResult);
        }