#!/usr/bin/perl
#◇◇ perlのパスを自分の環境に合わせて書き直します。
#◇◇ 解らない場合はサーバー管理者(もしくはプロバイダー)に
#◇◇ 確認してください。
#↑perlのパスを自分の環境に合わせて書き直します。
#大抵は、「#!/usr/bin/perl」 か 「#!/usr/local/bin/perl」です。
#解らない場合はサーバー管理者(もしくはプロバイダー)に
#確認してください。
require './jcode.pl';
$ver = '1.03';
#####################################################################
# Simple-Links Ver1.03 [簡易リンク集管理ソフト] (1999/11/18)
# (C) 1999 by yomi
# Eメール: yomi@pekori.to
# ホームページ: http://yomi.pekori.to/
#####################################################################
## ---[注意事項]------------------------------------------------------------+
## 1. このスクリプトはフリーソフトです。このスクリプトを使用したいかなる損害に
## 対して作者は一切の責任を負いません。
## 2. このスクリプトを使用した時点で利用規約(http://yomi.pekori.to/kiyaku.html)
## に同意したものとみなさせていただきます。
## ご使用になる前に必ずお読みください。
## -------------------------------------------------------------------------+
#------------------↓ここから設定↓---------------------#
#管理パスワード
$pwd = 'link0312';
#リンク集のタイトル
$link_title = 'りんくす';
#スクリプト名
$script = 'links.cgi';
#戻り先URL
$home = 'http://siba-eternal.com/';
#ログファイル
#保存形式
#登録NO.<>タイトル<>管理人<>URL<>バナーURL<>バナー横幅<>バナー縦幅<>コメント<>\n
$link_log = 'links.log';
#1ページ当たりの表示件数
$new_url_no = '100';
#タイトルロゴ画像(使用するときのみ記入)
$titlegif = ''; # 〃 画像のURL又はパスを記入してください。
$title_w = '200'; # 〃 横サイズ
$title_h = '100'; # 〃 縦サイズ
#タイトル文字
$title_word = 'リンク集!';
#壁紙URL(使用するときのみ)
$backgif = "";
#背景の色
$backcolor = "#E1F0F0";
#テキストの色
$text_co = "#0066FF";
#リンクの色
$plink_co = "#0066FF"; #訪問前リンクの色(LINK)
$alink_co = "#000066"; #訪問中リンクの色(ALINK)
$vlink_co = "#009966"; #訪問後リンクの色(VLINK)
#文字の大きさ
$bpt = "11";
#------------------↑ここまで設定↑---------------------#
if ($backgif ne "" && $backcolor ne "") {
$back_env = " background=\"$backgif\" bgcolor=\"$backcolor\"";
}
elsif ($backgif) {
$back_env = " background=\"$backgif\"";
}
elsif ($backcolor) {
$back_env = " bgcolor=\"$backcolor\"";
}
else {
$back_env = "";
}
$lock_file = 'links.loc';
# 日時の取得
$ENV{'TZ'} = "JST-9";
$times = time();
$times_now = time();
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($times);
$year = 1900 + $year;
$mon++;
if ($mon < 10) { $mon = "0$mon"; }
if ($mday < 10) { $mday = "0$mday"; }
if ($hour < 10) { $hour = "0$hour"; }
if ($min < 10) { $min = "0$min"; }
# 日時のフォーマット
$youbi = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat') [$wday];
$date_now = "$year/$mon/$mday($youbi)";
$date2 = "$year/$mon/$mday";
$now_mon = "$year" . "_" . "$mon" . ".dat";
#
#メインメニュー
#
&form_decode;
if ($mode eq 'regist') { ®ist; }
elsif ($mode eq 'regist_act') { ®ist_act; }
elsif ($mode eq 'mente') { &mente; }
elsif ($mode eq 'mente_act') { &mente_act; }
elsif ($mode eq 'del_act') { &del_act; }
&index_html;
exit;
#初期画面
sub index_html{
open(IN,"$link_log");
@lines = ;
close(IN);
if ($FORM{'p'} eq 'new') { @lines = reverse(@lines); }
#画面表示
$total = @lines;
print "Content-type: text/html\n\n";
print <<"EOM";
$link_title
EOM
print "[トップに戻る]
";
if ($titlegif) {
print "
\n";
}
elsif ($title_word) {
print "\n";
}
print <<"EOM";
EOM
#表示数の処理 30件>135件中 $FORM{'page'}=$page
if ($total > 0 && $new_url_no > 0) {
$page_su = $total / $new_url_no;
$page_su = int($page_su) + 1;
if ($FORM{'page'} == "") {
$page = 1;
$start_no = 1;
$end_no = $new_url_no;
}
else {
$page = $FORM{'page'};
$start_no = ($new_url_no * ($page - 1)) + 1;
$end_no = $new_url_no * $page;
}
}
if ($total > $new_url_no) {
print "[/";
foreach (1 .. $page_su) {
#[/ 1 / 2 / 3 / 4 /]
if ($_ == $page) { print " $_ /"; }
else {
if ($FORM{'p'} eq 'new') {
print " $_ /";
}
else{
print " $_ /";
}
}
}
print "]";
print "
\n";
}
print "
";
print "[";
if ($FORM{'q'} eq 'nobanner') {
if($FORM{'p'} eq 'title'){
print ""; }
else { print ""; }
print "バナーを表\示]"; }
else {
if($FORM{'p'} eq 'title'){
print ""; }
else { print ""; }
print "バナーを消去]"; }
print " [";
if ($FORM{'p'} ne 'title') {
if($FORM{'q'} eq 'nobanner'){
print ""; }
else { print ""; }
print "リンクページ一覧を表\示]"; }
else {
if($FORM{'q'} eq 'nobanner'){
print ""; }
else { print ""; }
print "リンクページ一覧を消去]"; }
print "
";
if ($FORM{'p'} eq 'title') {
$t = 0;
foreach $var (@lines) {
@list = split(/<>/, $var);
$title[$t] = $list[1];
$t++;
}
@titlelist = sort(@title);
print "
★↓登録されているサイトの一覧です↓★
";
foreach $val (@titlelist) {
print "$val☆";}
}
print "
";
if ($total > $new_url_no) {
print "[/";
foreach (1 .. $page_su) {
#[/ 1 / 2 / 3 / 4 /]
if ($_ == $page) { print " $_ /"; }
else {
if ($FORM{'p'} eq 'new') {
print " $_ /";
}
else{
print " $_ /";
}
}
}
print "]";
print "
\n";
}
print "\n";
print "\n";
print <<"EOM";
EOM
print "";
&foot;
exit;
}
#ロックルーチン
sub lock {
$flag = 0;
# 10分以上古いロックファイルは削除する。
($mtime) = (stat($file_lock))[9];
if ($mtime < time() - 600) {
unlink $lock_file;
}
$retry = 6;
$zz = 0;
$flag = 0;
while (-e $lock_file) {
if ($retry == $zz) {
#タイムアウトで抜けたとき($flag=1)
$flag = 1;
last;
}
$zz++;
sleep 1;
}
if ($flag == 0) {
open(OUT,">$file_lock");
close(OUT);
}
}
#ロック解除ルーチン
sub unlock {
unlink $lock_file;
}
sub form_decode {
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $form, $ENV{'CONTENT_LENGTH'}); }
else { $form = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$form);
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 =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value,'sjis');
&jcode'convert(*name,'sjis');
$FORM{$name} = $value;
}
$mode = $FORM{'mode'};
}
#著作権表示(削除・変更しないでください)
sub foot {
print "
";
}
#エラー処理
sub error {
print "Content-type: text/html\n\n";
print "\n";
print "
\n";
print "
\n";
print "";
print "\n";
exit;
}