Merge pull request #11473 from overleaf/msm-ce-deletion-cron

[CE/SP] `cron` jobs for resource deletion

GitOrigin-RevId: 7d690340f11cb4aaf38653fdcca6b7944f9a4d0b
This commit is contained in:
Miguel Serrano 2023-05-09 20:03:46 +02:00 committed by Copybot
parent 0ffa75979f
commit 11dc9712eb
6 changed files with 85 additions and 0 deletions

View file

@ -74,6 +74,8 @@ services:
# SHARELATEX_EMAIL_SMTP_LOGGER: true # SHARELATEX_EMAIL_SMTP_LOGGER: true
# SHARELATEX_CUSTOM_EMAIL_FOOTER: "This system is run by department x" # SHARELATEX_CUSTOM_EMAIL_FOOTER: "This system is run by department x"
# ENABLE_CRON_RESOURCE_DELETION: true
################ ################
## Server Pro ## ## Server Pro ##
################ ################

View file

@ -51,6 +51,8 @@ RUN chmod 644 /etc/logrotate.d/sharelatex
ADD server-ce/cron /overleaf/cron ADD server-ce/cron /overleaf/cron
ADD server-ce/config/crontab-history /etc/cron.d/crontab-history ADD server-ce/config/crontab-history /etc/cron.d/crontab-history
RUN chmod 600 /etc/cron.d/crontab-history RUN chmod 600 /etc/cron.d/crontab-history
ADD server-ce/config/crontab-deletion /etc/cron.d/crontab-deletion
RUN chmod 600 /etc/cron.d/crontab-deletion
# Copy Phusion Image startup and shutdown scripts to their locations # Copy Phusion Image startup and shutdown scripts to their locations
# ------------------------------------------------------------------ # ------------------------------------------------------------------

View file

@ -0,0 +1,3 @@
5 * * * * root /overleaf/cron/deactivate-projects.sh >> /var/log/sharelatex/cron-deactivate-projects.log 2>&1
15 * * * * root /overleaf/cron/delete-users.sh >> /var/log/sharelatex/cron-delete-users.log 2>&1
20 * * * * root /overleaf/cron/delete-projects.sh >> /var/log/sharelatex/cron-delete-projects.log 2>&1

View file

@ -0,0 +1,28 @@
#!/usr/bin/env bash
set -eux
echo "-------------------------"
echo "Deactivating old projects"
echo "-------------------------"
date
ENABLE_CRON_RESOURCE_DELETION=$(cat /etc/container_environment/ENABLE_CRON_RESOURCE_DELETION)
if [[ "${ENABLE_CRON_RESOURCE_DELETION:-null}" != "true" ]]; then
echo "Skipping old project deactivation due to ENABLE_CRON_RESOURCE_DELETION not set to true"
exit 0
fi
WEB_URL='http://localhost:3000'
USER=$(cat /etc/container_environment/WEB_API_USER)
PASS=$(cat /etc/container_environment/WEB_API_PASSWORD)
curl -v -X POST \
-u "${USER}:${PASS}" \
-H "Content-Type: application/json" \
-d '{"numberOfProjectsToArchive":"720","ageOfProjects":"7"}' \
"${WEB_URL}/internal/deactivateOldProjects"
echo "Done."

View file

@ -0,0 +1,25 @@
#!/usr/bin/env bash
set -eux
echo "-------------------------"
echo "Expiring deleted projects"
echo "-------------------------"
date
ENABLE_CRON_RESOURCE_DELETION=$(cat /etc/container_environment/ENABLE_CRON_RESOURCE_DELETION)
if [[ "${ENABLE_CRON_RESOURCE_DELETION:-null}" != "true" ]]; then
echo "Skipping project expiration due to ENABLE_CRON_RESOURCE_DELETION not set to true"
exit 0
fi
WEB_URL='http://localhost:3000'
USER=$(cat /etc/container_environment/WEB_API_USER)
PASS=$(cat /etc/container_environment/WEB_API_PASSWORD)
curl -X POST -v -u "${USER}:${PASS}" \
"${WEB_URL}/internal/expire-deleted-projects-after-duration"
echo "Done."

25
server-ce/cron/delete-users.sh Executable file
View file

@ -0,0 +1,25 @@
#!/usr/bin/env bash
set -eux
echo "----------------------"
echo "Expiring deleted users"
echo "----------------------"
date
ENABLE_CRON_RESOURCE_DELETION=$(cat /etc/container_environment/ENABLE_CRON_RESOURCE_DELETION)
if [[ "${ENABLE_CRON_RESOURCE_DELETION:-null}" != "true" ]]; then
echo "Skipping user expiration due to ENABLE_CRON_RESOURCE_DELETION not set to true"
exit 0
fi
WEB_URL='http://localhost:3000'
USER=$(cat /etc/container_environment/WEB_API_USER)
PASS=$(cat /etc/container_environment/WEB_API_PASSWORD)
curl -X POST -v -u "${USER}:${PASS}" \
"${WEB_URL}/internal/expire-deleted-users-after-duration"
echo "Done."