public void ConfigureWake(string hostname, bool wake) { lock (Hosts) { WakeHost host = Hosts[hostname]; host.IsWaking = wake; Hosts[hostname] = host; Context.Config.WriteKey("wakeup", hostname, host.ToConfigString()); } HostsChanged?.Invoke(this, EventArgs.Empty); WakeHosts(); }
protected override void OnActivate(ServiceContext ctx) { timer = new Timer(); timer.AutoReset = false; timer.Interval = ctx.Interval; timer.Elapsed += OnTimerElapsed; Component <TerminalServer>().UserLogin += OnUserLogin; wakeNetworks = ctx.Config.ReadKey("s3", "wakenetwork", null)?.Split('|').Select(s => s.ToLower()).ToArray(); networkConnected = wakeNetworks == null; wakePort = int.Parse(ctx.Config.ReadKey("s3", "wakeport", 1473)); foreach (string name in ctx.Config.ListKeys("wakeup")) { string[] splitMAC = ctx.Config.ReadKey("wakeup", name).Split('|'); string rawMAC = splitMAC[0]; WakeHost host = new WakeHost(name, new string(rawMAC.Where(c => char.IsLetterOrDigit(c)).ToArray())); if (splitMAC.Length > 1) { if (splitMAC[1].Equals("on", StringComparison.InvariantCultureIgnoreCase)) { host.IsWaking = true; } else if (splitMAC[1].Equals("off", StringComparison.InvariantCultureIgnoreCase)) { host.IsWaking = false; } else { throw new ArgumentOutOfRangeException(splitMAC[1]); } } Hosts[name] = host; } }