changeset 9751:308a0d822d18 3.2.x

Keep configuration and data in distinct directories This allows having distinct volumes for configuration and data (artifact database, generated mapfiles and shapefiles, etc.). While at it, cleanup MapServer configuration a little bit.
author Tom Gottfried <tom@intevation.de>
date Tue, 11 Oct 2022 11:42:09 +0200
parents 432934cda171
children a41f9c355204
files artifacts/doc/conf/artifact-db.xml artifacts/doc/conf/conf.xml artifacts/doc/conf/datacage-db.xml artifacts/doc/conf/floodmap.xml artifacts/doc/conf/rivermap.xml artifacts/src/assembly/assembly.xml artifacts/src/main/java/org/dive4elements/river/artifacts/WMSDBArtifact.java artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/ShapeFacet.java artifacts/src/main/java/org/dive4elements/river/artifacts/services/FileUploadService.java artifacts/src/main/java/org/dive4elements/river/artifacts/states/FloodMapState.java artifacts/src/main/java/org/dive4elements/river/artifacts/states/HWSBarriersState.java artifacts/src/main/java/org/dive4elements/river/artifacts/states/ScenarioSelect.java artifacts/src/main/java/org/dive4elements/river/utils/ArtifactMapfileGenerator.java artifacts/src/main/java/org/dive4elements/river/utils/MapfileGenerator.java artifacts/src/main/java/org/dive4elements/river/utils/RiverMapfileGenerator.java artifacts/src/main/java/org/dive4elements/river/utils/RiverUtils.java docker/docker-compose.yml docker/mapserver/cgi-bin/river-wms docker/mapserver/cgi-bin/user-wms
diffstat 19 files changed, 69 insertions(+), 102 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/doc/conf/artifact-db.xml	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/doc/conf/artifact-db.xml	Tue Oct 11 11:42:09 2022 +0200
@@ -6,5 +6,5 @@
     <password></password>
     <!-- For use with a postgresql database use the appropriate driver-->
     <!--driver>org.postgresql.Driver</driver-->
-    <url>jdbc:h2:${artifacts.config.dir}/../artifactsdb/artifacts</url>
+    <url>jdbc:h2:${artifacts.config.dir}/../artifacts-data/artifactsdb/artifacts</url>
 </database>
--- a/artifacts/doc/conf/conf.xml	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/doc/conf/conf.xml	Tue Oct 11 11:42:09 2022 +0200
@@ -319,6 +319,13 @@
         <template>${artifacts.config.dir}/meta-data.xml</template>
     </metadata>
 
+    <!-- MapServer integration -->
+    <mapserver>
+        <server path="http://localhost:8081/cgi-bin/"/>
+        <!-- Directory where generated mapfiles and shapefiles will be stored -->
+        <mapfiles path="${artifacts.config.dir}/../artifacts-data/mapserver/"/>
+        <templates path="${artifacts.config.dir}/mapserver/"/>
+    </mapserver>
     &floodmap;
     &rivermap;
 
--- a/artifacts/doc/conf/datacage-db.xml	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/doc/conf/datacage-db.xml	Tue Oct 11 11:42:09 2022 +0200
@@ -3,5 +3,5 @@
     <user>SA</user>
     <password/>
     <driver>org.h2.Driver</driver>
-    <url>jdbc:h2:${artifacts.config.dir}/../datacagedb/datacage</url>
+    <url>jdbc:h2:${artifacts.config.dir}/../artifacts-data/datacagedb/datacage</url>
 </datacage>
--- a/artifacts/doc/conf/floodmap.xml	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/doc/conf/floodmap.xml	Tue Oct 11 11:42:09 2022 +0200
@@ -1,12 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <floodmap>
-    <shapefile-path value="${artifacts.config.dir}/../shapefiles"/>
-    <mapserver>
-        <server path="http://localhost:8081/cgi-bin/"/>
-        <mapfile path="${artifacts.config.dir}/../flys.map"/>
-        <templates path="${artifacts.config.dir}/mapserver/"/>
-        <map-template path="mapfile.vm"/>
-    </mapserver>
+    <mapfile path="artifact.map"/>
+    <map-template path="mapfile.vm"/>
 
     <velocity>
         <logfile path="${artifacts.config.dir}/../velocity.log"/>
