Filtre d'images Discourse

Ce plugin utilise l’API Google Cloud Vision pour restreindre le téléchargement d’images explicites sur le forum. Il prend en compte toutes les images téléchargées, c’est-à-dire les avatars, les logos, etc.

Il utilise la fenêtre contextuelle d’erreur de téléchargement pour afficher un message expliquant quelles violations ont entraîné la restriction du téléchargement de l’image.

Les limites acceptables peuvent être définies via les paramètres du site.


Configuration

Étapes :

  1. Créez un compte de service sur Google Cloud Create service accounts  |  Identity and Access Management (IAM)  |  Google Cloud Documentation
    Google déclenchera le téléchargement d’un fichier JSON. Stockez son contenu en toute sécurité.

  2. Collez ces lignes au bas de la section env dans votre fichier app.yml

     GOOGLE_ACCOUNT_TYPE: 'service_account'
     GOOGLE_CLIENT_ID: 'client-id-from-json-file'
     GOOGLE_CLIENT_EMAIL: "service-account-email-address"
     GOOGLE_PRIVATE_KEY:  instructions ci-dessous
    
  • Comment configurer le paramètre GOOGLE_PRIVATE_KEY ?

    • Collez la clé du fichier JSON dans un éditeur de code.
    • Utilisez trouver et remplacer pour remplacer \\n par \\\\n.
    • Copiez le résultat et collez-le dans app.yml devant GOOGLE_PRIVATE_KEY en l’entourant de guillemets simples ' '.
  1. Suivez ensuite les étapes habituelles d’installation du plugin.

Paramètres du plugin

if_adult_max_acceptable: Niveau maximum acceptable pour la catégorie adult
if_spoof_max_acceptable: Niveau maximum acceptable pour la catégorie spoof
if_medical_max_acceptable: Niveau maximum acceptable pour la catégorie medical
if_violence_max_acceptable: Niveau maximum acceptable pour la catégorie violence
if_racy_max_acceptable: Niveau maximum acceptable pour la catégorie racy

Vous pouvez lire en détail ces critères et l’API elle-même ici. Detect explicit content (SafeSearch)  |  Cloud Vision API  |  Google Cloud Documentation

\u003ca href=“GitHub - paviliondev/discourse-image-filter: A plugin to restrict uploading explicit content based on set criteria · GitHub” target=“_blank”\u003e:page_facing_up: Obtenir le code\u003c/a\u003e

\u003ca href=“Pavilion” target=“_blank”\u003e:raising_hand_woman: Demander une fonctionnalité\u003c/a\u003e

\u003ca href=“Pavilion” target=“_blank”\u003e:bug: Signaler un bug\u003c/a\u003e

Notes de développement

Pour une utilisation dans un environnement de développement sous macOS, ajoutez cette ligne à votre fichier .bash_profile :
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Perdu ?

Merci à @Terrapop pour le sponsoring du plugin.

22 « J'aime »

@riking

J’ai créé cette PR FIX: erroneous condition which would cause an error if ever satisfied by fzngagan · Pull Request #10605 · discourse/discourse · GitHub car j’ai réalisé que la fenêtre contextuelle d’erreur de téléchargement ne s’affichait pas lorsqu’une exception côté Rails survenait lors du téléchargement d’avatars ou de logos. Cela fonctionne bien lors du téléchargement depuis le compositeur. J’ai pensé que ce serait une modification intéressante à intégrer en amont.

6 « J'aime »

Merci pour le signalement, j’ai manqué la notification GitHub.

5 « J'aime »

Merci beaucoup pour la fusion. Cela aide à la fois Discourse et mon plugin.

4 « J'aime »

Super, merci pour votre aide @fzngagan pour rendre cela possible, ce fut un plaisir de travailler avec vous.

Pour toutes les communautés soumises aux exigences COPPA de sécurité pour les enfants, ou souhaitant rester en sécurité en matière d’Adsense, ou simplement ne pas vouloir d’images sanglantes ou nues nulle part, ce plugin est indispensable.

7 « J'aime »

@Razcle
Cela pourrait vous intéresser

Merci Faizaan ! Je pensais créer quelque chose de plus axé sur la compréhension du langage et personnalisable. As-tu déjà de l’expérience dans ce domaine ?

R

3 « J'aime »

@jahan_gagan pourrait avoir quelque chose à dire sur le TAL.

2 « J'aime »

