Beispiel #1
0
        public CmsContext(ICompatibleHttpContext httpCtx)
        {
            _context = httpCtx;
            if (!Cms.IsInitFinish)
            {
                return;
            }
            OnBeginRequest?.Invoke();
            //设置当前站点
            var request = _context.Request;
            var path    = request.GetPath();

            string appPath = "";

            if (path != "/")
            {
                appPath = path.Substring(1);
                if (appPath.EndsWith("/"))
                {
                    appPath = appPath.Substring(0, appPath.Length - 1);
                }
            }
            CurrentSite = SiteCacheManager.GetSingleOrDefaultSite(request.GetHost(), appPath);
            //是否为虚拟目录运行
            if ((SiteRunType)CurrentSite.RunType == SiteRunType.VirtualDirectory)
            {
                _isVirtualDirectoryRunning = true;
            }
            _userDevice = GetUserDeviceSet(_context);
        }
Beispiel #2
0
        public string Pub_Archive()
        {
            int sourceSiteId;

            int.TryParse(Request.Query("source_site"), out sourceSiteId);

            string siteOpt;
            var    sourceSite = default(SiteDto);

            IDictionary <string, string> dict = new Dictionary <string, string>();

            foreach (var e in SiteCacheManager.GetAllSites())
            {
                if (e.SiteId != sourceSiteId)
                {
                    dict.Add(e.SiteId.ToString(), e.Name);
                }
                else
                {
                    sourceSite = e;
                }
            }
            siteOpt = Helper.GetOptions(dict, null);

            var path  = Request.GetPath();
            var query = Request.GetQueryString();

            ViewData["site_opt"]    = siteOpt;
            ViewData["source_name"] = sourceSite.Name;
            ViewData["source_site"] = sourceSite.SiteId;
            ViewData["id_array"]    = Request.Query("id_array")[0] ?? "";
            ViewData["post_url"]    = path + query;
            return(RequireTemplate(ResourceMap.GetPageContent(ManagementPage.Assistant_Archive_Clone_Pub)));
        }
Beispiel #3
0
        /// <summary>
        /// 设置站点
        /// </summary>
        public void SelectSite()
        {
            //设置站点
            var user = UserState.Administrator.Current;

            var siteId = 0;

            int.TryParse(Request.Query("site_id"), out siteId);
            var site = SiteCacheManager.GetSite(siteId);

            if (site.SiteId > 0)
            {
                if (user.IsMaster)
                {
                    CurrentSite = site;
                    RenderSuccess();
                    return;
                }

                foreach (var siteId2 in user.Roles.GetSiteIds())
                {
                    if (siteId == siteId2)
                    {
                        CurrentSite = site;
                        RenderSuccess();
                        return;
                    }
                }
            }

            RenderError("没有权限管理站点");
        }
Beispiel #4
0
        /// <summary>
        /// 获取博客列表
        /// </summary>
        /// <param name="appKey"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public CookComputing.Blogger.BlogInfo[] getUsersBlogs(string appKey, string username, string password)
        {
            UserDto user;

            if ((user = ValidUser(username, password)) != null)
            {
                //获得当前域名
                string       domain;
                const string portDomainStr = "http://{0}:{1}";
                const string domainStr     = "http://{0}";

                HttpRequest request = HttpContext.Current.Request;
                domain = String.Format(request.Url.IsDefaultPort ? domainStr : portDomainStr, request.Url.Host, request.Url.Port);



                // SiteDto site2 = SiteCacheManager.GetSite(user.Roles.GetSiteIds().FirstOrDefault() > 0 ? user.SiteId : this.siteId);

                //返回博客列表
//                return new CookComputing.Blogger.BlogInfo[]
//                    {
//                        new CookComputing.Blogger.BlogInfo{blogid=site2.SiteId.ToString(),blogName=site2.Name,url=domain }
//                    };

                //========================================================//

                //返回单个站点
                if (!user.IsMaster)
                {
                    SiteDto site = SiteCacheManager.GetSite(user.Roles.GetSiteIds().FirstOrDefault());
                    //返回博客列表
                    return(new CookComputing.Blogger.BlogInfo[]
                    {
                        new CookComputing.Blogger.BlogInfo {
                            blogid = site.SiteId.ToString(), blogName = site.Name, url = domain
                        }
                    });
                }
                else
                {
                    IList <SiteDto> sites = SiteCacheManager.GetAllSites();
                    CookComputing.Blogger.BlogInfo[] blogs = new CookComputing.Blogger.BlogInfo[sites.Count];
                    for (int i = 0; i < sites.Count; i++)
                    {
                        blogs[i] = new CookComputing.Blogger.BlogInfo
                        {
                            blogid   = sites[i].SiteId.ToString(),
                            blogName = sites[i].Name,
                            url      = !String.IsNullOrEmpty(sites[i].Domain) ?
                                       "http://" + sites[i].Domain + "/" :
                                       (!String.IsNullOrEmpty(sites[i].DirName) ?
                                        domain + "/" + sites[i].DirName + "/" : domain
                                       )
                        };
                    }
                    return(blogs);
                }
            }
            return(null);
        }
