#!/usr/bin/perl #パラメータの読込。 $addr=$ENV{'QUERY_STRING'}; $addr=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/ego; $addr=~s/[<>\|]//g; $addr=~s/\.\.\///g; #外部参照は拒否する。 if ($ENV{'HTTP_REFERER'} ne '' && !($ENV{'HTTP_REFERER'}=~/サイトのドメイン\//)) { print "status: 403 Forbidden\n\n"; exit; } #PNG対応環境には配信しない。 if ($ENV{'HTTP_ACCEPT'}=~/image\/png/i || ($ENV{'HTTP_USER_AGENT'}=~/MSIE (\d+)/ && $1>4) || $ENV{'HTTP_USER_AGENT'}=~/Sleipnir/) { print "location: http://サイトのドメイン/$addr\n\n"; exit; } #PNG画像以外は処理しない。 if (!($addr=~/\.png\Z/i)) { print "location: http://サイトのドメイン/$addr\n\n"; exit; } #実際の変換処理。 require './png2gif.pl'; $i=&img::png2gif($addr); binmode(STDOUT); print "content-type: image/gif\ncontent-length: ".length($i)."\n\n".$i; exit;