# msg11lib.pl # Message Board V11 ライブラリ # Script Written ########## #フォームデータデコード sub Read_Parm{ if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } else { $buf = $ENV{'QUERY_STRING'}; } @lens = split(/&/,$buf); foreach $len(@lens){ ($key, $value) = split(/=/,$len,2); $value =~ tr/+/ /; $key =~ s/%(..)/pack("c",hex($1))/ge; $value =~ s/%(..)/pack("c",hex($1))/ge; &jcode'convert(*value,"$CHARCODE"); $value =~ s/\t//g; $value =~ s/~ ~//g; $IN{$key} = $value; } } ########## sub Ch_Check{ #半角英数字チェック local($lines) = @_; if($lines =~ /[^A-Za-z0-9]/){ return 0; } else{ return 1; } } ########### sub Cn_Check{ #半角数字チェック local($lines) = @_; if($lines =~ /[^0-9]/){ return 0; } else{ return 1; } } ########### sub L_Check{ #文字数のチェック local($lines) = @_; local ($f) = length ($lines); return ($f); } ########### sub M_Check{ #メールアドレスチェック local($lines) = @_; if($lines =~ /([\w\-\+]+)@([\w\-\+\.]+)/){ return 1; } else{ return 0; } } ########## #文字列の暗号化 sub Changes{ local($msg,$num) = @_; local(@chrline); @chrline = unpack('C*',$msg); $msg = join('?',@chrline); $msg =~ s/(\d+)/$1+$num/eg; return $msg; } ########## #文字列の復元化 sub Rchanges{ local($msg,$num) = @_; local(@chrline); $msg=~s/(\d+)/$1-$num/eg; @chrline=split(/\?/,$msg); $msg=pack('C*',@chrline); return $msg; } ########### #設定記録の取得 sub Get_Cfg{ open(LOG,$CFGFILE); @alldata = ; close(LOG); foreach $ones (@alldata){ chop($ones); ($cname,$cvalue) = split(/~ ~/,$ones); $CONFIG{$cname} = $cvalue; } if($CONFIG{'myhome'} eq ''){ $CONFIG{'myhome'} = 'http://pocket.727.net/'; } if($CONFIG{'titlename'} eq ''){ $CONFIG{'titlename'} = 'Message Board V11'; } if($CONFIG{'bgcol'} eq ''){ $CONFIG{'bgcol'} = 'white'; } if($CONFIG{'textcol'} eq ''){ $CONFIG{'textcol'} = 'black'; } if($CONFIG{'linkcol'} eq ''){ $CONFIG{'linkcol'} = 'red'; } if($CONFIG{'vlinkcol'} eq ''){ $CONFIG{'vlinkcol'} = 'blue'; } if($CONFIG{'tblborder'} eq ''){ $CONFIG{'tblborder'} = 0; } if($CONFIG{'falign'} eq ''){ $CONFIG{'falign'} = 'center'; } if($CONFIG{'tblborder_l'} eq ''){ $CONFIG{'tblborder_l'} = 0; } if($CONFIG{'keisen'} eq ''){ $CONFIG{'keisen'} = 'on'; } if($CONFIG{'tag'} eq ''){ $CONFIG{'tag'} = 'off'; } if($CONFIG{'logmax'} eq ''){ $CONFIG{'logmax'} = 100; } if($CONFIG{'pagemax'} eq ''){ $CONFIG{'pagemax'} = 10; } if($CONFIG{'namemax'} eq ''){ $CONFIG{'namemax'} = 40; } if($CONFIG{'passmax'} eq ''){ $CONFIG{'passmax'} = 12; } if($CONFIG{'addrmax'} eq ''){ $CONFIG{'addrmax'} = 80; } if($CONFIG{'titlemax'} eq ''){ $CONFIG{'titlemax'} = 40; } if($CONFIG{'colorpal'} eq ''){ $CONFIG{'colorpal'} = "青'blue\t赤'red\t緑'green\t黄'yellow\t橙'orange\t桃'hotpink\t紫'purple\t茶'brown\t灰'gray\t黒'black"; } } ########## #HTMLヘッダ部出力 sub Print_Head{ local($tn,$bcol,$bgr,$tcol,$lcol,$vcol) = @_; local($bkimg) = ''; if($bgr ne ''){ $bkimg = " background=\"$bgr\""; } print < $tn EOM } ########## #タグ無効 sub Notag{ local($message) = @_; if($message =~ /<[^>]*>/){ return 1; } else{ return 0; } } ########## #制限タグ sub Ngtag{ local($message) = @_; local (@tags); @tags = ($message =~ /(\<[^\>]*\>)/g); $cnt = 0; $stag = 0; for ($i = 0; $i <= $#tags; $i++){ $cnt++; foreach $lsttag (@Taglst){ $lsttag =~ s/\n//g; if($tags[$i] =~ /$lsttag/i){ $stag++; last; } } } if($cnt == $stag){ return 0; } else{ return 1; } } ########## sub Setfc{ if($CONFIG{'falign'} eq 'center'){ $fs = '
'; $fe = '
'; } if($CONFIG{'tblcol1'} ne ''){ $fco1 = " bgcolor=\"$CONFIG{'tblcol1'}\""; } if($CONFIG{'tblcol2'} ne ''){ $fco2 = " bgcolor=\"$CONFIG{'tblcol2'}\""; } if($CONFIG{'tblcol3'} ne ''){ $fco3 = " bgcolor=\"$CONFIG{'tblcol3'}\""; } if($CONFIG{'tblcol4'} ne ''){ $fco4 = " bgcolor=\"$CONFIG{'tblcol4'}\""; } if($CONFIG{'tblcol_l1'} ne ''){ $lco1 = " bgcolor=\"$CONFIG{'tblcol_l1'}\""; } if($CONFIG{'tblcol_l2'} ne ''){ $lco2 = " bgcolor=\"$CONFIG{'tblcol_l2'}\""; } } ########## #ドメインチェック sub D_Check{ foreach (split(/\t/,$CONFIG{'ngdomain'})){ $_ =~ s/ //g; if($_ ne ''){ if($REMOTE =~ /$_/){ &Disp_Err('ただいまこの掲示板はご利用いただけません','$MYHOME'); exit(0); } } } } ########## #初期画面 sub Init{ print "Content-type: text/html\n\n"; print < Setup ■初期設定を行ってから使用して下さい

|セットアップを行う| END_OF_HTML } ########## #エラーメッセージ出力 sub Disp_Err{ local($msg,$link) = @_; print "Content-type: text/html\n\n"; &Print_Head('エラーメッセージ',$CONFIG{'bgcol'},$CONFIG{'bground'},$CONFIG{'textcol'},$CONFIG{'linkcol'},$CONFIG{'vlinkcol'}); print <


$msg
END_OF_HTML } 1;