Files
shadowsocks-windows/shadowsocks-csharp/Config.cs
T
2013-01-14 19:45:28 +08:00

76 lines
2.2 KiB
C#
Executable File

using System;
using System.Collections.Generic;
using System.Runtime.Serialization.Json;
using System.Text;
using System.IO;
using System.Diagnostics;
namespace shadowsocks_csharp
{
[Serializable]
public class Config
{
public string server;
public int server_port;
public int local_port;
public string password;
[NonSerialized]
public bool isDefault;
private static void assert(bool condition)
{
if(!condition)
{
throw new Exception("assertion failure");
}
}
public static Config Load()
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Config));
try
{
using (FileStream fs = File.OpenRead(@"config.json"))
{
Config config = ser.ReadObject(fs) as Config;
assert(!string.IsNullOrEmpty(config.server));
assert(!string.IsNullOrEmpty(config.password));
assert(config.local_port > 0);
assert(config.server_port > 0);
config.isDefault = false;
return config;
}
}
catch (Exception e)
{
Console.WriteLine(e);
return new Config
{
server = "127.0.0.1",
server_port = 8388,
local_port = 1081,
password = "barfoo!",
isDefault = true
};
}
}
public static void Save(Config config)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Config));
try
{
using (FileStream fs = File.Open(@"config.json", FileMode.Create))
{
ser.WriteObject(fs, config);
}
}
catch (IOException e)
{
Console.Error.WriteLine(e);
}
}
}
}