#!/usr/bin/perl ## Diary Note (diary.cgi) v0.6 ## Copyright (c) KentWeb # 外部ファイル取り込み require './init.cgi'; &decode; if ($mode eq "read") { &read; } elsif ($mode eq "check") { ✓ } &topmenu; #-----------# # TOP画面 # #-----------# sub topmenu { &header; print <
   $title
Homeに戻る
EOM # index読み取り open(IN,"$logdir/index.dat") || &error("Open Error: index.dat"); while () { @f = split(/,/); print ""; foreach $i (1 .. 12) { print ""; } print "\n"; } close(IN); print <

$f[0]"; if ($f[$i]) { print "$i月"; } else { print "$i月"; } print "
$message



EOM # 管理者ログインフォーム if ($login_form) { print "
\n"; } # 著作権表示(削除禁止) print < - DiaryNote - EOM exit; } #------------# # 内容閲覧 # #------------# sub read { local($i,$flag,$next,$back,$sub_width); # 汚染チェック $in{'y'} =~ s/\D//g; $in{'m'} =~ s/\D//g; $data = sprintf("%04d%02d", $in{'y'},$in{'m'}); $sub_width = $log_width + 30; &header; print <
   Diary $in{'y'}. $in{'m'}
メニューに戻る
EOM # ログ展開 $i=0; open(IN,"$logdir/$data.txt"); while () { $i++; next if ($i < $page + 1); next if ($i > $page + $pagelog); ($d,$w,$sub,$msg,$t[0],$w[0],$h[0], $t[1],$w[1],$h[1],$t[2],$w[2],$h[2]) = split(/<>/); # 自動リンク $msg = &auto_link($msg) if ($autolink); $day = $d; $day =~ s/^0//; print "
$in{'m'}月$day日 ($week[$w])  $sub

$msg\n"; $f=0; foreach $i (0 .. 2) { if ($t[$i]) { $f++; } else { next; } $j = $i+1; print "

\n" if ($f == 1); if ($w[$i] && $h[$i]) { $wh = "width=$w[$i] height=$h[$i]"; } print "\"$data$d-$j$t[$i]\"\n"; } print "

" if ($f); print "


\n"; } close(IN); # 繰越数定義 $next = $page + $pagelog; $back = $page - $pagelog; $flag=0; print "\n"; if ($back >= 0) { $flag++; print "\n"; } if ($next < $i) { $flag++; print "\n"; } # ページ移動ボタン表示 if ($flag) { print ""; } else { print ""; } print <
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; local($x,$y) = (1,0); while ($i > 0) { if ($page == $y) { print "| $x\n"; } else { print "| $x\n"; } $x++; $y += $pagelog; $i -= $pagelog; } print "|
EOM exit; } #----------------# # デコード処理 # #----------------# sub decode { local($buf,$key,$val); if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } else { $buf = $ENV{'QUERY_STRING'}; } %in=(); foreach ( split(/&/, $buf) ) { ($key, $val) = split(/=/); $val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # タグ処理 $val =~ s/&/&/g; $val =~ s/"/"/g; $val =~ s//>/g; $val =~ s/\0//g; $in{$key} .= "\0" if (defined($in{$key})); $in{$key} .= $val; } $page = $in{'page'}; $mode = $in{'mode'}; $headflag=0; } #--------------# # 自動リンク # #--------------# sub auto_link { local($_) = @_; s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1$2<\/a>/g; $_; } #----------------# # 簡易チェック # #----------------# sub check { &header; print <Check Mode
    EOM # ディレクトリ定義 %dir = ('ログディレクトリ', $logdir, '画像ディレクトリ', $imgdir); # チェック開始 while (($k,$v) = each %dir) { # パス if (-d $v) { print "
  • $kパス: OK!\n"; # パーミッション if (-r $v && -w $v && -x $v) { print "
  • $kパーミッション: OK!\n"; } else { print "
  • $kパーミッション: NG → $v\n"; } } else { print "
  • $kパス: NG → $v\n"; } } if (-e "$logdir/index.dat") { print "
  • indexファイル: OK!\n"; # パーミッション if (-r "$logdir/index.dat" && -w "$logdir/index.dat") { print "
  • indexファイルパーミッション: OK!\n"; } else { print "
  • indexファイルパーミッション: NG → index.dat\n"; } } else { print "
  • indexファイル: NG → index.dat\n"; } print <バージョン: $ver
EOM exit; } __END__