Mon site web est hébergé en Chine et, comme vous le savez, tous les sites chinois doivent obtenir une licence gouvernementale ; par conséquent, tous les sites chinois sont soumis à une surveillance.
Quelqu’un a récemment signalé à mon fournisseur de CDN, Qiniu (qui est également une entreprise chinoise), que certaines images de mon site étaient illégales. Mon fournisseur de CDN m’a informé que je devais supprimer ces images et « rafraîchir les caches d’URL », sinon il pourrait suspendre mon compte conformément à la loi. Cependant, j’ai constaté que ces images étaient des avatars d’utilisateurs, et je ne sais pas comment les supprimer.
Selon How to Delete Uploaded Files? - #3 by codinghorror et How to Delete Uploaded Files? - #25 by Falco, les images téléchargées sans références sont automatiquement supprimées après 48 heures. J’ai remplacé ces avatars d’utilisateurs par les avatars par défaut avec des lettres, mais rien ne semble se produire avec les anciens avatars après 72 heures. Peut-être est-ce parce que les avatars d’utilisateurs ne sont pas considérés comme des images téléchargées ?
Avez-vous des idées sur la façon de supprimer complètement les fichiers d’avatars d’utilisateurs de mon serveur ?
Et /uploads se trouve sous /shared/standalone plutôt que sous /shared.
Et il n’y a pas un tel fichier dans /uploads, comme vous pouvez le voir dans le shell :
root@iosre:/var/discourse/shared# ls
standalone
root@iosre:/var/discourse/shared# cd standalone/
root@iosre:/var/discourse/shared/standalone# ls
backups postgres_backup postgres_run state uploads
log postgres_data redis_data tmp
root@iosre:/var/discourse/shared/standalone# find . -name 5414_2.png
root@iosre:/var/discourse/shared/standalone# cd uploads/
root@iosre:/var/discourse/shared/standalone/uploads# find . -name 5414_2.png
root@iosre:/var/discourse/shared/standalone/uploads#
Oh, désolé. Les avatars fonctionnent différemment. Je devrais examiner le code pour savoir où chercher. Si c’est une urgence et que vous avez un budget, veuillez me contacter directement. Sinon, je n’aurai probablement pas de temps libre pour enquêter. Peut-être que quelqu’un d’autre le sait.
Pour empêcher les utilisateurs de télécharger de futurs avatars, vous pouvez désactiver l’option « autoriser les avatars téléchargés » et activer le paramètre du site « avatars sélectionnables » avec une grande sélection.
Je pense que vous devrez peut-être télécharger un espace réservé de remplacement pour permettre la suppression automatique — l’enregistrement de l’utilisateur conserve toujours l’image de l’avatar téléchargée, même si elle n’est pas utilisée.
Les fichiers téléchargés sont nommés en fonction du SHA1 du contenu de l’image — cela pourrait vous aider à trouver le fichier sous-jacent ?
J’ai plus de 7 000 utilisateurs enregistrés et moins de 5 d’entre eux utilisent des avatars illégaux sans le savoir. Je ne veux donc pas transformer cela en un problème binaire (0 ou 1) ; je préfère résoudre cela au cas par cas plutôt que d’empêcher tous les utilisateurs d’utiliser des avatars personnalisés.
Comment puis-je faire cela ? Je n’ai aucune idée du tout.
S’agit-il d’un extrait de code ? Où et comment l’exécuter ? J’étais auparavant développeur iOS et je ne suis pas familier avec la programmation front-end.
root@iosre:~# cd /var/discourse/shared/
root@iosre:/var/discourse/shared# /var/discourse/launcher enter app
ATTENTION : La version Docker 17.05.0-ce est obsolète, il est recommandé de passer à la version 17.06.2 ou supérieure.
root@iosre-app:/var/www/discourse# rails c
[1] pry(main)> a=UserAvatar.where(user_id: 1234)
=> []
[2] pry(main)> a=UserAvatar.where(user_id: lincwee)
NameError : variable locale ou méthode `lincwee' non définie pour main:Object
from (pry):2:in `__pry__'
[3] pry(main)> a=UserAvatar.where(user_id: 'lincwee')
=> []
[4] pry(main)>
pour lister toutes les URL des avatars et les supprimer de mon serveur.
Mais je suppose que je dois encore actualiser davantage le système/le cache ? Comment dois-je procéder ?
J’ai reçu un autre e-mail de mon fournisseur CDN et ils ont gelé mon compte CDN. Je dois donc mettre à jour ce fil pour obtenir de l’aide supplémentaire.
Le nouvel e-mail indiquait que les liens suivants étaient illégaux.
Comme vous pouvez le voir, il s’agit de deux avatars d’utilisateurs, qui sont des mèmes d’un ancien président chinois. Encore une fois, le fournisseur CDN m’a demandé de supprimer ces fichiers du serveur et de rafraîchir le CDN.
Je pouvais voir dans le lien que les utilisateurs étaient « baal998 » et « lincwee ». Selon l’extrait de code de mon dernier message, l’URL de l’avatar téléchargé de « lincwee » était /uploads/default/original/2X/5/55512211b1c8969c8038b79840464952cd3eb089.jpeg, tandis que pour « baal998 », c’était /uploads/default/original/2X/c/cb2188eaeecc3a648f021fa00da4734bd60ca183.jpg. J’ai ensuite exécuté find /var/discourse/shared/ -name *55512211b1c8969c8038b79840464952cd3eb089* et supprimé tous les fichiers trouvés ; cela a fonctionné pour « lincwee ». Mais pas de chance pour « baal998 », je pouvais toujours accéder à https://iosre.com/user_avatar/iosre.com/baal998/135/2210_2.png même s’il n’y avait plus de fichiers portant le nom *cb2188eaeecc3a648f021fa00da4734bd60ca183*.
Ou pour simplifier : Comment Discourse analyse-t-il une visite sur https://iosre.com/user_avatar/iosre.com/baal998/135/2210_2.png ? Si quelqu’un qui connaît le code source peut m’indiquer le fichier source ou la classe/fonction concernée, ce serait vraiment utile. Merci !
De plus, commencez par récupérer depuis votre serveur, et non depuis le CDN. Vous devez vous assurer de résoudre le problème au bon endroit. Une fois que vous êtes certain que le serveur n’envoie pas les images, vous pourrez travailler avec le CDN.
Oui, et vous voyez que c’est envoyé par votre serveur. C’est donc ce lien qu’il faut tenter de corriger. Une fois que vous avez arrêté l’envoi des images, vous pouvez vider le CDN.