#! /usr/local/bin/perl # #========================================================================================== # # マルチボード掲示板システム 『MultiBBS』ver 1.3 : 掲示板管理用スクリプト # # 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.32 # Update : 1999/01/30 #----------------------------------------------------------------------------------------- # ■MultiBBSシステムの、種々の管理機能を行うスクリプトです # ■暗号化ののためにcrypt()を利用していますので、サーバーによっては利用できません # ■このスクリプトで設定されるデフォルト値を、システム全体の設定値に合わせてください # **** # ■このスクリプトは config.cgi を参照しています #========================================================================================== # 初期設定 #------------------------------------------------------------------------------------------ # CERN HTTPDなどのサーバーの場合で、ファイル関係のエラーが # 出る場合、設置するディレクトリのフルパスを指定してみて下 # さい。なお、最後は / で終わること。 # 例) $path = "/home/users/s-suzuki/public_html/bbs/"; #---------------------------------------------------------- $path = ""; #---------------------------------------------------------- # 共通設定ファイルの指定 #---------------------------------------------------------- require "$path"."config.cgi"; #---------------------------------------------------------- # 日本語コード変換ライブラリの指定 #---------------------------------------------------------- require "$path"."jcode.pl"; #---------------------------------------------------------- # このスクリプトで必要な設定 #---------------------------------------------------------- $indexname = '戻る'; # admin.cgiからの戻り先 $index = './'; # admin.cgiからの戻り先(URL) $listing = '1'; # メイン画面へのボード一覧表示(0:なし,1:あり) #---------------------------------------------------------- # 書き込みの後のリロードに失敗する場合(File Not Foundので # る場合)、CGIスクリプトを設置するディレクトリ名をURLで指 # 定すると成功する場合があるそうです。 # ※この機能については未確認です # ※biglobeでは成功するそうです # ※v1.24より記述方法を変更しています # ※最後は / で終わること。 # 例:$rerload_url = 'http://www.aikis.or.jp/~s-suzuki/multibbs/'; #---------------------------------------------------------- $reload_url = ''; #===================================================================== # これより、処理の開始 #===================================================================== #-------------------------------------- # crypt()が使用できるかの判定 #-------------------------------------- $now = time; ($p1, $p2) = unpack("C2", "admin"); $wk = $now / (60*60*24*7) + $p1 + $p2 - 8; @saltset = ('a'..'z','A'..'Z','0'..'9','.','/'); $nsalt = $saltset[$wk % 64] . $saltset[$now % 64]; $pass1 = crypt( $user_pass, $nsalt); $pass2 = crypt( $user_pass, substr($pass1, 0, 2) ); if ( $pass1 ne $pass2 ) { &error("crypt()関数が利用できないので、暗号化処理ができません。"); } #-------------------------------------- # ログ管理スクリプトのチェック #-------------------------------------- if( -e "makelog.cgi" ) { if( -e "viewlog.cgi" ) { $log_flag = 1; } } else { $log_flag = 0; } #-------------------------------------- # フォーム入力されたデータの解析と格納 #-------------------------------------- &form; #-------------------------------------- # フォームから渡されてきた引数の解析 #-------------------------------------- if ( $FORM{'task'} eq 'check_password' ){ &check_password; } else { if (!open(DB,"$path$passwd_file")) { &create_password; } $master_pass = ; close(DB); if ( $master_pass eq "" ) { &create_password; } chop($master_pass) if $master_pass =~ /\n$/; if ( $FORM{'task'} eq 'list' ) { &list_bord; } if ( $FORM{'task'} eq 'create_bord' ) { &create_bord; } elsif ( $FORM{'task'} eq 'make_bord' ) { &make_bord; } elsif ( $FORM{'task'} eq 'delet_bord' ) { &delet_bord; } elsif ( $FORM{'task'} eq 'delet_bord2' ) { &delet_bord2; } elsif ( $FORM{'task'} eq 'cust_bord' ) { &cust_bord; } elsif ( $FORM{'task'} eq 'edit_bord' ) { &read_cfg; &edit_bord; } elsif ( $FORM{'task'} eq 'change_bord' ) { &change_bord; } elsif ( $FORM{'task'} eq 'change_bord2' ) { &change_bord; } elsif ( $FORM{'task'} eq 'change_master' ) { &change_password(0); } elsif ( $FORM{'task'} eq 'check_password2' ) { &check_password2; } elsif ( $FORM{'task'} eq 'check_password3' ) { &read_cfg; &check_user_pass; } elsif ( $FORM{'task'} eq 'change_user_pass' ) { &change_password(1); } elsif ( $FORM{'task'} eq 'set_security' ) { &set_security; } elsif ( $FORM{'task'} eq 'set_security2' ) { &set_security2; } elsif ( $FORM{'task'} eq 'log_mode' ) { &log_mode; } elsif ( $FORM{'task'} eq 'view_log' ) { &view_log; } elsif ( $FORM{'task'} eq 'view_log2' ) { &view_log2; } elsif ( $FORM{'task'} eq 'make_log' ) { print "Location:$reload_url"."makelog.cgi?\n\n"; } elsif ( $FORM{'task'} eq 'list_log' ) { print "Location:$reload_url"."viewlog.cgi?\n\n"; } elsif ( $FORM{'task'} eq 'domain' ) { &domain; } elsif ( $FORM{'task'} eq 'add_domain' ) { &add_domain; } elsif ( $FORM{'task'} eq 'add_domain2' ) { &add_domain2; } elsif ( $FORM{'task'} eq 'edt_domain' ) { &edt_domain; } elsif ( $FORM{'task'} eq 'edt_domain2' ) { &edt_domain2; } elsif ( $FORM{'task'} eq 'del_domain' ) { &del_domain; } elsif ( $FORM{'task'} eq 'del_domain2' ) { &del_domain2; } else { &main; } exit; } exit; #===================================================================== # 処理はここまで(以下は、サブルーチン) #===================================================================== #----------------------------------------------------- # 通常の画面:総合管理メニュー #----------------------------------------------------- sub main { &html_header("MultiBBS:総合管理メニュー"); print "
\n"; print "MulitiBBSシステムの管理を行います。ここから新しいボードの作成や、削除、カスタマイズなどができるようになっています。\n"; print "
\n"; print "\n"; print "\n"; print "
\n"; print "
\n"; print "
"; if ( $indexname ne "" ) { print "
$indexname
\n"; } #----------------------------------------------------- # ボードの一覧表示 #----------------------------------------------------- if ( $listing eq "1" ) { print "
\n"; &bord_list; } #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n
"; print "MultiBBS v$version
\n"; print "\n\n"; } #----------------------------------------------------- # 掲示板の新規作成画面 #----------------------------------------------------- sub make_bord { #----------------------------------- # 開設されているボード数のチェック #----------------------------------- if ( $max_bord ne "0" ) { if ( $path ne "" ) { opendir(DIR,"$path"."log/"); } else { opendir(DIR,"./log/"); } @readlist = grep(/.cfg/, readdir(DIR)); closedir(DIR); $i = 0; foreach $bord (@readlist) { $i++; } if ( $i >= $max_bord ) { &error('これ以上ボードを作成できません。'); } } &html_header("MultiBBS:ボードの新規作成"); print "
\n"; print "\n\n"; print "\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; if ( $title_mode eq "1" ) { print " \n"; print " \n"; print " \n"; print " \n\n"; } print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; if( $bg_mode eq "1" ) { print " \n"; print " \n"; print " \n"; print " \n\n"; } print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print "
ボード名 ※半角英数字のみ
掲示板のタイトル
タイトル画像
主催者名
主催者EMAIL
主催者パスワード ※半角英数字4〜8文字
パスワード再入力
ログの保存数 ※$log_min〜$log_max
1ページの表\示数 ※0〜$page_max(0でページ制御なし)
掲示板の説明文
書き込み時の説明文
タイトルの色
題名の色
投稿者名の色
背景色
背景画像
テキストの色
リンクの色
既リンクの色
リンク中の色
 リンク名URL