--- a/artifacts/doc/conf/rivermap.xml	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/doc/conf/rivermap.xml	Tue Oct 11 11:42:09 2022 +0200
@@ -1,12 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!--// configuration fragment for static river WMS //-->
 <rivermap>
-    <mapserver>
-        <server path="http://localhost:8081/cgi-bin/"/>
-        <mapfile path="${artifacts.config.dir}/../rivers.map"/>
-        <templates path="${artifacts.config.dir}/mapserver/"/>
-        <map-template path="river-mapfile.vm"/>
-    </mapserver>
+    <mapfile path="rivers.map"/>
+    <map-template path="river-mapfile.vm"/>
 
     <velocity>
         <logfile path="${artifacts.config.dir}/../rivermap_velocity.log"/>
--- a/artifacts/src/assembly/assembly.xml	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/assembly/assembly.xml	Tue Oct 11 11:42:09 2022 +0200
@@ -19,12 +19,12 @@
     <fileSet>
       <!-- Include prepared artifact-DB if existant -->
       <directory>${project.basedir}/artifactsdb</directory>
-      <outputDirectory>/artifactsdb</outputDirectory>
+      <outputDirectory>/artifacts-data/artifactsdb</outputDirectory>
     </fileSet>
     <fileSet>
       <!-- Include prepared datacage-DB if existant -->
       <directory>${project.basedir}/datacagedb</directory>
