Liens spéciaux qui ne sont pas en *:// mal interprétés

TetsumakiTetsumaki Member
décembre 2013 modifié dans Bogues
version : PluXml 5.2
condition : avec ou sans CKEditor

Bug signalé sur GitHub

Lorsque l'on crée un lien celui-ci à cette forme :
<a href="http://domain.com">http://domain.com</a>

Que ce soit ftp://, news:// ou n'importe quoi *:// il n'y a aucun problème.

Si le lien n'a pas cette forme ça va poser soucis et c'est problématique.

Dans le cas ou l'on veut faire un lien de souscription à un groupe de filtre AdBlock par exemple.

Le lien a cette forme :
<a href="abp:subscribe?location=https://easylist-downloads.adblockplus.org/easyprivacy.txt&title=EasyPrivacy">EasyPrivacy</a>

Malheureusement celui-ci sera mal interprété.

Au lieu de :
<a href="abp:subscribe?location=https://easylist-downloads.adblockplus.org/easyprivacy.txt&title=EasyPrivacy">EasyPrivacy</a>

Je vais avoir :
<a href="http(s)://monsite.com/abp:subscribe?location=https://easylist-downloads.adblockplus.org/easyprivacy.txt&title=EasyPrivacy">EasyPrivacy</a>

J'ai mis un exemple avec AdBlock mais le problème doit se poser pour pleins d'autres choses.

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Tetsumaki

    As-tu un lien (documentation) qui donne/explique la syntaxe à respecter pour ajouter des liens adp (abp:subscribe?...)
    abp:subscribe?location=https://easylist-downloads.adblockplus.org/easyprivacy.txt&title=EasyPrivacy
    

    Est-ce que c'est uniquement avec la réécriture d'url activée ?

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    Peux-tu stp valider cette solution avec les différents cas de figure que tu as référencé

    Dans la fonction rel2abs (class.plx.utils.php), remplacer la ligne :
    $html = preg_replace('@\<([^>]*) (href|src)="'. $base . '(mailto|javascript):@i', '<\1 \2="\3:', $html);
    
    par :
    $html = preg_replace('@\<([^>]*) (href|src)="'. $base . '([a-zA-Z0-9]*):@i', '<\1 \2="\3:', $html);
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • TetsumakiTetsumaki Member
    septembre 2013 modifié
    Merci, ta solution fonctionne.
    Cette modification sera apportée de base sur la prochaine version de PluXml ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    oui

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Ok super, merci, j'ai mis en [résolu].
  • TetsumakiTetsumaki Member
    décembre 2013 modifié
    Stéphane a écrit:
    Peux-tu stp valider cette solution avec les différents cas de figure que tu as référencé

    Dans la fonction rel2abs (class.plx.utils.php), remplacer la ligne :
    $html = preg_replace('@\<([^>]*) (href|src)="'. $base . '(mailto|javascript):@i', '<\1 \2="\3:', $html);
    
    par :
    $html = preg_replace('@\<([^>]*) (href|src)="'. $base . '([a-zA-Z0-9]*):@i', '<\1 \2="\3:', $html);
    
    Bonjour, je relance ce sujet.
    Suite à la mise à jour en 5.2 et à la modification manuelle comme expliqué ci-dessus j'ai toujours un problème qui je crois est lié.

    Lorsque j'écris un @ dans une balise <pre> par exemple root@ip ou alors email@domain.com ou peu importe.
    Je vais voir affiché en clair <script type="text/javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%72%6f%6f%74%40%69%70%27%29')) dans le bloc
  • Je viens de me souvenir que j'avais déjà crée un sujet ici avec une solution inappropriée : http://forum.pluxml.org/viewtopic.php?pid=36243
Connectez-vous ou Inscrivez-vous pour répondre.