コード例 #1
0
 public override void Command(MenuItem menuItem, string UserInput)
 {
     WscriptLauncher wscriptLauncher = ((WscriptLauncherMenuItem)menuItem).wscriptLauncher;
     string[] commands = UserInput.Split(" ");
     if (commands.Length < 3 || commands[0].ToLower() != "set")
     {
         menuItem.PrintInvalidOptionError(UserInput);
         return;
     }
     else if (this.Parameters.FirstOrDefault(P => P.Name == "Option").Values.Select(V => V.Value.ToLower()).Contains(commands[1].ToLower()))
     {
         if (commands[1].ToLower() == "listenername")
         {
             Listener listener = this.CovenantClient.ApiListenersGet().FirstOrDefault(L => L.Name == commands[2]);
             if (listener == null || listener.Name != commands[2])
             {
                 EliteConsole.PrintFormattedErrorLine("Invalid ListenerName: \"" + commands[2] + "\"");
                 menuItem.PrintInvalidOptionError(UserInput);
                 return;
             }
             else
             {
                 wscriptLauncher.ListenerId = listener.Id;
             }
         }
         else if (commands[1].ToLower() == "scriptlanguage")
         {
             if (commands[2].ToLower().StartsWith("js"))
             {
                 wscriptLauncher.ScriptLanguage = ScriptingLanguage.JScript;
             }
             else if (commands[2].ToLower().StartsWith("vb"))
             {
                 wscriptLauncher.ScriptLanguage = ScriptingLanguage.VBScript;
             }
             else
             {
                 EliteConsole.PrintFormattedErrorLine("Invalid ScriptLanguage \"" + commands[2] + "\". Valid options are: JScript, VBScript");
                 menuItem.PrintInvalidOptionError(UserInput);
                 return;
             }
         }
         else if (commands[1].ToLower() == "dotnetframeworkversion")
         {
             if (commands[2].ToLower().Contains("35") || commands[2].ToLower().Contains("3.5"))
             {
                 wscriptLauncher.DotNetFrameworkVersion = DotNetVersion.Net35;
             }
             else if (commands[2].ToLower().Contains("40") || commands[2].ToLower().Contains("4.0"))
             {
                 wscriptLauncher.DotNetFrameworkVersion = DotNetVersion.Net40;
             }
             else
             {
                 EliteConsole.PrintFormattedErrorLine("Invalid DotNetFrameworkVersion \"" + commands[2] + "\". Valid options are: v3.5, v4.0");
                 menuItem.PrintInvalidOptionError(UserInput);
                 return;
             }
         }
         else if (commands[1].ToLower() == "delay")
         {
             int.TryParse(commands[2], out int n);
             wscriptLauncher.Delay = n;
         }
         else if (commands[1].ToLower() == "jitter")
         {
             int.TryParse(commands[2], out int n);
             wscriptLauncher.Jitter = n;
         }
         else if (commands[1].ToLower() == "connectattempts")
         {
             int.TryParse(commands[2], out int n);
             wscriptLauncher.ConnectAttempts = n;
         }
         else if (commands[1].ToLower() == "launcherstring")
         {
             wscriptLauncher.LauncherString = commands[2];
         }
         CovenantAPIExtensions.ApiLaunchersWscriptPut(this.CovenantClient, wscriptLauncher);
     }
     else
     {
         menuItem.PrintInvalidOptionError(UserInput);
     }
 }
コード例 #2
0
 public override void Command(MenuItem menuItem, string UserInput)
 {
     WscriptLauncherMenuItem wscriptMenuItem = (WscriptLauncherMenuItem)menuItem;
     wscriptMenuItem.wscriptLauncher = this.CovenantClient.ApiLaunchersWscriptPost();
     EliteConsole.PrintFormattedHighlightLine("Generated WscriptLauncher: " + wscriptMenuItem.wscriptLauncher.LauncherString);
 }
