Files
Development/SCRIPTS/generate-sitemap.sh
T
2026-07-13 20:17:59 +02:00

178 lines
4.2 KiB
Bash

#!/usr/bin/env bash
set -Eeuo pipefail
RED="\e[31m"
GREEN="\e[32m"
YELLOW="\e[33m"
BLUE="\e[34m"
BOLD="\e[1m"
RESET="\e[0m"
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
trap 'log_error "Fehler in Zeile $LINENO"' ERR
if [[ "$EUID" -ne 0 ]]; then
log_error "Script muss als root laufen!"
exit 1
fi
backend() {
echo ""
echo "BACKEND Sitemap wird erzeugt..."
echo ""
BASEURL="https://backend.blackpi.ipv64.net"
SEARCH_PATH="/data/WEBSERVER/BACKEND/WEBROOT"
SITEMAP="/data/WEBSERVER/BACKEND/WEBROOT/sitemap.xml"
EXCLUDE_DIRS=(
"config_backups"
"Commands"
"controller"
"modules"
"config.php"
"main.js"
"style.js"
"login.php"
".htaccess"
"static"
"templates"
#"api"
)
echo ""
echo '<?xml version="1.0" encoding="UTF-8"?>' > $SITEMAP
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> $SITEMAP
find "$SEARCH_PATH" -type f | while read file; do
relpath="${file#$SEARCH_PATH/}"
skip=false
for dir in "${EXCLUDE_DIRS[@]}"; do
if [[ "$relpath" == "$dir"* ]]; then
skip=true
break
fi
done
if [ "$skip" = true ]; then
continue
fi
lastmod=$(date -r "$file" "+%Y-%m-%d")
changefreq="daily"
priority="1.0"
if [ "$relpath" == "index.php" ] || [ "$relpath" == "index.html" ]; then
changefreq="weekly"
priority="1.0"
fi
echo " <url>" >> $SITEMAP
echo " <loc>$BASEURL/$relpath</loc>" >> $SITEMAP
echo " <lastmod>$lastmod</lastmod>" >> $SITEMAP
echo " <changefreq>$changefreq</changefreq>" >> $SITEMAP
echo " <priority>$priority</priority>" >> $SITEMAP
echo " </url>" >> $SITEMAP
echo " -> $BASEURL/$relpath"
done
echo '</urlset>' >> $SITEMAP
echo ""
echo "Sitemap wurde erzeugt: $SITEMAP"
echo ""
}
public() {
echo ""
echo " PUBLIC Sitemap wird erzeugt..."
echo ""
BASEURL="https://www.blackpi.ipv64.net"
SEARCH_PATH="/data/WEBSERVER/PUBLIC/WEBROOT"
SITEMAP="/data/WEBSERVER/PUBLIC/WEBROOT/sitemap.xml"
EXCLUDE_DIRS=(
"controller"
"moduls"
"templates"
"services/GenBerichte/"
"services/GenBerichte/Arbeitsberichte/overtime_corrections.json"
"services/Berichte/Arbeitsberichte/overtime_corrections.json"
"services/test/"
"services/test.php"
"main.js"
"style.js"
"api"
".htaccess"
)
echo ""
echo '<?xml version="1.0" encoding="UTF-8"?>' > $SITEMAP
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' >> $SITEMAP
find "$SEARCH_PATH" -type f | while read file; do
relpath="${file#$SEARCH_PATH/}"
skip=false
for dir in "${EXCLUDE_DIRS[@]}"; do
if [[ "$relpath" == "$dir"* ]]; then
skip=true
break
fi
done
if [ "$skip" = true ]; then
continue
fi
lastmod=$(date -r "$file" "+%Y-%m-%d")
changefreq="daily"
priority="1.0"
if [ "$relpath" == "index.php" ] || [ "$relpath" == "index.html" ]; then
changefreq="weekly"
priority="1.0"
fi
echo " <url>" >> $SITEMAP
echo " <loc>$BASEURL/$relpath</loc>" >> $SITEMAP
echo " <lastmod>$lastmod</lastmod>" >> $SITEMAP
echo " <changefreq>$changefreq</changefreq>" >> $SITEMAP
echo " <priority>$priority</priority>" >> $SITEMAP
echo " </url>" >> $SITEMAP
echo " -> $BASEURL/$relpath"
done
echo '</urlset>' >> $SITEMAP
echo ""
echo "Sitemap wurde erzeugt: $SITEMAP"
echo ""
}
ACTION="${1:-}"
TARGET="${2:-}"
OPTIONAL="${3:-}"
case "$ACTION" in
all)
backend
public
;;
public)
public
;;
backend)
backend
;;
*)
echo " $0 {public|backend}"
exit 1
;;
esac