#------------------------------- # padres.pl (ShiftJIS) # 2009. 1.26 MIYAMORI Yoshimasa #------------------------------- $EUC = '/usr/bin/nkf -e -m0'; $JIS = '/usr/bin/nkf -j -m0'; $SJIS = '/usr/bin/nkf -s -m0'; $myOut = $SJIS; # $EUC, $JIS, $SJIS の3つのうちどれか. HTMLファイルの文字コード $myIn = $SJIS; # $EUC, $SJIS のどちらか. スクリプトファイルの文字コード $myReqPadlib = 'padlib.pl'; $myReqJcode = 'jcode.pl'; $myReferer = 'amcsys.com'; $myRevMade = 'mailto:kan_ta@amcsys.com'; $padresMyTitle = '雑記帳'; $padresMyUrl = '/~user/cgi-bin/pad/'; $myFilePath = '../../pad/'; $myFileUrl = '/~user/pad/'; $myAuth = 1; # 1: パスワードを使う. 0: 他のユーザー認証を使う. $myChmod = 0666; # chmod の モード. 通常 0666. 場合によって 0644 など. $myEnv = 1; # 0:どちらも無し. 1:環境変数のログを残す. 2:さらにアクセス制限をする. $myPadLimit = 100; # 50か 100. それぞれ 50行, 100行ごとにログを分ける. $myTagChk = 0; # 1: <,> を <, > に置き換える. 0:置き換え無し. $myMsgBack = 'Back'; $myMsgBody = '本文を書いてください.'; $myMsgBusy = '他の人が作業中でした. もう1度お願いします.'; $myMsgCount = '番号を変更しました.'; $myMsgDeny = 'この端末からは作業できません. ご了承ください.'; $myMsgErr = '作業中にエラーが発生しました.'; $myMsgErrBusyFile = 'ファイルが残っていました.'; $myMsgLogNotFound = 'ログがまだありません.'; $myMsgName = '名前を書いてください.'; $myMsgNameBody = '名前と本文を書いてください.'; $myMsgPassword = 'パスワードが違います.'; $myMsgPasswordChange = 'パスワードを変更しました.'; $myMsgPasswordConf = '新しいパスワードが確認欄と一致しませんでした.'; $myMsgPasswordNew = '新しいパスワードを入力してください.'; $myMsgPost = 'よければ 送信してください.'; $myMsgPrev = '1つ前のページ'; $myMsgRef = 'コメントをどうぞ.'; $myMsgReply = 'コメントする'; $myMsgSame = '同じ内容が送信されました.'; $myMsgSpam = '本文が不適切だと判断しました.'; $myMsgTagBad = '不都合なタグが含まれています.'; $myMsgTagOpen = 'タグの構文エラーだと思われます.'; if ($myOut eq $SJIS) { $myCharSet = 'Shift_JIS'; } elsif ($myOut eq $EUC) { $myCharSet = 'EUC-JP'; } else { $myCharSet = 'ISO-2022-JP'; } $myHead = join("\n", "", "", "", "", "" ); $myBody = ""; @myBadTag = ( 'html', 'head', 'title', 'body', 'applet', 'basefont', 'form', 'frame', 'frameset', 'meta', 'noframe', 'object', 'plaintext', 'script' ); @myTag = ( 'a', 'address', 'b', 'big', 'blink', 'blockquote', 'center', 'code', 'div', 'dl', 'em', 'embed', 'font', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'i', 'kbd','listing', 'map', 'marquee', 'menu', 'multicol', 'nobr', 'noembed', 'ol', 'pre', 's', 'samp', 'small', 'strike', 'strong', 'server', 'style', 'span', 'sub', 'sup', 'table', 'tt', 'u', 'ul', 'var', 'xmp' ); @myDay = ('日', '月', '火', '水', '木', '金', '土'); @myYMD = ('年', '月', '日'); # $myEnv が 0 は何もしない. 1 でログを残す. 2 でログを残し, アクセス制限する. # 書き込み可で '' を返す. 書き込み不可で文字列を返す. sub chkEnv { local($s, $n); return('') if ($myEnv == 0); &putEnv; return('') if ($myEnv == 1); $n = 0; $n = 2 if ($ENV{'HTTP_USER_AGENT'} =~ /\bvia\b/i); $n = 2 if ($ENV{'HTTP_USER_AGENT'} =~ /\bproxy\b/i); $n = 2 if (exists($ENV{'HTTP_CACHE_INFO'})); $n = 2 if (exists($ENV{'HTTP_CLIENT_IP'})); # $n = 2 if (exists($ENV{'HTTP_CUDA_CLIIP'})); # 用途不明. $n = 2 if (exists($ENV{'HTTP_EXTENSION'})); $n = 2 if (exists($ENV{'HTTP_FORWARDED'})); $n = 2 if (exists($ENV{'HTTP_MAX_FORWARDS'})); $n = 2 if (exists($ENV{'HTTP_PROXY_AUTHORIZATION'})); $n = 2 if (exists($ENV{'HTTP_PROXY_CONNECTION'})); # $n = 2 if (exists($ENV{'HTTP_REMOTE_HOST_WP'})); # 用途不明. $n = 2 if (exists($ENV{'HTTP_SP_HOST'})); $n = 2 if (exists($ENV{'HTTP_TE'})); $n = 2 if (exists($ENV{'HTTP_VIA'})); $n = 2 if (exists($ENV{'HTTP_X_BLUECOAT_VIA'})); $n = 2 if (exists($ENV{'HTTP_X_CISCO_BBSM_CLIENTIP'})); # $n = 2 if (exists($ENV{'HTTP_X_COMING_FROM'})); # 用途不明. $n = 2 if (exists($ENV{'HTTP_X_FORWARDED_FOR'})); $n = 2 if (exists($ENV{'HTTP_X_HTX_AGENT'})); $n = 2 if (exists($ENV{'HTTP_X_LOCKING'})); $n = 2 if (exists($ENV{'HTTP_X_PROXY_ID'})); # $n = 2 if (exists($ENV{'HTTP_X_WAP_CLIENT_IP'})); # 用途不明. $n = 2 if (exists($ENV{'HTTP_XONNECTION'})); $n = 2 if (exists($ENV{'HTTP_XROXY_CONNECTION'})); if ($n) { # 上記のうち、接続元の情報. $n = 1 if ($ENV{'HTTP_CLIENT_IP'}); $n = 1 if ($ENV{'HTTP_SP_HOST'}); $n = 1 if ($ENV{'HTTP_X_FORWARDED_FOR'}); $n = 1 if ($ENV{'HTTP_X_CISCO_BBSM_CLIENTIP'}); # その他, これがあれば匿名ではなさそう. $n = 1 if ($ENV{'HTTP_FROM'}); } # $n が 1: Proxy経由だが匿名でなさそう, 2: 匿名Proxy. # 以下, アクセスを制限する条件を指定する. $envFileの出力を参照. $s = ''; # $s = $myMsgEnvBad if ($n); # Proxy経由? $s = $myMsgEnvBad if ($n == 2); # 匿名Proxy経由? # $s = $myMsgEnvBad if ($ENV{'REMOTE_ADDR'} =~ /^192.168.1./); # アドレス. # $s = $myMsgEnvBad if !($ENV{'HTTP_REFERER'} =~ /フォームのURL/); # どのフォームの出力か. $s = $myMsgEnvBad if !($ENV{'HTTP_REFERER'}); return($s); } # $myEnv が 2 の時、アクセス制限する. # 書き込み可で 0 を返す. 書き込み不可で 1 を返す. sub chkHttpNum { local($text) = @_; local($n); return(0) if ($myEnv == 0); return(0) if ($myEnv == 1); $n = $text =~ s/http/http/g; if ($n < $myHttpNum) { return(0); } else { return(1); } } # $myEnv が 2 の時、アクセス制限する. # 書き込み可で '' を返す. 書き込み不可で文字列を返す. sub chkBody { local($text) = @_; local($n); return(0) if ($myEnv == 0); return(0) if ($myEnv == 1); $n = 0; # 以下, アクセスを制限する条件を指定する. $n = 1 if ($text =~ /.*\b(buy|cash|cheap|christmas|coupons?|credit|fake|forex|free|graffiti)\b.*<\/a>/i); $n = 1 if ($text =~ /.*\b(click here|cool site|look at)\b.*<\/a>/i); $n = 1 if ($text =~ /.*\b(gucci|prada|rolex|swiss made)\b.*<\/a>/i); $n = 1 if ($text =~ /.*\b(casinos?|slots?|backgammon|poker|videopoker)\b.*<\/a>/i); $n = 1 if ($text =~ /.*\b(abilify|accutane|aciphex|acomplia|actos|acyclovir|adalat|adapalene|adderall|adipex|alesse|alli|aleve|allegra|alprazolam|amaryl|ambien|amitriptyline|antabuse|ativan|avandia|avodart|bactrim|biaxin|botox|byetta|calcium|carisoprodol|celebrex|celexa|cephalexin|cialis|citalopram|diazepam|disulfiram|famvir|fioricet|flomax|fluoxetine|genace)\b.*<\/a>/i); $n = 1 if ($text =~ /.*\b(herceptin|hoodia|hydrocodone|ibuprofen|kamagra|klonopin|lamisil|levitra|levothyroxine|lipitor|lorazepam|lortab|melatonin|magnesium|meridia|metformin|methadone|mobic|naproxen|neurontin|niacin|nicotine|nexium|nizoral|nolvadex|norvasc)\b.*<\/a>/i); $n = 1 if ($text =~ /.*\b(ovral|oxycodone|oxycontin|pantoprazole|paxil|penicillin|phentermine|plavix|prilosec|prevacid|propecia|protonix|protopic|provera|risperdal|risperidone|ritalin)\b.*<\/a>/i); $n = 1 if ($text =~ /.*\b(seroquel|sibutramine|soma|strattera|suboxone|synthroid|tadalis|testosterone|thyroid|tramadol|ultram|valium|valtrex|viagra|warfarin|xanax|xenical|yasmin|zetia|zithromax|zyprexa|zyrtec)\b.*<\/a>/i); $n = 1 if ($text =~ /.*\b(videos?|movies?|dvds?|adults?|anals?|ass|bikinis?|bukkake|busty?|cheer\s?(girl|leader)s?|cunts?|dildo|female|fuck|gays?|girls?|hardcore|hentai|legs?|lesbians?|lolitas?|masturbation|naked|nipples?|nudes?|porns?|pussy?|rapes?|sexy?|squirts?|sluts?|teens?|topless|upskirts?|vaginas?|wife)\b.*<\/a>/i); if ($text =~ /^http:\/\/wis.dm\/users\/(\S*)\s+(\S*)/) { $n = 1 if ($1 =~ /$2/i); } if ($text =~ /^http:\/\/www.youtube.com\/user\/(\S*)\s+(\S*)/) { $n = 1 if ($1 =~ /$2/i); } $n = 1 if ($text =~ /\[url=.*\/url\]/); $n = 1 if ($text =~ /\[URL=.*\/URL\]/); $n = 1 if ($text =~ /^comment\d,\s/); $n = 1 if ($text =~ /^3.* or .* or .* or /); if ($n) { return($myMsgSpam); } else { return(''); } }