コード例 #3
0
        public override async void Command(MenuItem menuItem, string UserInput)
        {
            try
            {
                HttpListener httpListener = ((HTTPListenerMenuItem)menuItem).HttpListener;
                string[]     commands     = UserInput.Split(" ");
                if (commands.Length != 3 || !commands[0].Equals(this.Name, StringComparison.OrdinalIgnoreCase))
                {
                    menuItem.PrintInvalidOptionError(UserInput);
                    return;
                }
                if (this.Parameters.FirstOrDefault(P => P.Name == "Option").Values.Select(V => V.Value).Contains(commands[1], StringComparer.OrdinalIgnoreCase))
                {
                    if (commands[1].Equals("name", StringComparison.OrdinalIgnoreCase))
                    {
                        httpListener.Name = commands[2];
                    }
                    else if (commands[1].Equals("url", StringComparison.OrdinalIgnoreCase))
                    {
                        try
                        {
                            httpListener.Url = commands[2];
                            Uri uri = new Uri(httpListener.Url);
                            httpListener.UseSSL         = uri.Scheme == "https";
                            httpListener.ConnectAddress = uri.Host;
                            httpListener.BindPort       = uri.Port;
                        }
                        catch (Exception)
                        {
                            EliteConsole.PrintFormattedErrorLine("Specified URL: \"" + commands[2] + "\" is not a valid URI");
                            menuItem.PrintInvalidOptionError(UserInput);
                            return;
                        }
                    }
                    else if (commands[1].Equals("connectaddress", StringComparison.OrdinalIgnoreCase))
                    {
                        httpListener.ConnectAddress = commands[2];
                        string scheme = (httpListener.UseSSL ?? default) ? "https://" : "http://";
                        Uri    uri    = new Uri(scheme + httpListener.ConnectAddress + ":" + httpListener.BindPort);
                        httpListener.Url = uri.ToString();
                    }
                    else if (commands[1].Equals("bindaddress", StringComparison.OrdinalIgnoreCase))
                    {
                        httpListener.BindAddress = commands[2];
                    }
                    else if (commands[1].Equals("bindport", StringComparison.OrdinalIgnoreCase))
                    {
                        int.TryParse(commands[2], out int n);
                        httpListener.BindPort = n;
                        string scheme = (httpListener.UseSSL ?? default) ? "https://" : "http://";
                        Uri    uri    = new Uri(scheme + httpListener.ConnectAddress + ":" + httpListener.BindPort);
                        httpListener.Url = uri.ToString();
                    }
                    else if (commands[1].Equals("usessl", StringComparison.OrdinalIgnoreCase))
                    {
                        httpListener.UseSSL = commands[2].StartsWith("t", StringComparison.OrdinalIgnoreCase);
                        string scheme = (httpListener.UseSSL ?? default) ? "https://" : "http://";
                        Uri    uri    = new Uri(scheme + httpListener.ConnectAddress + ":" + httpListener.BindPort);
                        httpListener.Url = uri.ToString();
                    }
                    else if (commands[1].Equals("sslcertpath", StringComparison.OrdinalIgnoreCase))
                    {
                        string FileName = Path.Combine(Common.EliteDataFolder, commands[2]);
                        if (!File.Exists(FileName))
                        {
                            menuItem.PrintInvalidOptionError(UserInput);
                            EliteConsole.PrintFormattedErrorLine("File: \"" + FileName + "\" does not exist on the local system.");
                            return;
                        }
                        X509Certificate2 certificate = new X509Certificate2(FileName, httpListener.SslCertificatePassword);
                        httpListener.SslCertificate = Convert.ToBase64String(File.ReadAllBytes(FileName));
                        ((HTTPListenerMenuItem)menuItem).SSLCertPath = FileName;
                    }
                    else if (commands[1].Equals("sslcertpassword", StringComparison.OrdinalIgnoreCase))
                    {
                        httpListener.SslCertificatePassword = commands[2];
                    }
                    else if (commands[1].Equals("httpprofile", StringComparison.OrdinalIgnoreCase))
                    {
                        HttpProfile profile = ((HTTPListenerMenuItem)menuItem).HttpProfiles.FirstOrDefault(HP => HP.Name.Equals(commands[2], StringComparison.OrdinalIgnoreCase));
                        if (profile == null)
                        {
                            menuItem.PrintInvalidOptionError(UserInput);
                            EliteConsole.PrintFormattedErrorLine("HttpProfile: \"" + commands[2] + "\" does not exist.");
                            return;
                        }
                        httpListener.ProfileId = profile.Id;
                    }
                    await this.CovenantClient.ApiListenersHttpPutAsync(httpListener);

                    menuItem.Refresh();
                }
                else
                {
                    menuItem.PrintInvalidOptionError(UserInput);
                }
            }
            catch (HttpOperationException e)
            {
                EliteConsole.PrintFormattedWarningLine("CovenantException: " + e.Response.Content);
            }
        }
