Exemple #1
0
        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();
        }
Exemple #2
0
        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;
            }
        }