Christoph Berg пре 21 година
родитељ
комит
221d345647
3 измењених фајлова са 14 додато и 6 уклоњено
  1. 8 1
      modules/Pisg/Common.pm
  2. 6 4
      modules/Pisg/HTMLGenerator.pm
  3. 0 1
      modules/Pisg/Parser/Logfile.pm

+ 8 - 1
modules/Pisg/Common.pm

@@ -8,7 +8,7 @@ Pisg::Common - some common functions of pisg.
 
 use Exporter;
 @ISA = ('Exporter');
-@EXPORT = qw(add_alias add_aliaswild add_ignore add_url_ignore is_ignored url_is_ignored find_alias store_aliases restore_aliases match_urls match_email htmlentities is_nick randomglob wordlist_regexp);
+@EXPORT = qw(add_alias add_aliaswild add_ignore add_url_ignore is_ignored url_is_ignored find_alias store_aliases restore_aliases match_urls match_email htmlentities urlencode is_nick randomglob wordlist_regexp);
 
 use strict;
 $^W = 1;
@@ -182,6 +182,13 @@ sub htmlentities
     return $str;
 }
 
+sub urlencode
+{
+    my $str = shift;
+    $str =~ s/([^\w_.\/?&=:+-])/sprintf "%%%02X", ord($1)/ge;
+    return $str;
+}
+
 sub randomglob
 {
     my $pattern = shift;

+ 6 - 4
modules/Pisg/HTMLGenerator.pm

@@ -1811,12 +1811,14 @@ sub _mosturls
         for(my $i = 0; $i < $self->{cfg}->{urlhistory}; $i++) {
             last unless $i < @sorturls;
             my $a = $i + 1;
-            my $sorturl  = $sorturls[$i];
             my $urlcount = $self->{stats}->{urlcounts}{$sorturls[$i]};
             my $lastused = $self->{stats}->{urlnicks}{$sorturls[$i]};
-            if (length($sorturl) > 60) {
-                $sorturl = substr($sorturl, 0, 60);
+            my $printurl = $sorturls[$i];
+            if (length($printurl) > 60) {
+                $printurl = substr($printurl, 0, 60);
             }
+            $printurl = htmlentities($printurl, $self->{cfg}->{charset});
+            my $linkurl = urlencode($sorturls[$i]);
             my $class;
             if ($a == 1) {
                 $class = 'hirankc';
@@ -1824,7 +1826,7 @@ sub _mosturls
                 $class = 'rankc';
             }
             _html("<tr><td class=\"$class\">$a</td>");
-            _html("<td class=\"hicell\"><a href=\"$sorturls[$i]\">$sorturl</a></td>");
+            _html("<td class=\"hicell\"><a href=\"$linkurl\">$printurl</a></td>");
             _html("<td class=\"hicell\">$urlcount</td>");
             _html("<td class=\"hicell\">$lastused</td>");
             _html("</tr>");

+ 0 - 1
modules/Pisg/Parser/Logfile.pm

@@ -390,7 +390,6 @@ sub _parse_file
                     if (my @urls = match_urls($saying)) {
                         foreach my $url (@urls) {
                             if(!url_is_ignored($url)) {
-                                $url =~ s/&/&amp;/g;
                                 $stats->{urlcounts}{$url}++;
                                 $stats->{urlnicks}{$url} = $nick;
                             }