Ignore:
Timestamp:
Jun 19, 2016, 1:52:31 PM (9 years ago)
Author:
alloc
Message:

Mod stuff

Location:
binary-improvements/MapRendering
Files:
4 added
10 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/MapRendering/Commands/webstat.cs

    r230 r279  
    1919                {
    2020                        try {
    21                                 SdtdConsole.Instance.Output ("Current handlers: " + AllocsFixes.NetConnections.Servers.Web.Web.currentHandlers + " - total: " + AllocsFixes.NetConnections.Servers.Web.Web.handlingCount);
     21                                int curHandlers = AllocsFixes.NetConnections.Servers.Web.Web.currentHandlers;
     22                                int totalHandlers = AllocsFixes.NetConnections.Servers.Web.Web.handlingCount;
     23                                long totalTime = AllocsFixes.NetConnections.Servers.Web.Web.totalHandlingTime;
     24                                SdtdConsole.Instance.Output ("Current Web handlers: " + curHandlers + " - total: " + totalHandlers);
     25                                SdtdConsole.Instance.Output (" - Total time: " + totalTime + " µs - average time: " + (totalTime / totalHandlers) + " µs");
     26
     27                                curHandlers = AllocsFixes.NetConnections.Servers.Web.WebCommandResult.currentHandlers;
     28                                totalHandlers = AllocsFixes.NetConnections.Servers.Web.WebCommandResult.handlingCount;
     29                                totalTime = AllocsFixes.NetConnections.Servers.Web.WebCommandResult.totalHandlingTime;
     30                                SdtdConsole.Instance.Output ("Current Web command handlers: " + curHandlers + " - total: " + totalHandlers);
     31                                SdtdConsole.Instance.Output (" - Total time: " + totalTime + " µs" + (totalHandlers > 0 ? " - average time: " + (totalTime / totalHandlers) + " µs" : ""));
    2232                        } catch (Exception e) {
    2333                                Log.Out ("Error in webstat.Run: " + e);
  • binary-improvements/MapRendering/Web/API/ExecuteConsoleCommand.cs

    r245 r279  
    1616                        }
    1717
    18                         string commandName = req.QueryString ["command"];
     18                        string commandline = req.QueryString ["command"];
     19                        string commandPart = commandline.Split (' ') [0];
     20                        string argumentsPart = commandline.Substring (Math.Min (commandline.Length, commandPart.Length + 1));
    1921
    20                         IConsoleCommand command = SdtdConsole.Instance.GetCommand (commandName);
     22                        IConsoleCommand command = SdtdConsole.Instance.GetCommand (commandline);
    2123
    2224                        if (command == null) {
     
    3638                        // TODO: Execute command (store resp as IConsoleConnection instance to deliver response to the single client?)
    3739
    38 //                      JSONObject result = new JSONObject ();
    39 //                      result.Add ("claimsize", new JSONNumber (GamePrefs.GetInt (EnumGamePrefs.LandClaimSize)));
    40 //
    41 //                      JSONArray claimOwners = new JSONArray ();
    42 //                      result.Add ("claimowners", claimOwners);
    43 //
    44 //                      Dictionary<Vector3i, PersistentPlayerData> d = GameManager.Instance.GetPersistentPlayerList ().m_lpBlockMap;
    45 //                      if (d != null) {
    46 //                              World w = GameManager.Instance.World;
    47 //                              Dictionary<PersistentPlayerData, List<Vector3i>> owners = new Dictionary<PersistentPlayerData, List<Vector3i>> ();
    48 //                              foreach (KeyValuePair<Vector3i, PersistentPlayerData> kvp in d) {
    49 //                                      if (steamid.Length == 0 || kvp.Value.PlayerId.Equals (steamid)) {
    50 //                                              if (!owners.ContainsKey (kvp.Value)) {
    51 //                                                      owners.Add (kvp.Value, new List<Vector3i> ());
    52 //                                              }
    53 //                                              owners [kvp.Value].Add (kvp.Key);
    54 //                                      }
    55 //                              }
    56 //
    57 //                              foreach (KeyValuePair<PersistentPlayerData, List<Vector3i>> kvp in owners) {
    58 //                                      if (steamid.Length == 0 || kvp.Key.PlayerId.Equals (steamid)) {
    59 //                                              string curID = kvp.Key.PlayerId;
    60 //                                              bool isActive = w.IsLandProtectionValidForPlayer (kvp.Key);
    61 //
    62 //                                              JSONObject owner = new JSONObject ();
    63 //                                              claimOwners.Add (owner);
    64 //
    65 //                                              owner.Add ("steamid", new JSONString (curID));
    66 //                                              owner.Add ("claimactive", new JSONBoolean (isActive));
    67 //
    68 //                                              JSONArray claims = new JSONArray ();
    69 //                                              owner.Add ("claims", claims);
    70 //
    71 //                                              foreach (Vector3i v in kvp.Value) {
    72 //                                                      JSONObject claim = new JSONObject ();
    73 //                                                      claim.Add ("x", new JSONNumber (v.x));
    74 //                                                      claim.Add ("y", new JSONNumber (v.y));
    75 //                                                      claim.Add ("z", new JSONNumber (v.z));
    76 //
    77 //                                                      claims.Add (claim);
    78 //                                              }
    79 //                                      }
    80 //                              }
    81 //                      }
    82 //
    83 //                      WriteJSON (resp, result);
     40                        resp.SendChunked = true;
     41                        WebCommandResult wcr = new WebCommandResult (commandPart, argumentsPart, resp);
     42                        SdtdConsole.Instance.ExecuteAsync (commandline, wcr);
     43                }
     44
     45                public override int DefaultPermissionLevel () {
     46                        return 2000;
    8447                }
    8548        }
  • binary-improvements/MapRendering/Web/API/GetStats.cs

    r251 r279  
    2626                        WriteJSON (resp, result);
    2727                }
     28
     29                public override int DefaultPermissionLevel () {
     30                        return 2000;
     31                }
    2832        }
    2933}
  • binary-improvements/MapRendering/Web/API/GetWebUIUpdates.cs

    r251 r279  
    3131                        WriteJSON (resp, result);
    3232                }
     33
     34                public override int DefaultPermissionLevel () {
     35                        return 2000;
     36                }
    3337        }
    3438}
  • binary-improvements/MapRendering/Web/API/WebAPI.cs

    r244 r279  
    1717
    1818                public abstract void HandleRequest (HttpListenerRequest req, HttpListenerResponse resp, WebConnection user, int permissionLevel);
     19
     20                public virtual int DefaultPermissionLevel () {
     21                        return 0;
     22                }
    1923        }
    2024}
  • binary-improvements/MapRendering/Web/Handlers/ApiHandler.cs

    r251 r279  
    4040                private void addApi (string _apiName, WebAPI _api) {
    4141                        apis.Add (_apiName, _api);
    42                         WebPermissions.Instance.AddKnownModule ("webapi." + _apiName);
     42                        WebPermissions.Instance.AddKnownModule ("webapi." + _apiName, _api.DefaultPermissionLevel ());
    4343                }
    4444
  • binary-improvements/MapRendering/Web/Handlers/PathHandler.cs

    r244 r279  
    1111                }
    1212
    13                 protected PathHandler (string _moduleName) {
     13                protected PathHandler (string _moduleName, int _defaultPermissionLevel = 0) {
    1414                        this.moduleName = _moduleName;
    15                         WebPermissions.Instance.AddKnownModule (_moduleName);
     15                        WebPermissions.Instance.AddKnownModule (_moduleName, _defaultPermissionLevel);
    1616                }
    1717
  • binary-improvements/MapRendering/Web/Web.cs

    r250 r279  
    2020                public static int handlingCount = 0;
    2121                public static int currentHandlers = 0;
     22                public static long totalHandlingTime = 0;
    2223                private string dataFolder;
    2324                private bool useStaticCache = false;
     
    131132                                Interlocked.Increment (ref handlingCount);
    132133                                Interlocked.Increment (ref currentHandlers);
     134                                MicroStopwatch msw = new MicroStopwatch ();
    133135                                HttpListenerContext ctx = _listener.EndGetContext (result);
    134136                                _listener.BeginGetContext (new AsyncCallback (HandleRequest), _listener);
     
    136138                                        HttpListenerRequest request = ctx.Request;
    137139                                        HttpListenerResponse response = ctx.Response;
     140                                        response.SendChunked = false;
    138141
    139142                                        response.ProtocolVersion = new Version ("1.1");
     
    187190                                        Log.Out ("Error in Web.HandleRequest(): " + e);
    188191                                } finally {
    189                                         if (ctx != null) {
     192                                        if (ctx != null && !ctx.Response.SendChunked) {
    190193                                                ctx.Response.Close ();
    191194                                        }
     195                                        msw.Stop ();
     196                                        totalHandlingTime += msw.ElapsedMicroseconds;
     197                                        Log.Out ("Web.HandleRequest(): Took {0} µs", msw.ElapsedMicroseconds);
    192198                                        Interlocked.Decrement (ref currentHandlers);
    193199                                }
  • binary-improvements/MapRendering/Web/WebPermissions.cs

    r253 r279  
    9696                }
    9797
    98                 public void AddKnownModule (string _module) {
     98                public void AddKnownModule (string _module, int _defaultPermission) {
    9999                        if (!string.IsNullOrEmpty (_module)) {
    100100                                lock (this) {
    101101                    if (!IsKnownModule( _module)) {
    102                                             knownModules.Add (_module, new WebModulePermission (_module, 0));
     102                                                knownModules.Add (_module, new WebModulePermission (_module, _defaultPermission));
    103103                    }
     104                                        if (_defaultPermission > 0 && !modules.ContainsKey (_module.ToLower ())) {
     105                                                AddModulePermission (_module, _defaultPermission);
     106                                        }
    104107                                }
    105108                        }
  • binary-improvements/MapRendering/WebAndMapRendering.csproj

    r277 r279  
    8686    <Compile Include="Web\API\GetWebUIUpdates.cs" />
    8787    <Compile Include="Web\API\GetServerInfo.cs" />
     88    <Compile Include="Web\API\GetPlayerList.cs" />
     89    <Compile Include="Web\WebCommandResult.cs" />
     90    <Compile Include="Web\API\GetAllowedCommands.cs" />
    8891  </ItemGroup>
    8992  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Note: See TracChangeset for help on using the changeset viewer.