Index: binary-improvements2/WebServer/src/Web.cs
===================================================================
--- binary-improvements2/WebServer/src/Web.cs	(revision 395)
+++ binary-improvements2/WebServer/src/Web.cs	(revision 398)
@@ -28,5 +28,5 @@
 				int webPort = GamePrefs.GetInt (EnumUtils.Parse<EnumGamePrefs> ("ControlPanelPort"));
 				if (webPort < 1 || webPort > 65533) {
-					Log.Out ("Webserver not started (ControlPanelPort not within 1-65533)");
+					Log.Out ("[Web] Webserver not started (ControlPanelPort not within 1-65533)");
 					return;
 				}
@@ -36,5 +36,5 @@
 
 				if (!HttpListener.IsSupported) {
-					Log.Out ("Webserver not started (needs Windows XP SP2, Server 2003 or later or Mono)");
+					Log.Out ("[Web] Webserver not started (HttpListener.IsSupported returned false)");
 					return;
 				}
@@ -43,5 +43,5 @@
 				bool useStaticCache = false;
 
-				string webfilesFolder = _modInstancePath + "/webserver";
+				string webfilesFolder = DetectWebserverFolder (_modInstancePath);
 				string webfilesFolderLegacy = _modInstancePath + "/weblegacy";
 
@@ -87,9 +87,25 @@
 				SdtdConsole.Instance.RegisterServer (this);
 
-				Log.Out ("Started Webserver on " + webPort);
+				Log.Out ("[Web] Started Webserver on port " + webPort);
 			} catch (Exception e) {
-				Log.Error ("Error in Web.ctor: ");
+				Log.Error ("[Web] Error in Web.ctor: ");
 				Log.Exception (e);
 			}
+		}
+
+		private static string DetectWebserverFolder (string _modInstancePath) {
+			string webserverFolder = _modInstancePath + "/webserver";
+
+			foreach (Mod mod in ModManager.GetLoadedMods ()) {
+				string modServerFolder = mod.Path + "/webserver";
+				
+				if (Directory.Exists (modServerFolder)) {
+					webserverFolder = modServerFolder;
+				}
+			}
+			
+			Log.Out ($"[Web] Serving basic webserver files from {webserverFolder}");
+
+			return webserverFolder;
 		}
 
@@ -100,5 +116,5 @@
 				}
 
-				Log.Error ($"Web: Handler for relative path {_urlBasePath} already registerd.");
+				Log.Error ($"[Web] Handler for relative path {_urlBasePath} already registerd.");
 				return;
 			}
@@ -120,8 +136,8 @@
 						webMods.Add (webMod);
 					} catch (InvalidDataException e) {
-						Log.Error ($"Could not load webmod from mod {mod.ModInfo.Name.Value}: {e.Message}");
+						Log.Error ($"[Web] Could not load webmod from mod {mod.ModInfo.Name.Value}: {e.Message}");
 					}
 				} catch (Exception e) {
-					Log.Error ("Failed loading web mods from mod " + mod.ModInfo.Name.Value);
+					Log.Error ("[Web] Failed loading web mods from mod " + mod.ModInfo.Name.Value);
 					Log.Exception (e);
 				}
@@ -134,5 +150,5 @@
 				listener.Close ();
 			} catch (Exception e) {
-				Log.Out ("Error in Web.Disconnect: " + e);
+				Log.Out ("[Web] Error in Web.Disconnect: " + e);
 			}
 		}
@@ -222,10 +238,10 @@
 			} catch (IOException e) {
 				if (e.InnerException is SocketException) {
-					Log.Out ("Error in Web.HandleRequest(): Remote host closed connection: " + e.InnerException.Message);
+					Log.Out ("[Web] Error in Web.HandleRequest(): Remote host closed connection: " + e.InnerException.Message);
 				} else {
-					Log.Out ("Error (IO) in Web.HandleRequest(): " + e);
+					Log.Out ("[Web] Error (IO) in Web.HandleRequest(): " + e);
 				}
 			} catch (Exception e) {
-				Log.Error ("Error in Web.HandleRequest(): ");
+				Log.Error ("[Web] Error in Web.HandleRequest(): ");
 				Log.Exception (e);
 			} finally {
@@ -276,5 +292,5 @@
 			IPEndPoint reqRemoteEndPoint = _req.RemoteEndPoint;
 			if (reqRemoteEndPoint == null) {
-				Log.Warning ("No RemoteEndPoint on web request");
+				Log.Warning ("[Web] No RemoteEndPoint on web request");
 				return guestPermissionLevel;
 			}
@@ -297,5 +313,5 @@
 			}
 
-			Log.Warning ("Invalid Admintoken used from " + reqRemoteEndPoint);
+			Log.Warning ("[Web] Invalid Admintoken used from " + reqRemoteEndPoint);
 
 			return guestPermissionLevel;