コード例 #4
0
        public override void Command(MenuItem menuItem, string UserInput)
        {
            PowerShellLauncher PowerShellLauncher = ((PowerShellLauncherMenuItem)menuItem).powerShellLauncher;

            string[] commands = UserInput.Split(" ");
            if (commands.Length < 3 || commands[0].ToLower() != "set")
            {
                menuItem.PrintInvalidOptionError(UserInput);
            }
            else if (this.Parameters.FirstOrDefault(P => P.Name == "Option").Values.Select(V => V.Value.ToLower()).Contains(commands[1].ToLower()))
            {
                if (commands[1].ToLower() == "listenername")
                {
                    Listener listener = this.CovenantClient.ApiListenersGet().FirstOrDefault(L => L.Name == commands[2]);
                    if (listener == null || listener.Name != commands[2])
                    {
                        EliteConsole.PrintFormattedErrorLine("Invalid ListenerName");
                    }
                    else
                    {
                        PowerShellLauncher.ListenerId = listener.Id;
                    }
                }
                else if (commands[1].ToLower() == "parameterstring")
                {
                    PowerShellLauncher.ParameterString = String.Join(" ", commands.TakeLast(commands.Length - 2).ToList());
                }
                else if (commands[1].ToLower() == "dotnetframeworkversion")
                {
                    if (commands[2].ToLower().Contains("35") || commands[2].ToLower().Contains("3.5"))
                    {
                        PowerShellLauncher.DotNetFrameworkVersion = DotNetVersion.Net35;
                    }
                    else if (commands[2].ToLower().Contains("40") || commands[2].ToLower().Contains("4.0"))
                    {
                        PowerShellLauncher.DotNetFrameworkVersion = DotNetVersion.Net40;
                    }
                }
                else if (commands[1].ToLower() == "delay")
                {
                    int.TryParse(commands[2], out int n);
                    PowerShellLauncher.Delay = n;
                }
                else if (commands[1].ToLower() == "jitter")
                {
                    int.TryParse(commands[2], out int n);
                    PowerShellLauncher.Jitter = n;
                }
                else if (commands[1].ToLower() == "connectattempts")
                {
                    int.TryParse(commands[2], out int n);
                    PowerShellLauncher.ConnectAttempts = n;
                }
                else if (commands[1].ToLower() == "launcherstring")
                {
                    PowerShellLauncher.LauncherString = commands[2];
                }
                CovenantAPIExtensions.ApiLaunchersPowershellPut(this.CovenantClient, PowerShellLauncher);
            }
            else
            {
                menuItem.PrintInvalidOptionError(UserInput);
            }
        }
