Ignore:
Timestamp:
Apr 24, 2023, 2:40:34 PM (19 months ago)
Author:
alloc
Message:

*Updated web permissions system
*Fixed webpermissions command
*Moved API "webmods" to "mods", also lists non-webmod mods

File:
1 edited

Legend:

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

    r415 r426  
    1616                public static event Action<Web> ServerInitialized;
    1717               
    18                 private const int guestPermissionLevel = 2000;
    1918                private const string indexPageUrl = "/app";
    2019               
     
    5150                                }
    5251
    53                                 // TODO: Read from config
    54                                 bool useCacheForStatic = StringParsers.ParseBool ("false");
    55 
    56                                 string webfilesFolder = DetectWebserverFolder (_modInstancePath);
    57 
    5852                                ConnectionHandler = new ConnectionHandler ();
    5953                               
    60                                 RegisterPathHandler ("/", new RewriteHandler ("/files/"));
    61 
    62                                 // React virtual routing
    63                                 RegisterPathHandler ("/app", new RewriteHandler ("/files/index.html", true));
    64                                
    65                                 // Do mods relatively early as they should not be requested a lot, unlike the later registrations, especially for API and map tiles
    66                                 RegisterWebMods (useCacheForStatic);
    67 
    68                                 RegisterPathHandler ("/session/", new SessionHandler (ConnectionHandler));
    69                                 RegisterPathHandler ("/userstatus", new UserStatusHandler ());
    70                                 RegisterPathHandler ("/sse/", new SseHandler ());
    71                                 RegisterPathHandler ("/files/", new StaticHandler (
    72                                         webfilesFolder,
    73                                         useCacheForStatic ? new SimpleCache () : new DirectAccess (),
    74                                         false)
    75                                 );
    76                                 RegisterPathHandler ("/itemicons/", new ItemIconHandler (true));
    77                                 RegisterPathHandler ("/api/", new ApiHandler ());
     54                                RegisterDefaultHandlers (_modInstancePath);
    7855                               
    7956                                // Allow other code to add their stuff
     
    9471                }
    9572
     73                private void RegisterDefaultHandlers (string _modInstancePath) {
     74                        // TODO: Read from config
     75                        bool useCacheForStatic = StringParsers.ParseBool ("false");
     76
     77                        string webfilesFolder = DetectWebserverFolder (_modInstancePath);
     78
     79                        RegisterPathHandler ("/", new RewriteHandler ("/files/"));
     80
     81                        // React virtual routing
     82                        RegisterPathHandler ("/app", new RewriteHandler ("/files/index.html", true));
     83                               
     84                        // Do mods relatively early as they should not be requested a lot, unlike the later registrations, especially for API and map tiles
     85                        RegisterWebMods (useCacheForStatic);
     86
     87                        RegisterPathHandler ("/session/", new SessionHandler (ConnectionHandler));
     88                        RegisterPathHandler ("/userstatus", new UserStatusHandler ());
     89                        RegisterPathHandler ("/sse/", new SseHandler ());
     90                        RegisterPathHandler ("/files/", new StaticHandler (
     91                                webfilesFolder,
     92                                useCacheForStatic ? new SimpleCache () : new DirectAccess (),
     93                                false)
     94                        );
     95                        RegisterPathHandler ("/itemicons/", new ItemIconHandler (true));
     96                        RegisterPathHandler ("/api/", new ApiHandler ());
     97                }
     98
    9699                private static string DetectWebserverFolder (string _modInstancePath) {
    97100                        string webserverFolder = $"{_modInstancePath}/webserver";
     
    127130                        foreach (Mod mod in ModManager.GetLoadedMods ()) {
    128131                                try {
    129                                         string webModPath = $"{mod.Path}/WebMod";
    130                                         if (!Directory.Exists (webModPath)) {
    131                                                 continue;
    132                                         }
    133 
    134132                                        try {
    135133                                                WebMod webMod = new WebMod (this, mod, _useStaticCache);
     
    298296                        if (reqRemoteEndPoint == null) {
    299297                                Log.Warning ("[Web] No RemoteEndPoint on web request");
    300                                 return guestPermissionLevel;
     298                                return AdminWebModules.PermissionLevelGuest;
    301299                        }
    302300                       
     
    316314                        if (!_req.Headers.TryGetValue ("X-SDTD-API-TOKENNAME", out string apiTokenName) ||
    317315                            !_req.Headers.TryGetValue ("X-SDTD-API-SECRET", out string apiTokenSecret)) {
    318                                 return guestPermissionLevel;
     316                                return AdminWebModules.PermissionLevelGuest;
    319317                        }
    320318
     
    326324                        Log.Warning ($"[Web] Invalid Admintoken used from {reqRemoteEndPoint}");
    327325
    328                         return guestPermissionLevel;
     326                        return AdminWebModules.PermissionLevelGuest;
    329327                }
    330328        }
Note: See TracChangeset for help on using the changeset viewer.