Ignore:
Timestamp:
Feb 16, 2023, 3:50:53 PM (21 months ago)
Author:
alloc
Message:

Latest state including reworking to the permissions system

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements2/WebServer/src/Web.cs

    r402 r404  
    66using UnityEngine;
    77using Webserver.FileCache;
     8using Webserver.Permissions;
    89using Webserver.UrlHandlers;
    910using Cookie = System.Net.Cookie;
     
    2526                private readonly Version httpProtocolVersion = new Version(1, 1);
    2627
     28                private readonly AsyncCallback handleRequestDelegate;
     29
    2730                public Web (string _modInstancePath) {
    2831                        try {
     
    8184                                // listener.Prefixes.Add ($"http://[::1]:{webPort}/");
    8285                                listener.Start ();
    83                                 listener.BeginGetContext (HandleRequest, listener);
     86                                handleRequestDelegate = HandleRequest;
     87                                listener.BeginGetContext (handleRequestDelegate, listener);
    8488
    8589                                SdtdConsole.Instance.RegisterServer (this);
     
    250254#if ENABLE_PROFILER
    251255                        } finally {
    252                                 listenerInstance.BeginGetContext (HandleRequest, listenerInstance);
     256                                listenerInstance.BeginGetContext (handleRequestDelegate, listenerInstance);
    253257                                UnityEngine.Profiling.Profiler.EndThreadProfiling ();
    254258                        }
     
    297301                                _con = connectionHandler.IsLoggedIn (sessionId, reqRemoteEndPoint.Address);
    298302                                if (_con != null) {
    299                                         return GameManager.Instance.adminTools.GetUserPermissionLevel (_con.UserId);
    300                                 }
    301                         }
    302 
    303                         if (_req.QueryString ["adminuser"] == null || _req.QueryString ["admintoken"] == null) {
     303                                        int level1 = GameManager.Instance.adminTools.Users.GetUserPermissionLevel (_con.UserId);
     304                                        int level2 = int.MaxValue;
     305                                        if (_con.CrossplatformUserId != null) {
     306                                                level2 = GameManager.Instance.adminTools.Users.GetUserPermissionLevel (_con.CrossplatformUserId);
     307                                        }
     308
     309                                        return Math.Min (level1, level2);
     310                                }
     311                        }
     312
     313                        if (!_req.Headers.TryGetValue ("X-SDTD-API-TOKENNAME", out string apiTokenName) ||
     314                            !_req.Headers.TryGetValue ("X-SDTD-API-SECRET", out string apiTokenSecret)) {
    304315                                return guestPermissionLevel;
    305316                        }
    306317
    307                         WebPermissions.AdminToken admin = WebPermissions.Instance.GetWebAdmin (_req.QueryString ["adminuser"],
    308                                 _req.QueryString ["admintoken"]);
    309                         if (admin != null) {
    310                                 return admin.permissionLevel;
     318                        int adminLevel = AdminApiTokens.Instance.GetPermissionLevel (apiTokenName, apiTokenSecret);
     319                        if (adminLevel < int.MaxValue) {
     320                                return adminLevel;
    311321                        }
    312322
Note: See TracChangeset for help on using the changeset viewer.