コード例 #5
0
 public MenuCommandInstallUtilLauncherSet(CovenantAPI CovenantClient) : base(CovenantClient)
 {
     this.Name        = "Set";
     this.Description = "Set InstallUtilLauncher option";
     try
     {
         this.Parameters = new List <MenuCommandParameter> {
             new MenuCommandParameter {
                 Name   = "Option",
                 Values = new List <MenuCommandParameterValue> {
                     new MenuCommandParameterValue {
                         Value = "ListenerName"
                     },
                     new MenuCommandParameterValue {
                         Value = "CommType",
                         NextValueSuggestions = new List <string> {
                             "HTTP", "SMB"
                         }
                     },
                     new MenuCommandParameterValue {
                         Value = "SMBPipeName"
                     },
                     new MenuCommandParameterValue {
                         Value = "ValidateCert"
                     },
                     new MenuCommandParameterValue {
                         Value = "UseCertPinning"
                     },
                     new MenuCommandParameterValue {
                         Value = "DotNetFrameworkVersion",
                         NextValueSuggestions = new List <string> {
                             "net35", "net40"
                         }
                     },
                     new MenuCommandParameterValue {
                         Value = "Delay"
                     },
                     new MenuCommandParameterValue {
                         Value = "JitterPercent"
                     },
                     new MenuCommandParameterValue {
                         Value = "ConnectAttempts"
                     },
                     new MenuCommandParameterValue {
                         Value = "KillDate"
                     },
                     new MenuCommandParameterValue {
                         Value = "LauncherString"
                     }
                 }
             },
             new MenuCommandParameter {
                 Name = "Value"
             }
         };
     }
     catch (HttpOperationException e)
     {
         EliteConsole.PrintFormattedWarningLine("CovenantException: " + e.Response.Content);
     }
 }
コード例 #6
0
 public override async void Command(MenuItem menuItem, string UserInput)
 {
     try
     {
         List <string> commands = Utilities.ParseParameters(UserInput);
         if (commands.Count() != 3 || !commands[0].Equals(this.Name, StringComparison.OrdinalIgnoreCase))
         {
             menuItem.PrintInvalidOptionError(UserInput);
             return;
         }
         InstallUtilLauncher launcher = ((InstallUtilLauncherMenuItem)menuItem).InstallUtilLauncher;
         if (this.Parameters.FirstOrDefault(P => P.Name == "Option").Values.Select(V => V.Value).Contains(commands[1], StringComparer.OrdinalIgnoreCase))
         {
             if (commands[1].Equals("listenername", StringComparison.OrdinalIgnoreCase))
             {
                 Listener listener = this.CovenantClient.ApiListenersGet().FirstOrDefault(L => L.Name == commands[2]);
                 if (listener == null || listener.Name != commands[2])
                 {
                     EliteConsole.PrintFormattedErrorLine("Invalid ListenerName: \"" + commands[2] + "\"");
                     menuItem.PrintInvalidOptionError(UserInput);
                     return;
                 }
                 launcher.ListenerId = listener.Id;
             }
             else if (commands[1].Equals("dotnetframeworkversion", StringComparison.OrdinalIgnoreCase))
             {
                 if (commands[2].Contains("35", StringComparison.OrdinalIgnoreCase) || commands[2].Contains("3.5", StringComparison.OrdinalIgnoreCase))
                 {
                     launcher.DotNetFrameworkVersion = DotNetVersion.Net35;
                 }
                 else if (commands[2].Contains("40", StringComparison.OrdinalIgnoreCase) || commands[2].Contains("4.0", StringComparison.OrdinalIgnoreCase))
                 {
                     launcher.DotNetFrameworkVersion = DotNetVersion.Net40;
                 }
                 else
                 {
                     EliteConsole.PrintFormattedErrorLine("Invalid DotNetFrameworkVersion \"" + commands[2] + "\". Valid options are: v3.5, v4.0");
                     menuItem.PrintInvalidOptionError(UserInput);
                     return;
                 }
             }
             else if (commands[1].Equals("commtype", StringComparison.OrdinalIgnoreCase))
             {
                 if (commands[2].Equals("smb", StringComparison.OrdinalIgnoreCase))
                 {
                     launcher.CommType = CommunicationType.SMB;
                 }
                 else
                 {
                     launcher.CommType = CommunicationType.HTTP;
                 }
             }
             else if (commands[1].Equals("validatecert", StringComparison.OrdinalIgnoreCase))
             {
                 bool parsed = bool.TryParse(commands[2], out bool validate);
                 if (parsed)
                 {
                     launcher.ValidateCert = validate;
                 }
                 else
                 {
                     menuItem.PrintInvalidOptionError(UserInput);
                     return;
                 }
             }
             else if (commands[1].Equals("usecertpinning", StringComparison.OrdinalIgnoreCase))
             {
                 bool parsed = bool.TryParse(commands[2], out bool pin);
                 if (parsed)
                 {
                     launcher.UseCertPinning = pin;
                 }
                 else
                 {
                     menuItem.PrintInvalidOptionError(UserInput);
                     return;
                 }
             }
             else if (commands[1].Equals("smbpipename", StringComparison.OrdinalIgnoreCase))
             {
                 launcher.SmbPipeName = commands[2];
             }
             else if (commands[1].Equals("delay", StringComparison.OrdinalIgnoreCase))
             {
                 int.TryParse(commands[2], out int n);
                 launcher.Delay = n;
             }
             else if (commands[1].Equals("jitterpercent", StringComparison.OrdinalIgnoreCase))
             {
                 int.TryParse(commands[2], out int n);
                 launcher.JitterPercent = n;
             }
             else if (commands[1].Equals("connectattempts", StringComparison.OrdinalIgnoreCase))
             {
                 int.TryParse(commands[2], out int n);
                 launcher.ConnectAttempts = n;
             }
             else if (commands[1].Equals("killdate", StringComparison.OrdinalIgnoreCase))
             {
                 DateTime.TryParse(commands[2], out DateTime result);
                 launcher.KillDate = result;
             }
             else if (commands[1].Equals("launcherstring", StringComparison.OrdinalIgnoreCase))
             {
                 launcher.LauncherString = commands[2];
             }
             await this.CovenantClient.ApiLaunchersInstallutilPutAsync(launcher);
         }
         else
         {
             menuItem.PrintInvalidOptionError(UserInput);
         }
     }
     catch (HttpOperationException e)
     {
         EliteConsole.PrintFormattedWarningLine("CovenantException: " + e.Response.Content);
     }
 }
