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

Last change on this file since 310 was 306, checked in by alloc, 7 years ago

Fixes update A16.2

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