Quellcode durchsuchen

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

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

GitOrigin-RevId: 7d690340f11cb4aaf38653fdcca6b7944f9a4d0b
Miguel Serrano vor 3 Jahren
Ursprung
Commit
11dc9712eb

+ 2 - 0
docker-compose.yml

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

+ 2 - 0
server-ce/Dockerfile

@@ -51,6 +51,8 @@ RUN chmod 644 /etc/logrotate.d/sharelatex
 ADD server-ce/cron /overleaf/cron
 ADD server-ce/config/crontab-history /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
 # ------------------------------------------------------------------

+ 3 - 0
server-ce/config/crontab-deletion

@@ -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

+ 28 - 0
server-ce/cron/deactivate-projects.sh

@@ -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."

+ 25 - 0
server-ce/cron/delete-projects.sh

@@ -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 - 0
server-ce/cron/delete-users.sh

@@ -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."