예제 #1
0
        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();
        }
예제 #2
0
        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();
            }));
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
        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}
");
            }
        }