]> bicyclesonthemoon.info Git - yplom/proxy/commitdiff
Added url- and entity encoding
authorb <b@05ce6ebb-7522-4a6e-a768-0026ae12be9f>
Wed, 23 Dec 2015 08:59:15 +0000 (08:59 +0000)
committerb <b@05ce6ebb-7522-4a6e-a768-0026ae12be9f>
Wed, 23 Dec 2015 08:59:15 +0000 (08:59 +0000)
git-svn-id: svn://botcastle1b/yplom/proxy@15 05ce6ebb-7522-4a6e-a768-0026ae12be9f

makefile.1.mak
proxy.1.pl
proxy_lib.1.pm

index ca6fe27d8fdbde88012e60985ac7cf648341143b..1db823ecc7e65d0080259841001d4967515b9886 100644 (file)
@@ -53,7 +53,7 @@ access.pl: access.1.pl   configure.pl settings
 
 access.c: access.1.c   configure.pl settings
        $(PL) configure.pl settings <access.1.c >access.c
-       
+
 access: access.c
        $(CC) $(CF) -o access access.c
 
index 05244b53542996004bc80a75466ceb134118823d..a0357662eeccbe3d35db318c3c2adf90db04f9a9 100755 (executable)
@@ -36,7 +36,7 @@ use strict;
 #use warnings;
 
 ###LIB;
-use proxy_lib qw(urldecode divideurl urldiv2path getcgi formatheader access);
+use proxy_lib qw(urldecode divideurl entityencode urldiv2path getcgi formatheader access);
 use POSIX qw(strftime);
 
 ###UNLOCK_LOG;
@@ -652,7 +652,7 @@ sub unlockpage {
        print '</head><body>';
        print '<h1>Unlock the proxy</h1>';
        if($message ne ''){
-               print $message;
+               print '<p>'.entityencode($message).'</p>';
        }
        print '<form method="post" action="'.UNLOCK_PROXY_URL_S.'">';
        print '<b>Username: </b><input type="text" name="username"><br>';
@@ -682,15 +682,15 @@ sub fail {
        print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">';
        print '<html lang="en"><head>';
        if($title ne ''){
-               print "<title>$title</title>";
+               print '<title>'.entityencode($title).'</title>';
        }
        print '<meta http-equiv="Content-type" content="text/html; charset=UTF-8">';
        print '</head><body>';
        if($title ne ''){
-               print "<h1>$title</h1>";
+               print '<h1>'.entityencode($title).'</h1>';
        }
        if($message ne ''){
-               print $message;
+               print '<p>'.entityencode($message).'</p>';
        }
        print "</body></html>\n";
 }
index a7dcfc4c7062ef276daf76a9f57fca3ada4b02eb..2671a30403babaaee7981a32379d463cd0201eca 100644 (file)
@@ -274,7 +274,7 @@ use constant entitycode => {
 $VERSION     = 0.000004;\r
 @ISA         = qw(Exporter);\r
 @EXPORT      = ();\r
-@EXPORT_OK   = qw(access divideurl entitydecode formatheader getcgi joinurl path2url url2path path2urldiv readconfigfile readheaderfile urldecode urldiv2path);\r
+@EXPORT_OK   = qw(access divideurl entitydecode entityencode formatheader getcgi joinurl path2url url2path path2urldiv readconfigfile readheaderfile urlencode urldecode urldiv2path);\r
 %EXPORT_TAGS = ();\r
 \r
 # This function checks if the user has unlocked the proxy. Nonzero means yes.\r
@@ -454,6 +454,29 @@ sub entitydecode {
        return $t;\r
 }\r
 \r
+# function to encode entities, decimal, \r
+sub entityencode {\r
+       (my $t, my $all) = @_;\r
+       if ($all) {\r
+               $t =~ s/(.)/sprintf('\&#%02hu;',ord($1))/eg;\r
+       }\r
+       else {\r
+               $t =~ s/([\"=><\&])/sprintf('&#%02hu;',ord($1))/eg;\r
+       }\r
+       return $t;\r
+}\r
+\r
+sub urlencode {\r
+       (my $t, my $all) = @_;\r
+       if ($all) {\r
+               $t =~ s/(.)/sprintf('%%%02hX',ord($1))/eg;\r
+       }\r
+       else {\r
+               $t =~ s/([^0-9A-Za-z.~\-_])/sprintf('%%%02hX',ord($1))/eg;\r
+       }\r
+       return $t;\r
+}\r
+\r
 # Function for decoding one html entity, called from entitydecode().\r
 sub entitydecode1ch {\r
        my $t = $_[0];\r