Beispiel #5
0
        /// <summary>
        /// CMS初始化
        /// </summary>
        public static void Init()
        {
            //设置依赖反转
            ObjectFactory.Configure(x =>
            {
                //x.For<IArchiveModel>().Singleton().Use<ArchiveBLL>();
                // x.For<ICategoryModel>().Singleton().Use<CategoryBLL>();
                x.For <IComment>().Singleton().Use <CommentBLL>();
                // x.For<ILink>().Singleton().Use<LinkBLL>();
                x.For <Imember>().Singleton().Use <MemberBLL>();
                x.For <Imessage>().Singleton().Use <MessageBLL>();
                x.For <Imodule>().Singleton().Use <ModuleBLL>();
                //x.For<ISite>().Singleton().Use<SiteBLL>();
                // x.For<ITemplateBind>().Singleton().Use<TemplateBindBLL>();
                x.For <IUser>().Singleton().Use <UserBLL>();
                x.For <ITable>().Singleton().Use <TableBLL>();
            });

            //读取站点
            Cms.RegSites(SiteCacheManager.GetAllSites().ToArray());

            //内嵌资源释放
            SiteResourceInit.Init();

            //设置可写权限
            Cms.Utility.SetDirCanWrite(CmsVariables.RESOURCE_PATH);
            Cms.Utility.SetDirCanWrite("templates/");
            Cms.Utility.SetDirCanWrite(CmsVariables.FRAMEWORK_PATH);
            Cms.Utility.SetDirCanWrite(CmsVariables.PLUGIN_PATH);

            Cms.Utility.SetDirHidden("config");
            Cms.Utility.SetDirHidden("bin");
        }
Beispiel #6
0
        /// <summary>
        /// 检查域名是否已经绑定
        /// </summary>
        /// <param name="siteId">当前站点编号,-1表示不限制</param>
        /// <param name="domainStr"></param>
        /// <param name="bindDomain"></param>
        /// <returns></returns>
        private bool CheckDomainBind(int siteId, string domainStr, out string bindDomain)
        {
            bindDomain = null;
            if (!string.IsNullOrEmpty(domainStr))
            {
                var split = new char[] { ' ', ',' };
                foreach (var domain in domainStr.Split(split))
                {
                    foreach (var s in SiteCacheManager.GetAllSites())
                    {
                        if (string.IsNullOrEmpty(s.Domain) || siteId != -1 && siteId == s.SiteId)
                        {
                            continue;
                        }
                        if (Array.Exists(s.Domain.Split(split),
                                         a => string.Compare(a, domain, StringComparison.OrdinalIgnoreCase) == 0))
                        {
                            bindDomain += "\n" + domain;
                            break;
                        }
                    }
                }
            }

            return(bindDomain != null);
        }
Beispiel #7
0
        /// <summary>
        /// 设置站点
        /// </summary>
        public void SelectSite_GET()
        {
            //设置站点
            UserDto user = UserState.Administrator.Current;

            int siteId = 0;

            int.TryParse(base.Request["site_id"], out siteId);
            var site = SiteCacheManager.GetSite(siteId);

            if (site.SiteId > 0)
            {
                if (user.IsMaster)
                {
                    base.CurrentSite = site;
                    base.RenderSuccess();
                    return;
                }

                foreach (int siteId2 in user.Roles.GetSiteIds())
                {
                    if (siteId == siteId2)
                    {
                        base.CurrentSite = site;
                        base.RenderSuccess();
                        return;
                    }
                }
            }

            base.RenderError("没有权限管理站点");
        }
