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); }
public void UpdateServiceConfiguration(WingnutServiceConfiguration configuration) { configuration.ValidateProperties(); ServiceRuntime.Instance.Configuration.ServiceConfiguration = configuration; ServiceRuntime.Instance.SaveConfiguration(); }
protected override void ProcessRecord() { ServiceHelper helper = ServiceHelper.Create(); WingnutServiceConfiguration configuration = helper.Channel.GetServiceConfiguration(); this.WriteObject(configuration); }
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; }