#!/usr/local/bin/perl
#┌─────────────────────────────────
#│ CLIP BOARD v1.9 (2003/10/23)
#│ Copyright (c) KentWeb
#│ webmaster@kent-web.com
#│ http://www.kent-web.com/
#└─────────────────────────────────
$ver = 'ClipBoard v1.9';
#┌─────────────────────────────────
#│ [注意事項]
#│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した
#│ いかなる損害に対して作者は一切の責任を負いません。
#│ 2. 設置に関する質問はサポート掲示板にお願いいたします。
#│ 直接メールによる質問は一切お受けいたしておりません。
#│ 3. このスクリプトは、method=POST 専用です。
#│ 4. 同梱のアイコンは再配布で著作権者は以下のとおりです。
#│ home.gif : mayuRinさん
#│ clip.gif : 牛飼いとアイコンの部屋さん
#└─────────────────────────────────
#
# [ 設置構成例 ] : かっこ内はパーミッション値
#
# public_html / index.html (ホームページなど)
# |
# +-- clip / clip.cgi [755]
# | cliplog.cgi [666]
# | jcode.pl [644]
# | cgi-lib.pl [644]
# |
# +-- img [777] / clip.gif
# | home.gif
# | soon.gif
# |
# +-- lock [777] /
#============#
# 設定 #
#============#
# ライブラリ取り込み
require './jcode.pl';
require './cgi-lib.pl';
# タイトル名
$title = "ファイル共有(本部⇔支部)";
# タイトル文字の色
$t_color = "#000000";
# タイトル文字のタイプ
$t_face = "MS Pゴシック";
# タイトル文字サイズ(スタイルシートで有効)
$t_point = '12px';
# 本文文字サイズ(スタイルシートで有効)
$b_size = '12px';
# 記事題名の色
$sub_color = "#DD0000";
# スクリプトURL
# → 絶対パスなら http:// からのURLパス
$script = './clip.cgi';
# ログファイル名
# → 絶対パスなら / から始まるパス(http://からではないので注意)
$logfile = './cliplog.cgi';
# 管理用パスワード
$pass = 'kimu3307';
# 最大記事数(これを超える記事は古い順に削除されます)
$max = 50;
# 戻り先
$home = "http://www.ikasa.or.jp/member/";
# bodyタグ
$body = '
';
# URLの自動リンク (0=no 1=yes)
$autolink = 1;
# 1ページあたりの記事表示件数
$p_log = 10;
# ロックファイル機構 (0=no 1=symlink関数 2=mkdir関数)
$lockkey = 0;
# ロックファイル名
# → 絶対パスなら / から始まるパス(http://からではないので注意)
$lockfile = './lock/clip.lock';
# アップロードディレクトリ
# → パスの最後は / で終わること
# → フルパスだと / から記述する
$ImgDir = "./img/";
# アップロードディレクトリのURLパス
# → パスの最後は / で終わること
$ImgUrl = "http://www.ikasa.or.jp/member/clip/img/";
# 画像管理者チェック機能 (0=no 1=yes)
# 0 : アップロード「画像」は管理者がチェックしないと表示されない機能です
# 1 : チェックされるまで「画像」は「COMMING SOON」のアイコンが表示されます
$ImageCheck = 0;
# 画像と記事の位置
# 1 : 画像が左。記事は右から回り込む
# 2 : 画像が下。記事は画像の上に表示。
$imgpoint = 1;
# 投稿処理の権限
# 0 : 誰でも投稿可能
# 1 : 管理者のみが投稿
$PostMode = 0;
# 添付ファイルのアップロードに失敗したとき
# 0 : 添付ファイルは無視し、記事は受理する
# 1 : エラー表示して処理を中断する
$clip_err = 1;
# メール通知機能
# 0 : no
# 1 : yes:自分の投稿記事もメール通知する
# 2 : yes:自分の投稿記事はメール通知しない
$mailing = 0;
# sendmailのパス(メール通知する場合)
$sendmail = '/usr/lib/sendmail';
# メール通知先アドレス(メール通知する場合)
$mailto = 'info@ikasa.or.jp';
# タグ広告挿入オプション
# → の代わりに「広告タグ」を挿入する。
# → 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能です。
$banner1 = ''; # 表示部上部に挿入
$banner2 = ''; # 表示部下部に挿入
# アクセス制限(半角スペースで区切る)
# → 拒否するホスト名又はIPアドレスを記述(アスタリスク可)
# → 記述例 $deny = '*.anonymizer.com *.denyhost.xx.jp 211.154.120.*';
$deny = '';
# リンク元チェック (0=no 1=yes)
# → いたずら投稿防止に「リンク元」チェックを行う場合
$LinkCheck = 0;
# 同一ホストからの連続投稿を制限
# → 秒数を記述するとその時間以上を経過しないと連続投稿できない
# → 投稿を管理者限定にする場合 ($PostMode=1;) はこの設定は無視されます
$w_regist = 0;
# タイトル画像を使う場合 (http://から画像を指定)
$ImgT = "";
# タイトル画像を使う場合に「横幅」「縦幅」をそれぞれピクセル数で記述
$ImgW = 300;
$ImgH = 70;
# アップロードを許可するファイル形式
# 0:no 1:yes
$gif = 1; # GIFファイル
$jpeg = 1; # JPEGファイル
$png = 1; # PNGファイル
$text = 1; # TEXTファイル
$lha = 1; # LHAファイル
$zip = 1; # ZIPファイル
$pdf = 1; # PDFファイル
$midi = 1; # MIDIファイル
$word = 1; # WORDファイル
$excel = 1; # EXCELファイル
$ppt = 1; # POWERPOINTファイル
$ram = 1; # RAMファイル
$rm = 1; # RMファイル
$mpeg = 1; # MPEGファイル
$mp3 = 1; # MP3ファイル
$swf = 1; # SWFファイル
# 投稿受理最大サイズ (bytes)
# → 例 : 102400 = 100KB
$cgi_lib'maxdata = 2048000;
# 画像ファイルの最大表示の大きさ(単位:ピクセル)
# → これを超える画像は縮小表示します
$MaxW = 550; # 横幅
$MaxH = 200; # 縦幅
# アイコン画像ファイル名 (ファイル名のみ)
$IconHome = "home.gif"; # ホーム
$IconClip = "clip.gif"; # クリップ
$IconSoon = "soon.gif"; # COMINIG SOON
# サブメッセージ
# → タイトルの下にサブメッセージを記述できます
# → HTMLタグなどを使ってご自由にどうぞ
$SubMsg = <<'_SUB_MSG_';
_SUB_MSG_
#============#
# 設定完了 #
#============#
if ($ImgDir !~ /\/$/) { $ImgDir .= "/"; }
if ($ImgUrl !~ /\/$/) { $ImgUrl .= "/"; }
&decode;
&axs_check;
if ($mode eq 'regist') { ®ist; }
elsif ($mode eq 'find') { &find; }
elsif ($mode eq 'admin') { &admin; }
elsif ($mode eq 'usrdel') { &usrdel; }
elsif ($mode eq 'note') { ¬e; }
elsif ($mode eq 'check') { ✓ }
&html;
#----------------#
# アクセス制限 #
#----------------#
sub axs_check {
# ホスト名を取得
&get_host;
local($flag)=0;
foreach (split(/\s+/, $deny)) {
s/\*/\.\*/g;
if ($host =~ /$_/i) { $flag=1; last; }
}
if ($flag) { &error("アクセスを許可されていません"); }
}
#----------------#
# 記事表示処理 #
#----------------#
sub html {
# レス処理
if ($in{'res'}) {
local($flag)=0;
open(IN,"$logfile") || &error("Open Error : $logfile");
while () {
($no,$dat,$nam,$eml,$sub,$com) = split(/<>/);
if ($in{'res'} == $no) { $flag=1; last; }
}
close(IN);
if ($flag == 0) { &error("該当記事が見つかりません"); }
$sub =~ s/^Re:\[\d+\] //;
$r_sub = "Re:[$no] $sub";
$r_com = "> $com";
$r_com =~ s/
/\r> /ig;
$r_com =~ s/(.*)<\/a>/$1/g;
}
&header;
print "";
print "$banner1\n" if ($banner1 ne "");
# サブメッセージ
print "
\n";
# 罫線の長さを調整
if ($PostMode) { $hr = ''; } else { $hr = ''; }
print <<"EOM";
| 戻る |
管理用 |
$hr
EOM
# 投稿フォーム
if (!$PostMode) { &form("user"); }
print "\n";
$i=0;
open(IN,"$logfile") || &error("Open Error : $logfile");
while () {
$i++;
if ($i < $page + 1) { next; }
if ($i > $page + $p_log) { last; }
($no,$date,$name,$mail,$sub,$com,$url,$host,$pw,$tail,$w,$h,$tim,$chk) = split(/<>/);
if ($mail) { $name = "$name"; }
if ($url) { $url = "
"; }
print "
[$no] $sub ";
if (!$PostMode) {
print "送信者:$name 送信日:$date ";
print "";
} else {
print "- $date ";
}
print " $url\n- \n";
if ($imgpoint == 1) { $ipt="align=left hspace=18"; }
else {
$ipt="";
print "$com";
}
# 添付ファイルが存在する場合
if (-e "$ImgDir$no$tail") {
if ($tail eq ".gif" || $tail eq ".jpg" || $tail eq ".png") {
if (!$PostMode && $ImageCheck && $chk != 1) {
print "
\n";
} else {
if ($w && $h) { $wh="width=$w height=$h"; }
else { $wh=""; }
print "
\n";
}
} else {
print "
$no$tail\n";
}
}
print "$com" if ($imgpoint == 1);
print "
\n";
}
close(IN);
print "
\n";
$next = $page + $p_log;
$back = $page - $p_log;
print "\n";
if ($back >= 0) {
print " | \n";
}
if ($next < $i) {
print " | \n";
}
print "
\n";
# 削除フォーム
if (!$PostMode) {
print "
\n";
}
# 著作権表示(削除・改変は禁止)
print <<"EOM";