Beispiel #8
0
        public string Category_Clone()
        {
            int targetSiteId;

            int.TryParse(Request.Query("target_site"), out targetSiteId);

            string siteOpt;
            var    targetSite = default(SiteDto);

            IDictionary <string, string> dict = new Dictionary <string, string>();

            foreach (var e in SiteCacheManager.GetAllSites())
            {
                if (e.SiteId != targetSiteId)
                {
                    dict.Add(e.SiteId.ToString(), e.Name);
                }
                else
                {
                    targetSite = e;
                }
            }
            siteOpt = Helper.GetOptions(dict, null);

            ViewData["site_opt"]    = siteOpt;
            ViewData["target_name"] = targetSite.Name;
            ViewData["target_site"] = targetSite.SiteId;

            return(RequireTemplate(ResourceMap.GetPageContent(ManagementPage.Assistant_Category_Clone)));
        }
Beispiel #9
0
        public CmsContext()
        {
            this._context = HttpContext.Current;
            if (!Cms.IsInitFinish)
            {
                return;
            }
            if (OnBeginRequest != null)
            {
                OnBeginRequest();
            }
            //设置当前站点
            Uri    uri     = this._context.Request.Url;
            string appPath = uri.Segments.Length == 1 ? null : uri.Segments[1].Replace("/", "");

            this.CurrentSite = SiteCacheManager.GetSingleOrDefaultSite(WebCtx.Current.Host, appPath);;
            //是否为虚拟目录运行
            if ((SiteRunType)this.CurrentSite.RunType == SiteRunType.VirtualDirectory)
            {
                this.IsVirtualDirectoryRunning = true;
            }
            this._userLanguage = this.CurrentSite.Language;
            this._userDevice   = this.GetUserDeviceSet(this._context);
            LoadByCookie();
        }
Beispiel #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="httpCtx"></param>
        public CmsContext(ICompatibleHttpContext httpCtx)
        {
            _context = httpCtx;
            if (!Cms.IsInitFinish)
            {
                return;
            }
            //设置当前站点
            var request = _context.Request;
            var path    = request.GetPath();

            string appPath = "";

            if (path != "/")
            {
                appPath = path.Substring(1);
                if (appPath.EndsWith("/"))
                {
                    appPath = appPath.Substring(0, appPath.Length - 1);
                }
            }
            CurrentSite = SiteCacheManager.GetSingleOrDefaultSite(request.GetHost(), appPath);
            //是否为虚拟目录运行
            if ((SiteRunType)CurrentSite.RunType == SiteRunType.VirtualDirectory)
            {
                _isVirtualDirectoryRunning = true;
            }
            this._containCookie = _context.Request.GetHeader("Cookie") != null;
        }
Beispiel #11
0
        /// <summary>
        /// 获取站点选项
        /// </summary>
        /// <param name="siteId"></param>
        /// <returns></returns>
        public static string GetSiteOptions(int siteId)
        {
            IDictionary <string, string> dict = new Dictionary <string, string>();

            foreach (var e in SiteCacheManager.GetAllSites())
            {
                dict.Add(e.SiteId.ToString(), e.Name);
            }
            return(GetOptions(dict, siteId.ToString()));
        }
Beispiel #12
0
        private static SiteDto GetSiteFromCookie(ICompatibleHttpContext context, SiteDto site)
        {
            if (context.Request.TryGetCookie(CookieNameKey, out var strSiteId))
            {
                var siteId = int.Parse(strSiteId);
                if (siteId > 0) site = SiteCacheManager.GetSite(siteId);
            }

            return site;
        }
Beispiel #13
0
        public void Boot()
        {
            // Cms.Init(BootFlag.UnitTest,"../../../../UIApp/T2.Cms.WebUI/config/cms.conf");
            Cms.Init(BootFlag.UnitTest, "./config/cms.conf");

            //读取站点
            if (Cms.Installed)
            {
                Cms.RegSites(SiteCacheManager.GetAllSites().ToArray());
            }
        }
Beispiel #14
0
        public void Boot()
        {
            // Cms.Init(BootFlag.UnitTest,"../../../../UIApp/JR.Cms.WebUI/config/cms.conf");
            Cms.Init(BootFlag.UnitTest, "./config/cms.conf");

            //读取站点
            if (Cms.IsInstalled())
            {
                Cms.RegSites(SiteCacheManager.GetAllSites().ToArray());
            }

            ServiceInit.Initialize();
        }