リンク1 ※省略可
リンク2 ※省略可
リンク3 ※省略可

  管理者用マスターキー
 
\n"; print "
\n"; print "\n\n"; exit; } #----------------------------------------------------- # ボードデータの新規作成 #----------------------------------------------------- sub create_bord { if( $path ne "" ) { $cfg_file = "$path"."log/$FORM{'bordname'}".".cfg"; $log_file = "$path"."log/$FORM{'bordname'}".".log"; } else { $cfg_file = "./log/$FORM{'bordname'}".".cfg"; $log_file = "./log/$FORM{'bordname'}".".log"; } #----------------------------------- # 入力されたパスワードのチェック #----------------------------------- if ( $FORM{'master'} eq "" ) { &error('マスターキーが入力されていません。'); } else { $temp = crypt( $FORM{'master'}, substr($master_pass,0,2) ); if ( $temp ne $master_pass ) { &error('マスターキーが正しくありません。'); } } $pwd_len = length("$FORM{'pass1'}"); if ( $FORM{'pass1'} ne $FORM{'pass2'} ) { &error("入力された2つのパスワードが一致しません。"); } elsif ( $FORM{'pass1'} =~ /\s/ || $FORM{'pass1'} =~ /\W/ ) { &error("パスワードは半角英数字のみ利用できます。"); } elsif ( $pwd_len > 8 || $pwd_len < 4 ) { &error("パスワードは4から8文字の範囲で指定してください。"); } $now = time; ($p1, $p2) = unpack("C2", "admin"); $wk = $now / (60*60*24*7) + $p1 + $p2 - 8; @saltset = ('a'..'z','A'..'Z','0'..'9','.','/'); $nsalt = $saltset[$wk % 64] . $saltset[$now % 64]; $pwd = crypt( $FORM{'pass1'}, $nsalt); if ($FORM{'bordname'} eq "") { &error('ボード名が記入されていません。'); } if ($FORM{'title'} eq "" ) { &error('タイトルが記入されていません。'); } if ($FORM{'user_name'} eq "" ) { &error("主催者名が記入されていません。"); } if ($FORM{'user_email'} eq "" ) { &error("主催者のE-MAILアドレスが記入されていません。"); } if ( open(CFG,"$cfg_file") ) { close(CFG); &error('このボード名はすでに使用されています。'); } if ( $FORM{'max'} > $log_max || $FORM{'max'} < $log_min ) { &error("保存するログ数が正しくありません。($log_min〜$log_max)"); } if ( $FORM{'page'} > $page_max || $FORM{'page'} < 0 ) { &error("1ページあたりの表示数が正しくありません。(0〜$page_max)"); } if (!open(LOG,">$log_file")) { &error('ログファイルの作成に失敗しました。'); } close(LOG); if (!open(CFG,">$cfg_file")) { &error('ボード定義ファイルの作成に失敗しました。'); } print CFG "title,$FORM{'title'},\n"; print CFG "user_pass,$pwd,\n"; print CFG "user_name,$FORM{'user_name'},\n"; print CFG "user_email,$FORM{'user_email'},\n"; print CFG "security,$security,\n"; print CFG "max,$FORM{'max'},\n"; print CFG "page,$FORM{'page'},\n"; if ( $bg_mode eq "1" ) { print CFG "bg_image,$FORM{'bg_image'},\n"; } if ( $title_mode eq "1" ) { print CFG "title_image,$FORM{'title_image'},\n"; } if ($FORM{'bg_col'} ne "" ) { print CFG "bg_col,$FORM{'bg_col'},\n"; } else { print CFG "bg_col,$bg_col,\n"; } if ($FORM{'title_col'} ne "" ) { print CFG "title_col,$FORM{'title_col'},\n"; } else { print CFG "title_col,$title_col,\n"; } if ($FORM{'subject_col'} ne "" ) { print CFG "subject_col,$FORM{'subject_col'},\n"; } else { print CFG "subject_col,$subject_col,\n"; } if ($FORM{'name_col'} ne "" ) { print CFG "name_col,$FORM{'name_col'},\n"; } else { print CFG "name_col,$name_col,\n"; } if ($FORM{'text_col'} ne "" ) { print CFG "text_col,$FORM{'text_col'},\n"; } else { print CFG "text_col,$text_col,\n"; } if ($FORM{'link_col'} ne "" ) { print CFG "link_col,$FORM{'link_col'},\n"; } else { print CFG "link_col,$link_col,\n"; } if ($FORM{'alink_col'} ne "" ) { print CFG "alink_col,$FORM{'alink_col'},\n"; } else { print CFG "alink_col,$alink_col,\n"; } if ($FORM{'vlink_col'} ne "" ) { print CFG "vlink_col,$FORM{'vlink_col'},\n"; } else { print CFG "vlink_col,$vlink_col,\n"; } print CFG "linkname1,$FORM{'linkname1'},\n"; print CFG "link1,$FORM{'link1'},\n"; print CFG "linkname2,$FORM{'linkname2'},\n"; print CFG "link2,$FORM{'link2'},\n"; print CFG "linkname3,$FORM{'linkname3'},\n"; print CFG "link3,$FORM{'link3'},\n"; print CFG "readme,$FORM{'readme'},\n"; print CFG "readme2,$FORM{'readme2'},\n"; close(CFG); chmod 0666, $cfg_file; chmod 0666, $log_file; &html_header("MultiBBS:ボードの新規作成"); print "
\n"; print "新しいボードの作成が終了しました。
"; print "掲示板の呼び出しは次のようになります

