--- loncom/xml/lontexconvert.pm 2011/02/10 20:07:00 1.98.2.1 +++ loncom/xml/lontexconvert.pm 2009/12/09 23:02:43 1.99 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # TeX Conversion Module # -# $Id: lontexconvert.pm,v 1.98.2.1 2011/02/10 20:07:00 raeburn Exp $ +# $Id: lontexconvert.pm,v 1.99 2009/12/09 23:02:43 faziophi Exp $ # # Copyright Michigan State University Board of Trustees # @@ -49,6 +49,7 @@ use lib '/home/httpd/lib/perl/'; use LONCAPA; use URI::Escape; use IO::Socket::INET; +use IO::Socket::SSL; # ====================================================================== Header @@ -247,12 +248,19 @@ sub mimetex_valign { my $valign = 0; my $lonhost = $Apache::lonnet::perlvar{'lonHostID'}; my $hostname = &Apache::lonnet::hostname($lonhost); + my $protocol = $Apache::lonnet::protocol{$lonhost}; my $path = '/cgi-bin/mimetex.cgi?'.$esc_texstring; my $socket; &Apache::lonxml::start_alarm(); - my $socket = IO::Socket::INET->new(PeerAddr => $hostname, - PeerPort => 'http(80)', + if ($protocol eq 'https') { + $socket = IO::Socket::SSL->new(PeerAddr => $hostname, + PeerPort => 'https(443)', Proto => 'tcp'); + } else { + $socket = IO::Socket::INET->new(PeerAddr => $hostname, + PeerPort => 'http(80)', + Proto => 'tcp'); + } if ($socket) { my $headreq = "HEAD $path HTTP/1.0\r\n\r\n"; print $socket $headreq; @@ -261,7 +269,12 @@ sub mimetex_valign { $valign = $1; } } - $socket->close(); + if ($protocol eq 'https') { + $socket->close(SSL_no_shutdown => 1, + SSL_ctx_free => 1); + } else { + $socket->close(); + } } &Apache::lonxml::end_alarm(); return $valign; @@ -322,23 +335,37 @@ sub to_convert { sub smiley { my $expression=shift; if ($env{'browser.imagesuppress'} eq 'on') { return $expression; } - my %smileys=('\:\-\)' => 'smiley', - '8\-\)' => 'coolsmile', - '8\-(I|\|)' => 'coolindiff', - ':\-(I|\|)' => 'neutral', - '\:\-(o|O|\(\))' => 'shocked', - ':\-\(' => 'frowny', - '\;\-\)' => 'wink', - '\:\-P' => 'baeh', - '\:\-(\\\|\\/)' => 'hrrm', - '\:\-D' => 'bigsmile', - '\:\-C' => 'angry', - '\:(\'|\`)\-\(' => 'cry', - '\:\-(X|\#)' => 'lipsrsealed', - '\:\-S' => 'huh'); + my %smileys=( + '\:\-*\)' => 'face-smile.png', + '8\-*\)' => 'face-cool.png', + '8\-*(I|\|)' => 'face-glasses.png', + ':\-*(I|\|)' => 'face-plain.png', + '\:\-(o|O|\(\))' => 'face-surprise.png', + ':\-*\(' => 'face-sad.png', + '\;\-*\)' => 'face-wink.png', + '\:\-*(P|p)' => 'face-raspberry.png', + '\:\-*(\\\|\\/)' => 'face-uncertain.png', + '\:\-*D' => 'face-smile-big.png', + '\:\-*(C|\@)' => 'face-angry.png', + '\:(\'|\`)\-*\(' => 'face-crying.png', + '\:\-*(X|x|\#)' => 'face-quiet.png', + '\:\-*(s|S)' => 'face-uncertain.png', + '\:\-*\$' => 'face-embarrassed.png', + '\:\-*\*' => 'face-kiss.png', + '\+O\(' => 'face-sick.png', + '(\<\;3|\(heart\))' => 'heart.png', + '\(rose\)' => 'rose.png', + '\(pizza\)' => 'food-pizza.png', + '\(cake\)' => 'food-cake.png', + '\(ninja\)' => 'face-ninja.png', + '\(pirate\)' => 'face-pirate.png', + '\((agree|yes)\)' => 'opinion-agree.png', + '\((disagree|nay)\)' => 'opinion-disagree.png', + '(o|O)\-*\)' => 'face-angel.png', + ); my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'}; foreach my $smiley (keys(%smileys)) { - $expression=~s/$smiley/\/gs; + $expression=~s/$smiley/\/gs; } return $expression; } @@ -501,39 +528,6 @@ Header =item init_math_support() -=item mimetex_valign() - - Makes a HEAD call to /cgi-bin/mimetex.cgi via IO:: to retrieve the - vertical alignment, before the subsequent call to mimetex_converted() - which generates the tag and the corresponding image. - - Input: 1. $esc_texstring (escaped TeX to be rendered by mimetex). - Output: 1. $valign - number of pixels: positive or negative integer - which will be included in tag for mimetex image to - support vertical alignment of image within a line of text. - - If a server is running SSL, and Apache rewrite rules are in place - to rewrite requests for http to https, modification will most likely - be needed for pass through for HEAD requests for /cgi-bin/mimetex.cgi. - - Example rewrite rules which rewrite all http traffic to https, - except HEAD requests for /cgi-bin/mimetex.cgi are: - - - RewriteEngine On - RewriteLogLevel 0 - - RewriteCond %{HTTPS} off - RewriteCond %{HTTP:Host} (.*) - RewriteCond %{REQUEST_METHOD} !HEAD - RewriteRule ^/(.*) https://%1/$1 [R=301,L] - - RewriteCond %{HTTPS} off - RewriteCond %{HTTP:Host} (.*) - RewriteCond %{REQUEST_METHOD} HEAD - RewriteCond %{REQUEST_URI} !^/cgi-bin/mimetex.cgi - RewriteRule ^/(.*) https://%1/$1 [R=301,L] - =item mimetex_converted()