Beispiel #15
0
        public void Edit_GET()
        {
            int siteID = int.Parse(base.Request["siteId"] ?? "1");

            SiteDto site = SiteCacheManager.GetSite(siteID);

            string html = EntityForm.Build <SiteDto>(site, true, "提交");

            base.RenderTemplate(ResourceMap.GetPageContent(ManagementPage.Site_Edit), new
            {
                form = html,
                tpls = Helper.GetTemplateOptions(site.Tpl)
            });
        }
Beispiel #16
0
        public void Edit()
        {
            var siteId = int.Parse(Request.Query("site_id").ToString() ?? "1");

            var site = SiteCacheManager.GetSite(siteId);

            var html = EntityForm.Build <SiteDto>(site);

            RenderTemplate(ResourceMap.GetPageContent(ManagementPage.Site_Edit), new
            {
                form     = html,
                post_url = "?module=site&action=edit",
                tpls     = Helper.GetTemplateOptions(site.Tpl)
            });
        }
Beispiel #17
0
        public void Edit_GET()
        {
            int siteId = int.Parse(base.Request["site_id"] ?? "1");

            SiteDto site = SiteCacheManager.GetSite(siteId);

            string html = EntityForm.Build <SiteDto>(site);

            base.RenderTemplate(ResourceMap.GetPageContent(ManagementPage.Site_Edit), new
            {
                form     = html,
                post_url = "?module=site&action=edit",
                tpls     = Helper.GetTemplateOptions(site.Tpl)
            });
        }
Beispiel #18
0
        /// <summary>
        /// 登录提交
        /// </summary>
        public void Login_POST()
        {
            string username   = base.Request.Form["uid"],
                   password   = base.Request.Form["pwd"],
                   verifycode = base.Request.Form["code"];

            if (!VerifyCodeManager.Compare(verifycode))
            {
                base.RenderError("验证码不正确");
            }
            else
            {
                //设置站点
                User usr = CmsLogic.User.GetUser(username, password);

                if (usr != null)
                {
                    CmsLogic.User.UpdateUserLastLoginDate(username);

                    if (!usr.Available)
                    {
                        base.RenderError("账号已被停用,请联系管理员!");
                    }
                    else
                    {
                        //保存登陆信息
                        bool result = UserState.Administrator.Login(username, password, 3600 * 120);

                        //验证站点信息
                        if (usr.SiteId > 0)
                        {
                            SiteDto site = SiteCacheManager.GetSite(usr.SiteId);
                            if (!(site.SiteId > 0))
                            {
                                base.RenderError("账号已被停用,请联系管理员!");
                                return;
                            }
                            base.CurrentSite = site;
                        }
                        base.RenderSuccess();
                    }
                }
                else
                {
                    base.RenderError("账户或密码不正确!");
                }
            }
        }
Beispiel #19
0
        public CmsContext()
        {
            if (OnBeginRequest != null)
            {
                OnBeginRequest();
            }

            this.context = HttpContext.Current;

            //设置当前站点
            this.CurrentSite = SiteCacheManager.GetSingleOrDefaultSite(this.context.Request.Url);;

            //是否为虚拟目录运行
            if ((SiteRunType)this.CurrentSite.RunType == SiteRunType.VirtualDirectory)
            {
                this.IsVirtualDirectoryRunning = true;
            }
        }
Beispiel #20
0
        /// <summary>
        /// 设置站点
        /// </summary>
        public void SelectSite_GET()
        {
            //设置站点
            if (UserState.Administrator.Current.Group == UserGroups.Master)
            {
                int siteID = 0;
                int.TryParse(base.Request["siteid"], out siteID);
                var site = SiteCacheManager.GetSite(siteID);
                if (site.SiteId > 0)
                {
                    base.CurrentSite = site;
                    base.RenderSuccess();
                    return;
                }
            }

            base.RenderError("没有权限管理其他站点");
        }
Beispiel #21
0
        public void Create_GET()
        {
            var site  = new SiteDto();
            var sites = SiteCacheManager.GetAllSites();

            if (sites.Count > 0)
            {
                site.SiteId = sites[sites.Count - 1].SiteId + 1;
                //site.Name = "未命名站点"+site.SiteId.ToString();
            }
            string html = EntityForm.Build <SiteDto>(site, true, "创建");

            base.RenderTemplate(ResourceMap.GetPageContent(ManagementPage.Site_Edit), new
            {
                form = html,
                tpls = Helper.GetTemplateOptions("")
            });
        }
