#! /usr/local/bin/perl # #========================================================================================== # # 多機能(?)掲示板システム 『SSBoard』 : メッセージ編集スクリプト # # Copyright Shinobu Suzuki 1998. All rights reserved. #----------------------------------------------------------------------------------------- # HomePage : http://www.aikis.or.jp/~s-suzuki/cgilabo/ # E-mail : s-suzuki@aikis.or.jp #========================================================================================== # 初期設定 #--------------------------------------------------------------------- $version = '1.3'; # 本スクリプトのバージョン $script = 'ssboard.cgi'; # 掲示板スクリプト名 $bg_col = '#e0e0e0'; # 背景色 $title_col = '#000080'; # タイトルの色 $text_col = '#000000'; # テキストの色 $link_col = '#0000ff'; # リンクの色 $alink_col = '#ff0000'; # リンク中の色 $vlink_col = '#800080'; # 既リンクの色 $subject_col = '#ff0000'; # 題名の色 $name_col = '#009000'; # 投稿者名の色 $indexname = '戻る'; # edit.cgiからの戻り先 $index = 'ssboard.cgi'; # edit.cgiからの戻り先(URL) #--------------------------------------------------------------------- # 管理用パスワード # 当然のことですが、できるだけ類推できにくいものを設定し # てください。できれば8文字より長いものにしましょう # ・ssboard.cgiと別のパスワードでも構いません # ・同じパスワードの方が便利かな? #--------------------------------------------------------------------- $user_pass = "1234"; #--------------------------------------------------------------------- # ボード情報定義ファイル名 # 例) $cfg_file = "ssboard.cfg"; #--------------------------------------------------------------------- $cfg_file = ""; #--------------------------------------------------------------------- # ボード定義情報:デフォルト値 # ・定義ファイルを使用する場合は、そちらが優先されます。 # ・定義ファイルには、他にも項目がありますが、このスクリプトでは、 # 以下の項目だけしか参照していません。 # ・定義ファイルを使用する場合は、この項目は削除してもかまいませんが # 削除しない方がなにかと安全です。 #--- こ こ か ら ----------------------------------------------------- $max_size = '1500'; # 最大書き込みサイズ(0で制限なし) $max_subject = '100'; # 題名のサイズ $max_name = '100'; # 投稿者名のサイズ $max_email = '100'; # 投稿者emailのサイズ $max_url = '200'; # 投稿者homeのサイズ $security = '0'; # デフォルトセキュリティレベルの設定 # 0:制限なし # 1:JPドメインのみ許可 # 2:プロキシの禁止 # 3:JPおよびプロキシ $maintenance = '0'; # 掲示板メンテナンス中の制限フラグ # 0:通常の運用 1:書き込みを禁止 2:表示も禁止 #--- こ こ ま で ----------------------------------------------------- #---------------------------------------------------------- # ログファイル名についてはセキュリティ上、変更しておいた方 # がよいと思います。 #---------------------------------------------------------- $log_file = "ssboard.log"; #---------------------------------------------------------- # 許可したいプロキシ(と誤判定されるドメイン)を設定する #---------------------------------------------------------- @proxylist = ( "aikis.or.jp", "cypress.ne.jp" ); #---------------------------------------------------------- # 利用制限するドメインリストのファイル名 # 省略すると、ドメイン制限は行われません # $domain_file = "domain.lst"; #---------------------------------------------------------- $domain_file = ""; #---------------------------------------------------------- # ファイル入出力時にファイルロックを行う設定。これにより、 # 同時アクセス時の問題が多少マシになる(?) # サーバーが flock()関数を使える設定の場合のみ利用できます # 0:ファイルロックを行わない # 1:flock()でファイルロックを行う #---------------------------------------------------------- # $lockmode = 0; #---------------------------------------------------------- # CERN系のサーバーなどで、ファイル関係でエラーが出る場合、 # 以下に設置するディレクトリのサーバー内でのフルパスを指定 # してみると、正常に動作することがあるかもしれません ^^;; # フルパスがわからないときは、サーバーの管理者に問い合わせ # て見て下さい。 # # 最後は / で終わること。 # 例:$path = '/home/user/s-suzuki/public_html/ssboard/'; #---------------------------------------------------------- $path = ''; #---------------------------------------------------------- # 外部からの(イタズラ)書き込みを禁止する場合、以下に、ス # クリプトのURLを記入する。(サーバーやブラウザによっては # うまく働かないこともあります) # 例:$script_url = 'http://www.aikis.or.jp/~s-suzuki/ssboard/edit.cgi'; #---------------------------------------------------------- $script_url = ''; #---------------------------------------------------------- # 書き込みの後のリロードに失敗する場合(File Not Foundので # る場合)、CGIスクリプトを設置するディレクトリ名をURLで指 # 定すると成功する場合があるそうです。 # ※この機能については未確認です # ※biglobeでは成功するそうです # ※v1.27より記述方法を変更しています # ※最後は / で終わること。 # 例:$reload_url = 'http://www.aikis.or.jp/~s-suzuki/ssboard/'; #---------------------------------------------------------- $reload_url = ''; #---------------------------------------------------------- # 日本語コード変換ライブラリの指定 #---------------------------------------------------------- # require "$path"."jcode.pl"; #========================================================================================= # これより、処理の開始 #========================================================================================= $| = 1; # ファイルバッファリングをしない &form; # フォーム入力された値の分解 &init; # 各種データ変数の初期化 &read_domainlist; # 制限するドメインリストの読み込み &read_cfg; # ボード定義情報の読み込み #---------------------------------------------------------- # スクリプトの動作を決定($FORM{'task'}で判定) #---------------------------------------------------------- if ( $FORM{'task'} eq 'list' ) { # 編集データのリスト表示 &editlist; } elsif ( $FORM{'task'} eq 'edit') { # 編集画面 &edit_data; } elsif ($FORM{'task'} eq 'regist') { # データ書き込み ®ist; } else { &main; exit; } #========================================================================================= # 処理はここまで(以下は、各サブルーチン) #========================================================================================= #----------------------------------------------------------------- # メイン画面 #----------------------------------------------------------------- sub main { if ($CFG_DATA{'maintenance'} ne 0 ) { &error("ただ今、メンテナンス中です。"); } &html_header("SSBoard:メッセージの編集"); print "