IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Add-on Firefox bootstrap.js


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut Add-on Firefox bootstrap.js
    Bonjour a vous tous

    J'ai un add-on pour firefox dont la fonction est de bloquer une liste d'urls, malheureusement, ma liste d'urls se trouve a l'interieur de mon fichier bootstrap.js:

    voici le script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
    Cu.import('resource://gre/modules/Services.jsm');
     
    var urls_block = [ //if urls contain any of these elements they will be blocked or redirected, your choice based on code in observer line 17
    'URL1',
    'URL2',
    'URL3',
    'etc...'];
     
    var observers = {
        'http-on-modify-request': {
            observe: function (aSubject, aTopic, aData) {
                console.info('http-on-modify-request: aSubject = ' + aSubject + ' | aTopic = ' + aTopic + ' | aData = ' + aData);
                var httpChannel = aSubject.QueryInterface(Ci.nsIHttpChannel);
                var requestUrl = httpChannel.URI.spec;
                for (var i=0; i<urls_block.length; i++) {
                 if (requestUrl.indexOf(urls_block[i]) > -1) {
                  //httpChannel.cancel(Cr.NS_BINDING_ABORTED); //this aborts the load
                  httpChannel.redirectTo(Services.io.newURI('data:text,CONTENT BLOCKED"', null, null)); //can redirect with this line, if dont want to redirect and just block, then uncomment this line and comment out line above (line 17)
                  break;
    }
                }
            },
            reg: function () {
                Services.obs.addObserver(observers['http-on-modify-request'], 'http-on-modify-request', false);
            },
            unreg: function () {
                Services.obs.removeObserver(observers['http-on-modify-request'], 'http-on-modify-request');
            }
        }
    };
     
    function install() {}
     
    function uninstall() {}
     
    function startup() {
     for (var o in observers) {
     	observers[o].reg();
     }
    }
     
    function shutdown(aData, aReason) {
     if (aReason == APP_SHUTDOWN) return;
     
     for (var o in observers) {
     	observers[o].unreg();
     }
    }
    le script fonctionne nickel, mais développeurs de Firefox me demandent de faire en sorte que la liste soit externe au bootstrap.js et q'elle soit loadee quand c'est necessaire.

    merci a tous

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Bonjour,

    il est possible de mettre les URLs dans un fichier texte et de les lire lors du premier chargement.

    https://developer.mozilla.org/en-US/...o_text-streams

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    Merci pour cette premiere reponse, comme je l'ai dit je ne suis pas expert en javascript.

    Commment adapter donc ce code a mon add-on afin que ma database d'urls soit externe au bootstrap?

    merci encore

  4. #4
    Membre averti
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Points : 362
    Points
    362
    Par défaut
    Bonjour,
    Je ne connais rien à l'écriture des addons pour ffx, mais as tu regardé si tu pouvais utiliser une requêtre XMLHttpRequest ?
    L'idée est que ton addons doit-être qque part sur le disque, peut-être peux tu fournir un fichier contenant les urls avec le addon et essayer de le charger avec une XHR.
    Ou aller voir du coté de pref.js ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    justement c'est ce qu'il faut il faut que le script charge les urls quand c'est necessaire sans quils soient en local, maintenant moi avec mon add-on, le script que je viens de montrer ici, je ne sais pas comment faire ca, je ne sais pas comment adapter mon code, pour loader les urls depuis un fichier externe

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    mon problemme n'est toujours pas résolu :s

  7. #7
    Membre averti
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Points : 362
    Points
    362
    Par défaut
    C'est un problème d'écriture de add-on pour fxx, pas spécialement du javascript.
    A ta place j'irais voir par là, mais sans garantie :

    Une base :
    https://developer.mozilla.org/en-US/...ped_extensions

    Là, il y a des liens peut-être à consulter :
    https://developer.mozilla.org/en-US/...urther_reading

    C'est vieux mais ça en parle :
    http://forums.mozillazine.org/viewto...f=19&t=2794811

    dans la fonction startup, tu récupères une structure de données avec :
    installPath:nsIFile et resourceURI:nsIURI, doit y avoir moyen de l'utiliser

    peut-être voir du coté nsIChannel, ou https://developer.mozilla.org/en-US/...XMLHttpRequest

    Et le lien que t'as donné beekeep l'as tu exploité ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    La fonction readTextFromFile dans le lien de beekeep semble être exactement ce que tu cherches :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var urls_block =JSON.parse(readTextFromFile("taliste.json"));
    One Web to rule them all

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    Salut SylvainPv, comme tu le sais juis bloqué, je lis pas mal d'articles mais mon bleme c'est comment, et ou modifier mon add-on pour que ce nouveau systeme finctionne

  10. #10
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Et que fais-tu des trois précédentes réponses qu'on t'a donné ? On t'a dit tout ce qu'il y a à savoir...
    One Web to rule them all

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    et bien si je change mon code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var urls_block =JSON.parse(readTextFromFile("taliste.json"));
    le chemin ou se trouve le fichier contenant les urls reste visible :s c'est dangereux non? et de plus est ce que cela fonctionnera juste avec cette modif?

  12. #12
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    D'une manière ou d'une autre il faudra bien que le client récupère la liste donc je ne vois pas ce que ça change question sécurité. Par rapport à la sécurité, on avait déjà évoqué le sujet dans ton premier topic sur le même projet et tu avais écarté l'option de faire le test d'URL côté serveur. Donc pas le choix, il faut la charger côté client, mais de ce que tu nous as dit sur les remarques de la team Mozilla, un fichier externe semble leur convenir.

    de plus est ce que cela fonctionnera juste avec cette modif?

    Et si tu essayais pour voir ?
    One Web to rule them all

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    le fichier contenant les urls reste visible :s c'est dangereux non?
    Le fichier se trouve sur le poste du client, en quoi ça pourrait être dangereux que l'utilisateur de l'add-on puisse savoir qu'il y a un autre fichier sur son poste ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    et bien si le script contenant tous les urls est visible pour l'utilisateur final c'est pas rassurant ca peut etre mal utilisé.
    C'est l'equippe de mozilla qui ma demandé de faire en sorte que les urls soitn dans un fichier externe a uscript bootstrap.js, et que ces urls soient appelés, quand il le faut seulement.
    Seulement voila, je suis toujours bloqué avec ce problemme.
    nous sommes maintenant en debut 2015 et j'aimerais vraiment finaliser les script :s
    j'ai plus de 6000 utilisateurs de mon petit add-on, et on ma deja fait la remarque a propos des urls visibles pour l'utilisateur :s .

  15. #15
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Et le problème n'a pas bougé depuis 2014, tu te confrontes toujours au même choix: soit faire le boulot côté client ce qui implique que la liste d'URL soit accessible à tous les utilisateurs, soit faire un service web dédié à interroger à chaque requête de chacun de tes clients, ce qui est très coûteux à la fois pour toi et pour tes utilisateurs. Note que la solution serveur revient plus ou moins à faire un serveur proxy, donc l'extension Firefox ne servirait plus à rien en elle-même.
    One Web to rule them all

  16. #16
    Membre averti
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Points : 362
    Points
    362
    Par défaut
    Même si tes urls sont dans ton bootstrap.js, les extensions sont installées au mieux comme .jar, c'est à dire que le contenu (code et données) est accessible à qui veut bien se donner la peine de le chercher. Autrement dit, à l'intérieur de bootstrap.js ou en fichier à coté en terme de sécurité c'est la même chose. Tu peux toujours distribuer ton fichier d'urls dans le fichier .jar de l'application, il sera moins visible, si ça te rassure.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    Lysandro oui ce serait une idée a exploiter,
    le tout pour moi est de faire en sorte que la liste d'urls soti externe au bootstrap.js
    mais je ne sais pas comment faire ces changements dans mon add-on, cest cela que j'essaye de voir fini, le bootstrap.js appele le fichier qui sera dans le jar contenant tous les urls.

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    quelqun peut t'il m'aider a finaliser mon problemme?

  19. #19
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Est-ce qu'on pourrait voir la réponse des éditeurs lors de la revue de ton module ?

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 96
    Points : 36
    Points
    36
    Par défaut
    voila leur reponse:

    As mentioned in Version 1.4.30 · October 10, 2014 review, v1.4.45 review & v1.46 review:
    Please place database code in a separate file and load it in bootstrap.js when necessary.

    Please fix them and submit again. Thank you.

Discussions similaires

  1. Javascript et add-on Firefox
    Par AthackX dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 20/07/2010, 14h27
  2. Besoin de conseils pour un add-on firefox
    Par splash44 dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 21/10/2009, 20h05
  3. Tutoriel pour la création d'add-on firefox.
    Par Armagnak dans le forum Firefox
    Réponses: 3
    Dernier message: 24/07/2009, 11h53
  4. Scan materiel avec un plugin/add-on Firefox
    Par _Alexou dans le forum Firefox
    Réponses: 0
    Dernier message: 11/06/2009, 15h13
  5. Comment piloter un Add-On FireFox, à l'aide de javascript
    Par BozKiller dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/10/2007, 14h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo