Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="workerIndent"></param>
        public PluginPackAttribute(string workerIndent)
        {
            this.WorkIndent = workerIndent;
            bool isChanged = false;
            var  dirPath   = String.Concat(
                AppDomain.CurrentDomain.BaseDirectory,
                PluginConfig.PLUGIN_DIRECTORY,
                workerIndent,
                "/");

            if (!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath).Create();
            }

            settings = new SettingFile(string.Concat(dirPath, "plugin.config"));

            if (!settings.Contains(PluginSettingKeys.State))
            {
                settings.Set(PluginSettingKeys.State, "Normal");
                isChanged = true;
            }
            if (!settings.Contains(PluginSettingKeys.OverrideUrlIndent))
            {
                settings.Set(PluginSettingKeys.OverrideUrlIndent, "");
                isChanged = true;
            }

            if (isChanged)
            {
                settings.Flush();
            }
        }
Пример #2
0
        /// <summary>
        /// 更新资料
        /// </summary>
        /// <param name="prefix"></param>
        private static void UpdateKeys(string prefix)
        {
            switch (prefix)
            {
            case "sys":
                sf["license_name"]          = Settings.License_NAME;
                sf["license_key"]           = Settings.License_KEY;
                sf["server_static_enabled"] = Settings.SERVER_STATIC_ENABLED ? "true" : "false";
                sf["server_static"]         = Settings.SERVER_STATIC;
                sf["server_upgrade"]        = Settings.SERVER_UPGRADE;
                sf["sys_admin_tag"]         = Settings.SYS_ADMIN_TAG;
                sf["sys_encode_conf"]       = Settings.SYS_ENCODE_CONF_FILE ? "true" : "false";
                sf["sql_profile_trace"]     = Settings.SQL_PROFILE_TRACE ? "true" : "false";

                //301跳转

                sf["sys_autowww"] = Settings.SYS_AUTOWWW ? "true" : "false";

                //虚拟路径
                //if (!sf.Contains("sys_virthpath"))
                //{
                //    sf.Set("sys_virthpath", Settings.SYS_VIRTHPATH);
                //}
                //else
                //{
                //    sf["sys_virthpath"] = Settings.SYS_VIRTHPATH;
                //}
                break;

            case "db":
                sf["db_prefix"] = Settings.DB_PREFIX;
                break;

            case "tpl":

                //压缩代码
                sf.Set("tpl_usecompress", Settings.TPL_UseCompress ? "true" : "false");
                //使用完整路径
                sf.Set("tpl_usefullpath", Settings.TPL_UseFullPath ? "true" : "false");


                Cms.Template.Register();

                break;

            //优化
            case "opti":

                WebConfig.SetDebug(Settings.Opti_Debug);

                //缓存项
                sf.Set("opti_IndexCacheSeconds", Settings.Opti_IndexCacheSeconds.ToString());
                sf.Set("Opti_GC_Collect_Interval", Settings.Opti_GC_Collect_Interval.ToString());
                sf.Set("opti_ClientCacheSeconds", Settings.Opti_ClientCacheSeconds.ToString());
                break;
            }

            sf.Flush();
        }
Пример #3
0
        public void SaveTemplateNames(string json)
        {
            SettingFile sf = new SettingFile(String.Format("{0}templates/{1}/tpl.conf", Cms.PyhicPath, this._tplDirName));

            sf.Set("TPL_NAMES", json);
            sf.Flush();
        }
