Wie lösche ich die Datei des Benutzeravatars?

Das ist das Ziel, bei dem ich nicht weiß, wie ich es erreichen soll. Als iOS-Reverse-Engineer ist meine Idee, dass ich, wenn ich im Quellcode weiß, wie/wodurch der Server dieses Bild sendet, zurückverfolgen kann, wo der Server dieses Bild lokal lädt. Aber ich lese Ruby wie Pseudocode, sodass es für mich eine riesige, riesige Aufgabe wird, herauszufinden, wo der Server dieses Bild sendet :sob: Für jemanden, der mit dem Quellcode vertraut ist, sollte das jedoch viel einfacher sein.

In discourse/app/models/upload.rb at main · discourse/discourse · GitHub

Ich habe die Tabelle uploads gesehen, die alle Hochläufe eines Benutzers speichert. Für den Benutzer Baal998 mit der Benutzer-ID 1637 habe ich dann SELECT * FROM uploads WHERE user_id = '1637'; ausgeführt. Das Ergebnis lautet:

  id  | user_id | original_filename | filesize | width | height |                                     url                                     |         created_at         |         updated_at         |                   sha1                   | origin | retain_hours | extension | thumbnail_width | thumbnail_height | etag | secure | access_control_post_id | original_sha1 | animated | verified | verification_status 
------+---------+-------------------+----------+-------+--------+-----------------------------------------------------------------------------+----------------------------+----------------------------+------------------------------------------+--------+--------------+-----------+-----------------+------------------+------+--------+------------------------+---------------+----------+----------+---------------------
 2210 |    1637 | 2.pic.jpg         |    60610 |       |        | /uploads/default/original/2X/c/cb2188eaeecc3a648f021fa00da4734bd60ca183.jpg | 2016-08-08 09:37:13.937306 | 2018-01-05 02:38:49.498264 | cb2188eaeecc3a648f021fa00da4734bd60ca183 |        |              | jpg       |                 |                  |      | f      |                        |               |          |          |                   1
(1 row)

Das entspricht dem Ergebnis von Upload.find(user_avatar.custom_upload_id).url in Rails.

Meine Vermutung ist, dass Discourse nach dem Hochladen des Avatars etwas mit der ursprünglichen Avatar-Datei macht und die optimierten Dateien an einem anderen Ort speichert?

In der Tabelle optimized_images wirkte diese Zeile verdächtig

  id   |                   sha1                   | extension | width | height | upload_id |                                          url                                           | filesize | etag | version |         created_at         |         updated_at         
-------+------------------------------------------+-----------+-------+--------+-----------+----------------------------------------------------------------------------------------+----------+------+---------+----------------------------+----------------------------
 49538 | e6dc9b0d6c18f2a4c3c0d2027534d01cfc89c84e | .jpg      |   135 |    135 |      2210 | /uploads/default/optimized/2X/c/cb2188eaeecc3a648f021fa00da4734bd60ca183_2_135x135.jpg |    10968 |      |       2 | 2016-08-08 09:37:13.937306 | 2016-08-08 09:37:13.937306
(1 row)

Die Werte für sha1 und filesize stimmen mit https://iosre.com/user_avatar/iosre.com/baal998/135/2210_2.png überein, aber auf dem Server existiert diese Datei nicht.

root@iosre:/var/discourse/shared/standalone# ls /uploads/default/optimized/2X/c/cb2188eaeecc3a648f021fa00da4734bd60ca183_2_135x135.jpg
ls: cannot access /uploads/default/optimized/2X/c/cb2188eaeecc3a648f021fa00da4734bd60ca183_2_135x135.jpg: No such file or directory

Ich habe keine Ahnung, was schiefgelaufen ist.

Problem gelöst:

Jemand aus meinem Forum hat mir gesagt, dass dieses Avatar-Bild möglicherweise im nginx-Cache unter proxy_cache_path gespeichert ist, was normalerweise /var/nginx/cache ist. Ich konnte jedoch weder proxy_cache_path noch /var/nginx/cache finden.

Er hat mich inspiriert, die Discourse-App über launcher enter app zu betreten, und dann den nginx-Cache gefunden:

root@iosre:/var/discourse/shared# /var/discourse/launcher enter app
WARNING: Docker version 17.05.0-ce deprecated, recommend upgrade to 17.06.2 or newer.
root@iosre-app:/var/www/discourse# cd /var/nginx/cache
root@iosre-app:/var/nginx/cache# ls
0  1  2  3  4  5  6  7	8  9  a  b  c  d  e  f
root@iosre-app:/var/nginx/cache# 

Und alle Caches gelöscht:

root@iosre-app:/var/nginx/cache# ls
root@iosre-app:/var/nginx/cache# 

Das Bild war weg.