diff --git a/Dockerfile b/Dockerfile index 1b4d0a8a2..5ca26703e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,11 +33,13 @@ RUN mkdir /download && \ rm -rf /download && \ rm -rf /usr/local/tomcat/webapps/* && \ mkdir /usr/local/tomcat/webapps/ROOT && \ - echo "
Nothing to see here" > /usr/local/tomcat/webapps/ROOT/index.html + printf "<%% response.sendRedirect(\"/cwms-data/\"); %%>\n" > /usr/local/tomcat/webapps/ROOT/index.jsp && \ + printf "User-agent: *\nAllow: /cwms-data/\nDisallow: /cwms-data/auth/\nDisallow: /cwms-data/catalog/\nDisallow: /cwms-data/timeseries/\nDisallow: /cwms-data/swagger-docs\nDisallow: /auth/\nSitemap: https://cwms-data.usace.army.mil/sitemap.xml\n" > /usr/local/tomcat/webapps/ROOT/robots.txt CMD ["/usr/local/tomcat/bin/catalina.sh","run"] FROM tomcat_base AS api +COPY --from=builder /builddir/cda-gui/dist/sitemap.xml /usr/local/tomcat/webapps/ROOT/sitemap.xml COPY --from=builder /builddir/cwms-data-api/build/docker/cda/ /usr/local/tomcat COPY --from=builder /builddir/cwms-data-api/build/docker/context.xml /usr/local/tomcat/conf COPY --from=builder /builddir/cwms-data-api/build/docker/server.xml /usr/local/tomcat/conf diff --git a/cda-gui/build.gradle b/cda-gui/build.gradle index 8280658cc..196d5b8e2 100644 --- a/cda-gui/build.gradle +++ b/cda-gui/build.gradle @@ -7,8 +7,10 @@ task buildGui(type:NpxTask) { dependsOn npmInstall command = "npm" args = ["run", "build", "--prod"] - inputs.files('package.json', 'package-lock.json', 'vite.config.js') + inputs.files('package.json', 'package-lock.json', 'vite.config.js', 'index.html') inputs.dir('src') + inputs.dir('public') + inputs.dir('scripts') inputs.dir(fileTree("node_modules").exclude(".cache")) outputs.dir('dist') } @@ -38,4 +40,4 @@ sourceSets { } } } -} \ No newline at end of file +} diff --git a/cda-gui/package.json b/cda-gui/package.json index 950620627..0816912ae 100644 --- a/cda-gui/package.json +++ b/cda-gui/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "dev": "vite", - "build": "vite build", + "build": "vite build && node scripts/generate-sitemap.mjs", "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", "prepare": "cd .. && husky cda-gui/.husky", diff --git a/cda-gui/scripts/generate-sitemap.mjs b/cda-gui/scripts/generate-sitemap.mjs new file mode 100644 index 000000000..2d7dfc536 --- /dev/null +++ b/cda-gui/scripts/generate-sitemap.mjs @@ -0,0 +1,36 @@ +import { mkdir, writeFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import { sitemapPaths } from "../src/route-paths.js"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const projectDir = path.resolve(__dirname, ".."); +const outputPath = path.join(projectDir, "dist", "sitemap.xml"); + +const siteOrigin = (process.env.SITE_ORIGIN ?? "https://cwms-data.usace.army.mil").replace( + /\/+$/, + "", +); +const siteBasePath = (process.env.SITE_BASE_PATH ?? "/cwms-data").replace(/\/+$/, ""); + +const urls = sitemapPaths.map((routePath) => { + const normalizedPath = routePath ? `/${routePath}` : ""; + return `${siteOrigin}${siteBasePath}${normalizedPath}`; +}); + +const xml = ` +