using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; using BarrageGrab.Modles.JsonEntity; using static System.Configuration.ConfigurationManager; namespace BarrageGrab { internal class Appsetting { private static readonly Appsetting ins = new Appsetting(); public static Appsetting Current { get => ins; } public Appsetting() { try { ProcessFilter = AppSettings["processFilter"].Trim().Split(','); WsProt = int.Parse(AppSettings["wsListenPort"]); PrintBarrage = AppSettings["printBarrage"].ToLower() == "true"; ProxyPort = int.Parse(AppSettings["proxyPort"]); PrintFilter = Enum.GetValues(typeof(PackMsgType)).Cast().ToArray(); FilterHostName = bool.Parse(AppSettings["filterHostName"].Trim()); HostNameFilter = AppSettings["hostNameFilter"].Trim().Split(',').Where(w => !string.IsNullOrWhiteSpace(w)).ToArray(); RoomIds = AppSettings["roomIds"].Trim().Split(',').Where(w => !string.IsNullOrWhiteSpace(w)).Select(s => long.Parse(s)).ToArray(); UsedProxy = bool.Parse(AppSettings["usedProxy"].Trim()); ListenAny = bool.Parse(AppSettings["listenAny"].Trim()); UpstreamProxy = AppSettings["upstreamProxy"].Trim(); var printFilter = AppSettings["printFilter"].Trim().ToLower(); if (printFilter != "all") { if (string.IsNullOrWhiteSpace(printFilter)) PrintFilter = new int[0]; else PrintFilter = printFilter.Split(',').Select(x => int.Parse(x)).ToArray(); } } catch (Exception ex) { Console.WriteLine("配置文件读取失败,请检查配置文件是否正确"); throw ex; } } /// /// 使用系统代理 /// public bool UsedProxy { get; private set; } = true; /// /// 过滤的进程 /// public string[] ProcessFilter { get; private set; } /// /// 端口号 /// public int WsProt { get; private set; } = 8888; /// /// true:监听在0.0.0.0,接受任意Ip连接,false:监听在127.0.0.1,仅接受本机连接 /// public bool ListenAny { get; private set; } = true; /// /// 控制台打印消息开关 /// public bool PrintBarrage { get; private set; } /// /// 代理端口 /// public int ProxyPort { get; private set; } = 8827; /// /// 控制台输出过滤器 /// public int[] PrintFilter { get; private set; } /// /// 监听的房间号 /// public long[] RoomIds { get; private set; } = new long[0]; /// /// 使用域名过滤 /// public bool FilterHostName { get; private set; } = true; /// /// 域名白名单列表 /// public string[] HostNameFilter { get; private set; } = new string[0]; /// /// 上游代理地址 /// public string UpstreamProxy { get; set; } } }