|
@@ -58,6 +58,7 @@ PLEROMA_TITLE='Pleroma Server'
|
58
|
58
|
|
59
|
59
|
# Number of months after which posts expire
|
60
|
60
|
PLEROMA_EXPIRE_MONTHS=3
|
|
61
|
+pleroma_expire_posts_script=/usr/bin/pleroma-expire-posts
|
61
|
62
|
|
62
|
63
|
pleroma_variables=(ONION_ONLY
|
63
|
64
|
PLEROMA_DOMAIN_NAME
|
|
@@ -70,6 +71,69 @@ pleroma_variables=(ONION_ONLY
|
70
|
71
|
MY_EMAIL_ADDRESS
|
71
|
72
|
MY_USERNAME)
|
72
|
73
|
|
|
74
|
+function expire_pleroma_posts {
|
|
75
|
+ domain_name=$1
|
|
76
|
+ expire_months=$3
|
|
77
|
+
|
|
78
|
+ if [ ! $expire_months ]; then
|
|
79
|
+ expire_months=3
|
|
80
|
+ fi
|
|
81
|
+
|
|
82
|
+ expire_days=$((expire_months * 30))
|
|
83
|
+
|
|
84
|
+ # files are what take up most of the backup time, so don't keep them for very long
|
|
85
|
+ expire_days_files=7
|
|
86
|
+
|
|
87
|
+ # To prevent the database size from growing endlessly this script expires posts
|
|
88
|
+ # after a number of months
|
|
89
|
+ if [ ! -d /etc/pleroma ]; then
|
|
90
|
+ return
|
|
91
|
+ fi
|
|
92
|
+
|
|
93
|
+ echo '<?php' > $pleroma_expire_posts_script
|
|
94
|
+ echo '' >> $pleroma_expire_posts_script
|
|
95
|
+ echo "\$oldate=date((\"Y-m-d\"), strtotime(\"-${expire_months} months\"));" >> $pleroma_expire_posts_script
|
|
96
|
+ echo '$username="root";' >> $pleroma_expire_posts_script
|
|
97
|
+ echo "\$password=shell_exec('${PROJECT_NAME}-pass -u root -a postgresql');" >> $pleroma_expire_posts_script
|
|
98
|
+ echo "\$database=\"pleroma\";" >> $pleroma_expire_posts_script
|
|
99
|
+ echo '' >> $pleroma_expire_posts_script
|
|
100
|
+ echo 'if (!$link = pg_connect("host=localhost dbname=pleroma user=$username password=$password")) {' >> $pleroma_expire_posts_script
|
|
101
|
+ echo ' echo "Could not connect to postgresql";' >> $pleroma_expire_posts_script
|
|
102
|
+ echo ' exit;' >> $pleroma_expire_posts_script
|
|
103
|
+ echo '}' >> $pleroma_expire_posts_script
|
|
104
|
+ echo '' >> $pleroma_expire_posts_script
|
|
105
|
+ echo "\$notice_query=\"DELETE FROM notifications WHERE inserted_at <= '\$oldate 01:01:01'\";" >> $pleroma_expire_posts_script
|
|
106
|
+ echo 'pg_exec($link, $notice_query);' >> $pleroma_expire_posts_script
|
|
107
|
+ echo '$rowaff1=pg_affected_rows($link);' >> $pleroma_expire_posts_script
|
|
108
|
+ echo 'pg_close($link);' >> $pleroma_expire_posts_script
|
|
109
|
+ echo '' >> $pleroma_expire_posts_script
|
|
110
|
+ echo "\$objects_query=\"DELETE FROM objects WHERE inserted_at <= '\$oldate 01:01:01'\";" >> $pleroma_expire_posts_script
|
|
111
|
+ echo 'pg_exec($link, $objects_query);' >> $pleroma_expire_posts_script
|
|
112
|
+ echo '$rowaff2=pg_affected_rows($link);' >> $pleroma_expire_posts_script
|
|
113
|
+ echo 'pg_close($link);' >> $pleroma_expire_posts_script
|
|
114
|
+ echo '' >> $pleroma_expire_posts_script
|
|
115
|
+ echo -n "echo \"Expire pleroma posts: " >> $pleroma_expire_posts_script
|
|
116
|
+ echo '$rowaff1 notifications and $rowaff2 objects deleted from database.\n";' >> $pleroma_expire_posts_script
|
|
117
|
+ chmod +x $pleroma_expire_posts_script
|
|
118
|
+
|
|
119
|
+ pleroma_expire_script=/etc/cron.daily/pleroma-expire
|
|
120
|
+ echo '#!/bin/bash' > $pleroma_expire_script
|
|
121
|
+ echo "find /etc/pleroma/uploads/* -mtime +${expire_days_files} -exec rm -rf {} +" >> $pleroma_expire_script
|
|
122
|
+ echo "/usr/bin/php $pleroma_expire_posts_script" >> $pleroma_expire_script
|
|
123
|
+ chmod +x $pleroma_expire_script
|
|
124
|
+
|
|
125
|
+ # remove any old cron job
|
|
126
|
+ if grep -q "pleroma-expire" /etc/crontab; then
|
|
127
|
+ sed -i "/pleroma-expire/d" /etc/crontab
|
|
128
|
+ rm /usr/bin/pleroma-expire
|
|
129
|
+ fi
|
|
130
|
+
|
|
131
|
+ # remove old expire script
|
|
132
|
+ if [ -f /etc/cron.weekly/clear-pleroma-database ]; then
|
|
133
|
+ rm /etc/cron.weekly/clear-pleroma-database
|
|
134
|
+ fi
|
|
135
|
+}
|
|
136
|
+
|
73
|
137
|
function pleroma_recompile {
|
74
|
138
|
# necessary after parameter changes
|
75
|
139
|
chown -R pleroma:pleroma $PLEROMA_DIR
|
|
@@ -353,6 +417,7 @@ function pleroma_set_title {
|
353
|
417
|
|
354
|
418
|
function pleroma_set_expire_months {
|
355
|
419
|
PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain")
|
|
420
|
+ read_config_param "PLEROMA_DOMAIN_NAME"
|
356
|
421
|
read_config_param "PLEROMA_EXPIRE_MONTHS"
|
357
|
422
|
|
358
|
423
|
data=$(tempfile 2>/dev/null)
|
|
@@ -378,7 +443,7 @@ function pleroma_set_expire_months {
|
378
|
443
|
PLEROMA_EXPIRE_MONTHS=$new_expiry_months
|
379
|
444
|
write_config_param "PLEROMA_EXPIRE_MONTHS" "$PLEROMA_EXPIRE_MONTHS"
|
380
|
445
|
|
381
|
|
- # TODO
|
|
446
|
+ expire_pleroma_posts $PLEROMA_DOMAIN_NAME $PLEROMA_EXPIRE_MONTHS
|
382
|
447
|
|
383
|
448
|
dialog --title $"Set Pleroma post expiry period" \
|
384
|
449
|
--msgbox $"Expiry period set to $PLEROMA_EXPIRE_MONTHS months" 6 60
|
|
@@ -499,6 +564,7 @@ function pleroma_add_emoji {
|
499
|
564
|
}
|
500
|
565
|
|
501
|
566
|
function configure_interactive_pleroma {
|
|
567
|
+ read_config_param PLEROMA_DOMAIN_NAME
|
502
|
568
|
read_config_param PLEROMA_EXPIRE_MONTHS
|
503
|
569
|
while true
|
504
|
570
|
do
|
|
@@ -531,6 +597,11 @@ function configure_interactive_pleroma {
|
531
|
597
|
}
|
532
|
598
|
|
533
|
599
|
function upgrade_pleroma {
|
|
600
|
+ read_config_param PLEROMA_DOMAIN_NAME
|
|
601
|
+ if [ ! -f $pleroma_expire_posts_script ]; then
|
|
602
|
+ expire_pleroma_posts $PLEROMA_DOMAIN_NAME $PLEROMA_EXPIRE_MONTHS
|
|
603
|
+ fi
|
|
604
|
+
|
534
|
605
|
CURR_PLEROMA_COMMIT=$(get_completion_param "pleroma commit")
|
535
|
606
|
if [[ "$CURR_PLEROMA_COMMIT" == "$PLEROMA_COMMIT" ]]; then
|
536
|
607
|
return
|
|
@@ -542,6 +613,8 @@ function upgrade_pleroma {
|
542
|
613
|
|
543
|
614
|
sudo -u pleroma mix deps.get
|
544
|
615
|
pleroma_recompile
|
|
616
|
+
|
|
617
|
+ expire_pleroma_posts $PLEROMA_DOMAIN_NAME $PLEROMA_EXPIRE_MONTHS
|
545
|
618
|
}
|
546
|
619
|
|
547
|
620
|
function backup_local_pleroma {
|