76 lines
2.2 KiB
C#
Executable File
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);
|
|
}
|
|
}
|
|
}
|
|
}
|