/// <summary> /// Start generic ipban service with callbacks. The service implementation should have already been created before this method is called. /// </summary> /// <param name="args">Args</param> /// <param name="start">Start callback, start your implementation running here</param> /// <param name="stop">Stop callback, stop your implementation running here</param> /// <param name="requireAdministrator">Whether administrator access is required</param> /// <returns>Task</returns> public static async Task MainService(string[] args, Func <string[], Task> start, Action stop, bool requireAdministrator = true) { try { using IPBanServiceRunner runner = new IPBanServiceRunner(args, start, stop); await runner.RunAsync(requireAdministrator); } catch (Exception ex) { ExtensionMethods.FileWriteAllTextWithRetry(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "startup_fail.txt"), ex.ToString()); Logger.Fatal("Fatal error starting service", ex); } }
/// <summary> /// Run service helper method /// </summary> /// <param name="args">Args</param> /// <param name="onStart">Start</param> /// <param name="onStop">Stop</param> /// <param name="cancelToken">Cancel token</param> /// <returns>Task</returns> #pragma warning disable IDE0060 // Remove unused parameter public static async Task MainService(string[] args, Func <Task> onStart, Func <Task> onStop = null, CancellationToken cancelToken = default) #pragma warning restore IDE0060 // Remove unused parameter { try { using IPBanServiceRunner runner = new IPBanServiceRunner(onStart, onStop); await runner.RunAsync(cancelToken); } catch (Exception ex) { ExtensionMethods.FileWriteAllTextWithRetry(System.IO.Path.Combine(AppContext.BaseDirectory, "service_error.txt"), ex.ToString()); Logger.Fatal("Fatal error running service", ex); } }
/// <summary> /// Run service helper method /// </summary> /// <param name="args">Args</param> /// <param name="onRun">Run</param> /// <param name="onStop">Stop</param> /// <returns>Task</returns> #pragma warning disable IDE0060 // Remove unused parameter public static async Task <int> MainService(string[] args, Func <CancellationToken, Task> onRun, Func <CancellationToken, Task> onStop = null) #pragma warning restore IDE0060 // Remove unused parameter { try { using IPBanServiceRunner runner = new IPBanServiceRunner(onRun, onStop); await runner.RunAsync(); } catch (OperationCanceledException) { // don't care } catch (Exception ex) { ExtensionMethods.FileWriteAllTextWithRetry(System.IO.Path.Combine(AppContext.BaseDirectory, "service_error.txt"), ex.ToString()); Logger.Fatal("Fatal error running service", ex); return(ex.HResult); } return(0); }