Ticket #788 (closed defeito: testing)

Opened 9 years ago

Last modified 9 years ago

Expressão regular no método replace_links, classe imap_functions.

Reported by: amuller Owned by: rodsouza
Priority: grave Milestone: Expresso 2.0.4
Component: ExpressoMail Version: branch 2.0
Severity: Keywords: reg exp links replace
Cc: amuller WorkGroup:

Description

Ao ler uma mensagem no expresso existe e substituição de  http:// e www por link e de link por um target para não abrir na página do expresso. Esta expressão regular está ilegível e não funciona 100% das vezes. Proponho refazer esta parte.

Attachments

mensagens_problemas_criar_links.zip Download (941.1 KB) - added by rodsouza 9 years ago.
mensagens_com_muitos_links.zip Download (15.8 KB) - added by rodsouza 9 years ago.
fonte_da_mensagem_6.eml Download (20.6 KB) - added by rodsouza 9 years ago.

Change History

comment:1 Changed 9 years ago by niltonneto

Manda ver. Só para melhoras a rastreabilidade de problema aqui no Trac, tal correção foi feita anteriormente no ticket #672, mas pelo jeito não resolveu por completo.

comment:2 Changed 9 years ago by wmerlotto

  • Milestone set to Expresso 2.0.3

comment:3 Changed 9 years ago by amuller

  • Status changed from new to closed
  • Resolution set to testing

De fato a expressão é complicadíssima, eu refiz e ficou mais ilegível ainda. A solução foi quebrar em pedaços, cada expressão faz uma coisa. Por outro lado eu coloquei o replace links depois da expressão de retirar códigos js e ficou melhor (menos tags para limpar). Revisão [1707]

comment:4 Changed 9 years ago by niltonneto

  • Status changed from closed to reopened
  • Resolution testing deleted

Correção replicada no Branch 2.0, revisão [1828]

comment:5 Changed 9 years ago by niltonneto

  • Status changed from reopened to closed
  • Version changed from trunk to branch 2.0
  • Resolution set to fixed

Testei por aqui e funcionou sem problemas.

comment:6 Changed 9 years ago by amuller

Nilton, parece que o Rodrigo(rodsouza) encontrou uns casos problemáticos nessa parte. Tem que ver com ele quem sabe teria que colocar como testing mesmo.

comment:7 Changed 9 years ago by niltonneto

  • Status changed from closed to reopened
  • Resolution fixed deleted

OK. Realmente ainda há problema com links que contenham email dentro.
Exemplo:  http://www.ononono/?codModelo%10&email=nonono@domnain.com&msgr00

comment:8 Changed 9 years ago by niltonneto

  • Owner changed from amuller to rodsouza
  • Status changed from reopened to new

Changed 9 years ago by rodsouza

Changed 9 years ago by rodsouza

Changed 9 years ago by rodsouza

comment:9 Changed 9 years ago by rodsouza

Alterada busca de domínio e ip no e-mail. Aceita apenas domínio e ips válidos.

expressoMail1_2/inc/class.imap_functions.inc.php

Committed revision r2069.


        $octets = array(
            'first' => '(2[0-3][0-9]|1[0-9]{2}|[1-9][0-9]?)',       -> permite de '1' a '240'
            'middle' => '(25[0-5]|2[0-4][0-9]|1?[0-9]{1,2})',       -> permite de '0' a '255'
            'last' => '(25[0-4]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)' -> não permite final '0'
        );
        // TODOS OS DOMÍNIOS VÁLIDOS
        $top_level_domains = '(\.(ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|as|asia|at|au|aw|ax|az|'
            . 'ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bl|bm|bn|bo|br|bs|bt|bv|bw|by|bz|'
            . 'ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|cx|cy|cz|'
            . 'de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|'
            . 'ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|'
            . 'hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jobs|jp|'
            . 'ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|'
            . 'ma|mc|md|me|mf|mg|mh|mil|mk|ml|mm|mn|mo|mobi|mp|mq|mr|ms|mt|mu|museum|'
            . 'mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|'
            . 'pa|pe|pf|pg|ph|pk|pl|pm|pn|pro|ps|pt|pw|py|qa|re|ro|rs|ru|rw|'
            . 'sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|'
            . 'tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|travel|tt|tv|tw|tz|'
            . 'ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw))+\b';

        $path = '(?>\/[\w\d~?\/_=&#;\.\-\+:@$%]+)?'; -> caracteres possíveis no 'path'
        $port = '(?>:\d{2,4})?';                     -> permite portas de '2' a '4' dígitos
        $domain = '(?>[\w\d_\-]+)';                  -> domínio
        $subdomain = "(?>{$domain}\.)*";             -> permite inúmeros subdomínios
        $protocol = '(?>(http|ftp)(s)?:\/\/)?';      -> permite 'http' ou 'ftp' ou nada

        // composição da URL
        $url = "(?>{$protocol}((?>{$subdomain}{$domain}{$top_level_domains}|{$ip}){$port}{$path}))";

        $pattern = "/(url\( *['\"]?|['\"@=])?{$url}/"; -> URL possíveis de serem utilizadas

comment:10 Changed 9 years ago by rodsouza

  • Status changed from new to closed
  • Resolution set to testing

Permitindo 5 digitos para a porta e removendo lixo.

expressoMail1_2/inc/class.imap_functions.inc.php

Committed revision r2070.

comment:11 Changed 9 years ago by rodsouza

Alteração devido a compatibilidade com o PHP nas versões 5.2.x e 5.3.

expressoMail1_2/inc/class.imap_functions.inc.php

Committed revision r2071.

comment:12 Changed 9 years ago by amuller

comment:13 Changed 9 years ago by rodsouza

Adicionando pipe à expressão regular que busca urls no mail."

expressoMail1_2/inc/class.imap_functions.inc.php

Committed revision r2200.

Note: See TracTickets for help on using tickets.