コード例 #7
0
        public override void Command(MenuItem menuItem, string UserInput)
        {
            try
            {
                menuItem.Refresh();
                GruntTask task = ((TaskMenuItem)menuItem).Task;

                EliteConsoleMenu menu = new EliteConsoleMenu(EliteConsoleMenu.EliteConsoleMenuType.Parameter, "Task: " + task.Name)
                {
                    ShouldShortenFields = false
                };
                menu.Rows.Add(new List <string> {
                    "Name:", task.Name
                });
                menu.Rows.Add(new List <string> {
                    "Description:", task.Description
                });
                if (task.ReferenceAssemblies.Any())
                {
                    menu.Rows.Add(new List <string> {
                        "ReferenceAssemblies:", String.Join(",", task.ReferenceAssemblies)
                    });
                }
                if (task.ReferenceSourceLibraries.Any())
                {
                    menu.Rows.Add(new List <string> {
                        "ReferenceSourceLibraries:", String.Join(",", task.ReferenceSourceLibraries)
                    });
                }
                if (task.EmbeddedResources.Any())
                {
                    menu.Rows.Add(new List <string> {
                        "EmbeddedResources:", String.Join(",", task.EmbeddedResources)
                    });
                }
                // string usage = "Usage: " + task.Name;
                // foreach (GruntTaskOption o in task.Options)
                // {
                //     usage += " <" + o.Name.ToLower() + ">";
                // }
                // menu.Rows.Add(new List<string> { "Usage:", usage });
                if (task.Options.Any())
                {
                    foreach (GruntTaskOption o in task.Options)
                    {
                        menu.Rows.Add(new List <string> {
                            "Parameter:"
                        });
                        menu.Rows.Add(new List <string> {
                            "  Name:", o.Name
                        });
                        menu.Rows.Add(new List <string> {
                            "  Description:", o.Description
                        });
                        menu.Rows.Add(new List <string> {
                            "  Value:", o.Value
                        });
                    }
                }
                menu.Print();
            }
            catch (HttpOperationException e)
            {
                EliteConsole.PrintFormattedWarningLine("CovenantException: " + e.Response.Content);
            }
        }
コード例 #8
0
ファイル: MenuItem.cs プロジェクト: dash1b/Elite
 public void PrintInvalidOptionError(string UserInput)
 {
     EliteConsole.PrintFormattedErrorLine("Invalid option \"" + UserInput + "\" selected. Try \"help\" to see a list of valid options.");
 }
