source: binary-improvements/MapRendering/Web/API/ExecuteConsoleCommand.cs@ 336

Last change on this file since 336 was 325, checked in by alloc, 6 years ago

Code style cleanup (mostly whitespace changes, enforcing braces, using cleanup)

File size: 1.7 KB
Line 
1using System;
2using System.Net;
3
4namespace AllocsFixes.NetConnections.Servers.Web.API {
5 public class ExecuteConsoleCommand : WebAPI {
6 public override void HandleRequest (HttpListenerRequest req, HttpListenerResponse resp, WebConnection user,
7 int permissionLevel) {
8 if (string.IsNullOrEmpty (req.QueryString ["command"])) {
9 resp.StatusCode = (int) HttpStatusCode.BadRequest;
10 Web.SetResponseTextContent (resp, "No command given");
11 return;
12 }
13
14 WebCommandResult.ResultType responseType =
15 req.QueryString ["raw"] != null
16 ? WebCommandResult.ResultType.Raw
17 : (req.QueryString ["simple"] != null
18 ? WebCommandResult.ResultType.ResultOnly
19 : WebCommandResult.ResultType.Full);
20
21 string commandline = req.QueryString ["command"];
22 string commandPart = commandline.Split (' ') [0];
23 string argumentsPart = commandline.Substring (Math.Min (commandline.Length, commandPart.Length + 1));
24
25 IConsoleCommand command = SdtdConsole.Instance.GetCommand (commandline);
26
27 if (command == null) {
28 resp.StatusCode = (int) HttpStatusCode.NotImplemented;
29 Web.SetResponseTextContent (resp, "Unknown command");
30 return;
31 }
32
33 AdminToolsCommandPermissions atcp =
34 GameManager.Instance.adminTools.GetAdminToolsCommandPermission (command.GetCommands ());
35
36 if (permissionLevel > atcp.PermissionLevel) {
37 resp.StatusCode = (int) HttpStatusCode.Forbidden;
38 Web.SetResponseTextContent (resp, "You are not allowed to execute this command");
39 return;
40 }
41
42 resp.SendChunked = true;
43 WebCommandResult wcr = new WebCommandResult (commandPart, argumentsPart, responseType, resp);
44 SdtdConsole.Instance.ExecuteAsync (commandline, wcr);
45 }
46
47 public override int DefaultPermissionLevel () {
48 return 2000;
49 }
50 }
51}
Note: See TracBrowser for help on using the repository browser.