加载和保存站点值到配置文件

来源:互联网 发布:装潢设计软件学习 编辑:程序博客网 时间:2024/05/19 18:17
        // ---------------------------        // set default values for site        // ---------------------------        string Host = null;        int Port = 21;        string Login = "";        string Password = "";        string UploadDir = null;        string NoModifyDir = "/";        int Timeout = 10000;        bool Passive = true;        string Proxy = null;        bool ProxyEnabled = false;        int ProxyPort = 3128;        string ProxyUser = null;        string ProxyPassword = null;        int ProxyType = 1;        const string CONFIGFILE = "config.xml";        // xml file consisting of settings                /// <summary>        /// 从配置文件加载站点属性值        /// </summary>        private void LoadConfig()        {            // ----------------            // read config file            // ----------------            DataSet ds = new DataSet();            try            {                if (!File.Exists(CONFIGFILE))                    return;                ds.ReadXml(CONFIGFILE);                NoModifyDir = "/";                Timeout = 10000;                Proxy = null;                foreach (DataRow dr in ds.Tables[0].Rows)                {                    string item = dr["value"].ToString();                    switch (dr["name"].ToString().ToLower())                    {                        case "host":                            Host = item;                            break;                        case "login":                            Login = item;                            break;                        case "port":                            {                                try                                {                                    Port = Int32.Parse(item);                                }                                catch                                {                                    Port = 21; // default                                }                                break;                            }                        case "password":                            Password = EncodePassword(item);                            break;                        case "passive":                            Passive = (item.ToLower() == "false" ? false : true);                            break;                        case "proxy":                            Proxy = item;                            break;                        case "proxylogin":                            ProxyUser = item;                            break;                        case "proxypassword":                            ProxyPassword = EncodePassword(item);                            break;                        case "proxyenabled":                            ProxyEnabled = (item.ToLower() == "false" ? false : true);                            break;                        case "proxyport":                            {                                try                                {                                    ProxyPort = Int32.Parse(item);                                }                                catch                                {                                    ProxyPort = 3128; // default                                }                                break;                            }                        case "proxytype":                            {                                try                                {                                    ProxyType = Int32.Parse(item);                                }                                catch                                {                                    ProxyType = 1; // default                                }                                break;                            }                    }                }            }            catch            {                Console.WriteLine("* config file read error");            }        }        /// <summary>        /// encoded/normal texts transfer to normal/encoded ones        /// </summary>        /// <param name="password">encoded/normal text</param>        /// <returns></returns>        private string EncodePassword(string password)        {            const byte MAGICNUMBER = 42; // XOR value for password encoded/decode process            string encodedString = "";            foreach (char signs in password)            {                char sign = (char)(signs ^ MAGICNUMBER);                encodedString += sign.ToString();            }            return encodedString;        }        /// <summary>        /// 保存站点值到配置文件        /// </summary>        private void SaveConfig()        {            DataSet ds = new DataSet("configuration");            try            {                ds.Tables.Add("key");                ds.Tables[0].Columns.Add("name");                ds.Tables[0].Columns.Add("value");                DataRow[] dr = new DataRow[11];                dr[0] = ds.Tables[0].NewRow();                dr[1] = ds.Tables[0].NewRow();                dr[2] = ds.Tables[0].NewRow();                dr[3] = ds.Tables[0].NewRow();                dr[4] = ds.Tables[0].NewRow();                dr[5] = ds.Tables[0].NewRow();                dr[6] = ds.Tables[0].NewRow();                dr[7] = ds.Tables[0].NewRow();                dr[8] = ds.Tables[0].NewRow();                dr[9] = ds.Tables[0].NewRow();                dr[10] = ds.Tables[0].NewRow();                ds.Tables[0].Clear();                dr[0]["name"] = "host";                dr[0]["value"] = Host;                dr[1]["name"] = "login";                dr[1]["value"] = Login;                dr[2]["name"] = "port";                dr[2]["value"] = Port;                dr[3]["name"] = "password";                dr[3]["value"] = EncodePassword(Password);                dr[4]["name"] = "passive";                dr[4]["value"] = Passive;                dr[5]["name"] = "proxyenabled";                dr[5]["value"] = ProxyEnabled;                dr[6]["name"] = "proxy";                dr[6]["value"] = Proxy;                dr[7]["name"] = "proxyport";                dr[7]["value"] = ProxyPort;                dr[8]["name"] = "proxytype";                dr[8]["value"] = ProxyType;                dr[9]["name"] = "proxylogin";                dr[9]["value"] = ProxyUser;                dr[10]["name"] = "proxypassword";                dr[10]["value"] = ProxyPassword;                ds.Tables[0].Rows.Add(dr[0]);                ds.Tables[0].Rows.Add(dr[1]);                ds.Tables[0].Rows.Add(dr[2]);                ds.Tables[0].Rows.Add(dr[3]);                ds.Tables[0].Rows.Add(dr[4]);                ds.Tables[0].Rows.Add(dr[5]);                ds.Tables[0].Rows.Add(dr[6]);                ds.Tables[0].Rows.Add(dr[7]);                ds.Tables[0].Rows.Add(dr[8]);                ds.Tables[0].Rows.Add(dr[9]);                ds.Tables[0].Rows.Add(dr[10]);                ds.WriteXml(CONFIGFILE, XmlWriteMode.IgnoreSchema);            }            catch            {                Console.WriteLine("* config file not saved");            }        }

原创粉丝点击