Changeset 412


Ignore:
Timestamp:
Feb 22, 2023, 5:55:51 PM (21 months ago)
Author:
alloc
Message:

Web base class updates for vanilla changes for direct integration with new GamePrefs

File:
1 edited

Legend:

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

    r404 r412  
    2121                private readonly List<AbsHandler> handlers = new List<AbsHandler> ();
    2222                public readonly List<WebMod> webMods = new List<WebMod> ();
    23                 private readonly ConnectionHandler connectionHandler;
     23                public readonly ConnectionHandler ConnectionHandler;
    2424
    2525                private readonly HttpListener listener = new HttpListener ();
     
    3030                public Web (string _modInstancePath) {
    3131                        try {
    32                                 int webPort = GamePrefs.GetInt (EnumUtils.Parse<EnumGamePrefs> (nameof (EnumGamePrefs.ControlPanelPort)));
     32                                bool dashboardEnabled = GamePrefs.GetBool (EnumUtils.Parse<EnumGamePrefs> (nameof (EnumGamePrefs.WebDashboardEnabled)));
     33                                if (!dashboardEnabled) {
     34                                        Log.Out ($"[Web] Webserver not started, {nameof (EnumGamePrefs.WebDashboardEnabled)} set to false");
     35                                        return;
     36                                }
     37                               
     38                                int webPort = GamePrefs.GetInt (EnumUtils.Parse<EnumGamePrefs> (nameof (EnumGamePrefs.WebDashboardPort)));
    3339                                if (webPort < 1 || webPort > 65533) {
    34                                         Log.Out ("[Web] Webserver not started (ControlPanelPort not within 1-65533)");
    35                                         return;
    36                                 }
    37 
    38                                 // TODO: Remove once this becomes the default control panel
    39                                 webPort += 2;
     40                                        Log.Out ($"[Web] Webserver not started ({nameof (EnumGamePrefs.WebDashboardPort)} not within 1-65535)");
     41                                        return;
     42                                }
    4043
    4144                                if (!HttpListener.IsSupported) {
     
    4447                                }
    4548
     49                                if (string.IsNullOrEmpty (GamePrefs.GetString (EnumUtils.Parse<EnumGamePrefs> (nameof (EnumGamePrefs.WebDashboardUrl))))) {
     50                                        Log.Warning ($"[Web] {nameof (EnumGamePrefs.WebDashboardUrl)} not set. Recommended to set it to the public URL pointing to your dashboard / reverse proxy");
     51                                }
     52
    4653                                // TODO: Read from config
    47                                 bool useStaticCache = false;
     54                                bool useCacheForStatic = StringParsers.ParseBool ("false");
    4855
    4956                                string webfilesFolder = DetectWebserverFolder (_modInstancePath);
    50                                 string webfilesFolderLegacy = $"{_modInstancePath}/weblegacy";
    51 
    52                                 connectionHandler = new ConnectionHandler ();
     57
     58                                ConnectionHandler = new ConnectionHandler ();
    5359                               
    5460                                RegisterPathHandler ("/", new RewriteHandler ("/files/"));
     
    5763                                RegisterPathHandler ("/app", new RewriteHandler ("/files/index.html", true));
    5864                               
    59                                 // Legacy web page
    60                                 RegisterPathHandler ("/weblegacy", new StaticHandler (
    61                                         webfilesFolderLegacy,
    62                                         useStaticCache ? new SimpleCache () : new DirectAccess (),
    63                                         false)
    64                                 );
    65                                
    6665                                // Do mods relatively early as they should not be requested a lot, unlike the later registrations, especially for API and map tiles
    67                                 RegisterWebMods (useStaticCache);
    68 
    69                                 RegisterPathHandler ("/session/", new SessionHandler (connectionHandler));
     66                                RegisterWebMods (useCacheForStatic);
     67
     68                                RegisterPathHandler ("/session/", new SessionHandler (ConnectionHandler));
    7069                                RegisterPathHandler ("/userstatus", new UserStatusHandler ());
    7170                                RegisterPathHandler ("/sse/", new SseHandler ());
    7271                                RegisterPathHandler ("/files/", new StaticHandler (
    7372                                        webfilesFolder,
    74                                         useStaticCache ? new SimpleCache () : new DirectAccess (),
     73                                        useCacheForStatic ? new SimpleCache () : new DirectAccess (),
    7574                                        false)
    7675                                );
     
    8281
    8382                                listener.Prefixes.Add ($"http://+:{webPort}/");
    84                                 // listener.Prefixes.Add ($"http://[::1]:{webPort}/");
    8583                                listener.Start ();
    8684                                handleRequestDelegate = HandleRequest;
     
    163161
    164162                public void SendLine (string _line) {
    165                         connectionHandler.SendLine (_line);
     163                        ConnectionHandler.SendLine (_line);
    166164                }
    167165
     
    299297                       
    300298                        if (!string.IsNullOrEmpty (sessionId)) {
    301                                 _con = connectionHandler.IsLoggedIn (sessionId, reqRemoteEndPoint.Address);
     299                                _con = ConnectionHandler.IsLoggedIn (sessionId, reqRemoteEndPoint.Address);
    302300                                if (_con != null) {
    303301                                        int level1 = GameManager.Instance.adminTools.Users.GetUserPermissionLevel (_con.UserId);
Note: See TracChangeset for help on using the changeset viewer.