J’ai essayé le jeu de données Stack Overflow pour la prédiction de balises. Ensuite, j’ai appliqué le même code au jeu de données Discourse, mais en raison du volume de données plus faible sur Discourse, ce code n’a pas fonctionné ici.

2 « J'aime »

De quelles étendues ai-je besoin pour mon compte de service ? Je reçois le message « La demande ne dispose pas des étendues d’authentification suffisantes ».

Cela peut aider ? Fonctionne entièrement côté client

modèle de toxicité du texte

Ce plugin concerne les IMAGES, et non le texte.

Pour le texte, un plugin Google Perspective basé sur le moteur Jigsaw est disponible :

2 « J'aime »

Bonjour :waving_hand: Ce plugin est-il toujours fonctionnel ? Je viens de voir que le dernier commit remonte à environ 4 ans. Merci :slightly_smiling_face:

1 « J'aime »

J’ai essayé de l’installer sur une instance de test, mais il semble y avoir un problème de gem. La reconstruction a échoué. J’espère que c’est réparable. :crossed_fingers: Peut-être que ces gems sont simplement obsolètes…

rake aborted!

Gem::LoadError: can't activate google-protobuf-3.13.0-x86_64-linux, already activated google-protobuf-4.27.3-x86_64-linux (Gem::LoadError)

/var/www/discourse/lib/plugin_gem.rb:25:in `load'

/var/www/discourse/lib/plugin/instance.rb:835:in `gem'

/var/www/discourse/plugins/discourse-image-filter/plugin.rb:12:in `activate!'

/var/www/discourse/lib/plugin/instance.rb:778:in `instance_eval'

/var/www/discourse/lib/plugin/instance.rb:778:in `activate!'

/var/www/discourse/lib/discourse.rb:348:in `block in activate_plugins!'

/var/www/discourse/lib/discourse.rb:345:in `each'

/var/www/discourse/lib/discourse.rb:345:in `activate_plugins!'

/var/www/discourse/config/application.rb:231:in `block in <class:Application>'

/var/www/discourse/lib/plugin.rb:6:in `initialization_guard'

/var/www/discourse/config/application.rb:231:in `<class:Application>'

/var/www/discourse/config/application.rb:75:in `<module:Discourse>'

/var/www/discourse/config/application.rb:74:in `<top (required)>'

/var/www/discourse/Rakefile:7:in `<top (required)>'

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'

/usr/local/bin/bundle:25:in `load'

/usr/local/bin/bundle:25:in `<main>'

(See full trace by running task with --trace)

I, [2024-08-02T16:48:02.872895 #1] INFO -- : gem install os -v 1.1.1 -i /var/www/discourse/plugins/discourse-image-filter/gems/3.3.3 --no-document --ignore-dependencies --no-user-install

Successfully installed os-1.1.1

1 gem installed

gem install google-protobuf -v 3.13.0 -i /var/www/discourse/plugins/discourse-image-filter/gems/3.3.3 --no-document --ignore-dependencies --no-user-install

Successfully installed google-protobuf-3.13.0-x86_64-linux

1 gem installed

I, [2024-08-02T16:48:02.886926 #1] INFO -- : Terminating async processes

I, [2024-08-02T16:48:02.888160 #1] INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 36

I, [2024-08-02T16:48:02.888588 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 98

2024-08-02 16:48:02.888 UTC [36] LOG: received fast shutdown request

98:signal-handler (1722617282) Received SIGTERM scheduling shutdown...

2024-08-02 16:48:02.892 UTC [36] LOG: aborting any active transactions

98:M 02 Aug 2024 16:48:02.896 # User requested shutdown...

98:M 02 Aug 2024 16:48:02.897 * Saving the final RDB snapshot before exiting.

2024-08-02 16:48:02.906 UTC [36] LOG: background worker "logical replication launcher" (PID 51) exited with exit code 1

2024-08-02 16:48:02.909 UTC [46] LOG: shutting down

98:M 02 Aug 2024 16:48:02.939 * DB saved on disk

98:M 02 Aug 2024 16:48:02.939 # Redis is now ready to exit, bye bye...

2024-08-02 16:48:02.949 UTC [36] LOG: database system is shut down

FAILED

--------------------

Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #&lt;Process::Status: pid 571 exit 1&gt;

Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'

exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}

bootstrap failed with exit code 1

** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

./discourse-doctor may help diagnose the problem.

9213a43b80e800c6f2b1d0adc0663ec82a483b860f0302b8ebabc8a3b2bb0619

J’ai marqué ceci comme broken.

2 « J'aime »