-      <outputDirectory>/datacagedb</outputDirectory>
+      <outputDirectory>/artifacts-data/datacagedb</outputDirectory>
     </fileSet>
     <fileSet>
       <directory>${project.basedir}/../backend/doc/schema</directory>
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/WMSDBArtifact.java	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/WMSDBArtifact.java	Tue Oct 11 11:42:09 2022 +0200
@@ -241,7 +241,7 @@
             log.info("Destroy WMSDBState: " + getID());
 
             String p = RiverUtils.getXPathString(
-                RiverUtils.XPATH_FLOODMAP_SHAPEFILE_DIR);
+                RiverUtils.XPATH_MAPFILES_PATH);
             File dir = new File(p, owner.identifier());
 
             if (dir != null && dir.exists()) {
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/ShapeFacet.java	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/ShapeFacet.java	Tue Oct 11 11:42:09 2022 +0200
@@ -15,8 +15,8 @@
 import org.dive4elements.artifactdatabase.state.DefaultFacet;
 import org.dive4elements.artifacts.Artifact;
 import org.dive4elements.artifacts.CallContext;
-import org.dive4elements.artifacts.common.utils.Config;
 import org.dive4elements.river.artifacts.D4EArtifact;
+import org.dive4elements.river.utils.RiverUtils;
 
 
 public class ShapeFacet
@@ -24,9 +24,6 @@
 {
     private static Logger log = LogManager.getLogger(ShapeFacet.class);
 
-    private static final String BASE_DIR =
-        "/artifact-database/floodmap/shapefile-path/@value";
-
     /**
      * Defaults to ADVANCE Compute type.
      * @param name Name of the facet.
@@ -42,8 +39,8 @@
     @Override
     public Object getData(Artifact artifact, CallContext context) {
         D4EArtifact flys = (D4EArtifact)artifact;
-        String tmp = Config.getStringXPath(BASE_DIR);
-        String baseDir = Config.replaceConfigDir(tmp);
+        String baseDir = RiverUtils.getXPathString(
+            RiverUtils.XPATH_MAPFILES_PATH);
         baseDir += "/" + flys.identifier();
         File shapeDir = new File(baseDir);
         if (shapeDir.exists()) {
@@ -51,5 +48,4 @@
         }
         return null;
     }
-
 }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/services/FileUploadService.java	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/services/FileUploadService.java	Tue Oct 11 11:42:09 2022 +0200
@@ -66,7 +66,7 @@
         if (fileData != null) {
             try {
                 String shapePath = RiverUtils.getXPathString(
-                    RiverUtils.XPATH_FLOODMAP_SHAPEFILE_DIR);
+                    RiverUtils.XPATH_MAPFILES_PATH);
 
                 File artifactDir = FileTools.getDirectory(shapePath, uuid);
                 FileOutputStream fos =
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/FloodMapState.java	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/FloodMapState.java	Tue Oct 11 11:42:09 2022 +0200
@@ -296,7 +296,7 @@
      */
     protected File getDirectory(D4EArtifact artifact) {
         String shapePath = RiverUtils.getXPathString(
-            RiverUtils.XPATH_FLOODMAP_SHAPEFILE_DIR);
+            RiverUtils.XPATH_MAPFILES_PATH);
 
         File artifactDir = FileTools.getDirectory(
             shapePath, artifact.identifier());
@@ -311,7 +311,7 @@
      */
     protected void removeDirectory(D4EArtifact artifact) {
         String shapePath = RiverUtils.getXPathString(
-            RiverUtils.XPATH_FLOODMAP_SHAPEFILE_DIR);
+            RiverUtils.XPATH_MAPFILES_PATH);
 
         File artifactDir = new File(shapePath, artifact.identifier());
 
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/HWSBarriersState.java	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/HWSBarriersState.java	Tue Oct 11 11:42:09 2022 +0200
@@ -278,7 +278,7 @@
     // FIXME: I've seen this code somewhere else...
     protected void removeDirectory(D4EArtifact artifact) {
         String shapePath = RiverUtils.getXPathString(
-            RiverUtils.XPATH_FLOODMAP_SHAPEFILE_DIR);
+            RiverUtils.XPATH_MAPFILES_PATH);
 
         File artifactDir = new File(shapePath, artifact.identifier());
 
@@ -304,7 +304,7 @@
      */
     protected File getDirectory(D4EArtifact artifact) {
         String shapePath = RiverUtils.getXPathString(
-            RiverUtils.XPATH_FLOODMAP_SHAPEFILE_DIR);
+            RiverUtils.XPATH_MAPFILES_PATH);
 
         File artifactDir = FileTools.getDirectory(
             shapePath, artifact.identifier());
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/ScenarioSelect.java	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/ScenarioSelect.java	Tue Oct 11 11:42:09 2022 +0200
@@ -125,7 +125,7 @@
     // FIXME: I've seen this code somewhere else...
     protected void removeDirectory(D4EArtifact artifact) {
         String shapePath = RiverUtils.getXPathString(
-            RiverUtils.XPATH_FLOODMAP_SHAPEFILE_DIR);
+            RiverUtils.XPATH_MAPFILES_PATH);
 
         File artifactDir = new File(shapePath, artifact.identifier());
 
--- a/artifacts/src/main/java/org/dive4elements/river/utils/ArtifactMapfileGenerator.java	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/utils/ArtifactMapfileGenerator.java	Tue Oct 11 11:42:09 2022 +0200
@@ -37,6 +37,15 @@
     private static Logger log = LogManager.getLogger(
         ArtifactMapfileGenerator.class);
 
+    private static final String XPATH_FLOODMAP_VELOCITY_LOGFILE =
+        "/artifact-database/floodmap/velocity/logfile/@path";
+
+    private static final String XPATH_FLOODMAP_MAPFILE_TEMPLATE =
+        "/artifact-database/floodmap/map-template/@path";
+
+    private static final String XPATH_FLOODMAP_MAPFILE_PATH =
+        "/artifact-database/floodmap/mapfile/@path";
+
     public static final String FLOODMAP_UESK_KEY =
         "floodmap.uesk";
 
@@ -45,14 +54,7 @@
 
     @Override
     protected String getVelocityLogfile() {
-        return RiverUtils.getXPathString(
-            RiverUtils.XPATH_FLOODMAP_VELOCITY_LOGFILE);
-    }
-
-    @Override
-    protected String getMapserverTemplatePath() {
-        return RiverUtils.getXPathString(
-            RiverUtils.XPATH_FLOODMAP_MAPSERVER_TEMPLATE_PATH);
+        return RiverUtils.getXPathString(XPATH_FLOODMAP_VELOCITY_LOGFILE);
     }
 
     /**
@@ -263,13 +265,12 @@
 
     @Override
     protected String getMapfilePath() {
-        return RiverUtils.getXPathString(
-            RiverUtils.XPATH_FLOODMAP_MAPFILE_PATH);
+        return RiverUtils.getXPathString(RiverUtils.XPATH_MAPFILES_PATH)
+            + "/" + RiverUtils.getXPathString(XPATH_FLOODMAP_MAPFILE_PATH);
     }
 
     @Override
     protected String getMapfileTemplate() {
-        return RiverUtils.getXPathString(
-            RiverUtils.XPATH_FLOODMAP_MAPFILE_TEMPLATE);
+        return RiverUtils.getXPathString(XPATH_FLOODMAP_MAPFILE_TEMPLATE);
     }
 }
--- a/artifacts/src/main/java/org/dive4elements/river/utils/MapfileGenerator.java	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/utils/MapfileGenerator.java	Tue Oct 11 11:42:09 2022 +0200
@@ -37,6 +37,9 @@
  */
 public abstract class MapfileGenerator
 {
+    private static final String XPATH_MAPSERVER_TEMPLATES_PATH =
+        "/artifact-database/mapserver/templates/@path";
+
     public static final String WSPLGEN_RESULT_SHAPE   = "wsplgen.shp";
     public static final String WSPLGEN_LINES_SHAPE    = "barrier_lines.shp";
     public static final String WSPLGEN_POLYGONS_SHAPE = "barrier_polygons.shp";
@@ -123,15 +126,14 @@
 
         engine.setProperty(
             "file.resource.loader.path",
-            getMapserverTemplatePath());
+            RiverUtils.getXPathString(XPATH_MAPSERVER_TEMPLATES_PATH)
+        );
 
         engine.init();
     }
 
     protected abstract String getVelocityLogfile();
 
-    protected abstract String getMapserverTemplatePath();
-
     protected VelocityContext getVelocityContext() {
         VelocityContext context = new VelocityContext();
 
@@ -213,7 +215,7 @@
     {
         if (shapefileDirectory == null) {
             String path = RiverUtils.getXPathString(
-                RiverUtils.XPATH_FLOODMAP_SHAPEFILE_DIR);
+                RiverUtils.XPATH_MAPFILES_PATH);
 
             if (path != null) {
                 shapefileDirectory = new File(path);
@@ -244,7 +246,6 @@
     }
 
 
-
     protected List<String> parseLayers(File[] dirs) {
         List<String> layers = new ArrayList<String>();
 
@@ -274,8 +275,6 @@
     }
 
 
-
-
     /**
      * Creates a layer snippet which might be included in the mapfile.
      *
--- a/artifacts/src/main/java/org/dive4elements/river/utils/RiverMapfileGenerator.java	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/utils/RiverMapfileGenerator.java	Tue Oct 11 11:42:09 2022 +0200
@@ -11,8 +11,6 @@
 import com.vividsolutions.jts.geom.Envelope;
 import com.vividsolutions.jts.geom.MultiLineString;
 
-import org.dive4elements.artifacts.common.utils.Config;
-
 import org.dive4elements.river.artifacts.model.LayerInfo;
 import org.dive4elements.river.artifacts.model.RiverFactory;
 
@@ -20,7 +18,7 @@
 import org.dive4elements.river.model.RiverAxis;
 
 import java.io.File;
-import java.io.FileNotFoundException;
+import java.io.IOException;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -35,20 +33,14 @@
 
 public class RiverMapfileGenerator extends MapfileGenerator {
 
-    public static final String XPATH_RIVERMAP_SHAPEFILE_DIR =
-            "/artifact-database/rivermap/shapefile-path/@value";
-
-    public static final String XPATH_RIVERMAP_VELOCITY_LOGFILE =
-            "/artifact-database/rivermap/velocity/logfile/@path";
+    private static final String XPATH_RIVERMAP_VELOCITY_LOGFILE =
+        "/artifact-database/rivermap/velocity/logfile/@path";
 
-    public static final String XPATH_RIVERMAP_MAPFILE_PATH =
-            "/artifact-database/rivermap/mapserver/mapfile/@path";
+    private static final String XPATH_RIVERMAP_MAPFILE_PATH =
+        "/artifact-database/rivermap/mapfile/@path";
 
-    public static final String XPATH_RIVERMAP_MAPFILE_TEMPLATE =
-            "/artifact-database/rivermap/mapserver/map-template/@path";
-
-    public static final String XPATH_RIVERMAP_MAPSERVER_TEMPLATE_PATH =
-            "/artifact-database/rivermap/mapserver/templates/@path";
+    private static final String XPATH_RIVERMAP_MAPFILE_TEMPLATE =
+        "/artifact-database/rivermap/map-template/@path";
 
     public static final Pattern DB_URL_PATTERN =
         Pattern.compile("(.*)\\/\\/(.*):([0-9]+)\\/([a-zA-Z]+)");
@@ -126,9 +118,6 @@
         layerInfo.setFilter("river_id = " + riverID + " and kind_id = 1");
         layerInfo.setTitle(riverName + " RiverAxis");
 
-        File layerFile = new File(
-            Config.getConfigDirectory().getParentFile(),
-            "river-" + riverName + ".map");
         Template template = getTemplateByName("riveraxis-layer.vm");
         if (template == null) {
             log.warn("Template riveraxis-layer.vm not found.");
@@ -136,9 +125,12 @@
         }
 
         try {
+            File layerFile = new File(
+                getShapefileBaseDir(),
+                "river-" + riverName + ".map");
             writeLayer(layerInfo, layerFile, template);
         }
-        catch (FileNotFoundException e) {
+        catch (IOException e) {
             log.warn(e.getLocalizedMessage(), e);
         }
     }
@@ -149,14 +141,9 @@
     }
 
     @Override
-    protected String getMapserverTemplatePath() {
-        return RiverUtils.getXPathString(
-            XPATH_RIVERMAP_MAPSERVER_TEMPLATE_PATH);
-    }
-
-    @Override
     protected String getMapfilePath() {
-        return RiverUtils.getXPathString(XPATH_RIVERMAP_MAPFILE_PATH);
+        return RiverUtils.getXPathString(RiverUtils.XPATH_MAPFILES_PATH)
+            + "/" + RiverUtils.getXPathString(XPATH_RIVERMAP_MAPFILE_PATH);
     }
 
     @Override
--- a/artifacts/src/main/java/org/dive4elements/river/utils/RiverUtils.java	Mon Oct 10 15:29:44 2022 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/utils/RiverUtils.java	Tue Oct 11 11:42:09 2022 +0200
@@ -81,26 +81,11 @@
     public static final String XPATH_FLOODMAP_RIVER_PROJECTION =
         "/artifact-database/floodmap/river[@name=$name]/srid/@value";
 
-    public static final String XPATH_FLOODMAP_SHAPEFILE_DIR =
-        "/artifact-database/floodmap/shapefile-path/@value";
-
-    public static final String XPATH_FLOODMAP_VELOCITY_LOGFILE =
-        "/artifact-database/floodmap/velocity/logfile/@path";
-
-    public static final String XPATH_FLOODMAP_MAPSERVER_URL =
-        "/artifact-database/floodmap/mapserver/server/@path";
+    public static final String XPATH_MAPSERVER_URL =
+        "/artifact-database/mapserver/server/@path";
 
-    public static final String XPATH_RIVERMAP_MAPSERVER_URL =
-            "/artifact-database/rivermap/mapserver/server/@path";
-
-    public static final String XPATH_FLOODMAP_MAPFILE_PATH =
-        "/artifact-database/floodmap/mapserver/mapfile/@path";
-
-    public static final String XPATH_FLOODMAP_MAPFILE_TEMPLATE =
-        "/artifact-database/floodmap/mapserver/map-template/@path";
-
-    public static final String XPATH_FLOODMAP_MAPSERVER_TEMPLATE_PATH =
-        "/artifact-database/floodmap/mapserver/templates/@path";
+    public static final String XPATH_MAPFILES_PATH =
+        "/artifact-database/mapserver/mapfiles/@path";
 
     public static final String CURRENT_KM = "currentKm";
 
@@ -631,7 +616,7 @@
      * @return the URL of the user wms.
      */
     public static String getUserWMSUrl(String artifactId) {
-        String url = getXPathString(XPATH_FLOODMAP_MAPSERVER_URL);
+        String url = getXPathString(XPATH_MAPSERVER_URL);
         url = url.endsWith("/") ? url + "user-wms" : url + "/" + "user-wms";
 
         return url;
@@ -639,7 +624,7 @@
 
 
     public static String getRiverWMSUrl() {
-        String url = getXPathString(XPATH_RIVERMAP_MAPSERVER_URL);
+        String url = getXPathString(XPATH_MAPSERVER_URL);
         url = url.endsWith("/") ? url + "river-wms" : url + "/" + "river-wms";
 
         return url;
--- a/docker/docker-compose.yml	Mon Oct 10 15:29:44 2022 +0200
+++ b/docker/docker-compose.yml	Tue Oct 11 11:42:09 2022 +0200
@@ -20,7 +20,7 @@
       - db
     volumes:
       - ../artifacts/doc/conf:/opt/d4e/bin/conf
-      - mapfiles:/opt/d4e/bin
+      - artifacts-data:/opt/d4e/bin/artifacts-data
   mapserv:
     container_name: "d4eriver-mapserv"
     build:
@@ -34,7 +34,8 @@
       - server
     volumes:
       - ./mapserver/cgi-bin:/var/www/cgi-bin
-      - mapfiles:/opt/d4e/bin
+      - ../artifacts/doc/conf/mapserver:/opt/d4e/bin/conf/mapserver
+      - artifacts-data:/opt/d4e/bin/artifacts-data
     ports:
       - 8081:80
   wiki:
@@ -70,5 +71,5 @@
   d4e_river:
     name: d4e_river
 volumes:
-  mapfiles:
+  artifacts-data:
   wiki-data:
--- a/docker/mapserver/cgi-bin/river-wms	Mon Oct 10 15:29:44 2022 +0200
+++ b/docker/mapserver/cgi-bin/river-wms	Tue Oct 11 11:42:09 2022 +0200
@@ -1,5 +1,5 @@
 #!/bin/sh
 export LC_ALL="de_DE.UTF-8"
 export NLS_LANG=".AL32UTF8"
-export MS_MAPFILE=/opt/d4e/bin/rivers.map
+export MS_MAPFILE=/opt/d4e/bin/artifacts-data/mapserver/rivers.map
 /opt/mapserver/mapserv
--- a/docker/mapserver/cgi-bin/user-wms	Mon Oct 10 15:29:44 2022 +0200
+++ b/docker/mapserver/cgi-bin/user-wms	Tue Oct 11 11:42:09 2022 +0200
@@ -1,5 +1,5 @@
 #!/bin/sh
 export LC_ALL="de_DE.UTF-8"
 export NLS_LANG=".AL32UTF8"
-export MS_MAPFILE=/opt/d4e/bin/flys.map
+export MS_MAPFILE=/opt/d4e/bin/artifacts-data/mapserver/artifact.map
 /opt/mapserver/mapserv

http://dive4elements.wald.intevation.org