\n"; print "    multibbs.cgi?bordname=$FORM{'bordname'}\n\n"; print "
\n\n"; print "
\n
\n"; print "\n"; print "
\n
\n\n\n"; exit; } #----------------------------------------------------- # 掲示板データ変更画面 #----------------------------------------------------- # sub edit_bord { print "Content-type: text/html\n\n"; print "\n"; print "\n"; print "MultiBBS:ボードデータの変更\n"; print "\n\n"; print "\n\n"; print "MultiBBS:ボードデータの変更
\n"; print "
\n\n"; print "\n"; print "\n"; if ( $FORM{'mode'} eq "backbbs" ) { print "\n"; } else { print "\n"; } print "\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; if ( $title_mode eq "1" ) { print " \n"; print " \n"; print " \n"; print " \n\n"; } print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; if( $bg_mode eq "1" ) { print " \n"; print " \n"; print " \n"; print " \n\n"; } print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n\n"; # ------------------------------------------------------------------------------------- print " \n"; print " \n"; print " \n"; print " \n\n"; print " \n"; print " \n"; print " \n"; print " \n\n"; print "
ボード名$FORM{'bordname'}
掲示板のタイトル
タイトル画像
主催者名
主催者EMAIL ※システム管理者のみ変更可
ログの保存数 ※$log_min〜$log_max
1ページの表\示数 ※0〜$page_max(0でページ制御なし)
掲示板の説明文
書き込み時の説明文
タイトルの色
題名の色
投稿者名の色
背景色
背景画像
テキストの色
リンクの色
既リンクの色
リンク中の色
 リンク名URL
リンク1 ※省略可
リンク2 ※省略可
リンク3 ※省略可

管理用パスワード
 
\n"; print "\n"; print "\n"; print "\n"; exit; } #----------------------------------------------------- # 掲示板データの変更・書き込み #----------------------------------------------------- # sub change_bord { #----------------------------------- # パスワードのチェック #----------------------------------- if ( $FORM{'pwd'} eq "" ) { &error('パスワードが入力されていません。') } &read_cfg; $temp = crypt( $FORM{'pwd'}, substr($master_pass,0,2) ); $temp2 = crypt( $FORM{'pwd'}, substr($CFG_DATA{'user_pass'},0,2) ); if( $temp2 eq $CFG_DATA{'user_pass'} ) { $mode = "owner"; } elsif( $temp eq $master_pass ) { $mode = "admin"; } else { &error("パスワードが間違っています。"); } if ( $path ne "" ) { $cfg_file = "$path"."log/$FORM{'bordname'}".".cfg"; $log_file = "$path"."log/$FORM{'bordname'}".".log"; } else { $cfg_file = "./log/$FORM{'bordname'}".".cfg"; $log_file = "./log/$FORM{'bordname'}".".log"; } if ($FORM{'bordname'} eq "") { &error('ボード名が記入されていません。'); } if ($FORM{'title'} eq "" ) { &error('タイトルが記入されていません。'); } if ($FORM{'user_name'} eq "" ) { &error("主催者名が記入されていません。"); } if ($mode ne "admin") { if ($FORM{'user_email'} eq "" ) { &error("主催者のE-MAILアドレスが記入されていません。"); } } if ( $FORM{'max'} > $log_max || $FORM{'max'} < $log_min ) { &error("保存するログ数が正しくありません。($log_min〜$log_max)"); } if ( $FORM{'page'} > $page_max || $FORM{'page'} < 0 ) { &error("1ページあたりの表示数が正しくありません。(0〜$page_max)"); } if (!open(CFG,">$cfg_file")) { &error('ボードファイルの作成に失敗しました。'); } print CFG "title,$FORM{'title'},\n"; print CFG "user_pass,$CFG_DATA{'user_pass'},\n"; print CFG "user_name,$FORM{'user_name'},\n"; if ($mode eq "admin") { print CFG "user_email,$FORM{'user_email'},\n"; } else { print CFG "user_email,$CFG_DATA{'user_email'},\n"; } print CFG "security,$CFG_DATA{'security'},\n"; print CFG "max,$FORM{'max'},\n"; print CFG "page,$FORM{'page'},\n"; if ( $bg_mode eq "1" ) { print CFG "bg_image,$FORM{'bg_image'},\n"; } if ( $title_mode eq "1" ) { print CFG "title_image,$FORM{'title_image'},\n"; } if ($FORM{'bg_col'} ne "" ) { print CFG "bg_col,$FORM{'bg_col'},\n"; } else { print CFG "bg_col,$bg_col,\n"; } if ($FORM{'title_col'} ne "" ) { print CFG "title_col,$FORM{'title_col'},\n"; } else { print CFG "title_col,$title_col,\n"; } if ($FORM{'subject_col'} ne "" ) { print CFG "subject_col,$FORM{'subject_col'},\n"; } else { print CFG "subject_col,$subject_col,\n"; } if ($FORM{'name_col'} ne "" ) { print CFG "name_col,$FORM{'name_col'},\n"; } else { print CFG "name_col,$name_col,\n"; } if ($FORM{'text_col'} ne "" ) { print CFG "text_col,$FORM{'text_col'},\n"; } else { print CFG "text_col,$text_col,\n"; } if ($FORM{'link_col'} ne "" ) { print CFG "link_col,$FORM{'link_col'},\n"; } else { print CFG "link_col,$link_col,\n"; } if ($FORM{'alink_col'} ne "" ) { print CFG "alink_col,$FORM{'alink_col'},\n"; } else { print CFG "alink_col,$alink_col,\n"; } if ($FORM{'vlink_col'} ne "" ) { print CFG "vlink_col,$FORM{'vlink_col'},\n"; } else { print CFG "vlink_col,$vlink_col,\n"; } print CFG "linkname1,$FORM{'linkname1'},\n"; print CFG "link1,$FORM{'link1'},\n"; print CFG "linkname2,$FORM{'linkname2'},\n"; print CFG "link2,$FORM{'link2'},\n"; print CFG "linkname3,$FORM{'linkname3'},\n"; print CFG "link3,$FORM{'link3'},\n"; print CFG "readme,$FORM{'readme'},\n"; print CFG "readme2,$FORM{'readme2'},\n"; close(CFG); &html_header("MultiBBS:ボードのカスタマイズ"); print "
\n"; print "ボードデータの変更が終了しました。
"; print "
\n\n"; print "
\n"; if ( $FORM{'task'} eq 'change_bord' ) { print "
\n"; } else { print "\n"; print "\n"; } print "\n
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n
"; print "MultiBBS v$version
\n"; print "\n\n"; exit; } #----------------------------------------------------- # 管理者モードからの掲示板データの変更 #----------------------------------------------------- sub cust_bord { if ( $path ne "" ) { opendir(DIR,"$path"."log/"); } else { opendir(DIR,"./log/"); } @readlist = grep(/cfg/, readdir(DIR)); closedir(DIR); &html_header("MultiBBS:ボードのカスタマイズ"); print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; foreach $bord (@readlist) { if( $path ne "" ) { $temp = "$path"."log/$bord"; } else { $temp = "./log/$bord"; } if( open( DB, "$temp" )) { @lines = ; close(DB); foreach $line (@lines) { ($name,$value) = split(/\,/,$line); if( $name eq 'title' ) { $bordtitle = $value; $bordtitle =~ s/<(.*?)>//ig; last; } } ($fname,$ext) = split(/\./,$bord); print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; $i++; } } if ( $i eq 0 ) { print "\n"; print "
 ボード名タイトル
