From 6c2f94b9497b6282bfd25a6b1e8e1a1f24763a7a Mon Sep 17 00:00:00 2001 From: Bernhard Tittelbach Date: Tue, 15 Sep 2026 17:06:22 +0200 Subject: [PATCH] move redirects from grical to lauti --- ansible/roles/web/r3redirects/templates/r3.at.j2 | 12 ++++ .../cache_realraum_imported_calendar.sh.j2 | 74 ++++++++++++++++---- 2 files changed, 73 insertions(+), 13 deletions(-) diff --git a/ansible/roles/web/r3redirects/templates/r3.at.j2 b/ansible/roles/web/r3redirects/templates/r3.at.j2 index 42f1ebf..af4c7ff 100644 --- a/ansible/roles/web/r3redirects/templates/r3.at.j2 +++ b/ansible/roles/web/r3redirects/templates/r3.at.j2 @@ -25,6 +25,18 @@ server { return 302 https://status.realraum.at/ics/grical_realraum.ical; # planned: 301 } + location = /events_not_extern.ics { + return 302 https://status.realraum.at/ics/grical_realraum_only.ical; # planned: 301 + } + + location = /local_events.ics { + return 302 https://status.realraum.at/ics/grical_realraum_only.ical; # planned: 301 + } + + location = /public_events.ics { + return 302 https://status.realraum.at/ics/public_events.ics; # planned: 301 + } + location = /statuten { return 302 "https://git.realraum.at/?p=documents.git;a=blob;f=statuten/main.pdf"; } diff --git a/ansible/roles/web/r3status/templates/cache_realraum_imported_calendar.sh.j2 b/ansible/roles/web/r3status/templates/cache_realraum_imported_calendar.sh.j2 index 5e4d34a..c722c53 100755 --- a/ansible/roles/web/r3status/templates/cache_realraum_imported_calendar.sh.j2 +++ b/ansible/roles/web/r3status/templates/cache_realraum_imported_calendar.sh.j2 @@ -1,23 +1,71 @@ #!/bin/zsh DL_PATH=/dev/shm/wget APACHE_PATH={{ r3status_ics_path }} -ALL_JSON_SRC="https://grical.realraum.at/s/?query=!realraum+|+!r3extern&limit=9&view=json" -ALL_JSON_FILE="grical_realraum.json" -LOCALONLY_JSON_SRC="https://grical.realraum.at/s/?query=!realraum&limit=9&view=json" -LOCALONLY_JSON_FILE="grical_realraum_only.json" -ICAL_DATE_FROM=$(date -d "last month" +"%Y-%m-%d") -ICAL_DATE_TILL=$(date -d "today + 3 months" +"%Y-%m-%d") -ALL_ICAL_SRC="https://grical.realraum.at/s/?query=!realraum+|+!r3extern%20${ICAL_DATE_FROM}%20${ICAL_DATE_TILL}&view=ical" -ALL_ICAL_FILE="grical_realraum.ical" -LOCALONLY_ICAL_SRC="https://grical.realraum.at/s/?query=!realraum%20${ICAL_DATE_FROM}%20${ICAL_DATE_TILL}&view=ical" -LOCALONLY_ICAL_FILE="grical_realraum_only.ical" + +local publiconly_ICAL_SRC=("https://laut.realraum.at/groups/80217d4a-1ca5-490e-a8dd-1439b1d92145/ical") +local localonly_ICAL_SRC=("https://laut.realraum.at/groups/80217d4a-1ca5-490e-a8dd-1439b1d92145/ical" "https://laut.realraum.at/groups/ad1e2cb2-d7cc-4ca6-bb98-c3e12fbe5eb2/ical") +local all_ICAL_SRC=("https://laut.realraum.at/groups/80217d4a-1ca5-490e-a8dd-1439b1d92145/ical" "https://laut.realraum.at/groups/ad1e2cb2-d7cc-4ca6-bb98-c3e12fbe5eb2/ical" "https://laut.realraum.at/groups/f23e210b-41da-423a-9261-6ce581437c1e/ical") + +local all_ICAL_FILE="grical_realraum.ical" +local localonly_ICAL_FILE="grical_realraum_only.ical" +local publiconly_ICAL_FILE="public_events.ics" + +local all_ALTERNATE_FILE_NAMES=("all_events.ics") +local localonly_ALTERNATE_FILE_NAMES=("local_events.ics") +local publiconly_ALTERNATE_FILE_NAMES=() + +publish=(publiconly localonly all) + + +function get_merge_ics +{ + local out=$1 + shift + local sources=("$@") + { + # Emit a VCALENDAR header + echo "BEGIN:VCALENDAR" + echo "VERSION:2.0" + echo "PRODID:-//merge-ics//zsh//lauti.org//EN" +# echo "CALSCALE:GREGORIAN" + + # For each .ics file, strip the outer VCALENDAR block but keep events + for s in "$sources[@]"; do + [[ -n $s ]] || continue + # Remove BEGIN:VCALENDAR / END:VCALENDAR lines (and their associated + # header properties like VERSION, PRODID, CALSCALE, X-WR-CALNAME) + # by extracting only the VEVENT (and VTODO/VALARM) blocks. + awk ' + /^BEGIN:V(EVENT|TODO|TIMEZONE)/ { print; inblock=1; depth=0 } + inblock { + if (/^BEGIN:/) depth++ + else if (/^END:/) { depth--; if (depth==0) inblock=0 } + print + } + ' =( wget --no-check-certificate -o /dev/null --tries=1 "$s" --quiet -o /dev/null -O - 2>/dev/null) + echo + done + + echo "END:VCALENDAR" + } >! "$out" +} + + + mkdir $APACHE_PATH 2>/dev/null mkdir $DL_PATH 2>/dev/null ### sed makes ical validate according to http://severinghaus.org/projects/icv/?url=https%3A%2F%2Fr3.at%2Fevents.ical -for s d in $ALL_JSON_SRC $ALL_JSON_FILE $ALL_ICAL_SRC $ALL_ICAL_FILE $LOCALONLY_JSON_SRC $LOCALONLY_JSON_FILE $LOCALONLY_ICAL_SRC $LOCALONLY_ICAL_FILE; do - wget --no-check-certificate -o /dev/null --tries=1 "$s" -O "${DL_PATH}/${d}" \ +for t in "${publish[@]}"; do + local dst_varname="${t}_ICAL_FILE" + local src_varname="${t}_ICAL_SRC" + local altnames_varname="${t}_ALTERNATE_FILE_NAMES" + local d="${(P)dst_varname}" + local -a altnames=${(P)altnames_varname} + + get_merge_ics "${DL_PATH}/${d}" ${(P)src_varname} \ && sed -i '/^GEO:/d;/^METHOD:PUBLISH/d;s/^\(DTSTAMP:[0-9A-Z]\+\)/\1Z/' "${DL_PATH}/${d}" \ && [[ -s "${DL_PATH}/${d}" ]] \ - && mv "${DL_PATH}/${d}" "${APACHE_PATH}/${d}" + && mv "${DL_PATH}/${d}" "${APACHE_PATH}/${d}" \ + && for an in "${altnames[@]}"; do cp "${APACHE_PATH}/${d}" "${DL_PATH}/${an}.tmp" && mv "${DL_PATH}/${an}.tmp" "${APACHE_PATH}/${an}" ; done done -- 1.7.10.4