コード例 #1
0
ファイル: CoreTests.cs プロジェクト: HighEncryption/Wingnut
        public static WingnutConfiguration CreateBasicConfiguration(int port)
        {
            var config = new WingnutConfiguration
            {
                ServiceConfiguration  = WingnutServiceConfiguration.CreateDefault(),
                ShutdownConfiguration = ShutdownConfiguration.CreateDefault()
            };

            config.UpsConfigurations.Add(
                new UpsConfiguration
            {
                ServerConfiguration = new ServerConfiguration
                {
                    Address  = IPAddress.Loopback.ToString(),
                    Port     = port,
                    Username = "******",
                    Password = SecureStringExtensions.FromString("testpass"),
                    UseSSL   = SSLUsage.Optional,
                    PreferredAddressFamily = AddressFamily.InterNetwork,
                },
                NumPowerSupplies = 1,
                DeviceName       = "testups"
            });

            return(config);
        }
コード例 #2
0
        public void UpdateServiceConfiguration(WingnutServiceConfiguration configuration)
        {
            configuration.ValidateProperties();

            ServiceRuntime.Instance.Configuration.ServiceConfiguration = configuration;
            ServiceRuntime.Instance.SaveConfiguration();
        }
コード例 #3
0
        protected override void ProcessRecord()
        {
            ServiceHelper helper = ServiceHelper.Create();
            WingnutServiceConfiguration configuration = helper.Channel.GetServiceConfiguration();

            this.WriteObject(configuration);
        }
コード例 #4
0
        public void Initialize()
        {
            if (this.isInitialized)
            {
                throw new InvalidOperationException("Runtime is already initialized");
            }

            Logger.ServiceStarting(GetAssemblyVersionString());

            this.AppDataPath = Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
                "Wingnut");

            Logger.Info(
                "ServiceRuntime: Initializing runtime with app data path: {0}",
                this.AppDataPath);

            // Create the directory (safe to call even if the directory exists)
            Directory.CreateDirectory(this.AppDataPath);

            configurationPath = Path.Combine(this.AppDataPath, WingnutConfiguration.FileName);
            if (File.Exists(configurationPath))
            {
                LoadConfiguration();
            }
            else
            {
                this.Configuration = new WingnutConfiguration
                {
                    ServiceConfiguration  = WingnutServiceConfiguration.CreateDefault(),
                    ShutdownConfiguration = ShutdownConfiguration.CreateDefault()
                };
            }

            if (this.Configuration.EnableDetailedTracing)
            {
                Logger.OutputLogLevel = Logger.LogLevel.Debug;
            }

            string notificationScriptPath =
                this.Configuration.ServiceConfiguration.PowerShellNotificationScriptPath;

            if (string.IsNullOrWhiteSpace(notificationScriptPath))
            {
                Logger.Info("No PowerShell script path found in configuration");
            }
            else
            {
                if (File.Exists(notificationScriptPath))
                {
                    Logger.Info(
                        "Using PowerShell notification script from path {0}",
                        notificationScriptPath);

                    INotificationHandler psNotifier = new PowerShellNotifier(notificationScriptPath);
                    this.OnNotify += psNotifier.HandleNotification;
                }
                else
                {
                    Logger.Info("No PowerShell script found at path {0}", notificationScriptPath);
                }
            }

            if (this.Configuration.ServiceConfiguration.SmtpConfiguration != null)
            {
                INotificationHandler smtpNotifier = new SmtpNotifier();
                this.OnNotify += smtpNotifier.HandleNotification;
            }

            // Initialization is finished
            Logger.Debug("ServiceRuntime: Initialization finished");
            Logger.ServiceStarted();

            this.isInitialized = true;
        }