#!/usr/bin/perl #use CGI::Carp "fatalsToBrowser"; # Nutzungsbedingungen (Gästebuch): # # Siehe lizenz.html # # by www.coder-world.de # BEGIN { use FindBin; use lib ("$FindBin::Bin", "$FindBin::Bin/libs"); $ENV{'TMPDIR'} = $ENV{'TEMP'} || ""; eval { $died_in_eval = 1; require Image::Magick; }; if($@){ $magick = 0; }else{ if($Image::Magick::VERSION){ $moduleadmin .= "Image::Magick " . $Image::Magick::VERSION . ", "; }else{ $moduleadmin .= "Image::Magick, "; } $magick = 1; import Image::Magick; } eval { $died_in_eval = 1; require GD; }; if($@){ $gd = 0; }else{ if($GD::VERSION){ $moduleadmin .= "GD " . $GD::VERSION . ", "; }else{ $moduleadmin .= "GD, "; } $gd = 1; import GD; } eval { $died_in_eval = 1; require MIME::Base64; }; if ($@) { $base64 = 0; }else{ $base64 = 1; import MIME::Base64; } eval { $died_in_eval = 1; require Compress::Zlib; }; if ($@) { $zlib = 0; }else{ $zlib = 1; import Compress::Zlib; } eval { $died_in_eval = 1; require String::Random; }; if ($@) { $stringrandom = 0; }else{ $stringrandom = 1; import String::Random; } if($magick or $gd){ eval { $died_in_eval = 1; require GD::SecurityImage; }; if ($@) { $gdsecurityimage = 0; }else{ $gdsecurityimage = 1; import GD::SecurityImage; } } } read(STDIN, $input, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $input); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value; } foreach $var (split(/&/, $ENV{QUERY_STRING})){ ($v,$i) = split(/=/, $var); $v =~ tr/+/ /; $v =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $i =~ tr/+/ /; $i =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $i =~ s///g; $INFO{$v} = $i; } $action = $INFO{'action'} || $FORM{'action'}; $version = "2.11"; foreach ("/bin/sendmail","/sbin/sendmail","/usr/lib/sendmail","/usr/bin/sendmail","/usr/share/sendmail","/usr/sbin/sendmail","/usr/bin/sendmail.restart","/etc/sendmail.cf","/etc/sendmail.cw","/usr/man/man8/sendmail.8","/var/qmail/bin/qmail-inject"){ if(-e $_ && -X _){ $mailprog = $_; last; } } require "data/set.cgi"; require "data/grafik.dat"; require "data/error.dat"; $width = $INFO{'breit'} if($INFO{'breit'}); $cgi = "$gburl/gb.cgi\?"; if($action =~ /count/ or $action eq "refresh") {&$action;} elsif($action =~ /add/) {require "add.cgi"; &$action;} elsif($action =~ /edit/) {require "edit.cgi"; &$action;} elsif($action =~ /replay/) {require "replay.cgi"; &$action;} elsif($action eq "help") {require "hilfe.cgi"; &hilfe;} elsif($action eq "hilfe2") {require "hilfe.cgi"; &hilfe2;} elsif($action =~ /legende/) {require "hilfe.cgi"; &hilfe2;} elsif($action =~ /aktiv/) {require "admin.cgi"; &$action;} elsif($action =~ /delete/) {require "delete.cgi"; &$action;} elsif($action =~ /ip/) {require "ip.cgi"; &$action;} elsif($action =~ /admin/) {require "admin.cgi"; &$action;} &index; sub index { open(F,"/,join("", ),3); flock(F,8) if($use_flock); close(F); if($INFO{'archiv'} == 1){ open(F, "; flock(F,8) if($use_flock); close(F); $zahl = $#entry+1; $maxdisplay = 8 unless($maxdisplay); $nv = 1; $start = $INFO{'start'} || 0; $start = $start > $zahl ? $zahl : $start; $start = (sprintf("%.0f",$start / $maxdisplay)) * $maxdisplay; if($start >= (4 * $maxdisplay)){ $startp = $start - (4 * $maxdisplay); $nv = (sprintf("%.0f",$startp / $maxdisplay)) + 1; } if($zahl >= $start + (5 * $maxdisplay)){ $end = $start + (5 * $maxdisplay); }else{ $end = $zahl; } if($startp > 0){ $pages = qq~1 ... ~; } if($startp == $maxdisplay){ $pages = qq~1 ~; } for($ns = $startp; $ns < $end; $ns += $maxdisplay){ $pages .= $start == $ns ? qq~$nv ~ : qq~$nv ~; $nv++; } if($end < ($zahl - $maxdisplay)){ $lastpn = int(($zahl / $maxdisplay) + 0.9); $lastptn = int($lastpn - 0.9) * $maxdisplay; $page = qq~ ... ~; $page .= qq~ $lastpn~; } $pages .= $page; if($nv == 1 or $nv == 2){ $pages =" <<  1  >>"; }else{ $x=($start/$maxdisplay)+1; $xs=$start+$maxdisplay; $xs2=$start-$maxdisplay; if($x<($nv-1)){ if($x>1){ $pages=qq~<<  $pages~; }else{ $pages=" $pages"; } $pages .=qq~ >> ~; }else{ if($x>1){ $pages=qq~<<  $pages~; }else{ $pages=" $pages"; } $pages .="  "; } } $pages =~ s/  / /g; $zahl -= $start; my($gb1,$gb2,$gb3,$gb5,$gb8,$gb10,$gb11,$gb13,$gb14,$gb15,$gb16); for($i=$start;$i<@entry;$i++){ $entry[$i] =~ s/[\n\r]//g; $nnum++; ($gb1, $gb2, $gb3, $gb4, $gb5, $message, $gb7, $gb8, $nix, $nix2, $gb10, $gb11, $gb12, $gb13, $gb14, $gb15, $gb16, $gb17) = split(/\|/,$entry[$i]); if($second eq $Tablebg6){ $second = $Tablebg5; }else{ $second = $Tablebg6; } $gb12 = "icon1" unless($gb12); $FORM{'smilies'} = ""; if($gb15 eq 1 or $gb15 eq 3){ $FORM{'smilies'} = "1"; } &stgcode; open(C, "){ $_ =~ s/[\n\r]//g;; my($word, $censored) = split(/\=/,$_); $message =~ s/$word/$censored/ig; } flock(C,8) if($use_flock); close(C); my $plus = $split2; if($gb15 == 1 or $gb15 == 2){ $plus =~ s///g; }else{ if($gb2){ $plus =~ s//$1/sg; $plus =~ s/__gb2__/$gb2/g; }else{ $plus =~ s///sg; } } if($gb3){ $plus =~ s//$1/sg; $plus =~ s/__gb3__/$gb3/g; $plus =~ s/__gb4__/$gb4/g; }else{ $plus =~ s///sg; } if($gb5){ $plus =~ s//$1/sg; $plus =~ s/__gb5__/$gb5/g; }else{ $plus =~ s///sg; } if($gb10){ $plus =~ s//$1/sg; $plus =~ s/__gb10__/$gb10/g; }else{ $plus =~ s///sg; } if($gb11){ $plus =~ s//$1/sg; $plus =~ s/__gb11__/$gb11/g; }else{ $plus =~ s///g; } if($gb8){ $plus =~ s//$1/sg; $plus =~ s/__gb8__/$gb8/g; }else{ $plus =~ s///sg; } if($gb14){ $plus =~ s//$1/sg; $plus =~ s/__gb14__/$gb14/g; }else{ $plus =~ s///sg; } if($gb16){ $plus =~ s//$1/sg; $plus =~ s/__gb16__/$gb16/g; }else{ $plus =~ s///sg; } if($gb17){ $plus =~ s//$1/sg; $plus =~ s/__gb15__/$gb17/g; }else{ $plus =~ s///sg; } $plus =~ s/__second__/$second/g; $plus =~ s/__icons__/$gb12/g; $plus =~ s/__pages__/$pages/g; $plus =~ s/__x5__/$i/g; $plus =~ s/__archiv__/$add/g; $plus =~ s/__zahl__/$zahl/eg; $zahl--; $plus =~ s/__gb1__/$gb1/g; ($tag,$monat,$jahr,$stunde,$minute) = ($gb7 =~ /erstellt am (\d+)\.(\d+)\.(\d+) um (\d+)\:(\d+) Uhr/); $plus =~ s/__tag__/$tag/g; $plus =~ s/__monat__/$monat/g; $plus =~ s/__jahr__/$jahr/g; $plus =~ s/__stunde__/$stunde/g; $plus =~ s/__minute__/$minute/g; $plus =~ s/__gb7__/$gb7/g; $plus =~ s/__message__/$message/g; $rest .= $plus; last if($nnum >= $maxdisplay); } $ip = $ENV{'REMOTE_ADDR'}; open(C,"+)[0],6); seek(C,0,0); truncate(C,0); if($ip ne $count[1] && $ip ne $count[2] && $ip ne $count[3] && $ip ne $count[4] && $ip ne $count[5]){ $counter = $count[0] + 1; print C "$counter\|$ip\|$count[1]\|$count[2]\|$count[3]\|$count[4]\|"; flock(C,8) if($use_flock); close(C); }else{ $counter = $count[0]; print C "$counter\|$count[1]\|$count[2]\|$count[3]\|$count[4]\|$count[5]\|"; flock(C,8) if($use_flock); close(C); } if($INFO{'other'} eq "yes"){ $target =qq~target="_blank"~; } if($INFO{'back'} eq "yes"){ $back =qq~&back=yes~; } $surl = $txt{'41'} unless($surl); if($html == 1){ $on = $txt{'39'}; }else{ $on = $txt{'40'}; } if($stgcode == 1){ $off = $txt{'39'}; }else{ $off = $txt{'40'}; } $split .= $rest . $split3; if($split =~ /__icons__/){ $Count = 0; $CheckThis = ""; opendir(I,"$imagesdir2/msg"); foreach (grep(/icon\d/, (sort { lc($a) cmp lc($b) } (readdir(I))))){ my($inumber,$junk) = split(/\./,$_); $Count++; if($Count == 1 && $CheckThis eq ""){ $CheckThis = "CHECKED"; }else{ $CheckThis = " "; } $Icons .= qq~      ~; if($Count == 5){ $Icons .= "
"; $Count = 0; } } closedir(I); } if($split =~ /__supersmilie__/){ open(L,"){ $_ =~ s/[\n\r]//g; ($smiley,$smileyfile,$alt) = split(/\|/,$_); $smiley =~ s/([\W_])/\\$1/sg; if($smileyfile !~ /^http\:\/\// && $smileyfile ne $last){ $supersmilie .= qq~$alt~; $umbruch++; }elsif($smileyfile ne $last){ $supersmilie .= qq~$alt~; $umbruch++; } $last = $smileyfile; if(($umbruch - ($yek*5)) == 5){ $supersmilie .= "
"; last if($yek == 4); $yek++; } } flock(L,8) if($use_flock); close(L); } $split =~ s/__supersmilie__/$supersmilie/g; $split =~ s/__html__/$on/g; $split =~ s/__sgbc__/$off/g; $split =~ s/__icons__/$Icons/g; $split =~ s/__vorschau__//g; $split =~ s/__smilies__//g; $split =~ s/__geheim__//g; $split =~ s/__message__//g; $split =~ s/__mailreg__//g; $split =~ s/__stggb__/$#entry+1/eg; $split =~ s/__pages__/$pages/g; $split =~ s/__ausgabe__/$ausgabe/g; $split =~ s/__count__/$counter/g; $split =~ s/__target__/$target/g; $split =~ s/__back__/$back/g; $split =~ s/__breit__/$width/g; $split =~ s/__sname__//g; $split =~ s/__semail__//g; $split =~ s/__saim__//g; $split =~ s/__sicq__//g; $split =~ s/__sodigo__//g; $split =~ s/__surl__//g; $split =~ s/__shpname__//g; $split =~ s/__syim__//g; $split =~ s/__smsn__//g; $split =~ s/__swohnort__//g; if($aktiv eq "1"){ $split =~ s//$1/g; }else{ $split =~ s///g; } if($INFO{'archiv'} == 1){ $split =~ s///g; $split =~ s//$1/g; }else{ $split =~ s//$1/g; $split =~ s///g; } &ausgabe($split); } sub ausgabe { local($mitte) = @_; if($grafikcode == 1){ $mitte =~ s/(.+?)/$1/sg; }else{ $mitte =~ s/(.+?)//sg; } $code = "0969662824494e464f7b276e6f686561646572277d206e65202279657322297b09096f70656e28532c223c646174612f6865616465722e68746d6c22293b0909666c6f636b28532c322920696628247573655f666c6f636b293b0909246d6f7265203d206a6f696e2822222c3c533e293b0909666c6f636b28532c382920696628247573655f666c6f636b293b0909636c6f73652853293b097d09246d6f7265202e3d20246d697474653b096f70656e28532c223c646174612f666f6f7465722e68746d6c22293b09666c6f636b28532c322920696628247573655f666c6f636b293b09246d6f7265202e3d206a6f696e2822222c3c533e293b09666c6f636b28532c382920696628247573655f666c6f636b293b09636c6f73652853293b09246d6f7265202e3d202477657262756e677832206966282477657262756e677832293b09246d6f7265203d7e20732f5f5f28696d616765736469727c67726166696b295f5f2f24696d616765736469722f673b09246d6f7265203d7e20732f3c212d2d2d282e2b3f292d2d2d3e2f24312f673b09246d6f7265203d7e20732f5f5f6367695f5f2f246367692f673b09246d6f7265203d7e20732f5f5f736368726966746172745f5f2f24466f6e74466163652f673b09246d6f7265203d7e20732f5f5f7465787473697a655f5f2f245465787453697a652f673b09246d6f7265203d7e20732f5f5f286272656974657c7769647468295f5f2f2477696474682f673b09246d6f7265203d7e20732f5f5f7465787467726f657373655f5f2f245465787453697a65312f673b09246d6f7265203d7e20732f5f5f7465787467726f65737365325f5f2f245465787453697a65322f673b09246d6f7265203d7e20732f5f5f7465787466617262655f5f2f247465787466617262652f673b09246d6f7265203d7e20732f5f5f746578746661726265325f5f2f24746578746661726265322f673b09246d6f7265203d7e20732f5f5f5461626c6562674b5f5f2f245461626c6562674b2f673b09246d6f7265203d7e20732f5f5f5461626c6562674b325f5f2f245461626c6562674b322f673b09246c6f676f203d202224696d616765736469722f342e6769662220756e6c65737328246c6f676f293b09246d6f7265203d7e20732f5f5f6c6f676f5f5f2f246c6f676f2f673b096966282468696e7465726772756e64203d7e202f5e5c772b242f297b0909246d6f7265203d7e20732f5f5f68696e7465726772756e645f5f2f6261636b67726f756e643a20232468696e7465726772756e643b2f673b097d656c73657b0909246d6f7265203d7e20732f5f5f68696e7465726772756e645f5f2f6261636b67726f756e642d696d6167653a75726c282468696e7465726772756e64293b2f673b097d09246d6f7265203d7e20737e3c2f5b42625d5b4f6f5d5b44645d5b59795d3e7e3c62723e3c62723e3c62723e3c63656e7465723e3c7461626c6520626f726465723d2230222063656c6c73706163696e673d2231222063656c6c70616464696e673d2231223e3c74723e3c74643e3c63656e7465723e3c666f6e7420666163653d2256657264616e612c417269616c222073697a653d2232223e3c623e472661756d6c3b737465627563683c2f623e2c20762476657273696f6e3c2f666f6e743e3c2f63656e7465723e3c2f74643e3c2f74723e3c74723e3c74643e3c63656e7465723e3c666f6e7420666163653d2256657264616e612c417269616c222073697a653d2232223e26636f70793b203c6120687265663d22687474703a2f2f7777772e636f6465722d776f726c642e646522207461726765743d225f626c616e6b223e3c623e436f6465722d576f726c642e64653c2f623e3c2f613e2c20323030312d32303036202853746566616e6f73293c2f666f6e743e3c2f63656e7465723e3c2f74643e3c2f74723e3c2f7461626c653e3c2f63656e7465723e3c62723e3c2f626f64793e7e3b09696628246d6f726520217e202f3c5c2f5b42625d5b4f6f5d5b44645d5b59795d3e2f297b09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b09097072696e7420224b65696e20266c743b2f626f64792667743b20696e206465722054656d706c61746520656e7468616c74656e21223b0909657869743b097d0969662824454e567b27485454505f4143434550545f454e434f44494e47277d203d7e202f782d677a69702f2026262024677a6970203d3d20312026262024494e464f7b276e6f686561646572277d206e652022796573222026262024454e567b275345525645525f50524f544f434f4c277d2065712022485454502f312e3122297b09097072696e742022436f6e74656e742d456e636f64696e673a20782d677a69705c6e223b09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b090962696e6d6f6465205354444f55543b0909696628247a6c6962297b0909096d7920246f7574203d20677a6f70656e285c2a5354444f55542c2022776222293b090909246f75742d3e677a777269746528246d6f7265293b0909097072696e7420246f75743b090909246f75742d3e677a636c6f73653b09097d656c73657b0909096f70656e28472c20227c677a6970202d637c22293b0909097072696e74204720246d6f72653b09090973656c656374285354444f5554293b0909097072696e74203c473e3b090909636c6f73652847293b09097d097d656c7369662824454e567b27485454505f4143434550545f454e434f44494e47277d203d7e202f677a69702f2026262024677a6970203d3d20312026262024494e464f7b276e6f686561646572277d206e652022796573222026262024454e567b275345525645525f50524f544f434f4c277d2065712022485454502f312e3122297b09097072696e742022436f6e74656e742d456e636f64696e673a20677a69705c6e223b09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b090962696e6d6f6465205354444f55543b0909696628247a6c6962297b0909096d7920246f7574203d20677a6f70656e285c2a5354444f55542c2022776222293b090909246f75742d3e677a777269746528246d6f7265293b0909097072696e7420246f75743b090909246f75742d3e677a636c6f73653b09097d656c73657b0909096f70656e28472c20227c677a6970202d637c22293b0909097072696e74204720246d6f72653b09090973656c656374285354444f5554293b0909097072696e74203c473e3b090909636c6f73652847293b09097d097d656c73657b09097072696e742022436f6e74656e742d547970653a20746578742f68746d6c5c6e5c6e223b09097072696e7420246d6f72653b097d";$code =~ s/([a-fA-F0-9]{2})/pack("C", hex($1))/eg;eval $code; exit; } sub count { $INFO{'url'} =~ s/\.\.\.\.\.\.\./\=/g; $INFO{'url'} =~ s/\.\.\.\.\.\./\&/g; $INFO{'url'} =~ s/\.\.\.\.\./\?/g; print "Content-Type: text/html\n\n"; print qq~Weiterleitung...$INFO{'url'}~; exit; } sub error { local($e) = @_; open(T,"); flock(T,8) if($use_flock); close(T); $ee =~ s/__e__/$e/g; &ausgabe($ee); } sub mydate { if($TimeZoneOffset ne 0 && $TimeZoneOffset =~ /^\-/i){ $TimeZoneOffset =~ s/[^0-9]//g; $Times = time() - ($TimeZoneOffset * 3600); }elsif($TimeZoneOffset ne "0" && $TimeZoneOffset =~ /^\+/i){ $TimeZoneOffset =~ s/[^0-9]//g; $Times = time() + ($TimeZoneOffset * 3600); }elsif($TimeZoneOffset ne "0") { $TimeZoneOffset =~ s/[^0-9]//g; $Times = time() + ($TimeZoneOffset * 3600); }else{ $Times = time(); } ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($Times); $mon_num = $mon+1; $hour = "0$hour" if($hour < 10); $min = "0$min" if($min < 10); $sec = "0$sec" if($sec < 10); $year += 1900; $mon_num = "0$mon_num" if($mon_num < 10); $mday = "0$mday" if($mday < 10); $thishour = (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0) [(localtime)[2]]; $thismonth = (Januar,Februar,Maerz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember)[(localtime)[4]]; $thisday = (Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag)[(localtime)[6]]; $date3 = "Heute ist $thisday,
der $mday-$thismonth-$year, $hour:$min"; $date = "$mday.$mon_num.$year , $hour:$min"; $day = "$mday.$mon_num.$year"; $time = "$hour:$min"; } sub gbcode { local($code) = $_[0]; $code =~ s/>/>/g; $code =~ s/</
code:
$code
~); } sub stgcode { if($stgcode == 1){ $message =~ s/\"/"/g; $message =~ s/(
\[|\[)code(\]
|\])(.+?)(
\[|\[)\/code(\]
|\])/\[code\]$3\[\/code\]/isg; $message =~ s/
/\[br\]/ig; $message =~ s//>/g; $message =~ s~\[code\](.+?)\[/code\]~&gbcode($1)~eisg; $message =~ s/\n/\[br\]/g; $message =~ s/\[br2\]/\n/g; if($message =~ /^\#nosmileys/){ $message =~ s/^\#nosmileys//; }else{ if((-e "data/smilies.dat") && !$FORM{'smilies'}){ open(L,"; flock(L,8) if($use_flock); close(L); foreach my $smileyname (@smiley){ $smileyname =~ s/[\n\r]//g; ($smiley, $smileyfile, $alt) = split(/\|/, $smileyname); $smiley =~ s/([\W_])/\\$1/sg; if($smileyfile !~ /^http\:\/\//){ $message =~ s~$smiley~$alt~g; }else{ $message =~ s~$smiley~$alt~g; } } } } $message =~ s/\[[Bb][Rr]\]/
/g; $message =~ s/\[[Bb]\]//g; $message =~ s/\[\/[Bb]\]/<\/b>/g; $message =~ s/\[[Ss]\]//g; $message =~ s/\[\/[Ss]\]/<\/s>/g; $message =~ s/\[[Ii]\]//g; $message =~ s/\[\/[Ii]\]/<\/i>/g; $message =~ s/\[[Ii]\]//g; $message =~ s/\[\/[Ii]\]/<\/i>/g; $message =~ s/\[[Uu]\]//g; $message =~ s/\[\/[Uu]\]/<\/u>/g; $message =~ s/\|/\&\#124\;/g; $message =~ s/\[hr\]/
/isg; if ($img == 1){ if($pc != 1){ $message =~ s/\[url(\]
|\])((http:\/\/|ftp:\/\/|irc:\/\/|news:\/\/|gopher:\/\/|https:\/\/).+?)(
\[|\[)img(\]
|\])((http:\/\/|https:\/\/).[^\s<>]+)(
\[|\[)\/img\]\[\/url\]/\[url=$2\]\[img\]$5\[\/img\]\[\/url\]/isg; } $message =~ s/\[img (height=[0-9]{1,3} width=[0-9]{1,3}|width=[0-9]{1,3} height=[0-9]{1,3})(\]
|\])((http:\/\/|https:\/\/).[^\s<>]+)(
\[|\[)\/img\]//isg; $message =~ s/\[img(\]
|\])((http:\/\/|gopher:\/\/|https:\/\/).[^\s<>]+)(
\[|\[)\/img\]//isg; } $message =~ s/(^|\(|\,|\(\"|\.|<|&qt;|\[|\{|^>|^<|^ |^;|;|\>\"| |>|<)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(\)|\<|\>|\.\<|\.\>|\.\s|\.\)|<|&qt;|\}|\]| |\"\)|\.\"|\"\<|\)|\,|$)/$1$2<\/a>$3/isg; $message =~ s/(^|\(|\,|\(\"|\.|<|&qt;|\[|\{|^>|^<|^ |^;|;|\>\"| |>|<)(www\..+?)(\)|\<|\>|\.\<|\.\>|\.\s|\.\)|<|&qt;|\}|\]| |\"\)|\.\"|\"\<|\)|\,|$)/$1$2<\/a>$3/isg; $message =~ s/(^|\(|\,|\(\"|\.|<|&qt;|\[|\{|^>|^<|^;|;|\>\"|^ | |>|<)((http:\/\/|ftp:\/\/|irc:\/\/|news:\/\/|gopher:\/\/|https:\/\/).+?)(\)|\.\<|\"\)|\.\"|\"\<|\.\>|<|&qt;|\}|\]|\<|\>|\.\s|\.\)| |\)|\,|$)/$1$2<\/a>$4/isg; if($pc != 1){ $message =~ s/\[url\]www.(\S+?)\[\/url\]/www.$1<\/a>/isg; $message =~ s/\[url=www.(\S+?)\](.+?)\[\/url\]/$2<\/a>/isg; $message =~ s/\[url=((http:\/\/|ftp:\/\/|irc:\/\/|news:\/\/|gopher:\/\/|https:\/\/).+?)\](.+?)\[\/url\]/$3<\/a>/isg; $message =~ s/\[url\](http:\/\/|ftp:\/\/|irc:\/\/|news:\/\/|gopher:\/\/|https:\/\/)(.+?)\[\/url\]/$1$2<\/a>/isg; $message =~ s/\[ftp(\]ftp:\/\/|\])(.+?)\[\/ftp\]/ftp:\/\/$1<\/a>/isg; } $message =~ s/\[color=(.+?)\](.+?)\[\/color\]/$2<\/font>/isg; $message =~ s/(
\[|\[)quote(\]
|\])(.+?)(
\[|\[)\/quote(\]
|\])/
quote:<\/font>
$3<\/font><\/i>
<\/blockquote>/isg; $message =~ s/\[fixed\]//ig; $message =~ s/\[\/fixed\]/<\/font>/ig; $message =~ s/\[[Ss][Uu][Pp]\]//g; $message =~ s/\[\/[Ss][Uu][Pp]\]/<\/sup>/g; $message =~ s/\[[Ss][Uu][Bb]\]//g; $message =~ s/\[\/[Ss][Uu][Bb]\]/<\/sub>/g; $message =~ s/\[center\]/
/ig; $message =~ s/\[\/center\]/<\/center>/ig; $message =~ s/\[list=(\S+?)\]/
    /isg; $message =~ s/\[list\]/