[$fname]$bordtitle
ボードは開設されていません。
\n"; } else { print "\n"; print "
\n"; } print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n
"; print "MultiBBS v$version
\n"; print "\n\n"; exit; } #----------------------------------------------------------------- # フォーム投稿されたデータを解析し、配列にリストする #----------------------------------------------------------------- sub form { #-------------------------------------------------- # フォーム入力されたデータを$bufferに格納 #-------------------------------------------------- if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } #-------------------------------------------------- # $bufferに格納されたFORM形式のデータを取り出す #-------------------------------------------------- @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; #-------------------------------------------------- # 処理の都合上、改行コード等を文字列から排除する # 改行コードを
に変換する(97.01.29) #-------------------------------------------------- $value =~ s/\r\n/
/g; $value =~ s/\n/
/g; $value =~ s/\,//g; #---------------------------------------------------------- # 掲示板に書き込まれたくないタグが含まれる内容を消去する #---------------------------------------------------------- if ( $mode ne "admin" ) { $value =~ s/; close(DB); foreach $line (@lines) { ($name,$value) = split(/\,/,$line); $CFG_DATA{$name} = $value; } if ( $CFG_DATA{'max'} > $log_max ) { $CFG_DATA{'max'} = $log_max; } if ( $CFG_DATA{'page'} > $page_max ) { $CFG_DATA{'page'} = $page_max; } if ( $CFG_DATA{'security'} eq "" ) { $CFG_DATA{'security'} = $security; } } #----------------------------------------------------------------- # マスターキーの設定(初回起動時のみ) #----------------------------------------------------------------- sub create_password { &html_header("MultiBBS:マスターキーの設定"); print "
\n"; print "マスターキーが設定されていません。このマスターキーを使って、今後作成するすべてのボードを管理(カスタマイズ・削除・記事の編集など)できます。
半角の英数字(4〜8文字)でマスターキーを設定してください。

\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print "
マスターキー 
マスターキー(確認のためもう一度)
 
\n"; print "\n\n"; print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n
"; print "MultiBBS v$version
\n"; print "\n\n"; exit; } #----------------------------------------------------------------- # 入力されたマスターキーのチェックと書き込み #----------------------------------------------------------------- sub check_password { $pwd_len = length("$FORM{'new1'}"); $pwd_file = "$path$passwd_file"; if (!open(DB,">$pwd_file")) { &error("記録ファイルの出力エラーです。"); } elsif ( $FORM{'new1'} ne $FORM{'new2'} ) { &error("入力された2つのパスワードが一致しません。"); } elsif ( $FORM{'new1'} =~ /\s/ || $FORM{'new1'} =~ /\W/ ) { &error("パスワードは半角英数字のみ利用できます。"); } elsif ( $pwd_len > 8 || $pwd_len < 4 ) { &error("パスワードは4から8文字の範囲で指定してください。"); } $now = time; ($p1, $p2) = unpack("C2", "admin"); $wk = $now / (60*60*24*7) + $p1 + $p2 - 8; @saltset = ('a'..'z','A'..'Z','0'..'9','.','/'); $nsalt = $saltset[$wk % 64] . $saltset[$now % 64]; $pwd = crypt( $FORM{'new1'}, $nsalt); print DB "$pwd"; close(DB); print "Content-type: text/html\n\n"; print "\n\nMultiBBS:マスターキーの設定\n\n\n"; print "\n\n"; print "MultiBBS:マスターキーの設定\n
\n\n"; print "
\n"; print "マスターキーの設定が完了しました。

