Exemple #1
0
        /// <summary>
        /// 记录动作
        /// </summary>
        /// <param name="actionType"></param>
        public static void CreateValidateCodeActionRecode(string actionType)
        {
            foreach (ValidateCode tempValidateCode in AllSettings.Current.ValidateCodeSettings.ValidateCodes)
            {
                if (string.Compare(tempValidateCode.ActionType, actionType, true) == 0)
                {
                    if (tempValidateCode.Enable == false)
                    {
                        return;
                    }

                    if (tempValidateCode.LimitedCount == 0 || tempValidateCode.LimitedTime == 0)
                    {
                        return;
                    }

                    string IP = IPUtil.GetCurrentIP();

                    ValidateCodeDao.Instance.CreateValidateCodeActionRecord(IP, actionType, DateTimeUtil.Now, tempValidateCode.LimitedTime, tempValidateCode.LimitedCount);

                    string cacheKey = string.Format(cacheKey_ValidateCodeActionRecodes, IP);

                    CacheUtil.Remove(cacheKey);

                    break;
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// 是否需要输验证码
        /// </summary>
        /// <param name="actionType"></param>
        /// <returns></returns>
        public static bool HasValidateCode(string actionType)
        {
            foreach (ValidateCode tempValidateCode in AllSettings.Current.ValidateCodeSettings.ValidateCodes)
            {
                if (string.Compare(tempValidateCode.ActionType, actionType, true) == 0)
                {
                    if (tempValidateCode.Enable == false)
                    {
                        return(false);
                    }

                    if (tempValidateCode.ExceptRoleIds.Count > 0)
                    {
                        UserRoleCollection userRoles = User.Current.Roles;

                        foreach (UserRole role in userRoles)
                        {
                            if (tempValidateCode.ExceptRoleIds.Contains(role.RoleID.ToString()))
                            {
                                return(false);
                            }
                        }
                    }
                    if (tempValidateCode.LimitedTime == 0 || tempValidateCode.LimitedCount == 0)
                    {
                        return(true);
                    }


                    string IP = IPUtil.GetCurrentIP();

                    ValidateCodeActionRecordCollection recodes = GetValidateCodeActionRecodes(IP);


                    DateTime dateTime = DateTimeUtil.Now.AddSeconds(0 - tempValidateCode.LimitedTime);

                    int count = 0;

                    foreach (ValidateCodeActionRecord recode in recodes)
                    {
                        if (string.Compare(recode.Action, actionType, true) == 0)
                        {
                            if (recode.CreateDate > dateTime)
                            {
                                count++;
                            }
                        }
                    }

                    if (count >= tempValidateCode.LimitedCount)
                    {
                        return(true);
                    }

                    return(false);
                }
            }

            return(false);
        }
 private void initCanRegister()
 {
     using (ErrorScope es = new ErrorScope())
     {
         m_CanRegister = UserBO.Instance.CanRegister(IPUtil.GetCurrentIP());
         es.CatchError <ErrorInfo>(delegate(ErrorInfo error)
         {
             m_CannotRegisterReason = error.Message;
         });
     }
 }
Exemple #4
0
        public void ProcessRequest(System.Web.HttpContext context)
        {
            bool success;

            if (context.Request.HttpMethod == "POST")
            {
                string from    = context.Request.QueryString["from"];
                string content = context.Request.Form["content"];
                content = HttpUtility.HtmlEncode(content);

                if (content == null)
                {
                    return;
                }

                string message = "";

                using (ErrorScope es = new ErrorScope())
                {
                    try
                    {
                        success = DoingBO.Instance.UpdateDoing(User.Current, IPUtil.GetCurrentIP(), content);

                        if (success == false)
                        {
                            es.CatchError <ErrorInfo>(delegate(ErrorInfo error)
                            {
                                message = error.Message;
                            });
                        }
                        else
                        {
                            message = User.Current.Doing;
                        }
                    }
                    catch (Exception ex)
                    {
                        message = ex.Message;
                        success = false;
                    }
                }

                message = StringUtil.ToJavaScriptString(message);
                string js = @"
<Script language='JavaScript'>
      parent.parent.SubmitBack(" + (success ? "true" : "false") + ",'" + message + @"');
</Script>";
                HttpContext.Current.Response.Write(js);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (_Request.IsClick("adddoing"))
            {
                string content = _Request.Get("content", Method.Post);
                bool   success;


                {
                    success = DoingBO.Instance.CreateDoing(AuthUser.CurrentID, IPUtil.GetCurrentIP(), content);
                }
                Response.Clear();
                Response.Write(My.Doing);
                Response.End();
                return;
            }
            this.FriendList = new FriendCollection();
            ProcessRequest();
        }
Exemple #6
0
        public override void AfterExecute(int operatorUserID, string param, bool success, int totalCount, int finishedCount, out string title)
        {
            if (success)
            {
                title = "删除动态成功,共删除 " + finishedCount + " 个动态";

                FeedSearchFilter filter = FeedSearchFilter.Parse(param);

                User operatorUser = UserBO.Instance.GetUser(operatorUserID, GetUserOption.WithAll);

                Logs.LogManager.LogOperation(
                    new Feed_DeleteFeedBySearch(operatorUserID, operatorUser.Name, IPUtil.GetCurrentIP(), filter, finishedCount)
                    );
            }
            else
            {
                title = "删除动态失败";
            }
        }
Exemple #7
0
        public override void AfterExecute(int operatorUserID, string param, bool success, int totalCount, int finishedCount, out string title)
        {
            if (success)
            {
                title = "审核主题成功,共审核 " + finishedCount + " 个主题";

                StringList paramData = StringList.Parse(param);

                TopicFilter filter = TopicFilter.Parse(paramData[0]);

                User operatorUser = UserBO.Instance.GetUser(operatorUserID, GetUserOption.WithAll);

                Logs.LogManager.LogOperation(
                    new Topic_DeleteTopicBySearch(operatorUserID, operatorUser.Name, IPUtil.GetCurrentIP(), filter, finishedCount)
                    );
            }
            else
            {
                title = "审核主题失败";
            }
        }
Exemple #8
0
        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            if (inited == false)
            {
                #region 初始化

                lock (initLocker)
                {
                    if (inited == false)
                    {
                        LogHelper.CreateDebugLog("bbsmax 开始初始化");

                        Config.Current = new WebEngineConfig();
                        TemplateManager.Init(false); //TODO:重复执行会出错

                        //初始化系统并载入设置
                        Globals.Init();
                        Booter.Init();  //TODO:重复执行会出错

                        //初始化插件
                        PluginManager.Init();

#if !Passport
                        //将最后一次备份的在线信息恢复至内存
                        OnlineUserPool.Instance.Restore();
#endif

                        //初始化路由
                        BbsRouter.Init();

                        inited = true;
                    }
                }

                #endregion
            }

            if (Request.RequestType == "POST")
            {
                #region 处理大文件上传

                if (StringUtil.StartsWithIgnoreCase(Request.RawUrl, Globals.AppRoot + "/default.aspx?uploadtempfile.aspx"))
                {
                    string query = Request.RawUrl.Substring(Globals.AppRoot.Length + 33);

                    new MaxLabs.bbsMax.AppHandlers.UploadTempFileHandler().ProcessRequest(HttpContext.Current, HttpUtility.ParseQueryString(query));

                    Response.End();
                }

                #endregion
            }

            if (RequestUtil.CompressStaticContent(Context))
            {
                return;
            }

            MaxLabs.WebEngine.Context.Init();

            if (BbsRouter.Route())
            {
                Context.Items.Add("need-compress", true);

                JobManager.ExecuteBeforeRequestJobs();

                MaxLabs.bbsMax.Entities.User user = MaxLabs.bbsMax.Entities.User.Current;

                if (user != null && user.UserID > 0)
                {
                    string ip = IPUtil.GetCurrentIP();

                    if (ip != user.LastVisitIP)
                    {
                        LogManager.LogUserIPChanged(new UserIPLog(user.UserID, user.Username, ip, user.LastVisitIP, Request.RawUrl));

//                        MaxLabs.bbsMax.Logs.LogManager.LogOperation(new Logs.User_IPChange(user.UserID, user.Username, user.LastVisitIP == null ? string.Empty : user.LastVisitIP, ip));

                        UserBO.Instance.UpdateLastVisitIP(user.UserID, ip);
                    }
                }

                Stopwatch processTimer = new Stopwatch();

                processTimer.Start();

                HttpContext.Current.Items["MaxLabs.bbsMax.ProcessTimer"] = processTimer;
            }
            else
            {
                #region 根据路径来决定是否允许请求。例如某些文件夹只允许请求图片而某些文件夹什么都不允许请求

                string path = Request.Url.AbsolutePath.Substring(Globals.AppRoot.Length).Trim('/', '\\');
                string file = Request.Url.LocalPath;

                //max-templates目录、max-spacestyles目录和max-assets目录禁止可执行文件
                if (StringUtil.StartsWithIgnoreCase(path, "max-templates/") || StringUtil.StartsWithIgnoreCase(path, "max-spacestyles/") || StringUtil.StartsWithIgnoreCase(path, "max-assets/"))
                {
                    if (IsExecuteableFile(file))
                    {
                        Response.Redirect("~/");
                        return;
                    }
                }

                //max-temp和UserFiles目录只允许访问图片
                else if (StringUtil.StartsWithIgnoreCase(path, "max-temp/") || StringUtil.StartsWithIgnoreCase(path, "UserFiles/"))
                {
                    if (IsImageFile(file) == false)
                    {
                        Response.Redirect("~/");
                        return;
                    }
                }

                else if (StringUtil.EndsWithIgnoreCase(file, ".aspx"))
                {
                    Context.Items.Add("need-compress", true);
                }

                #endregion
            }
        }
Exemple #9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (VisitorIsOwner)
            {
                if (_Request.Get("op", Method.Get) == "apply")
                {
                    string theme = _Request.Get("theme", Method.Get);

                    if (theme != null)
                    {
                        SpaceBO.Instance.UpdateSpaceTheme(theme);

                        BbsRouter.JumpTo("space/" + SpaceOwnerID);
                    }
                }
            }
            else
            {
                AddNavigationItem(string.Concat(AppOwner.Name, "的空间"));
            }


            if (_Request.IsClick("articlepassword"))
            {
                int articleID = _Request.Get <int>("id", Method.Post, 0);

                BlogBO.Instance.SaveBlogArticlePassword(MyUserID, articleID, _Request.Get("password", Method.Post));

                BbsRouter.JumpTo("space/" + SpaceOwnerID + "/blog/article-" + articleID);
            }
            else if (_Request.IsClick("adddoing"))
            {
                AddDoing();
            }
            else if (_Request.IsClick("addcomment"))
            {
                AddComment(null, null, "boardform");
            }
            else if (_Request.IsClick("CreateImpression"))
            {
                MessageDisplay msgDisplay = CreateMessageDisplayForForm("ImpressionForum", "text");
                string         text       = _Request.Get("Text");

                bool success;
                try
                {
                    success = ImpressionBO.Instance.CreateImpression(My, SpaceOwner, text);
                    if (success == false)
                    {
                        CatchError <ErrorInfo>(delegate(ErrorInfo error)
                        {
                            msgDisplay.AddError(error);
                        });
                    }
                    else
                    {
                        m_IsShowImpressionInput = false;
                    }
                }
                catch (Exception ex)
                {
                    msgDisplay.AddException(ex);
                }
            }
            else if (_Request.IsClick("DeleteImpression"))
            {
                int?typeID = _Request.Get <int>("TypeID");

                if (typeID != null)
                {
                    ImpressionBO.Instance.DeleteImpressionTypeForUser(My, typeID.Value);
                }
            }
            else if (_Request.IsClick("addfeedcomment"))
            {
                CreateComment();
            }


            SpaceData spaceData = SpaceBO.Instance.GetSpaceDataForVisit(MyUserID, SpaceOwnerID);

            m_AlbumList      = spaceData.AlbumList;
            m_ArticleList    = spaceData.ArticleList;
            m_CommentList    = spaceData.CommentList;
            m_DoingList      = spaceData.DoingList;
            m_VisitorList    = spaceData.VisitorList;
            m_FriendList     = spaceData.FriendList;
            m_ShareList      = spaceData.ShareList;
            m_ImpressionList = spaceData.ImpressionList;

            WaitForFillSimpleUsers <Album>(spaceData.AlbumList);
            WaitForFillSimpleUsers <BlogArticle>(spaceData.ArticleList);
            WaitForFillSimpleUsers <Comment>(spaceData.CommentList);
            WaitForFillSimpleUsers <Doing>(spaceData.DoingList);
            WaitForFillSimpleUsers <Visitor>(spaceData.VisitorList, 0);
            WaitForFillSimpleUsers <Friend>(spaceData.FriendList);
            WaitForFillSimpleUsers <Share>(spaceData.ShareList, 0);
            WaitForFillSimpleUsers <Impression>(spaceData.ImpressionList);

            if (IsShowImpressionInput)
            {
                m_ImpressionTypeList = ImpressionBO.Instance.GetImpressionTypesForUse(SpaceOwnerID, 8, 4);
            }

            if (VisitorIsOwner)
            {
                int page = _Request.Get <int>("page", Method.Get, 1);

                m_ImpressionRecordList = ImpressionBO.Instance.GetTargetUserImpressionRecords(SpaceOwnerID, page, 5);

                WaitForFillSimpleUsers <ImpressionRecord>(m_ImpressionRecordList, 0);
            }

            #region 访问者源判断

            string source = _Request.Get("source", Method.Get);

            switch (source)
            {
            case "show":                    //竞价排名
                PointShowBO.Instance.CheckPointShow(My, SpaceOwnerID, IPUtil.GetCurrentIP());
                break;
            }

            #endregion
        }
        public void ProcessRequest(System.Web.HttpContext context)
        {
            int    maxId = 0, userId = 0, targetUserID = 0, messageCount = 0;
            string action = context.Request["issend"];
            string data   = string.Empty;

            userId = UserBO.Instance.GetCurrentUserID();
            int.TryParse(context.Request["maxid"], out maxId);
            int.TryParse(context.Request["tuid"], out targetUserID);
            int.TryParse(context.Request["count"], out messageCount);

            context.Response.CacheControl = "no-cache";

            ChatMessageCollection messages;

            string validateActionName = "sendmessage";

            //messages = ChatBO.Instance.GetMessages(userId, targetUserID, maxId, messageCount);

            if (action != "true")
            {
                messages = ChatBO.Instance.GetLastChatMessages(userId, targetUserID, maxId, messageCount);
            }
            else
            {
                //ChatMessage message;
                string content = context.Request["content"];

                using (ErrorScope es = new ErrorScope())
                {
                    if (!ValidateCodeManager.CheckValidateCode(validateActionName, false))
                    {
                        context.Response.Write("{state:2,data:'验证码错误'}");
                        context.Response.End();
                        return;
                    }
                    else
                    {
                        messages = ChatBO.Instance.SendMessage(userId, targetUserID, content, IPUtil.GetCurrentIP(), true, maxId);
                    }

                    if (es.HasUnCatchedError)
                    {
                        es.CatchError <ErrorInfo>(delegate(ErrorInfo er)
                        {
                            if (!string.IsNullOrEmpty(data))
                            {
                                data += "<br />";
                            }
                            data += er.Message;
                        });
                        context.Response.Write("{state:1,data:'" + StringUtil.ToJavaScriptString(data) + "'}");
                        context.Response.End();
                        return;
                    }
                }

                //messages = new ChatMessageCollection();
                //if (message != null)
                //    messages.Add(message);
            }

            data = JsonBuilder.GetJson(messages);
            context.Response.ClearContent();

            if (messages.Count > 0)
            {
                context.Response.Write("{state:0,data:" + data + "}");
            }
            else
            {
                context.Response.Write("null");
            }
            context.Response.End();
        }
Exemple #11
0
        public override void AfterExecute(int operatorUserID, string param, bool success, int totalCount, int finishedCount, out string title)
        {
            if (success)
            {
                title = "删除相片成功,共删除 " + finishedCount + " 张相片";

                StringList paramData = StringList.Parse(param);

                AdminPhotoFilter filter = AdminPhotoFilter.Parse(paramData[0]);

                if (success)
                {
                    User operatorUser = UserBO.Instance.GetUser(operatorUserID, GetUserOption.WithAll);

                    Logs.LogManager.LogOperation(
                        new Album_DeletePhotoBySearch(operatorUserID, operatorUser.Name, IPUtil.GetCurrentIP(), filter, finishedCount)
                        );
                }
            }
            else
            {
                title = "删除相片失败";
            }
        }
Exemple #12
0
        public override void AfterExecute(int operatorUserID, string param, bool success, int totalCount, int finishedCount, out string title)
        {
            if (success)
            {
                StringList paramData = StringList.Parse(param);

                title = "删除" + (paramData[2] == "share" ? "分享" : "收藏") + "成功,共删除 " + finishedCount + " 个" + (paramData[2] == "share" ? "分享" : "收藏");

                ShareFilter filter = ShareFilter.Parse(paramData[0]);

                if (success)
                {
                    User operatorUser = UserBO.Instance.GetUser(operatorUserID, GetUserOption.WithAll);

                    if (paramData[2] == "share")
                    {
                        Logs.LogManager.LogOperation(
                            new Share_DeleteShareBySearch(operatorUserID, operatorUser.Name, IPUtil.GetCurrentIP(), filter, finishedCount)
                            );
                    }
                    else
                    {
                        Logs.LogManager.LogOperation(
                            new Favorite_DeleteFavoriteBySearch(operatorUserID, operatorUser.Name, IPUtil.GetCurrentIP(), filter, finishedCount)
                            );
                    }
                }
            }
            else
            {
                title = "删除分享失败";
            }
        }