Come elimino il file dell'avatar dell'utente?

Questo è l’obiettivo che non so come raggiungere. Come reverse engineer di iOS, la mia idea è che se conosco nel codice sorgente come e dove il server invia questa immagine, posso risalire indietro e vedere dove il server carica quest’immagine localmente. Ma leggo il Ruby come se fosse pseudo-codice, quindi individuare dove il server invia questa immagine diventa un compito enorme per me :sob: Dovrebbe essere molto più semplice per una persona che conosce bene il codice sorgente, però

1 Mi Piace

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

ho visto la tabella uploads che memorizza tutti i file caricati da un utente. Per l’utente Baal998, il cui ID è 1637, ho eseguito SELECT * FROM uploads WHERE user_id = '1637'; e il risultato è:

  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)

Che corrisponde all’esecuzione di Upload.find(user_avatar.custom_upload_id).url con Rails.

Il mio sospetto è che, dopo che un utente ha caricato l’avatar, Discourse elabori il file originale dell’avatar e memorizzi i file ottimizzati altrove?

1 Mi Piace

Nella tabella optimized_images questa riga sembrava sospetta

  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 riga)

L’sha1 e la filesize corrispondono a https://iosre.com/user_avatar/iosre.com/baal998/135/2210_2.png , ma sul server questo file non esiste.

root@iosre:/var/discourse/shared/standalone# ls /uploads/default/optimized/2X/c/cb2188eaeecc3a648f021fa00da4734bd60ca183_2_135x135.jpg
ls: impossibile accedere a /uploads/default/optimized/2X/c/cb2188eaeecc3a648f021fa00da4734bd60ca183_2_135x135.jpg: File o directory non esistente

Non ho idea di cosa non abbia funzionato.

Problema risolto:

Qualcuno del mio forum mi ha detto che questa immagine dell’avatar potrebbe essere memorizzata nella cache di nginx sotto proxy_cache_path, che di solito è /var/nginx/cache, ma non sono riuscito a trovare né proxy_cache_path/var/nginx/cache.

Grazie al suo suggerimento, ho accesso all’applicazione Discourse tramite launcher enter app e ho trovato la cache di nginx:

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# 

E ho eliminato tutte le cache:

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

L’immagine è sparita.

6 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.