Changeset 398


Ignore:
Timestamp:
Aug 14, 2022, 8:12:46 PM (2 years ago)
Author:
alloc
Message:

Added detection of "webserver" folder in mods, last mod with such a folder is being used to serve "/files"

File:
1 edited

Legend:

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

    r394 r398  
    2828                                int webPort = GamePrefs.GetInt (EnumUtils.Parse<EnumGamePrefs> ("ControlPanelPort"));
    2929                                if (webPort < 1 || webPort > 65533) {
    30                                         Log.Out ("Webserver not started (ControlPanelPort not within 1-65533)");
     30                                        Log.Out ("[Web] Webserver not started (ControlPanelPort not within 1-65533)");
    3131                                        return;
    3232                                }
     
    3636
    3737                                if (!HttpListener.IsSupported) {
    38                                         Log.Out ("Webserver not started (needs Windows XP SP2, Server 2003 or later or Mono)");
     38                                        Log.Out ("[Web] Webserver not started (HttpListener.IsSupported returned false)");
    3939                                        return;
    4040                                }
     
    4343                                bool useStaticCache = false;
    4444
    45                                 string webfilesFolder = _modInstancePath + "/webserver";
     45                                string webfilesFolder = DetectWebserverFolder (_modInstancePath);
    4646                                string webfilesFolderLegacy = _modInstancePath + "/weblegacy";
    4747
     
    8787                                SdtdConsole.Instance.RegisterServer (this);
    8888
    89                                 Log.Out ("Started Webserver on " + webPort);
     89                                Log.Out ("[Web] Started Webserver on port " + webPort);
    9090                        } catch (Exception e) {
    91                                 Log.Error ("Error in Web.ctor: ");
     91                                Log.Error ("[Web] Error in Web.ctor: ");
    9292                                Log.Exception (e);
    9393                        }
     94                }
     95
     96                private static string DetectWebserverFolder (string _modInstancePath) {
     97                        string webserverFolder = _modInstancePath + "/webserver";
     98
     99                        foreach (Mod mod in ModManager.GetLoadedMods ()) {
     100                                string modServerFolder = mod.Path + "/webserver";
     101                               
     102                                if (Directory.Exists (modServerFolder)) {
     103                                        webserverFolder = modServerFolder;
     104                                }
     105                        }
     106                       
     107                        Log.Out ($"[Web] Serving basic webserver files from {webserverFolder}");
     108
     109                        return webserverFolder;
    94110                }
    95111
     
    100116                                }
    101117
    102                                 Log.Error ($"Web: Handler for relative path {_urlBasePath} already registerd.");
     118                                Log.Error ($"[Web] Handler for relative path {_urlBasePath} already registerd.");
    103119                                return;
    104120                        }
     
    120136                                                webMods.Add (webMod);
    121137                                        } catch (InvalidDataException e) {
    122                                                 Log.Error ($"Could not load webmod from mod {mod.ModInfo.Name.Value}: {e.Message}");
     138                                                Log.Error ($"[Web] Could not load webmod from mod {mod.ModInfo.Name.Value}: {e.Message}");
    123139                                        }
    124140                                } catch (Exception e) {
    125                                         Log.Error ("Failed loading web mods from mod " + mod.ModInfo.Name.Value);
     141                                        Log.Error ("[Web] Failed loading web mods from mod " + mod.ModInfo.Name.Value);
    126142                                        Log.Exception (e);
    127143                                }
     
    134150                                listener.Close ();
    135151                        } catch (Exception e) {
    136                                 Log.Out ("Error in Web.Disconnect: " + e);
     152                                Log.Out ("[Web] Error in Web.Disconnect: " + e);
    137153                        }
    138154                }
     
    222238                        } catch (IOException e) {
    223239                                if (e.InnerException is SocketException) {
    224                                         Log.Out ("Error in Web.HandleRequest(): Remote host closed connection: " + e.InnerException.Message);
     240                                        Log.Out ("[Web] Error in Web.HandleRequest(): Remote host closed connection: " + e.InnerException.Message);
    225241                                } else {
    226                                         Log.Out ("Error (IO) in Web.HandleRequest(): " + e);
     242                                        Log.Out ("[Web] Error (IO) in Web.HandleRequest(): " + e);
    227243                                }
    228244                        } catch (Exception e) {
    229                                 Log.Error ("Error in Web.HandleRequest(): ");
     245                                Log.Error ("[Web] Error in Web.HandleRequest(): ");
    230246                                Log.Exception (e);
    231247                        } finally {
     
    276292                        IPEndPoint reqRemoteEndPoint = _req.RemoteEndPoint;
    277293                        if (reqRemoteEndPoint == null) {
    278                                 Log.Warning ("No RemoteEndPoint on web request");
     294                                Log.Warning ("[Web] No RemoteEndPoint on web request");
    279295                                return guestPermissionLevel;
    280296                        }
     
    297313                        }
    298314
    299                         Log.Warning ("Invalid Admintoken used from " + reqRemoteEndPoint);
     315                        Log.Warning ("[Web] Invalid Admintoken used from " + reqRemoteEndPoint);
    300316
    301317                        return guestPermissionLevel;
Note: See TracChangeset for help on using the changeset viewer.