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
Dovrebbe essere molto più semplice per una persona che conosce bene il codice sorgente, però
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?
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 né /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.
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.