Bläddra i källkod

Keep avatar images when expiring posts

Bob Mottram 7 år sedan
förälder
incheckning
b706fdba11
1 ändrade filer med 38 tillägg och 1 borttagningar
  1. 38
    1
      src/freedombone-app-pleroma

+ 38
- 1
src/freedombone-app-pleroma Visa fil

@@ -141,8 +141,45 @@ function expire_pleroma_posts {
141 141
     pleroma_expire_script=/etc/cron.daily/pleroma-expire
142 142
     echo '#!/bin/bash' > $pleroma_expire_script
143 143
     echo 'cd /etc/postgresql' >> $pleroma_expire_script
144
+    echo 'if [ -d /etc/pleroma/tempfiles ]; then' >> $pleroma_expire_script
145
+    echo '    rm -rf /etc/pleroma/tempfiles' >> $pleroma_expire_script
146
+    echo 'fi' >> $pleroma_expire_script
147
+    echo '' >> $pleroma_expire_script
148
+    echo '# make directory to temporarily store local avatars' >> $pleroma_expire_script
149
+    echo 'mkdir /etc/pleroma/tempfiles' >> $pleroma_expire_script
150
+    echo '' >> $pleroma_expire_script
151
+    echo '# get the local avatar files' >> $pleroma_expire_script
152
+    echo "avatars=\$(sudo -u postgres psql -d pleroma -c \"select avatar->>'url' from users where avatar->>'url' like '%${domain_name}%'\")" >> $pleroma_expire_script
153
+    echo '' >> $pleroma_expire_script
154
+    echo '# copy the avatar files to a temporary directory' >> $pleroma_expire_script
155
+    echo 'arr=( $avatars )' >> $pleroma_expire_script
156
+    echo 'for i in "${arr[@]}"; do' >> $pleroma_expire_script
157
+    echo '    if [[ "$i" == *'/media/'* ]]; then' >> $pleroma_expire_script
158
+    echo "        imagefile=/etc/pleroma/uploads/\$(echo \$i | sed 's|\"||g' | sed 's|,||g' | awk -F '/media/' '{print \$2}');" >> $pleroma_expire_script
159
+    echo '        if [ -f $imagefile ]; then' >> $pleroma_expire_script
160
+    echo "            imagedir=/etc/pleroma/uploads/\$(echo \$i | sed 's|\"||g' | sed 's|,||g' | awk -F '/media/' '{print \$2}' | awk -F '/' '{print \$1}')" >> $pleroma_expire_script
161
+    echo '            nowdate=$(date +%s)' >> $pleroma_expire_script
162
+    echo '            sinceepoch=$(date +%s -r $imagefile)' >> $pleroma_expire_script
163
+    echo '            daysold=$((($nowdate - $sinceepoch) / 86400))' >> $pleroma_expire_script
164
+    echo "            if [ \$daysold -ge ${expire_days_files} ]; then" >> $pleroma_expire_script
165
+    echo '                if [ ! -d /etc/pleroma/tempfiles/$imagedir ]; then' >> $pleroma_expire_script
166
+    echo '                    mkdir /etc/pleroma/tempfiles/$imagedir' >> $pleroma_expire_script
167
+    echo '                fi' >> $pleroma_expire_script
168
+    echo '                cp -rp $imagefile /etc/pleroma/tempfiles/$imagedir' >> $pleroma_expire_script
169
+    echo '            fi' >> $pleroma_expire_script
170
+    echo '        fi' >> $pleroma_expire_script
171
+    echo '    fi' >> $pleroma_expire_script
172
+    echo 'done' >> $pleroma_expire_script
173
+    echo '' >> $pleroma_expire_script
174
+    echo '# delete old files' >> $pleroma_expire_script
144 175
     echo "find /etc/pleroma/uploads/* -mtime +${expire_days_files} -exec rm -rf {} +" >> $pleroma_expire_script
145
-    echo "$pleroma_expire_posts_script 2> /dev/null" >> $pleroma_expire_script
176
+    echo '' >> $pleroma_expire_script
177
+    echo '# copy avatar files back to uploads' >> $pleroma_expire_script
178
+    echo 'chown -R pleroma:pleroma /etc/pleroma/tempfiles' >> $pleroma_expire_script
179
+    echo 'cp -rp /etc/pleroma/tempfiles/* /etc/pleroma/uploads' >> $pleroma_expire_script
180
+    echo 'rm -rf /etc/pleroma/tempfiles' >> $pleroma_expire_script
181
+    echo '' >> $pleroma_expire_script
182
+    echo '/usr/bin/pleroma-expire-posts 2> /dev/null' >> $pleroma_expire_script
146 183
     chmod +x $pleroma_expire_script
147 184
 
148 185
     # remove any old cron job