Ticket #788 (closed defeito: testing)
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
Change History
comment:3 Changed 14 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 14 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 14 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 14 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 14 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 14 years ago by niltonneto
- Owner changed from amuller to rodsouza
- Status changed from reopened to new
comment:9 Changed 14 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 14 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 14 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 14 years ago by amuller
comment:13 Changed 14 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.
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.