"; print "マスターキーは、ボードの作成や削除に必要となります"; print "またすべてのボードの管理もできますので、忘れないようにメモをするなりして各自管理してください。\n"; print "
\n\n"; print "
\n
\n"; print "\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n
"; print "MultiBBS v$version
\n"; print "\n\n"; exit; } #----------------------------------------------------------------- # マスターキー・主催者(オーナー)パスワードの変更 #----------------------------------------------------------------- sub change_password { $arg = $_[0]; if ( $arg eq "0" ) { $mode = "admin"; $temp = "マスターキー"; } else { $mode = "user"; $temp = "主催者パスワード"; } &html_header("MultiBBS:$tempの変更"); print "
\n"; print "$tempの変更を行います
半角の英数字(4〜8文字)で$tempを設定してください。

\n"; print "
\n"; print "\n"; if ( $mode eq "admin" ) { print "\n"; } else { print "\n"; print "\n"; } print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print "
旧パスワード ※システム管理者パスワード可
新パスワード 
新パスワード※確認のためもう一度
 
\n"; print "\n\n"; print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n
"; print "MultiBBS v$version
\n"; print "\n\n"; exit; } #----------------------------------------------------------------- # 変更されたマスターキーのチェック・書き込み #----------------------------------------------------------------- sub check_password2 { $temp = crypt( $FORM{'oldpass'}, substr($master_pass,0,2) ); if ( $temp ne $master_pass ) { &error("旧パスワードが間違っています。"); } $pwd_len = length("$FORM{'new1'}"); $pwd_file = "$path$passwd_file"; if ( $FORM{'new1'} ne $FORM{'new2'} ) { &error("入力された2つのパスワードが一致しません。"); } elsif ( $FORM{'new1'} =~ /\s/ || $FORM{'new1'} =~ /\W/ ) { &error("パスワードは半角英数字のみ利用できます。"); } elsif ( $pwd_len > 8 || $pwd_len < 4 ) { &error("パスワードは4から8文字の範囲で指定してください。"); } $now = time; ($p1, $p2) = unpack("C2", "admin"); $wk = $now / (60*60*24*7) + $p1 + $p2 - 8; @saltset = ('a'..'z','A'..'Z','0'..'9','.','/'); $nsalt = $saltset[$wk % 64] . $saltset[$now % 64]; $pwd = crypt( $FORM{'new1'}, $nsalt); if (!open(DB,">$pwd_file")) { &error("記録ファイルの出力エラーです。"); } print DB "$pwd"; close(DB); print "Content-type: text/html\n\n"; print "\n\nMultiBBS:マスターキーの変更\n\n\n"; print "\n\n"; print "MultiBBS:マスターキーの設定\n
\n\n"; print "
\n"; print "マスターキーの変更が完了しました。

"; print "マスターキーは、ボードの作成や削除に必要となりますので、忘れないようにメモをするなりして各自管理してください。\n"; print "
\n\n"; print "
\n
\n"; print "\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------------------- # 主催者パスワードのチェックと書き込み #----------------------------------------------------------------- sub check_user_pass { $temp = crypt( $FORM{'oldpass'}, substr($CFG_DATA{'user_pass'},0,2) ); if ( $temp ne $CFG_DATA{'user_pass'} ) { $temp = crypt( $FORM{'oldpass'}, substr($master_pass,0,2) ); if ( $temp ne $master_pass ) { &error("旧パスワードが間違っています。"); } } $pwd_len = length("$FORM{'new1'}"); if ( $FORM{'new1'} ne $FORM{'new2'} ) { &error("入力された2つのパスワードが一致しません。"); } elsif ( $FORM{'new1'} =~ /\s/ || $FORM{'new1'} =~ /\W/ ) { &error("パスワードは半角英数字のみ利用できます。"); } elsif ( $pwd_len > 8 || $pwd_len < 4 ) { &error("パスワードは4から8文字の範囲で指定してください。"); } $now = time; ($p1, $p2) = unpack("C2", "admin"); $wk = $now / (60*60*24*7) + $p1 + $p2 - 8; @saltset = ('a'..'z','A'..'Z','0'..'9','.','/'); $nsalt = $saltset[$wk % 64] . $saltset[$now % 64]; $pwd = crypt( $FORM{'new1'}, $nsalt); if ($path ne "") { $cfg_file = "$path"."log/$FORM{'bordname'}".".cfg"; } else { $cfg_file = "./log/$FORM{'bordname'}".".cfg"; } if (!open(CFG,">$cfg_file")) { &error("ボード情報の定義ファイルをオープンできません。"); } print CFG "title,$CFG_DATA{'title'},\n"; print CFG "user_pass,$pwd,\n"; print CFG "user_name,$CFG_DATA{'user_name'},\n"; print CFG "user_email,$CFG_DATA{'user_email'},\n"; print CFG "security,$CFG_DATA{'security'},\n"; print CFG "max,$CFG_DATA{'max'},\n"; print CFG "page,$CFG_DATA{'page'},\n"; if ( $bg_mode eq "1" ) { print CFG "bg_image,$CFG_DATA{'bg_image'},\n"; } if ( $title_mode eq "1" ) { print CFG "title_image,$CFG_DATA{'title_image'},\n"; } print CFG "bg_col,$CFG_DATA{'bg_col'},\n"; print CFG "title_col,$CFG_DATA{'title_col'},\n"; print CFG "subject_col,$CFG_DATA{'subject_col'},\n"; print CFG "name_col,$CFG_DATA{'name_col'},\n"; print CFG "text_col,$CFG_DATA{'text_col'},\n"; print CFG "link_col,$CFG_DATA{'link_col'},\n"; print CFG "alink_col,$CFG_DATA{'alink_col'},\n"; print CFG "vlink_col,$CFG_DATA{'vlink_col'},\n"; print CFG "linkname1,$CFG_DATA{'linkname1'},\n"; print CFG "link1,$CFG_DATA{'link1'},\n"; print CFG "linkname2,$CFG_DATA{'linkname2'},\n"; print CFG "link2,$CFG_DATA{'link2'},\n"; print CFG "linkname3,$CFG_DATA{'linkname3'},\n"; print CFG "link3,$CFG_DATA{'link3'},\n"; print CFG "readme,$CFG_DATA{'readme'},\n"; print CFG "readme2,$CFG_DATA{'readme2'},\n"; close(CFG); print "Content-type: text/html\n\n"; print "\n\nMultiBBS:パスワードの変更\n\n\n"; print "\n\n"; print "MultiBBS v$version\n
\n\n"; print "
\n"; print "パスワードの変更が完了しました。