コード例 #9
0
ファイル: GruntsMenuItem.cs プロジェクト: dmsmith1991/Elite
        public override void Refresh()
        {
            try
            {
                this.Grunts = this.CovenantClient.ApiGruntsGet().ToList();
            }
            catch (HttpOperationException e)
            {
                EliteConsole.PrintFormattedWarningLine("CovenantException: " + e.Response.Content);
            }
            List <MenuCommandParameterValue> gruntNames = Grunts.Where(G => G.Status != GruntStatus.Uninitialized)
                                                          .Select(G => new MenuCommandParameterValue {
                Value = G.Name
            }).ToList();
            List <MenuCommandParameterValue> killableGruntNames = Grunts.Where(G => G.Status != GruntStatus.Uninitialized && G.Status != GruntStatus.Killed)
                                                                  .Select(G => new MenuCommandParameterValue {
                Value = G.Name
            }).ToList();

            this.MenuOptions.FirstOrDefault(M => M.MenuTitle == "Interact")
            .MenuItemParameters.FirstOrDefault(P => P.Name == "Grunt Name").Values = gruntNames;

            this.AdditionalOptions.FirstOrDefault(AO => AO.Name == "Rename")
            .Parameters.FirstOrDefault(P => P.Name == "Old Name").Values = gruntNames;

            this.AdditionalOptions.FirstOrDefault(O => O.Name == "Delay")
            .Parameters.FirstOrDefault(P => P.Name == "Grunt Name").Values =
                gruntNames.AsEnumerable()
                .Append(new MenuCommandParameterValue {
                Value = "all"
            })
                .ToList();

            this.AdditionalOptions.FirstOrDefault(O => O.Name == "Kill")
            .Parameters.FirstOrDefault(P => P.Name == "Grunt Name").Values =
                killableGruntNames.AsEnumerable()
                .Append(new MenuCommandParameterValue {
                Value = "all"
            })
                .ToList();

            this.AdditionalOptions.FirstOrDefault(AO => AO.Name == "Hide")
            .Parameters.FirstOrDefault(P => P.Name == "Grunt Name").Values =
                gruntNames.Where(GN => !this.HiddenGruntNames.Contains(GN.Value))
                .Append(new MenuCommandParameterValue {
                Value = "all"
            })
                .ToList();

            this.AdditionalOptions.FirstOrDefault(AO => AO.Name == "Unhide")
            .Parameters.FirstOrDefault(P => P.Name == "Hidden Grunt Name").Values =
                this.HiddenGruntNames
                .Select(G => new MenuCommandParameterValue {
                Value = G
            })
                .Append(new MenuCommandParameterValue {
                Value = "all"
            })
                .ToList();

            this.SetupMenuAutoComplete();
        }
