]> git.ipfire.org Git - people/mfischer/ipfire-2.x.git/commitdiff
header.pl: Add utf-8 handling into cleanhtml command
authorAdolf Belka <adolf.belka@ipfire.org>
Mon, 17 Jun 2024 11:12:35 +0000 (13:12 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 2 Jul 2024 09:13:10 +0000 (09:13 +0000)
- existing cleanhtml command does not handle diacritical charcters such as umlauts, acute,
   grave and circumflex accents.
- In bug 12395 the problem was resolved by adding decode before and encode after the
   cleanhtml command in dns.cgi
- Suggestion from @Michael Tremer was to add the decode and encode sections into the
   actual cleanhtml subroutine in header.pl
- This patch submission is the execution of that suggestion.
- This will ensure that whenever cleanhtml is used for any remark in a WUI page it will
   handle diacritical charcters.
- Tested out on my vm testbed system and confirmed to be working when cleanhtml has the
   encode and decode lines.
- Combined with this patch is another one that changes the dns.cgi to remove the decode
   and encode entries added into the cgi code.

Suggested-by: Michael Tremer <michael.tremer@ipfire.org>
Tested-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/cfgroot/header.pl

index a67ff92ee101e44934023da3f86036459b2065df..66b49e4117c15aabf951cb01ae597c62270dfdf0 100644 (file)
@@ -16,6 +16,7 @@ use File::Basename;
 use HTML::Entities();
 use Socket;
 use Time::Local;
+use Encode;
 
 our %color = ();
 &General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color);
@@ -365,8 +366,13 @@ sub escape($) {
 sub cleanhtml {
        my $outstring =$_[0];
        $outstring =~ tr/,/ / if not defined $_[1] or $_[1] ne 'y';
-
-       return escape($outstring);
+       # decode the UTF-8 text so that characters with diacritical marks such as
+       # umlauts are treated correctly by the escape command
+       $outstring = &Encode::decode("UTF-8",$outstring);
+       escape($outstring);
+       # encode the text back to UTF-8 after running the escape command
+       $outstring = &Encode::encode("UTF-8",$outstring);
+       return $outstring;
 }
 
 sub connectionstatus