"; print "パスワードは、ボード管理に必要となりますので、忘れないようにメモをするなりして各自管理してください。\n"; print "
\n\n"; print "
\n"; print "\n"; print "\n"; print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------------------- # ボード一覧の作成(メイン画面用) #----------------------------------------------------------------- sub bord_list { $i = 0; if ( $path ne "" ) { opendir(DIR,"$path"."log/"); } else { opendir(DIR,"./log/"); } @readlist = grep(/cfg/, readdir(DIR)); closedir(DIR); print "
\n"; print "
    \n"; foreach $bord (@readlist) { if( $path ne "" ) { $temp = "$path"."log/$bord"; } else { $temp = "./log/$bord"; } if( open( DB, "$temp" )) { @lines = ; close(DB); foreach $line (@lines) { ($name,$value) = split(/\,/,$line); if( $name eq 'title' ) { $bordtitle = $value; $bordtitle =~ s/<(.*?)>//ig; last; } } ($fname,$ext) = split(/\./,$bord); print "
  1. $bordtitle
  2. \n"; $i++; } } print "
\n"; if ( $i eq 0 ) { print "ボードは開設されていません。\n"; } print "
\n"; } #----------------------------------------------------------------- # 削除ボードの一覧表示と削除するボードの選択 #----------------------------------------------------------------- sub delet_bord { $i = 0; &html_header("MultiBBS:ボードの削除"); if ( $path ne "" ) { opendir(DIR,"$path"."log/"); } else { opendir(DIR,"./log/"); } @readlist = grep(/cfg/, readdir(DIR)); closedir(DIR); print "
\n"; print "\n"; print "\n"; print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; foreach $bord (@readlist) { if( $path ne "" ) { $temp = "$path"."log/$bord"; } else { $temp = "./log/$bord"; } if( open( DB, "$temp" )) { @lines = ; close(DB); foreach $line (@lines) { ($name,$value) = split(/\,/,$line); if( $name eq 'title' ) { $bordtitle = $value; $bordtitle =~ s/<(.*?)>//ig; last; } } ($fname,$ext) = split(/\./,$bord); print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; $i++; } } if ( $i eq 0 ) { print "\n\n\n"; print "
 ボード名タイトル
[$fname]$bordtitle
ボードは開設されていません。
\n"; } else { print "\n"; print " 管理者用マスターキー
\n"; print " \n"; } print "
\n"; print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n
"; print "MultiBBS v$version
\n"; print "\n\n"; exit; } #----------------------------------------------------------------- # ボード定義ファイルとログファイルの削除 #----------------------------------------------------------------- sub delet_bord2 { $temp = crypt( $FORM{'pwd'}, substr($master_pass,0,2) ); if ( $temp ne $master_pass ) { &error("パスワードが間違っています。"); } foreach $bord (@RM) { if ($path ne "") { $fname = "$path"."log/$bord".".cfg"; } else { $fname = "./log/$bord".".cfg"; } push(@filelist,$fname); if ($path ne "") { $fname = "$path"."log/$bord".".log"; } else { $fname = "./log/$bord".".log"; } push(@filelist,$fname); } unlink @filelist; &html_header("MultiBBS:ボードの削除"); print "
\n"; print "指定されたボードの削除が完了しました。\n"; print "
\n\n"; print "
\n
\n"; print "\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------------------- # ボード一覧機能 #----------------------------------------------------------------- sub list_bord { $i = 0; if ( $path ne "" ) { opendir(DIR,"$path"."log/"); } else { opendir(DIR,"./log/"); } @readlist = grep(/cfg/, readdir(DIR)); closedir(DIR); foreach $bord (@readlist) { if( $path ne "" ) { $temp = "$path"."log/$bord"; } else { $temp = "./log/$bord"; } if( open( DB, "$temp" )) { @lines = ; close(DB); foreach $line (@lines) { ($name,$value) = split(/\,/,$line); if( $name eq 'title' ) { $bordtitle = $value; $bordtitle =~ s/<(.*?)>//ig; last; } } ($fname,$ext) = split(/\./,$bord); push (@bordlist,"$bordtitle [$fname]"); $i++; } } &html_header("MultiBBS:ボード一覧"); print "
\n"; if ( $i eq 0 ) { print "ボードは開設されていません。\n"; } else { print "
    \n"; foreach $bord (@bordlist) { print "
  1. $bord
  2. \n"; } print "