Beispiel #22
0
        public void Create()
        {
            var site  = new SiteDto();
            var sites = SiteCacheManager.GetAllSites();

            if (sites.Count > 0)
            {
                site.SiteId = sites[sites.Count - 1].SiteId + 1;
            }
            //site.Name = "未命名站点"+site.SiteId.ToString();
            var html = EntityForm.Build <SiteDto>(site);

            RenderTemplate(ResourceMap.GetPageContent(ManagementPage.Site_Edit), new
            {
                form     = html,
                post_url = "?module=site&action=create",
                tpls     = Helper.GetTemplateOptions("")
            });
        }
Beispiel #23
0
        public void Index_GET()
        {
            IList <SiteDto> sites = SiteCacheManager.GetAllSites();

            TreeItem[] items = new TreeItem[sites.Count];
            for (int i = 0; i < sites.Count; i++)
            {
                items[i] = new TreeItem
                {
                    ID   = sites[i].SiteId,
                    Name = sites[i].Name + (sites[i].Note.Trim() != ""?"[" + sites[i].Note + "]":"")
                };
            }


            base.RenderTemplate(ResourceMap.GetPageContent(ManagementPage.Site_Index), new
            {
                siteTree = Helper.SingleTree("所有站点", items)
            });
        }
Beispiel #24
0
        /// <summary>
        /// CMS初始化
        /// </summary>
        public static void Init()
        {
            //读取站点
            if (Cms.IsInstalled())
            {
                Cms.RegSites(SiteCacheManager.GetAllSites().ToArray());
            }

            //内嵌资源释放
            SiteResourceInit.Init();

            //设置可写权限
            Cms.Utility.SetDirCanWrite(CmsVariables.RESOURCE_PATH);
            Cms.Utility.SetDirCanWrite("templates/");
            Cms.Utility.SetDirCanWrite(CmsVariables.FRAMEWORK_PATH);
            Cms.Utility.SetDirCanWrite(CmsVariables.PLUGIN_PATH);
            Cms.Utility.SetDirCanWrite(CmsVariables.TEMP_PATH + "update");
            Cms.Utility.SetDirHidden("config");
            Cms.Utility.SetDirHidden("bin");
        }
Beispiel #25
0
        public CmsContext()
        {
            if (OnBeginRequest != null)
            {
                OnBeginRequest();
            }
            this._context = HttpContext.Current;

            if (!Cms.IsInitFinish)
            {
                return;
            }
            //设置当前站点
            this.CurrentSite = SiteCacheManager.GetSingleOrDefaultSite(this._context.Request.Url);;
            //是否为虚拟目录运行
            if ((SiteRunType)this.CurrentSite.RunType == SiteRunType.VirtualDirectory)
            {
                this.IsVirtualDirectoryRunning = true;
            }
            this._userLanguage = this.CurrentSite.Language;
            LoadByCookie();
        }
Beispiel #26
0
        private static SiteDto GetSiteFromCookie(HttpContext context, SiteDto site)
        {
            HttpCookie cookie = context.Request.Cookies[CookieNameKey];

            if (cookie != null)
            {
                int siteId = 0;
                int.TryParse(cookie.Value, out siteId);
                if (siteId > 0)
                {
                    try
                    {
                        site = SiteCacheManager.GetSite(siteId);
                    }
                    catch
                    {
                        // ignored
                    }
                }
            }
            return(site);
        }
Beispiel #27
0
 /// <summary>
 /// 检查域名是否已经绑定
 /// </summary>
 /// <param name="siteId">当前站点编号,-1表示不限制</param>
 /// <param name="domain"></param>
 /// <param name="bindDomain"></param>
 /// <returns></returns>
 private bool CheckDomainBind(int siteId, string domain, out string bindDomain)
 {
     bindDomain = null;
     if (!String.IsNullOrEmpty(domain))
     {
         char[] split = new char[] { ' ', ',' };
         foreach (string _domain in domain.Split(split))
         {
             foreach (SiteDto s in SiteCacheManager.GetAllSites())
             {
                 if (String.IsNullOrEmpty(s.Domain) || (siteId != -1 && siteId == s.SiteId))
                 {
                     continue;
                 }
                 if (Array.Exists(s.Domain.Split(split), a => String.Compare(a, _domain, true) == 0))
                 {
                     bindDomain += "\n" + _domain;
                     break;
                 }
             }
         }
     }
     return(bindDomain != null);
 }