コード例 #10
0
ファイル: GruntsMenuItem.cs プロジェクト: dmsmith1991/Elite
        public override async void Command(MenuItem menuItem, string UserInput)
        {
            GruntsMenuItem gruntsMenuItem = (GruntsMenuItem)menuItem;

            string[] commands = UserInput.Split(" ");
            if (commands.Length != 2 || !commands[0].Equals("kill", StringComparison.OrdinalIgnoreCase))
            {
                menuItem.PrintInvalidOptionError(UserInput);
                return;
            }
            if (commands[1].Equals("all", StringComparison.OrdinalIgnoreCase))
            {
                EliteConsole.PrintFormattedWarning("Kill all Grunts? [y/N] ");
                string input1 = EliteConsole.Read();
                if (!input1.StartsWith("y", StringComparison.OrdinalIgnoreCase))
                {
                    return;
                }
                foreach (Grunt g in gruntsMenuItem.Grunts)
                {
                    GruntTasking gt = new GruntTasking
                    {
                        Id             = 0,
                        GruntId        = g.Id,
                        TaskId         = 1,
                        Name           = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10),
                        Status         = GruntTaskingStatus.Uninitialized,
                        Type           = GruntTaskingType.Kill,
                        TaskingCommand = UserInput,
                        TokenTask      = false
                    };
                    try
                    {
                        await this.CovenantClient.ApiGruntsByIdTaskingsPostAsync(g.Id ?? default, gt);
                    }
                    catch (HttpOperationException e)
                    {
                        EliteConsole.PrintFormattedWarningLine("CovenantException: " + e.Response.Content);
                    }
                }
                return;
            }
            Grunt grunt = gruntsMenuItem.Grunts.FirstOrDefault(G => G.Name == commands[1]);

            if (grunt == null)
            {
                EliteConsole.PrintFormattedErrorLine("Invalid GruntName: \"" + commands[1] + "\"");
                menuItem.PrintInvalidOptionError(UserInput);
                return;
            }
            EliteConsole.PrintFormattedWarning("Kill Grunt: " + commands[1] + "? [y/N] ");
            string input2 = EliteConsole.Read();

            if (!input2.StartsWith("y", StringComparison.OrdinalIgnoreCase))
            {
                return;
            }
            GruntTasking gruntTasking = new GruntTasking
            {
                Id             = 0,
                GruntId        = grunt.Id,
                TaskId         = 1,
                Name           = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10),
                Status         = GruntTaskingStatus.Uninitialized,
                Type           = GruntTaskingType.Kill,
                TaskingCommand = UserInput,
                TokenTask      = false
            };

            try
            {
                await this.CovenantClient.ApiGruntsByIdTaskingsPostAsync(grunt.Id ?? default, gruntTasking);
            }
            catch (HttpOperationException e)
            {
                EliteConsole.PrintFormattedWarningLine("CovenantException: " + e.Response.Content);
            }
        }
コード例 #11
0
        public bool PrintMenu(string UserInput = "")
        {
            try
            {
                UserInput = UserInput.Trim();
                if (UserInput != "")
                {
                    MenuItem currentMenuItem = this.GetCurrentMenuItem();
                    if (UserInput.Equals("back", StringComparison.OrdinalIgnoreCase))
                    {
                        if (this.MenuStack.Count > 1)
                        {
                            currentMenuItem.LeavingMenuItem();
                            this.MenuStack.RemoveAt(this.MenuStack.Count - 1);
                            currentMenuItem = this.GetCurrentMenuItem();
                            currentMenuItem.ValidateMenuParameters(new string[] {}, false);
                        }
                        else
                        {
                            currentMenuItem.PrintInvalidOptionError(UserInput);
                        }
                    }
                    else if (UserInput.Equals("exit", StringComparison.OrdinalIgnoreCase))
                    {
                        EliteConsole.PrintFormattedWarning("Exit Elite console? [y/N] ");
                        string input = EliteConsole.Read();
                        if (input.StartsWith("y", StringComparison.OrdinalIgnoreCase))
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        MenuItem newMenuLevelItem = currentMenuItem.GetMenuOption(UserInput);
                        if (newMenuLevelItem != null)
                        {
                            this.MenuStack.Add(newMenuLevelItem);
                            newMenuLevelItem.PrintMenu();
                        }
                        else
                        {
                            MenuCommand menuCommandOption = currentMenuItem.GetMenuCommandOption(UserInput);
                            if (menuCommandOption != null)
                            {
                                menuCommandOption.Command(currentMenuItem, UserInput);
                            }
                            else
                            {
                                currentMenuItem.PrintInvalidOptionError(UserInput);
                            }
                        }
                    }
                    currentMenuItem = this.GetCurrentMenuItem();
                    ReadLine.AutoCompletionHandler = currentMenuItem.TabCompletionHandler;
                }
                this.PrintMenuLevel();

                return(true);
            }
            catch (HttpRequestException)
            {
                EliteConsole.PrintFormattedWarning("Covenant has disconnected. Quit? [y/N] ");
                string input = EliteConsole.Read();
                if (input.ToLower().StartsWith('y'))
                {
                    return(false);
                }
            }
            catch (Exception e)
            {
                EliteConsole.PrintFormattedErrorLine("EliteMenu Exception: " + e.Message);
                EliteConsole.PrintErrorLine(e.StackTrace);
                this.PrintMenuLevel();
                return(true);
            }
            this.PrintMenuLevel();
            return(true);
        }