\n"; } print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------- # セキュリティーレベルの変更 #----------------------------------------------------- # sub set_security { if ( $path ne "" ) { opendir(DIR,"$path"."log/"); } else { opendir(DIR,"./log/"); } @readlist = grep(/cfg/, readdir(DIR)); closedir(DIR); &html_header("MultiBBS:セキュリティレベルの変更"); $i = 0; print "
\n"; print "\n"; print "\n"; print "0:制限なし  \n"; print "1:JPドメインのみ  \n"; print "2:プロキシの制限  \n"; print "3:JPおよびプロキシ\n"; print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; foreach $bord (@readlist) { if( $path ne "" ) { $temp = "$path"."log/$bord"; } else { $temp = "./log/$bord"; } if( open( DB, "$temp" )) { @lines = ; close(DB); foreach $line (@lines) { $bordsecurity = "0"; ($name,$value) = split(/\,/,$line); if( $name eq 'title' ) { $bordtitle = $value; $bordtitle =~ s/<(.*?)>//ig; } if( $name eq 'security' ) { $bordsecurity = $value; last; } } ($fname,$ext) = split(/\./,$bord); print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; $i++; } } if ( $i eq 0 ) { print "\n"; print "
レベルボード名タイトル
0123
[$fname]$bordtitle
ボードは開設されていません。
\n"; } else { print "\n"; print "
管理用マスターキー\n"; } print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------------------- # 各ボードのセキュリティレベルの定義ファイルへの書き込み #----------------------------------------------------------------- sub set_security2 { $temp = crypt( $FORM{'pwd'}, substr($master_pass,0,2) ); if ( $temp ne $master_pass ) { &error("パスワードが間違っています。"); } foreach $board (@SEC_LEVEL) { ($fname,$level) = split(/:/,$board); if( $path ne "" ) { $cfg_file = "$path"."log/$fname".".cfg"; } else { $cfg_file = "./log/$fname".".cfg"; } if (!open(DB,"$cfg_file")) { &error("ボード情報の定義ファイルをオープンできません。"); } @lines = ; close(DB); foreach $line (@lines) { ($name,$value) = split(/\,/,$line); $CFG_DATA{$name} = $value; } $CFG_DATA{'security'} = $level; if (!open(CFG,">$cfg_file")) { &error('ボードファイルの作成に失敗しました。'); } print CFG "title,$CFG_DATA{'title'},\n"; print CFG "user_pass,$CFG_DATA{'user_pass'},\n"; print CFG "user_name,$CFG_DATA{'user_name'},\n"; print CFG "user_email,$CFG_DATA{'user_email'},\n"; print CFG "security,$CFG_DATA{'security'},\n"; print CFG "max,$CFG_DATA{'max'},\n"; print CFG "page,$CFG_DATA{'page'},\n"; if ( $bg_mode eq "1" ) { print CFG "bg_image,$CFG_DATA{'bg_image'},\n"; } if ( $title_mode eq "1" ) { print CFG "title_image,$CFG_DATA{'title_image'},\n"; } print CFG "bg_col,$CFG_DATA{'bg_col'},\n"; print CFG "title_col,$CFG_DATA{'title_col'},\n"; print CFG "subject_col,$CFG_DATA{'subject_col'},\n"; print CFG "name_col,$CFG_DATA{'name_col'},\n"; print CFG "text_col,$CFG_DATA{'text_col'},\n"; print CFG "link_col,$CFG_DATA{'link_col'},\n"; print CFG "alink_col,$CFG_DATA{'alink_col'},\n"; print CFG "vlink_col,$CFG_DATA{'vlink_col'},\n"; print CFG "linkname1,$CFG_DATA{'linkname1'},\n"; print CFG "link1,$CFG_DATA{'link1'},\n"; print CFG "linkname2,$CFG_DATA{'linkname2'},\n"; print CFG "link2,$CFG_DATA{'link2'},\n"; print CFG "linkname3,$CFG_DATA{'linkname3'},\n"; print CFG "link3,$CFG_DATA{'link3'},\n"; print CFG "readme,$CFG_DATA{'readme'},\n"; print CFG "readme2,$CFG_DATA{'readme2'},\n"; close(CFG); } &html_header("MultiBBS:セキュリティレベルの設定"); print "
\n"; print "全ボードのセキュリティレベルの設定が完了しました。\n"; print "
\n\n"; print "
\n\n"; print "\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------- # ログ管理機能(メイン画面) #----------------------------------------------------- sub log_mode { &html_header("MultiBBS:ログの管理"); print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------- # ログ情報一覧画面 #----------------------------------------------------- # sub view_log { if ( $path ne "" ) { opendir(DIR,"$path"."log/"); } else { opendir(DIR,"./log/"); } @readlist = grep(/cfg/, readdir(DIR)); closedir(DIR); &html_header("MultiBBS:ログ情報の一覧"); $i = 0; print "
\n"; print "\n"; print "
\n"; print "\n"; foreach $bord (@readlist) { if( $path ne "" ) { $temp = "$path"."log/$bord"; } else { $temp = "./log/$bord"; } if( open( DB, "$temp" )) { @lines = ; close(DB); foreach $line (@lines) { ($name,$value) = split(/\,/,$line); if( $name eq 'title' ) { $bordtitle = $value; $bordtitle =~ s/<(.*?)>//ig; last; } } ($fname,$ext) = split(/\./,$bord); print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; $i++; } } if ( $i == 0 ) { print "\n"; print "
[$fname]$bordtitle
ボードは開設されていません。
\n"; } else { print "\n"; print "
管理用マスターキー\n"; } print "\n"; print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------- # ログ情報一覧画面 #----------------------------------------------------- sub view_log2 { $temp = crypt( $FORM{'pwd'}, substr($master_pass,0,2) ); if ( $temp ne $master_pass ) { &error("パスワードが間違っています。"); } #--------------------------------------- # ログファイルの読み込み(@linesに格納) #--------------------------------------- if( $path ne "" ) { $log_file = "$path"."log/$FORM{'bord'}".".log"; } else { $log_file = "./log/$FORM{'bord'}".".log"; } if (!open(DB,"$log_file")) { &error('記録ファイルの入出力にエラーが発生しました。'); } eval { flock( DB, 1 );}; # ファイルをロック @lines = ; close(DB); eval { flock( DB, 8 );}; # ロック解除 &html_header("MultiBBS:ログ情報の表\示"); print "\n"; print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print "\n"; #---------------------------------------------------------- # 記事一覧処理 # 配列<@lines>から1件ずつデータを取り出して処理する #---------------------------------------------------------- $i = 0; foreach $line (@lines) { ($count,$date,$editpwd,$name,$email,$url,$value,$subject,$rhost) = split(/\,/,$line); #--------------------------------------- # nullコード(\0)を半角カンマに変換 #--------------------------------------- $name =~ s/\0/\,/g; $value =~ s/\0/\,/g; $subject =~ s/\0/\,/g; $email =~ s/\0/\,/g; $url =~ s/\0/\,/g; $value = substr($value,0,30); print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print "\n"; $i++; } print "\n" if( $i == 0 ); print "
番号投稿者題名内容ホスト情報
$count$name$subject$value$rhost
   メッセージはありません   
