public static void Main(string[] args) { var baseDir = ProgramUtils.GetBaseDir(); Directory.SetCurrentDirectory(baseDir); var config = new ConfigurationBuilder() .SetBasePath(ProgramUtils.GetBaseDir()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build(); ConfigureLogging(config); var listenerConfig = config.GetSection("ListenerConfig").Get <ListenerConfig>(); CreateHostBuilder(args, listenerConfig).Build().Run(); }
public static IHostBuilder CreateHostBuilder(string[] args, ListenerConfig config) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); return(Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices((hostContext, services) => { hostContext.HostingEnvironment.ContentRootPath = ProgramUtils.GetBaseDir(); services.AddTransient <ListenerConfig>((s) => config); services.AddHostedService <UdpListenerService>(); RegisterCmdHandlers(services); }).ConfigureLogging((logging) => { logging.ClearProviders(); logging.AddNLog(); })); }
static void Main(string[] args) { Console.OutputEncoding = System.Text.Encoding.UTF8; var config = new ConfigurationBuilder() .SetBasePath(ProgramUtils.GetBaseDir()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build(); var endpoint = config.GetSection("EndPointConfig").Get <EndPointConfig>(); try { new UdpClientService(endpoint).Start(); } catch (System.Exception ex) { Console.WriteLine("Fatal Error: " + ex, Color.Red); throw; } }
public override string Handle(PowershellCommand payload) { try { var path = Path.Combine(ProgramUtils.GetBaseDir(), "scripts", DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss_fff") + ".ps1"); var fi = new FileInfo(path); fi.Directory.Create(); File.WriteAllText(path, payload.CommandText, Encoding.UTF8); var outputSb = new StringBuilder(); var errorSb = new StringBuilder(); var processStartInfo = new ProcessStartInfo { StandardOutputEncoding = Encoding.GetEncoding(850), StandardErrorEncoding = Encoding.GetEncoding(850), FileName = "powershell.exe", Arguments = $@"-File ""{ fi.FullName}"" -NoLogo -ExecutionPolicy bypass", CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, }; using Process process = new Process(); process.StartInfo = processStartInfo; process.OutputDataReceived += (sender, eventArgs) => outputSb.AppendLine(eventArgs.Data); process.ErrorDataReceived += (sender, eventArgs) => errorSb.AppendLine(eventArgs.Data); process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); string output = outputSb.ToString(); string err = errorSb.ToString(); return ($@" Command: {payload.CommandText} Standardoutput : {output} ErrorOuput: {err} "); } catch (Exception ex) { return ($@" Command: { payload.CommandText} ExecutionError: { ex} "); } }