Пример #4
0
        private static IDictionary <string, TemplateSetting> LoadFromDirectory(string rootDirPath)
        {
            IDictionary <string, TemplateSetting> dict;
            DirectoryInfo dir = new DirectoryInfo(rootDirPath);

            DirectoryInfo[] dirs = dir.GetDirectories();
            dict = new Dictionary <string, TemplateSetting>(dirs.Length);
            if (!dir.Exists)
            {
                return(dict);
            }
            foreach (DirectoryInfo d in dirs)
            {
                if ((d.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
                {
                    String tplConfigFile = String.Format("{0}{1}/tpl.conf", rootDirPath, d.Name);
                    if (!File.Exists(tplConfigFile))
                    {
                        SettingFile sf = new SettingFile(tplConfigFile);
                        sf.Set("name", d.Name);
                        sf.Flush();
                    }
                    TemplateSetting ts = new TemplateSetting(d.Name, tplConfigFile);
                    ts.CfgEnabledMobiPage = Directory.Exists(String.Format("{0}{1}/_mobile_", rootDirPath, d.Name));
                    dict.Add(d.Name, ts);
                }
            }
            return(dict);
        }
Пример #5
0
        private static IDictionary <string, TemplateSetting> LoadFromDirectory(string rootDirPath)
        {
            var dir  = new DirectoryInfo(rootDirPath);
            var dirs = dir.GetDirectories();
            IDictionary <string, TemplateSetting> dict = new Dictionary <string, TemplateSetting>(dirs.Length);

            if (!dir.Exists)
            {
                return(dict);
            }
            foreach (var d in dirs)
            {
                if ((d.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
                {
                    var tplConfigFile = $"{rootDirPath}{d.Name}/tpl.conf";
                    if (!File.Exists(tplConfigFile))
                    {
                        var sf = new SettingFile(tplConfigFile);
                        sf.Set("name", d.Name);
                        sf.Flush();
                    }

                    var ts = new TemplateSetting(d.Name, tplConfigFile)
                    {
                        CfgEnabledMobiPage = Directory.Exists($"{rootDirPath}{d.Name}/_mobile_")
                    };
                    dict.Add(d.Name, ts);
                }
            }

            return(dict);
        }
Пример #6
0
        /// <summary>
        /// 更新资料
        /// </summary>
        /// <param name="prefix"></param>
        private static void UpdateKeys(string prefix)
        {
            switch (prefix)
            {
            case "sys":
                sf["license_name"]          = Settings.LICENSE_NAME;
                sf["license_key"]           = Settings.LICENSE_KEY;
                sf["server_static_enabled"] = Settings.SERVER_STATIC_ENABLED ? "true" : "false";
                sf["server_static"]         = Settings.SERVER_STATIC;
                sf["server_upgrade"]        = Settings.SERVER_UPGRADE;
                sf["sys_admin_tag"]         = Settings.SYS_ADMIN_TAG;
                sf["sys_encode_conf"]       = Settings.SYS_ENCODE_CONF_FILE ? "true" : "false";
                sf["sql_profile_trace"]     = Settings.SQL_PROFILE_TRACE ? "true" : "false";
                sf.Set("sys_use_upload_raw_path", Settings.SYS_USE_UPLOAD_RAW_NAME?"true":"false");
                sf["sys_www_rd"] = Settings.SYS_WWW_RD.ToString();
                sf.Set("sys_force_https", Settings.SYS_FORCE_HTTPS?"true":"false");
                sf["sys_site_map_path"] = Settings.SYS_SITE_MAP_PATH ?? "";
                //虚拟路径
                //if (!sf.Contains("sys_virthpath"))
                //{
                //    sf.Set("sys_virthpath", Settings.SYS_VIRTHPATH);
                //}
                //else
                //{
                //    sf["sys_virthpath"] = Settings.SYS_VIRTHPATH;
                //}
                break;

            case "db":
                sf["db_prefix"] = Settings.DB_PREFIX;
                break;

            case "tpl":
                sf.Set("tpl_use_cache", Settings.TPL_USE_CACHE?"true":"false");
                //压缩代码
                sf.Set("tpl_use_compress", Settings.TPL_USE_COMPRESS ? "true" : "false");
                //使用完整路径
                sf.Set("tpl_full_url_path", Settings.TPL_FULL_URL_PATH ? "true" : "false");
                Cms.Template.Reload();
                break;

            //优化
            case "opti":
                //缓存项
                sf.Set("perm_index_cache_second", Settings.PERM_INDEX_CACHE_SECOND.ToString());
                sf.Set("opti_gc_collect_interval", Settings.opti_gc_collect_interval.ToString());
                sf.Set("opti_client_cache_seconds", Settings.Opti_ClientCacheSeconds.ToString());
                break;
            }
            sf.Flush();
            if (prefix == "opti")
            {
                WebConfig.SetDebug(Settings.OPTI_DEBUG_MODE);
            }
        }
Пример #7
0
        internal static void LoadRelatedIndent()
        {
            string      relatedConf = String.Format("{0}{1}related_indent.conf", Cms.PyhicPath, CmsVariables.SITE_CONF_PATH);
            bool        isExists    = File.Exists(relatedConf);
            SettingFile sf          = new SettingFile(relatedConf);
            var         isModify    = false;
            var         isLoaded    = false;
            IDictionary <int, RelateIndent> relatedIndents = ServiceCall.Instance.ContentService.GetRelatedIndents();

            IDictionary <int, RelateIndent> newIndents = new Dictionary <int, RelateIndent>(relatedIndents.Count);

            String key;
            String value;

            foreach (var relatedIndent in relatedIndents)
            {
                key = relatedIndent.Key.ToString();
                if (isExists && sf.Contains(key))
                {
                    value    = sf.Get(key);
                    isLoaded = true;
                }
                else
                {
                    value = relatedIndent.Value.ToString();
                    sf.Set(key, value);
                    isModify = true;
                }
                newIndents.Add(relatedIndent.Key, new RelateIndent(value));
            }

            if (isModify)
            {
                sf.Flush();
            }

            if (isLoaded)
            {
                ServiceCall.Instance.ContentService.SetRelatedIndents(newIndents);
            }
        }
Пример #8
0
        public InstallCode Process(HttpContext context)
        {
            NameValueCollection form = context.Request.Form;
            string physical          = Cms.PyhicPath;

            if (!Directory.Exists(Cms.PyhicPath + "config"))
            {
                Directory.CreateDirectory(Cms.PyhicPath + "config").Create();
            }

            if (File.Exists(String.Concat(physical, INSTALL_LOCK)))
            {
                return(InstallCode.INSTALLED);
            }

            string licenceKey   = form["licence_key"].Trim(),
                   licenceName  = form["licence_name"].Trim(),
                   siteName     = form["site_name"].Trim(),
                   siteDomain   = form["site_domain"].Trim(),
                   siteLanguage = form["site_language"],
                   userName     = form["user_name"].Trim(),
                   userPwd      = form["user_pwd"].Trim(),
                   dbType       = form["db_type"].Trim(),
                   dbServer     = form["db_server"].Trim(),
                   dbPrefix     = form["db_prefix"].Trim(),
                   dbPrefix1    = form["db_prefix1"].Trim(),
                   dbName       = form["db_name"].Trim(),
                   dbUsr        = form["db_usr"].Trim(),
                   dbPwd        = form["db_pwd"].Trim(),
                   dbFile       = form["db_file"].Trim();

            string dbStr = "";

            #region 检测数据
            if (String.IsNullOrEmpty(licenceName) || String.IsNullOrEmpty(licenceKey))
            {
                return(InstallCode.NO_LICENCE);
            }
            if (String.IsNullOrEmpty(siteName))
            {
                return(InstallCode.NO_SITE_NAME);
            }

            if (String.IsNullOrEmpty(userName) || String.IsNullOrEmpty(userPwd))
            {
                return(InstallCode.NO_USER);
            }

            #endregion

            #region 初始化数据库设置

            //数据表前缀
            if (String.IsNullOrEmpty(dbPrefix))
            {
                dbPrefix = dbPrefix1;
            }

            const String dbDirName = "data";

            //移动Access或SQLite数据库
            if (dbType == "sqlite")
            {
                if (dbFile == "")
                {
                    dbFile = "rd_" + string.Empty.RandomLetters(5) + ".db";
                }
                else if (dbFile.IndexOf(".", StringComparison.Ordinal) == -1)
                {
                    dbFile += ".db";
                }
                if (!Directory.Exists(physical + dbDirName))
                {
                    Directory.CreateDirectory(physical + dbDirName).Create();
                }
                dbStr = "Data Source=$ROOT/" + dbDirName + "/" + dbFile;
            }
            else if (dbType == "oledb")
            {
                if (dbFile == "")
                {
                    dbFile = "rd_" + string.Empty.RandomLetters(5) + ".mdb";
                }
                else if (dbFile.IndexOf(".", StringComparison.Ordinal) == -1)
                {
                    dbFile += ".mdb";
                }

                if (!Directory.Exists(physical + dbDirName))
                {
                    Directory.CreateDirectory(physical + dbDirName).Create();
                }
                File.Copy(physical + FILE_DB_OLEDB, physical + dbDirName + "/" + dbFile, true);
                dbStr = "Data Source=$ROOT/" + dbDirName + "/" + dbFile;
            }
            else
            {
                //数据库资料不全
                if (String.IsNullOrEmpty(dbServer) || String.IsNullOrEmpty(dbUsr) || String.IsNullOrEmpty(dbName) || String.IsNullOrEmpty(dbPrefix))
                {
                    return(InstallCode.DB_ERROR);
                }

                if (dbType == "mysql")
                {
                    dbStr = String.Format("server={0};database={1};uid={2};pwd={3};charset=utf8", dbServer, dbName, dbUsr, dbPwd);
                }
                else if (dbType == "mssql")
                {
                    dbStr = String.Format("server={0};database={1};uid={2};pwd={3}", dbServer, dbName, dbUsr, dbPwd);
                }
                else
                {
                    return(InstallCode.DB_UNKNOWN);
                }
            }

            #endregion

            #region 写入配置

            if (File.Exists(physical + FILE_SETTING))
            {
                File.Delete(physical + FILE_SETTING);
            }
            SettingFile file = new SettingFile(physical + FILE_SETTING);
            file.Set("license_key", licenceKey);
            file.Set("license_name", licenceName);
            file.Set("server_static", "");
            file.Set("server_static_enabled", "false");

            file.Set("db_type", dbType);
            file.Set("db_conn", dbStr);
            file.Set("db_prefix", dbPrefix);

            file.Set("mm_avatar_path", "/file/avatar/");
            file.Flush();

            #endregion

            #region 初始化数据库

            if (!ExtraDB(dbType, dbStr, dbPrefix))
            {
                return(InstallCode.DB_INIT_ERROR);
            }

            #endregion

            #region 初始化数据

            //默认数据为:
            // cms_sites        siteid为1的站点
            // cms_category   默认的about分类
            // cms_usergroup


            //更新默认站点
            this.db.ExecuteNonQuery(new SqlQuery(
                                        String.Format("UPDATE {0}site SET domain=@domain,name=@name,tpl=@tpl,language=@language,seo_title=@name where site_id=1", dbPrefix),
                                        new object[, ] {
                { "@domain", siteDomain },
                { "@name", siteName },
                { "@tpl", "default" },
                { "@language", siteLanguage },
            }));

            //创建管理用户
            DateTime dt = DateTime.Now;
            this.db.ExecuteNonQuery(new SqlQuery(
                                        String.Format(@"INSERT INTO {0}user(name,avatar,phone,email, check_code,flag,create_time,last_login_time) 
                    VALUES(@name,@avatar,@phone,@email,@checkCode,@flag,@time,@time)", dbPrefix),
                                        new object[, ] {
                { "@name", "管理员" },
                { "@avatar", "/public/mui/css/latest/avatar.gif" },
                { "@phone", "" },
                { "@email", "" },
                { "@checkCode", "" },
                { "@flag", Role.Master.Flag },
                { "@time", dt },
            }));
            int userId = int.Parse(this.db.ExecuteScalar(String.Format("SELECT max(id) FROM {0}user", dbPrefix)).ToString());
            this.db.ExecuteNonQuery(new SqlQuery(
                                        String.Format(@"INSERT INTO {0}credential(user_id,user_name,password,enabled)VALUES(@userId,@userName,@password,1)", dbPrefix),
                                        new object[, ] {
                { "@userId", userId },
                { "@userName", userName },
                { "@password", Generator.Sha1Pwd(userPwd, Generator.Offset) },
            }));

            #endregion


            //创建安装文件
            File.Create(String.Concat(physical, INSTALL_LOCK));

            Settings.TurnOffDebug();

            Cms.Init(BootFlag.Normal, null);

            // 重启
            HttpRuntime.UnloadAppDomain();
            //AppDomain.Unload(AppDomain.CurrentDomain);

            return(InstallCode.SUCCESS);
        }
Пример #9
0
        public InstallCode Process(HttpContext context)
        {
            NameValueCollection form = context.Request.Form;
            string physical          = Cms.PyhicPath;

            if (!Directory.Exists(Cms.PyhicPath + "config"))
            {
                Directory.CreateDirectory(Cms.PyhicPath + "config").Create();
            }

            if (File.Exists(String.Concat(physical, INSTALL_LOCK)))
            {
                return(InstallCode.INSTALLED);
            }

            string licenceKey   = form["licence_key"].Trim(),
                   licenceName  = form["licence_name"].Trim(),
                   siteName     = form["site_name"].Trim(),
                   siteDomain   = form["site_domain"].Trim(),
                   siteLanguage = form["site_language"],
                   userName     = form["user_name"].Trim(),
                   userPwd      = form["user_pwd"].Trim(),
                   dbType       = form["db_type"].Trim(),
                   dbServer     = form["db_server"].Trim(),
                   dbPrefix     = form["db_prefix"].Trim(),
                   dbPrefix1    = form["db_prefix1"].Trim(),
                   dbName       = form["db_name"].Trim(),
                   dbUsr        = form["db_usr"].Trim(),
                   dbPwd        = form["db_pwd"].Trim(),
                   dbFile       = form["db_file"].Trim();

            string dbStr = "";

            #region 检测数据
            if (String.IsNullOrEmpty(licenceName) || String.IsNullOrEmpty(licenceKey))
            {
                return(InstallCode.NO_LICENCE);
            }
            if (String.IsNullOrEmpty(siteName))
            {
                return(InstallCode.NO_SITE_NAME);
            }

            if (String.IsNullOrEmpty(userName) || String.IsNullOrEmpty(userPwd))
            {
                return(InstallCode.NO_USER);
            }

            #endregion

            #region 初始化数据库设置

            //数据表前缀
            if (String.IsNullOrEmpty(dbPrefix))
            {
                dbPrefix = dbPrefix1;
            }

            const String dbDirName = "data";

            //移动Access或SQLite数据库
            if (dbType == "sqlite")
            {
                if (dbFile == "")
                {
                    dbFile = "rd_" + string.Empty.RandomLetters(5) + ".db";
                }
                else if (dbFile.IndexOf(".", StringComparison.Ordinal) == -1)
                {
                    dbFile += ".db";
                }
                if (!Directory.Exists(physical + dbDirName))
                {
                    Directory.CreateDirectory(physical + dbDirName).Create();
                }
                dbStr = "Data Source=$ROOT/" + dbDirName + "/" + dbFile;
            }
            else if (dbType == "oledb")
            {
                if (dbFile == "")
                {
                    dbFile = "rd_" + string.Empty.RandomLetters(5) + ".mdb";
                }
                else if (dbFile.IndexOf(".", StringComparison.Ordinal) == -1)
                {
                    dbFile += ".mdb";
                }

                if (!Directory.Exists(physical + dbDirName))
                {
                    Directory.CreateDirectory(physical + dbDirName).Create();
                }
                File.Copy(physical + FILE_DB_OLEDB, physical + dbDirName + "/" + dbFile, true);
                dbStr = "Data Source=$ROOT/" + dbDirName + "/" + dbFile;
            }
            else
            {
                //数据库资料不全
                if (String.IsNullOrEmpty(dbServer) || String.IsNullOrEmpty(dbUsr) || String.IsNullOrEmpty(dbName) || String.IsNullOrEmpty(dbPrefix))
                {
                    return(InstallCode.DB_ERROR);
                }

                if (dbType == "mysql")
                {
                    dbStr = String.Format("server={0};database={1};uid={2};pwd={3};charset=utf8", dbServer, dbName, dbUsr, dbPwd);
                }
                else if (dbType == "mssql")
                {
                    dbStr = String.Format("server={0};database={1};uid={2};pwd={3}", dbServer, dbName, dbUsr, dbPwd);
                }
                else
                {
                    return(InstallCode.DB_UNKNOWN);
                }
            }

            #endregion

            #region 写入配置

            if (File.Exists(physical + FILE_SETTING))
            {
                File.Delete(physical + FILE_SETTING);
            }
            SettingFile file = new SettingFile(physical + FILE_SETTING);
            file.Set("license_key", licenceKey);
            file.Set("license_name", licenceName);
            file.Set("server_static", "");
            file.Set("server_static_enabled", "false");

            file.Set("db_type", dbType);
            file.Set("db_conn", dbStr);
            file.Set("db_prefix", dbPrefix);

            file.Set("mm_avatar_path", "/file/avatar/");
            file.Flush();

            #endregion

            #region 初始化数据库

            if (!ExtraDB(dbType, dbStr, dbPrefix))
            {
                return(InstallCode.DB_INIT_ERROR);
            }

            #endregion

            #region 初始化数据
            int siteId = this.InitSite(dbPrefix, siteName, siteDomain, int.Parse(siteLanguage));
            this.InitUserAndCredential(dbPrefix, userName, userPwd);
            int catId = this.InitCategory(dbPrefix, siteId);
            this.InitArchive(dbPrefix, siteId, catId);

            #endregion


            //创建安装文件
            File.Create(String.Concat(physical, INSTALL_LOCK));

            Settings.TurnOffDebug();

            Cms.Init(BootFlag.Normal, null);

            // 重启
            HttpRuntime.UnloadAppDomain();
            //AppDomain.Unload(AppDomain.CurrentDomain);

            return(InstallCode.SUCCESS);
        }
Пример #10
0
        public void Save()
        {
            SettingFile sf = new SettingFile(String.Format("{0}templates/{1}/tpl.conf", Cms.PyhicPath, this._tplDirName));

            /**************** 模板设置 ****************/
            sf.Set("TPL_NAME", this.tplName);
            sf.Set("CFG_ShowErrror", this.CfgShowError ? "true" : "false");
            sf.Set("CFG_SitemapSplit", this._cfgSitemapSplit);
            sf.Set("CFG_ArchiveTagsFormat", this._cfgArchiveTagsFormat);
            sf.Set("CFG_NavigatorLinkFormat", this._cfgNavigatorLinkFormat);
            sf.Set("CFG_NavigatorChildFormat", this._cfgNavigatorChildFormat);
            sf.Set("CFG_FriendShowNum", this._cfgFriendShowNum.ToString());
            sf.Set("CFG_FriendLinkFormat", this._cfgFriendLinkFormat);
            sf.Set("CFG_TrafficFormat", this._cfgTrafficFormat);
            sf.Set("CFG_CommentEditorHtml", this._cfgCommentEditorHtml);
            sf.Set("CFG_allowAmousComment", this._cfgAllowAmousComment ? "true" : "false");
            sf.Set("CFG_OutlineLength", this._cfgOutlineLength.ToString());
            sf.Set("CFG_ArchiveFormat", this._cfgArchiveFormat);
            sf.Set("CFG_ArchiveLinkFormat", this._cfgArchiveLinkFormat);
            sf.Set("CFG_PrevArchiveFormat", this._cfgPrevArchiveFormat);
            sf.Set("CFG_NextArchiveFormat", this._cfgNextArchiveFormat);
            sf.Set("CFG_CategoryLinkFormat", this._cfgCategoryLinkFormat);
            sf.Set("CFG_EnabledMobiPage", this._cfgEnabledMobiPage ? "true" : "false");
            sf.Flush();
        }
Пример #11
0
        /// <summary>
        /// 加载配置文件
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns>返回加载消息,如成功返回空</returns>
        internal static string Load(string filePath)
        {
            cmsConfigFile = filePath;

            //从配置文件中加载
            SettingFile sf = new SettingFile(cmsConfigFile);

            Settings.loaded = true;
            bool settingChanged = false;

            //try
            // {
            Settings.License_NAME = sf.Contains("license_name") ? sf["license_name"] : "评估用户";
            Settings.License_KEY  = sf.Contains("license_key") ? sf["license_key"] : String.Empty;
            Settings.SYS_AUTOWWW  = sf.Contains("sys_autowww") ? sf["sys_autowww"] == "true" : false;                    //自动WWW

            #region 读取模板选项

            Settings.TPL_UseFullPath = sf.Contains("tpl_usefullpath") ? sf["tpl_usefullpath"] == "true" : true;
            Settings.TPL_UseCompress = sf.Contains("tpl_usecompress") ? sf["tpl_usecompress"] == "true" : false;


            #endregion

            Settings.DB_TYPE   = sf["db_type"];
            Settings.DB_CONN   = sf["db_conn"];
            Settings.DB_PREFIX = sf["db_prefix"];


            Settings.MM_AVATAR_PATH = sf["mm_avatar_path"];


            /**************** 优化项 ******************/
            Settings.Opti_Debug = WebConfig.IsDebug();

            //缓存项
            if (sf.Contains("opti_IndexCacheSeconds"))
            {
                int.TryParse(sf["opti_IndexCacheSeconds"], out Settings.Opti_IndexCacheSeconds);
            }

            if (sf.Contains("opti_ClientCacheSeconds"))
            {
                int.TryParse(sf["opti_ClientCacheSeconds"], out Settings.Opti_ClientCacheSeconds);
            }

            if (sf.Contains("Opti_GC_Collect_Interval"))
            {
                int.TryParse(sf["Opti_GC_Collect_Interval"], out Settings.Opti_GC_Collect_Interval);
            }


            /**************** 静态服务器 ******************/

            if (sf.Contains("server_static"))
            {
                Settings.SERVER_STATIC = sf["server_static"];
                if (Settings.SERVER_STATIC.Length == 0)
                {
                    Settings.SERVER_STATIC = Server.DefaultStaticServer;
                }
            }
            else
            {
                sf.Set("server_static", Server.DefaultStaticServer);
                Settings.SERVER_STATIC = Server.DefaultStaticServer;
                settingChanged         = true;
            }

            if (sf.Contains("server_upgrade"))
            {
                Settings.SERVER_UPGRADE = sf["server_upgrade"];
                if (Settings.SERVER_UPGRADE.Length == 0)
                {
                    Settings.SERVER_UPGRADE = Server.DefaultUpgradeServer;
                }
            }
            else
            {
                sf.Set("server_upgrade", Server.DefaultUpgradeServer);
                Settings.SERVER_UPGRADE = Server.DefaultUpgradeServer;
                settingChanged          = true;
            }

            if (sf.Contains("server_static_enabled"))
            {
                Settings.SERVER_STATIC_ENABLED = sf["server_static_enabled"] == "true";
            }
            else
            {
                sf.Set("server_static_enabled", "false");
                settingChanged = true;
            }


            if (sf.Contains("sys_admin_tag"))
            {
                Settings.SYS_ADMIN_TAG = sf["sys_admin_tag"];
            }
            else
            {
                sf.Set("sys_admin_tag", Settings.SYS_ADMIN_TAG);
                settingChanged = true;
            }

            if (settingChanged)
            {
                sf.Flush();
            }


            return(string.Empty);

            /*
             * }
             * catch (Exception ex)
             * {
             * const string strtpl = "配置文件不正确,请检查!位置:{0}。{1}";
             * string _file = filePath.Replace("/", "\\").Replace("\\\\", "\\");
             *
             * return string.Format(strtpl, _file,
             * ex.GetType() == typeof(ArgumentOutOfRangeException) ? "此错误可能因为缺少系统所需的配置而引发。" :
             * string.Empty
             * );
             * }*/
        }
Пример #12
0
        /// <summary>
        /// 更新资料
        /// </summary>
        /// <param name="prefix"></param>
        public static void Update(string prefix)
        {
            SettingFile sf = new SettingFile(cmsConfigFile);

            switch (prefix)
            {
            case "sys":
                sf["license_name"]          = Settings.License_NAME;
                sf["license_key"]           = Settings.License_KEY;
                sf["server_static_enabled"] = Settings.SERVER_STATIC_ENABLED?"true":"false";
                sf["server_static"]         = Settings.SERVER_STATIC;
                sf["sys_admin_tag"]         = Settings.SYS_ADMIN_TAG;

                //301跳转
                if (!sf.Contains("sys_autowww"))
                {
                    sf.Set("sys_autowww", Settings.SYS_AUTOWWW ? "true" : "false");
                }
                else
                {
                    sf["sys_autowww"] = Settings.SYS_AUTOWWW ? "true" : "false";
                }

                //虚拟路径
                //if (!sf.Contains("sys_virthpath"))
                //{
                //    sf.Set("sys_virthpath", Settings.SYS_VIRTHPATH);
                //}
                //else
                //{
                //    sf["sys_virthpath"] = Settings.SYS_VIRTHPATH;
                //}
                break;

            case "db":
                sf["db_prefix"] = Settings.DB_PREFIX;
                break;

            case "tpl":

                //压缩代码
                if (!sf.Contains("tpl_usecompress"))
                {
                    sf.Set("tpl_usecompress", Settings.TPL_UseCompress ? "true" : "false");
                }
                else
                {
                    sf["tpl_usecompress"] = Settings.TPL_UseCompress ? "true" : "false";
                }

                //使用完整路径
                if (!sf.Contains("tpl_usefullpath"))
                {
                    sf.Set("tpl_usefullpath", Settings.TPL_UseFullPath ? "true" : "false");
                }
                else
                {
                    sf["tpl_usefullpath"] = Settings.TPL_UseFullPath ? "true" : "false";
                }


                Cms.Template.Register();

                break;

            //优化
            case "opti":

                WebConfig.SetDebug(Settings.Opti_Debug);

                //缓存项
                if (!sf.Contains("opti_IndexCacheSeconds"))
                {
                    sf.Set("opti_IndexCacheSeconds", Settings.Opti_IndexCacheSeconds.ToString());
                }
                else
                {
                    sf["opti_IndexCacheSeconds"] = Settings.Opti_IndexCacheSeconds.ToString();
                }

                if (!sf.Contains("Opti_GC_Collect_Interval"))
                {
                    sf.Set("Opti_GC_Collect_Interval", Settings.Opti_GC_Collect_Interval.ToString());
                }
                else
                {
                    sf["Opti_GC_Collect_Interval"] = Settings.Opti_GC_Collect_Interval.ToString();
                }

                if (!sf.Contains("opti_ClientCacheSeconds"))
                {
                    sf.Set("opti_ClientCacheSeconds", Settings.Opti_ClientCacheSeconds.ToString());
                }
                else
                {
                    sf["opti_ClientCacheSeconds"] = Settings.Opti_ClientCacheSeconds.ToString();
                }


                break;
            }

            //
            //Version:兼容更新站点
            //
            SiteDto site = Cms.Context.CurrentSite;

            if (site.SiteId > 0)
            {
                if (sf.Contains("idx_title"))
                {
                    site.SeoTitle = sf["idx_title"];
                    sf.Remove("idx_title");
                }
                if (sf.Contains("idx_keywords"))
                {
                    site.SeoKeywords = sf["idx_keywords"];
                    sf.Remove("idx_keywords");
                }
                if (sf.Contains("idx_description"))
                {
                    site.SeoDescription = sf["idx_description"];
                    sf.Remove("idx_description");
                }
                if (sf.Contains("sys_alias"))
                {
                    sf.Remove("sys_alias");
                }
            }

            if (sf.Contains("sys_name"))
            {
                if (sf.Contains("license_name"))
                {
                    sf["license_name"] = sf["sys_name"];
                    sf["license_key"]  = sf["sys_key"];
                }
                else
                {
                    sf.Set("license_name", sf["sys_name"]);
                    sf.Set("license_key", sf["sys_key"]);
                }
                sf.Remove("sys_name");
                sf.Remove("sys_key");
            }

            sf.Flush();
        }
Пример #13
0
        private InstallCode Process(ICompatibleHttpContext context)
        {
            var form     = context.Request;
            var physical = Cms.PhysicPath;

            if (!Directory.Exists(Path.Combine(Cms.PhysicPath, "config")))
            {
                Directory.CreateDirectory(Path.Combine(Cms.PhysicPath, "config")).Create();
            }

            if (File.Exists(Path.Combine(physical, INSTALL_LOCK)))
            {
                return(InstallCode.INSTALLED);
            }

            string licenceKey   = form.Form("licence_key")[0].Trim(),
                   licenceName  = form.Form("licence_name")[0].Trim(),
                   siteName     = form.Form("site_name")[0].Trim(),
                   siteDomain   = form.Form("site_domain")[0].Trim(),
                   siteLanguage = form.Form("site_language"),
                   userName     = form.Form("user_name")[0].Trim(),
                   userPwd      = form.Form("user_pwd")[0].Trim(),
                   dbType       = form.Form("db_type")[0].Trim(),
                   dbServer     = form.Form("db_server")[0].Trim(),
                   dbPort       = form.Form("db_port")[0].Trim(),
                   dbPrefix     = form.Form("db_prefix")[0].Trim(),
                   dbPrefix1    = form.Form("db_prefix1")[0].Trim(),
                   dbName       = form.Form("db_name")[0].Trim(),
                   dbUsr        = form.Form("db_usr")[0].Trim(),
                   dbPwd        = form.Form("db_pwd")[0].Trim(),
                   dbFile       = form.Form("db_file")[0].Trim();

            var dbStr = "";

            #region 检测数据

            if (string.IsNullOrEmpty(licenceName) || string.IsNullOrEmpty(licenceKey))
            {
                return(InstallCode.NO_LICENCE);
            }

            if (string.IsNullOrEmpty(siteName))
            {
                return(InstallCode.NO_SITE_NAME);
            }

            if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(userPwd))
            {
                return(InstallCode.NO_USER);
            }

            #endregion

            #region 初始化数据库设置

            //数据表前缀
            if (string.IsNullOrEmpty(dbPrefix))
            {
                dbPrefix = dbPrefix1;
            }

            const string dbDirName = "data";

            //移动Access或SQLite数据库
            if (dbType == "sqlite")
            {
                if (dbFile == "")
                {
                    dbFile = "rd_" + string.Empty.RandomLetters(5) + ".db";
                }
                else if (dbFile.IndexOf(".", StringComparison.Ordinal) == -1)
                {
                    dbFile += ".db";
                }

                if (!Directory.Exists(physical + dbDirName))
                {
                    Directory.CreateDirectory(physical + dbDirName).Create();
                }

                dbStr = "Data Source=$ROOT/" + dbDirName + "/" + dbFile;
            }
            else if (dbType == "oledb")
            {
                if (dbFile == "")
                {
                    dbFile = "rd_" + string.Empty.RandomLetters(5) + ".mdb";
                }
                else if (dbFile.IndexOf(".", StringComparison.Ordinal) == -1)
                {
                    dbFile += ".mdb";
                }

                if (!Directory.Exists(physical + dbDirName))
                {
                    Directory.CreateDirectory(physical + dbDirName).Create();
                }

                File.Copy(physical + FILE_DB_OLEDB, physical + dbDirName + "/" + dbFile, true);
                dbStr = "Data Source=$ROOT/" + dbDirName + "/" + dbFile;
            }
            else
            {
                //数据库资料不全
                if (string.IsNullOrEmpty(dbServer) || string.IsNullOrEmpty(dbUsr) || string.IsNullOrEmpty(dbName) ||
                    string.IsNullOrEmpty(dbPrefix))
                {
                    return(InstallCode.DB_ERROR);
                }

                if (!Regex.IsMatch(dbPort, "^\\d+$"))
                {
                    return(InstallCode.DB_ERROR_PORT);
                }

                if (dbType == "mysql")
                {
                    dbStr = $"server={dbServer};database={dbName};uid={dbUsr};pwd={dbPwd};port={dbPort};charset=utf8";
                }
                else if (dbType == "mssql")
                {
                    dbStr = $"server={dbServer},{dbPort};database={dbName};uid={dbUsr};pwd={dbPwd}";
                }
                else
                {
                    return(InstallCode.DB_UNKNOWN);
                }
            }

            #endregion

            #region 写入配置

            if (File.Exists(physical + FILE_SETTING))
            {
                File.Delete(physical + FILE_SETTING);
            }

            var file = new SettingFile(physical + FILE_SETTING);
            file.Set("license_key", licenceKey);
            file.Set("license_name", licenceName);
            file.Set("server_static", "");
            file.Set("server_static_enabled", "false");
            file.Set("db_type", dbType);
            file.Set("db_conn", dbStr);
            file.Set("db_prefix", dbPrefix);

            file.Set("mm_avatar_path", "/file/avatar/");
            file.Flush();

            #endregion

            #region 初始化数据库

            if (!ExtraDB(dbType, dbStr, dbPrefix))
            {
                return(InstallCode.DB_INIT_ERROR);
            }

            #endregion

            #region 初始化数据

            var siteId = InitSite(dbPrefix, siteName, siteDomain, int.Parse(siteLanguage));
            InitUserAndCredential(dbPrefix, userName, userPwd);
            var catId = InitCategory(dbPrefix, siteId);
            InitArchive(dbPrefix, siteId, catId);

            #endregion


            //创建安装文件
            File.Create(string.Concat(physical, INSTALL_LOCK));
            Cms.Init(BootFlag.Normal, null);
            // 重启cms
            Cms.Reload();
            return(InstallCode.SUCCESS);
        }
Пример #14
0
        /// <summary>
        /// 加载配置文件
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns>返回加载消息,如成功返回空</returns>
        private static void Load(string filePath)
        {
            cmsConfFile = filePath;
            //从配置文件中加载
            SettingFile sf = new SettingFile(cmsConfFile);

            Settings.loaded = true;
            bool settingChanged = false;

            //try
            // {
            Settings.LICENSE_NAME            = sf.Contains("license_name") ? sf["license_name"] : "评估用户";
            Settings.LICENSE_KEY             = sf.Contains("license_key") ? sf["license_key"] : String.Empty;
            Settings.SYS_WWW_RD              = GetInt(sf, "sys_www_rd");
            Settings.SYS_FORCE_HTTPS         = CheckTrueValue(sf, "sys_force_https");
            Settings.SYS_USE_UPLOAD_RAW_NAME = CheckTrueValue(sf, "sys_use_upload_raw_path");

            #region 读取模板选项

            Settings.TPL_FULL_URL_PATH = !sf.Contains("tpl_full_url_path") || sf["tpl_full_url_path"] == "true";
            Settings.TPL_USE_COMPRESS  = sf.Contains("tpl_use_compress") && sf["tpl_use_compress"] == "true";
            Settings.TPL_USE_CACHE     = !sf.Contains("tpl_use_cache") || sf["tpl_use_cache"] == "true";

            #endregion

            Settings.DB_TYPE   = sf["db_type"];
            Settings.DB_CONN   = sf["db_conn"];
            Settings.DB_PREFIX = sf["db_prefix"];

            Settings.MM_AVATAR_PATH = sf["mm_avatar_path"];


            /**************** 优化项 ******************/
            Settings.OPTI_DEBUG_MODE = WebConfig.IsDebug();

            //缓存项
            if (sf.Contains("perm_index_cache_second"))
            {
                Int32.TryParse(sf["perm_index_cache_second"], out Settings.PERM_INDEX_CACHE_SECOND);
            }

            if (sf.Contains("opti_client_cache_seconds"))
            {
                Int32.TryParse(sf["opti_client_cache_seconds"], out Settings.Opti_ClientCacheSeconds);
            }

            if (sf.Contains("opti_gc_collect_interval"))
            {
                Int32.TryParse(sf["opti_gc_collect_interval"], out Settings.opti_gc_collect_interval);
            }


            /**************** 静态服务器 ******************/

            if (sf.Contains("server_static"))
            {
                Settings.SERVER_STATIC = sf["server_static"];
                if (Settings.SERVER_STATIC.Length == 0)
                {
                    Settings.SERVER_STATIC = Server.DefaultStaticServer;
                }
            }
            else
            {
                sf.Set("server_static", Server.DefaultStaticServer);
                Settings.SERVER_STATIC = Server.DefaultStaticServer;
                settingChanged         = true;
            }


            if (sf.Contains("server_upgrade"))
            {
                Settings.SERVER_UPGRADE = sf["server_upgrade"];
                if (Settings.SERVER_UPGRADE.Length == 0)
                {
                    Settings.SERVER_UPGRADE = Server.DefaultUpgradeServer;
                }
            }
            else
            {
                sf.Set("server_upgrade", Server.DefaultUpgradeServer);
                Settings.SERVER_UPGRADE = Server.DefaultUpgradeServer;
                settingChanged          = true;
            }

            if (sf.Contains("server_static_enabled"))
            {
                Settings.SERVER_STATIC_ENABLED = sf["server_static_enabled"] == "true";
            }
            else
            {
                sf.Set("server_static_enabled", "false");
                settingChanged = true;
            }

            if (sf.Contains("sys_encode_conf"))
            {
                Settings.SYS_ENCODE_CONF_FILE = sf["sys_encode_conf"] == "true";
            }
            else
            {
                sf.Set("sys_encode_conf", Settings.SYS_ENCODE_CONF_FILE ? "true" : "false");
                settingChanged = true;
            }

            if (sf.Contains("sql_profile_trace"))
            {
                Settings.SQL_PROFILE_TRACE = sf["sql_profile_trace"] == "true";
            }
            else
            {
                sf.Set("sql_profile_trace", Settings.SQL_PROFILE_TRACE ? "true" : "false");
                settingChanged = true;
            }
            if (sf.Contains("sys_admin_tag"))
            {
                Settings.SYS_ADMIN_TAG = sf["sys_admin_tag"];
            }
            else
            {
                sf.Set("sys_admin_tag", Settings.SYS_ADMIN_TAG);
                settingChanged = true;
            }

            if (sf.Contains("sys_site_map_path"))
            {
                Settings.SYS_SITE_MAP_PATH = sf["sys_site_map_path"];
            }
            else
            {
                sf.Set("sys_site_map_path", "");
                settingChanged = true;
            }

            if (settingChanged)
            {
                sf.Flush();
            }
        }