// ---------------------------
// 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");
}
}
加载和保存站点值到配置文件
最新推荐文章于 2022-04-24 15:44:46 发布