\n"; print "
\n\n\n"; exit; } #----------------------------------------------------- # ドメイン管理機能(メイン画面) #----------------------------------------------------- sub domain { &html_header("MultiBBS:ドメインの管理"); print "
\n"; print "MultiBBSの利用制限を行うドメイン名の管理を行います
\n"; print "これにより、特定のドメイン名のユーザーの書き込みを禁止したり、あるいは表\示も禁止したりする事が出来ます。\n"; print "
\n"; print "\n"; print "\n"; print "
\n"; print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------- # ドメイン管理(ドメインの追加) #----------------------------------------------------- sub add_domain { &html_header("MultiBBS:ドメインの追加"); print "
\n"; print "MultiBBSの利用制限を行うドメイン名の追加を行います

\n"; print ""; print "\n"; print "\n"; print "\n"; print " \n"; print " \n"; print "\n"; print "\n"; print " \n"; print " \n"; print "\n"; print "\n"; print " \n"; print " \n"; print "\n\n
ドメイン名
制限内容書込禁止    "; print "表\示・書込禁止
パスワード \n
\n"; print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------- # ドメイン管理(ドメインの追加) #----------------------------------------------------- sub add_domain2 { $temp = crypt( $FORM{'pwd'}, substr($master_pass,0,2) ); if ( $temp ne $master_pass ) { &error("パスワードが間違っています。"); } if ( $FORM{'domain'} eq "" ) { &error("ドメイン名が記入されていません。") } if ( $FORM{'level'} eq "" ) { &error("制限内容が選択されていません。") } #--------------------------------------- # ドメインリストファイルの読み込み #--------------------------------------- &read_domainlist; foreach $line (@lines) { push ( @new, $line ); } push ( @new, "$FORM{domain},$FORM{'level'},\n" ); #--------------------------------------- # ドメインリストファイルへ書き込み #--------------------------------------- &write_domainlist; &html_header("MultiBBS:ドメインの追加"); print "
\n"; print "ドメインの追加が完了しました。\n"; print "
\n\n"; print "
\n
\n"; print "\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------- # ドメイン制限の設定変更 #----------------------------------------------------- sub edt_domain { #--------------------------------------- # ドメインリストファイルの読み込み #--------------------------------------- &read_domainlist; &html_header("MultiBBS:ドメイン制限の編集"); $i = 0; print "
\n"; print "\n"; print "\n"; print "0:書込のみ禁止   "; print "1:表\示・書込を禁止\n"; print "\n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; foreach $line (@lines) { ($domain,$level) = split(/\,/,$line); print " \n"; print " \n"; print " \n"; print " \n"; print " \n"; $i++; } if ( $i eq 0 ) { print "\n"; print "
設定ドメイン名
01
 $domain 
ドメインは登録されていません。
\n"; } else { print "\n"; print "
管理用マスターキー\n"; } print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------- # ドメイン制限の設定変更 #----------------------------------------------------- sub edt_domain2 { $temp = crypt( $FORM{'pwd'}, substr($master_pass,0,2) ); if ( $temp ne $master_pass ) { &error("パスワードが間違っています。"); } #--------------------------------------- # ドメインリストファイルの読み込み #--------------------------------------- &read_domainlist; foreach $line (@lines) { ($domain,$level) = split(/\,/,$line); push( @new, "$domain,$DOMAIN_LEVEL{$domain},\n" ); } #--------------------------------------- # ドメインリストファイルへ書き込み #--------------------------------------- &write_domainlist; &html_header("MultiBBS:ドメイン制限の編集"); print "
\n"; print "ドメイン制限の設定変更が完了しました。\n"; print "
\n\n"; print "
\n\n"; print "\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------- # 制限するドメインの削除(選択画面) #----------------------------------------------------- sub del_domain { #--------------------------------------- # ドメインリストファイルの読み込み #--------------------------------------- &read_domainlist; &html_header("MultiBBS:制限するドメインの削除"); $i = 0; print "
\n"; print "\n"; print "\n"; foreach $line (@lines) { ($domain,$level) = split(/\,/,$line); print " "; print "$domain
\n"; $i++; } if ( $i eq 0 ) { print "ドメインは登録されていません。
\n"; } else { print "
管理用マスターキー\n"; } print "
\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------- # 制限するドメインの削除 #----------------------------------------------------- sub del_domain2 { $temp = crypt( $FORM{'pwd'}, substr($master_pass,0,2) ); if ( $temp ne $master_pass ) { &error("パスワードが間違っています。"); } #--------------------------------------- # ドメインリストファイルの読み込み #--------------------------------------- &read_domainlist; $flag = 0; foreach $line (@lines) { ($domain,$level) = split(/\,/,$line); foreach $target (@RM) { if ( $domain eq $target ) { $flag = 1; last; } } push ( @new, $line ) if ( $flag == 0 ); } #--------------------------------------- # ドメインリストファイルへ書き込み #--------------------------------------- &write_domainlist; &html_header("MultiBBS:制限するドメインの削除"); print "
\n"; print "指定されたドメインの削除が完了しました。\n"; print "
\n\n"; print "
\n\n"; print "\n"; #-------------------------- # スクリプトの著作権表示 #-------------------------- print "
\n\n"; print "\n\n"; exit; } #----------------------------------------------------------------- # ドメインリストファイルの読み込み # ドメインリストファイルの内容を、配列 @lines に格納する #----------------------------------------------------------------- sub read_domainlist { $filename = "$path"."$domainlist"; # ドメインファイル名 if (!open(DB,"$filename")) { &error('記録ファイルの入出力にエラーが発生しました。'); } eval { flock( DB, 1 );}; # ファイルをロック @lines = ; close(DB); eval { flock( DB, 8 );}; # ロック解除 } #----------------------------------------------------------------- # ドメインリストファイルへの書き込み # ドメインリストファイルに、配列 @new を書き込む #----------------------------------------------------------------- sub write_domainlist { $filename = "$path"."$domainlist"; # ドメインファイル名 #--------------------------------------- # ドメインリストファイルへ書き込み #--------------------------------------- if (!open(DB,">$filename")) { &error('記録ファイルの入出力にエラーが発生しました。'); } eval { flock( DB, 2 );}; # ファイルをロック print DB @new; close(DB); eval { flock( DB, 8 );}; # ロック解除 }