diff --git a/lib/html_sanitizer.rb b/lib/html_sanitizer.rb index fd3b52b3c..7a5212519 100644 --- a/lib/html_sanitizer.rb +++ b/lib/html_sanitizer.rb @@ -45,7 +45,7 @@ satinize html string based on whiltelist if node['href'] href = cleanup_target(node['href'], keep_spaces: true) href_without_spaces = href.gsub(/[[:space:]]/, '') - if external && href_without_spaces.present? && !href_without_spaces.downcase.start_with?('//') && href_without_spaces.downcase !~ %r{^.{1,6}://.+?} + if external && href_without_spaces.present? && !href_without_spaces.downcase.start_with?('mailto:') && !href_without_spaces.downcase.start_with?('//') && href_without_spaces.downcase !~ %r{^.{1,6}://.+?} node['href'] = "http://#{node['href']}" href = node['href'] href_without_spaces = href.gsub(/[[:space:]]/, '') @@ -176,16 +176,6 @@ satinize html string based on whiltelist node.delete(attribute) end - # remove mailto links - if node['href'] - href = cleanup_target(node['href']) - if href =~ /mailto:(.*)$/i - text = Nokogiri::XML::Text.new($1, node.document) - node.add_next_sibling(text) - node.remove - Loofah::Scrubber::STOP - end - end end done = true @@ -320,17 +310,6 @@ cleanup html string: scrubber_cleanup = Loofah::Scrubber.new do |node| - # remove mailto links - if node['href'] - href = cleanup_target(node['href']) - if href =~ /mailto:(.*)$/i - text = Nokogiri::XML::Text.new($1, node.document) - node.add_next_sibling(text) - node.remove - Loofah::Scrubber::STOP - end - end - # remove not needed new lines if node.instance_of?(Nokogiri::XML::Text) if !node.parent || (node.parent.name != 'pre' && node.parent.name != 'code') # rubocop:disable Style/SoleNestedConditional diff --git a/spec/lib/core_ext/string_spec.rb b/spec/lib/core_ext/string_spec.rb index 7bb9dd5b2..3d75888aa 100644 --- a/spec/lib/core_ext/string_spec.rb +++ b/spec/lib/core_ext/string_spec.rb @@ -1199,7 +1199,7 @@ RSpec.describe String do expect(<<~HTML.chomp.html2html_strict).to eq(<<~TEXT.chomp) john.smith@example.com HTML - john.smith@example.com + john.smith@example.com TEXT end @@ -1207,7 +1207,7 @@ RSpec.describe String do expect(<<~HTML.chomp.html2html_strict).to eq(<<~TEXT.chomp) john.smith@example.com HTML - john.smith@example.com + john.smith@example.com TEXT end @@ -1215,7 +1215,7 @@ RSpec.describe String do expect(<<~HTML.chomp.html2html_strict).to eq(<<~TEXT.chomp) john.smith@example.com HTML - john.smith2@example.com + john.smith@example.com TEXT end @@ -1289,7 +1289,9 @@ RSpec.describe String do
Guten Morgen, Frau ABC,
vielen Dank für die Reservierung. Dabei allerdings die Sprache (Niederländisch) nicht erwähnt. Können Sie bitte dieses in Ihrer Reservierung vormerken?
Nochmals vielen Dank und herzliche Grüße
Anna Smith
art abc SEV GmbH
art abc TRAV
Marktstätte 123
123456 Dorten
T: +49 (0) 12345/1234560-1
T: +49 (0) 12345/1234560-0
F: +49 (0) 12345/1234560-2
annad@example.com
Geschäftsführer Vor Nach, VorUndZu Nach - Amtsgericht Dort HRB 12345 - Ein Unternehmer der ABC Gruppe
Anna Smith
art abc SEV GmbH
art abc TRAV
Marktstätte 123
123456 Dorten
T: +49 (0) 12345/1234560-1
T: +49 (0) 12345/1234560-0
F: +49 (0) 12345/1234560-2
Geschäftsführer Vor Nach, VorUndZu Nach - Amtsgericht Dort HRB 12345 - Ein Unternehmer der ABC Gruppe
TEXT end @@ -1344,7 +1346,7 @@ RSpec.describe String do HTML
Von: Besucherbüro, MKuk [besucherbuero@example.com]
+
Von: Besucherbüro, MKuk [mailto:besucherbuero@example.com]
Gesendet: Freitag, 16. Dezember 2016 08:05
An: 'Amaia Epalza'
Betreff: AW: Gruppe vtb Kultuur // 28.06.2017
Reservierungsbestätigung Führung Skulptur-Projekte 2017 am
Guten Morgen Frau Epalza,
@@ -1473,7 +1475,7 @@ RSpec.describe String do expect(<<~HTML.chomp.html2html_strict).to eq(<<~TEXT.chomp)Von: Martin Edenhofer via Zammad Helpdesk [mailto:support@zammad.com] Von: Martin Edenhofer via Zammad Helpdesk [mailto:support@example.com] Von: Martin Edenhofer via Zammad Helpdesk [mailto:support@zammad.com] Haben sich beim ein oder anderen generell noch Fragen aufgetan? Viele Grüße! -Fritz On May 2, 2012, at 14:25 , John Smith wrote: Moin Moin,
Gesendet:\u0020
HTML
- #{marker}
Gesendet:
Gesendet:
HTML
-
+
John Smith
Service und Support
Example Service AG & Co.
Someware-Str. 4
xxxxx Someware
-
Fax: +49 001 7601 472
Fax: +49 001 7601 472
OHG mit Sitz in Someware
AG: Someware - HRA 4158
Geschäftsführung: Tilman Test, Klaus Jürgen Test,
USt-IdNr. DE 1010101010
Persönlich haftende geschäftsführende Gesellschafterin:
Vorstand: Rolf Test
Persönlich haftende Gesellschafterin:
AG: Someware - HRB xxx
Vorstand: Marie Test
John
+ Smith
Service und Support
Example Service AG & Co.
Someware-Str. 4
xxxxx Someware
Fax: +49 001 7601
+ 472
OHG mit Sitz in Someware
AG: Someware - HRA 4158
Geschäftsführung:
+ Tilman Test, Klaus Jürgen Test,
USt-IdNr. DE 1010101010
Persönlich haftende
+ geschäftsführende Gesellschafterin:
Vorstand: Rolf Test
Persönlich
+ haftende Gesellschafterin:
AG: Someware - HRB xxx
Vorstand: Marie Test
die Antwort ist zwar etwas spät, aber nach der Schulung war ich krank und danach
hatte ich viel zu tun auf der Arbeit, sodass ich keine Zeit für XXXX hatte.
Ich denke das ist allgemein das Problem, wenn sowas nebenbei gemacht werden muss.
Wie auch immer, danke für die mail mit dem ITSM Zusatz auch wenn das zur Zeit bei der Example nicht relevant ist.
Ich habe im XXXX Wiki den Punkt um die Vorlagen angefügt.
Ticket Template von John Bäcker
Bei uns habe ich das Ticket Template von John Bäcker in der Version 0.1.96 unter XXXX 3.0.10 implementiert.
Fritz wollte sich auch um das andere Ticket Template Modul kümmern und uns zur Verfügung stellen, welches unter XXXX 3.0 nicht lauffähig sein sollte.
Im Wiki kann ich die LDAP Muster Konfigdatei nicht finden.
Hat die jemand von euch zufälligerweise ?
Danke und Gruß
John Smith
Am 4. April 2012 08:24 schrieb Smith, John Marian <john.smith@example.com>:
Hallo zusammen,
ich hoffe Ihr seid noch gut nach Hause gekommen am Mittwoch. Der XXX Kurs Donnerstag und Freitag war noch ganz gut, wobei ich mir den letzten halben Tag eigentlich hätte schenken können.
Soweit ich weiß arbeitet Ihr nicht mit XXX? Falls doch habe ich hier eine tolle (eigentlich) kostenpflichtige Erweiterung für Euch.
Es handelt sich um eine programmiertes Paket von der XXXX AG. Die Weitergabe ist legal.
Mit dem Paket kann man Anhänge an CI’s (Configuration Items) verknüpfen. Das ist sehr praktisch wenn man zum Beispiel Rechnungen an Server, Computern und und und anhängen möchte.
Der Dank geht an Frank Linden, der uns das Paket kostenlos zur Verfügung gestellt hat.
Viele Grüße aus Someware
John
_________________________
SysAdmin
John Marian Smith
IT-Management
Example GmbH & Co. KG
Der Provider für
Mehrwertdienste & YYY
Someware 23
XXXXX Someware
Tel. (01802) XX XX XX - 42
Fax (01802) XX XX XX - 99
nur 6 Cent je Anruf aus dem dt. Festnetz,
max. 42 Cent pro Min. aus dem Mobilfunknetz
E-Mail john.smith@Example.de
Web www.Example.de
Amtsgericht Hannover HRA xxxxxxxx
Komplementärin: Example Verwaltungs- GmbH
Vertreten durch: Somebody, Somebody
Amtsgericht Someware HRB XXX XXX
_________________________
Highlights der Example Contact Center-Suite:
Virtual XXX&Power-XXX, Self-Services&XXX-Portale,
XXX-/Web-Kundenbefragungen, CRM, PEP, YYY
-Fritz
On May 2, 2012, at 14:25 , John Smith wrote:
Moin Moin,
die Antwort ist zwar etwas spät, aber nach der Schulung war ich krank und danach
hatte ich viel zu tun auf der Arbeit, sodass ich keine Zeit für XXXX hatte.
Ich denke das ist allgemein das Problem, wenn sowas nebenbei gemacht werden muss.
Wie auch immer, danke für die mail mit dem ITSM Zusatz auch wenn das zur Zeit bei der Example nicht relevant ist.
Ich habe im XXXX Wiki den Punkt um die Vorlagen angefügt.
Ticket Template von John Bäcker
Bei uns habe ich das Ticket Template von John Bäcker in der Version 0.1.96 unter XXXX 3.0.10 implementiert.
Fritz wollte sich auch um das andere Ticket Template Modul kümmern und uns zur Verfügung stellen, welches unter XXXX 3.0 nicht lauffähig sein sollte.
Im Wiki kann ich die LDAP Muster Konfigdatei nicht finden.
Hat die jemand von euch zufälligerweise ?
Danke und Gruß
John Smith
Am 4. April 2012 08:24 schrieb Smith, John Marian <john.hinz@example.com>:
Hallo zusammen,
ich hoffe Ihr seid noch gut nach Hause gekommen am Mittwoch. Der XXX Kurs Donnerstag und Freitag war noch ganz gut, wobei ich mir den letzten halben Tag eigentlich hätte schenken können.
Soweit ich weiß arbeitet Ihr nicht mit XXX? Falls doch habe ich hier eine tolle (eigentlich) kostenpflichtige Erweiterung für Euch.
Es handelt sich um eine programmiertes Paket von der XXXX AG. Die Weitergabe ist legal.
Mit dem Paket kann man Anhänge an CI’s (Configuration Items) verknüpfen. Das ist sehr praktisch wenn man zum Beispiel Rechnungen an Server, Computern und und und anhängen möchte.
Der Dank geht an Frank Linden, der uns das Paket kostenlos zur Verfügung gestellt hat.
Viele Grüße aus Someware
John
_________________________
SysAdmin
John Marian Smith
IT-Management
Example GmbH & Co. KG
Der Provider für
Mehrwertdienste & YYY
Someware 23
XXXXX Someware
Tel. (01802) XX XX XX - 42
Fax (01802) XX XX XX - 99
nur 6 Cent je Anruf aus dem dt. Festnetz,
max. 42 Cent pro Min. aus dem Mobilfunknetz
E-Mail john.smith@Example.de
Web www.Example.de
Amtsgericht Hannover HRA xxxxxxxx
Komplementärin: Example Verwaltungs- GmbH
Vertreten durch: Somebody, Somebody
Amtsgericht Someware HRB XXX XXX
_________________________
Highlights der Example Contact Center-Suite:
Virtual XXX&Power-XXX, Self-Services&XXX-Portale,
XXX-/Web-Kundenbefragungen, CRM, PEP, YYY
Hallo
+ Martin,
ich
+ möchte mich gern für den Beta-Test für die Ticket Templates unter XXXX 2.4 anmelden.
Mit
+ freundlichen Grüßen
John
+ Günther
example.com
+ – profitieren Sie vom umfangreichen Daten-Netzwerk
_
+ __ ___ ____________________________ ___ __ _
Example
+ GmbH
Some
+ What
Sitz:
+ Someware-Straße 9, XXXXX Someware
M:
+ +49 (0) XXX XX XX 70
T:
+ +49 (0) XXX XX XX 22
F:
+ +49 (0) XXX XX XX 11
W:
+ www.example.de
Geschäftsführer:
+ John Smith
HRB
+ XXXXXX AG Someware
St.-Nr.:
+ 112/107/05858
ISO
+ 9001:2008 Zertifiziert -Qualitätsstandard mit Zukunft
_
+ __ ___ ____________________________ ___ __ _
Diese
+ Information ist ausschließlich für den Adressaten bestimmt und kann vertrauliche
+ oder gesetzlich geschützte Informationen enthalten. Wenn Sie nicht der bestimmungsgemäße
+ Adressat sind, unterrichten Sie bitte den Absender und vernichten Sie diese Mail.
+ Anderen als dem bestimmungsgemäßen Adressaten ist es untersagt, diese E-Mail zu
+ lesen, zu speichern, weiterzuleiten oder ihren Inhalt auf welche Weise auch immer
+ zu verwenden.
Von: Fritz Bauer [mailto:me@example.com]
+
Gesendet: Donnerstag, 3. Mai 2012 11:51
An: John Smith
Cc:
+ Smith, John Marian; johnel.fratczak@example.com; ole.brei@example.com; Günther
+ John | Example GmbH; bkopon@example.com; john.heisterhagen@team.example.com; sven.rocked@example.com;
+ michael.house@example.com; tgutzeit@example.com
Betreff: Re: OTRS::XXX
+ Erweiterung - Anhänge an CI's
Hallo,
ich versuche an den Punkten anzuknüpfen.
a) LDAP
+ Muster Konfigdatei
PS: Es gibt
+ noch eine Reihe weiterer Möglichkeiten, vor allem im Bezug auf Agenten-Rechte/LDAP
+ Gruppen Synchronisation. Wenn Ihr hier weitere Informationen benötigt, einfach
+ im Wiki die Aufgabenbeschreibung rein machen und ich kann eine Beispiel-Config
+ dazu legen.
b) Ticket
+ Templates
Wir haben das Paket
+ vom alten Maintainer übernommen, es läuft nun auf XXXX 2.4, XXXX 3.0 und XXXX
+ 3.1. Wir haben das Paket um weitere Funktionen ergänzt und würden es gerne hier
+ in diesen Kreis zum Beta-Test bereit stellen.
Vorgehen:
Wer Interesse hat, bitte eine Email an mich und ich versende Zugänge
+ zu den Beta-Test-Systemen. Nach ca. 2 Wochen werden wir die Erweiterungen in der
+ Version 1.0 veröffentlichen.
c) XXXX
+ Entwickler Schulung
Weil es immer
+ wieder Thema war, falls jemand Interesse hat, das XXXX bietet nun auch OTRS
+ Entwickler Schulungen an (http://www.example.com/kurs/xxxx_entwickler/).
d) Genelle Fragen?
Haben
+ sich beim ein oder anderen generell noch Fragen aufgetan?
Viele Grüße!
-Fritz
On
+ May 2, 2012, at 14:25 , John Smith wrote:
Moin
+ Moin,
die Antwort ist zwar etwas spät, aber nach der Schulung war ich krank
+ und danach
hatte ich viel zu tun auf der Arbeit, sodass ich keine Zeit für
+ XXXX hatte.
Ich denke das ist allgemein das Problem, wenn sowas nebenbei gemacht
+ werden muss.
Wie auch immer, danke für die mail mit dem ITSM Zusatz auch
+ wenn das zur Zeit bei der Example nicht relevant ist.
Ich habe im XXXX
+ Wiki den Punkt um die Vorlagen angefügt.
Ticket Template von John Bäcker
Bei
+ uns habe ich das Ticket Template von John Bäcker in der Version 0.1.96 unter XXXX
+ 3.0.10 implementiert.
Fritz wollte sich auch um das andere Ticket
+ Template Modul kümmern und uns zur Verfügung stellen, welches unter XXXX 3.0 nicht
+ lauffähig sein sollte.
Im Wiki kann ich die LDAP Muster Konfigdatei
+ nicht finden.
Hat die jemand von euch zufälligerweise ?
Danke und
+ Gruß
John Smith
Am 4. April 2012 08:24 schrieb Smith, John Marian <john.hinz@example.com>:
Hallo
+ zusammen,
ich hoffe Ihr seid noch gut nach Hause gekommen
+ am Mittwoch. Der XXX Kurs Donnerstag und Freitag war noch ganz gut, wobei ich
+ mir den letzten halben Tag eigentlich hätte schenken können.
Soweit
+ ich weiß arbeitet Ihr nicht mit XXX? Falls doch habe ich hier eine tolle (eigentlich)
+ kostenpflichtige Erweiterung für Euch.
Es handelt sich um eine programmiertes
+ Paket von der XXXX AG. Die Weitergabe ist legal.
Mit dem Paket kann man
+ Anhänge an CI’s (Configuration Items) verknüpfen. Das ist sehr praktisch
+ wenn man zum Beispiel Rechnungen an Server, Computern und und und anhängen möchte.
Der
+ Dank geht an Frank Linden, der uns das Paket kostenlos zur Verfügung gestellt
+ hat.
Viele Grüße aus Someware
John
_________________________
SysAdmin
John
+ Marian Smith
IT-Management
Example GmbH & Co. KG
Der Provider
+ für
Mehrwertdienste & YYY
Someware 23
XXXXX Someware
Tel.
+ (01802) XX XX XX - 42
Fax (01802) XX XX XX - 99
nur 6 Cent je Anruf aus
+ dem dt. Festnetz,
max. 42 Cent pro Min. aus dem Mobilfunknetz
E-Mail
+ john.smith@Example.de
Web www.Example.de
Amtsgericht Hannover HRA
+ xxxxxxxx
Komplementärin: Example Verwaltungs- GmbH
Vertreten durch: Somebody,
+ Somebody
Amtsgericht Someware HRB XXX XXX
_________________________
Highlights
+ der Example Contact Center-Suite:
Virtual XXX&Power-XXX, Self-Services&XXX-Portale,
XXX-/Web-Kundenbefragungen,
+ CRM, PEP, YYY
Impressum S.C. CYLEX INTERNATIONAL S.N.C. Sat. Palota 119/A RO 417516 Palota Romania Tel.: +49 208/62957-0 | Geschäftsführer: Francisc Osvald Handelsregister: J05/1591/2009 USt.IdNr.: RO26332771 - serviceteam@cylex.de + + E-Mail Kontakt Homepage Newsletter abbestellen |
\n\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\tLieber CYLEX Eintragsinhaber, \n\t\t\t\t\t\n\t\t\t\t\t\tdas
+ Jahr neigt sich dem Ende und die besinnliche Zeit beginnt laut Kalender mit dem \n\t\t\t\t\t\tUm + Ihre Weihnachtsstimmung in Schwung zu bringen kommen wir nun mit unserem Adventskalender + ins Spiel. Denn 24 Tage werden Sie unsere netten Geschichten, Rezepte und Gewinnspiele + sowie ausgesuchte Geschenktipps und Einkaufsgutscheine online begleiten. Damit + lässt sich Ihre Freude auf das Fest garantiert mit jedem Tag steigern. \n\t\t\t\t\t\n\t\t\t\t\t\tIhr
+ CYLEX Team \n\t\t\t\t\t\t \n\t\t\t\t | \n\t\t\t
\nImpressum
+ \nS.C. CYLEX INTERNATIONAL S.N.C. \nSat. Palota 119/A RO 417516 Palota + Romania \nTel.: +49 208/62957-0 | \nGeschäftsführer: Francisc Osvald \nHandelsregister: J05/1591/2009 \nUSt.IdNr.: RO26332771\n \n \nE-Mail Kontakt \nHomepage \nNewsletter + abbestellen\n | \n
Diese
e-Mail ist ausschließlich für den beabsichtigten Empfänger bestimmt. Sollten Sie
irrtümlich diese e-Mail erhalten haben, unterrichten Sie uns bitte umgehend unter
- kontakt@example.com und vernichten Sie diese Mitteilung einschließlich der ggf.
- beigefügten Dateien.
Weil wir die Echtheit oder Vollständigkeit der in dieser
- Nachricht enthaltenen Informationen nicht garantieren können, bitten wir um Verständnis,
- dass wir zu Ihrem und unserem Schutz die rechtliche Verbindlichkeit der vorstehenden
- Erklärungen ausschließen, soweit wir mit Ihnen keine anders lautenden Vereinbarungen
- getroffen haben.
Diese
+ e-Mail ist ausschließlich für den beabsichtigten Empfänger
+ bestimmt. Sollten Sie irrtümlich diese e-Mail erhalten
+ haben, unterrichten Sie uns bitte umgehend unter
+ kontakt@example.com und vernichten Sie diese Mitteilung
+ einschließlich der ggf. beigefügten Dateien.
+ Weil wir die Echtheit oder Vollständigkeit der in dieser
+ Nachricht enthaltenen Informationen nicht garantieren
+ können, bitten wir um Verständnis, dass wir zu Ihrem und
+ unserem Schutz die rechtliche Verbindlichkeit der
+ vorstehenden Erklärungen ausschließen, soweit wir mit
+ Ihnen keine anders lautenden Vereinbarungen getroffen
+ haben.
Sie können Abschnitte wählen (filtern) Empfänger gemäß Tätigkeitsbereichen und Standort der Firmen, um die Effizienz Ihrer Werbemaßnahmen zu erhöhen.
|
Für jeden Kauf von 2016-11-05 23:59:59 wir gewähren 30% Rabatt RABATTCODE: WZ2124DD |
|
Bestellen Sie online bei: Für weitere Informationen: E-Mail: databases.en@example.com |
Sie können Abschnitte wählen (filtern) Empfänger gemäß Tätigkeitsbereichen und Standort der Firmen, um die Effizienz Ihrer Werbemaßnahmen zu erhöhen.
|
Für jeden Kauf von 2016-11-05 23:59:59 wir gewähren 30% Rabatt RABATTCODE: WZ2124DD |
|
Bestellen Sie online bei: Für weitere Informationen: E-Mail: databases.en@example.com |
EXAMPLE.GmbH EXAMPLE-Straße 1-3 79426 Buggingen Germany |
Chantel Wilken
John Smith
Tel: 053-8311646
: 053-8311710
Fax to e-mail: 0865586973
Fax to e-mail: 0865665137
From: Profsen Lab [mailto:from@example.com]
Sent: Wednesday, 06 March 2019 08:52
To: to@example.com
Subject: FW: Tax Invoice INX4183
Chantel Wilken
John Smith
Tel: 053-8311646
: 053-8311710
Fax to e-mail: 0865586973
Fax to e-mail: 0865665137
From: Profsen Lab %5Bmailto:from@example.com%5D
Sent: Monday, 04 March 2019 12:41
To: from@example.com
Subject: Tax Invoice INX4183
Tax Invoice INX4183 from Shammah Dental BK t/a John Smith
+
From: Profsen Lab [mailto:from@example.com]
Sent: Monday, 04 March 2019 12:41
To: from@example.com
Subject: Tax Invoice INX4183
Tax Invoice INX4183 from Shammah Dental BK t/a John Smith
content_type: text/html attachments: - !ruby/hash:ActiveSupport::HashWithIndifferentAccess diff --git a/test/unit/email_process_test.rb b/test/unit/email_process_test.rb index 8bffcd68a..10dc8837f 100644 --- a/test/unit/email_process_test.rb +++ b/test/unit/email_process_test.rb @@ -3067,7 +3067,7 @@ Content-Type: text/html; charset=us-ascii; format=flowed }, 1 => { content_type: 'text/html', - body: 'test%C3%A4%C3%B6%C3%BC@example.com', + body: 'test', sender: 'Customer', type: 'email', internal: false, diff --git a/test/unit/html_sanitizer_test.rb b/test/unit/html_sanitizer_test.rb index 320e6a306..829171c76 100644 --- a/test/unit/html_sanitizer_test.rb +++ b/test/unit/html_sanitizer_test.rb @@ -149,6 +149,6 @@ test 123 attachment_url_evil_other = "#{attachment_url}?disposition=some_other" assert_equal(HtmlSanitizer.strict("Evil link"), "Evil link") - assert_equal(HtmlSanitizer.strict('test'), 'testäöü@example.com') + assert_equal(HtmlSanitizer.strict('test'), 'test') end end