#!C:/Perl/bin/perl
##=======================================================##
## AmigoNavigator [サーチエンジン] ##
## Copyright(C)2000 cgi-amigo.com All Rights Reserved ##
## http://www.cgi-amigo.com/ ##
## webmaster@cgi-amigo.com ##
##=======================================================##
# このスクリプトは無料でご利用頂けますが著作権は放棄していません。
# 利用規定ファイル及びhttp://www.cgi-amigo.com/kitei.htmlの利用規定を厳守してご利用下さい。
# 更新の都合で両規定に違いがある場合はより新しい方の規定をご覧下さい。
$Ver='AmigoNavigator Ver3.01'; # ─バージョン情報(修正不可)
###########################################################
# ■基本ディレクトリ(http://から)
$BaseDir='http://affiliate.shop-navi.com/navi';
# ■設置サイトの最短URL
@MyUrl=('http://affiliate.shop-navi.com/'
);
# ■データディレクトリ
$DataDir='./data';
# ■ロックディレクトリ
$LockDir='./lock';
# ■画像ディレクトリ
$ImageDir='./image';
# ■アップファイル用ディレクトリ
$UpDir='./file';
# ■バックアップファイル名(拡張子は必ず.tar.gz)
$BkupFile='data.tar.gz';
# ■リンク制限(ON=1/OFF=0)
$LinkFlag=1;
# ■method形式チェック(ON=1/OFF=0)
$MethodFlag=1;
# ■保存パスワードの暗号化(ON=1/OFF=0)
$CryptFlag=1;
# ■時差修正(日本は+9)
$TimeZone=+9;
# ■gzipのパス
$GzipPass='/usr/bin/gzip';
# ■ジャンプタイプ(Locatino=0/META=1)
$LocationType=0;
###########################################################
eval{ require'./lib/jcode.pl' } or &Die('jcode.pl を呼び出せません。');
eval{ require"$DataDir/config/navi-conf.cgi" } or &Die('navi-conf.cgiを呼び出せません。');
eval{ require"$DataDir/config/navi-ca.cgi" } or &Die('navi-ca.cgiを呼び出せません。');
srand(time()^($$+($$<<15)));
$PID=$$?$$:int(rand(10000)+1);
$NowTime=time;
$Copyright=qq(
);
$SIG{PIPE}=$SIG{INT}=$SIG{HUP}=$SIG{QUIT}=$SIG{TERM}=\&SIGExit;
$DomainName=!$ENV{REMOTE_HOST}||$ENV{REMOTE_HOST} eq $ENV{REMOTE_ADDR}?gethostbyaddr(pack('C4',split(/\./,$ENV{REMOTE_ADDR})),2)||$ENV{REMOTE_ADDR}:$ENV{REMOTE_HOST};
%REC=(
'ALL' =>{ 'Pass'=>0,'Mark1'=>1,'Mark2'=>2,'Name'=>3,'Email'=>4,'Title'=>'5','Url'=>6,'Rtime'=>7,'UPtime'=>8,'Comment'=>9,'Keyword'=>10,'RegistCa'=>11,'Burl'=>12,'BsizeW'=>13,'BsizeH'=>14 },
'Clog'=>{ 'Mark1'=>0,'Mark2'=>1,'Name'=>2,'Email'=>3,'Title'=>'4','Url'=>5,'Rtime'=>6,'UPtime'=>7,'Comment'=>8,'Keyword'=>9,'Burl'=>10,'BsizeW'=>11,'BsizeH'=>12 });
&GetFormData(',');
@cmd{'tv','cv','uv','mv','rv','rva','s','ms','mes','dr2','dra','dec','dep',
'dea','dda','ac','ar','c','ca','aj','aja','ce','cca','cea','cexa',
'cdexa','cdca','cdda','j','r','bk','bkd','mc','md','dt','td','rs','rsa','lr','lra','lc','lca','lcd','lcc','lcu'}='';
$FORM{cmd} eq '' and $FORM{cmd}='tv';
if(-e"$LockDir/mente.loc"){
@mente{'ac','ar','c','ca','ce','cca','cea','cexa','cdexa',
'cdca','cdda','bk','bkd','mc','md','rs','rsa','lc','lca','lcd','lcc','lcu'}='';
exists$mente{$FORM{cmd}} or &Error('現在メンテナンス中です。
ご迷惑をお掛けしますがしばらくお待ち下さい。');
}!exists$cmd{$FORM{cmd}}?&Error('コマンドが不正です。'):&{$FORM{cmd}};
sub tv { eval{ require'./lib/navi-view.cgi' } or &Die('navi-view.cgiを呼び出せません。'); &TopView }
sub cv { eval{ require'./lib/navi-view.cgi' } or &Die('navi-view.cgiを呼び出せません。'); &CategoryView }
sub uv { eval{ require'./lib/navi-view.cgi' } or &Die('navi-view.cgiを呼び出せません。'); &UpdateView }
sub mv { eval{ require'./lib/navi-view.cgi' } or &Die('navi-view.cgiを呼び出せません。'); &MarkView }
sub rv { eval{ require'./lib/navi-view.cgi' } or &Die('navi-view.cgiを呼び出せません。'); &RankView }
sub rva { eval{ require'./lib/navi-view.cgi' } or &Die('navi-view.cgiを呼び出せません。'); &RankViewAct }
sub s { eval{ require'./lib/navi-view.cgi' } or &Die('navi-view.cgiを呼び出せません。'); &Search }
sub ms { eval{ require'./lib/navi-view.cgi' } or &Die('navi-view.cgiを呼び出せません。'); &MoreSearch }
sub mes { eval{ require'./lib/navi-view.cgi' } or &Die('navi-view.cgiを呼び出せません。'); &MetaSearch }
sub dr2 { eval{ require'./lib/navi-data-edit.cgi' } or &Die('navi-data-edit.cgiを呼び出せません。'); &DataRegist }
sub dra { eval{ require'./lib/navi-data-edit.cgi' } or &Die('navi-data-edit.cgiを呼び出せません。'); &DataRegistAct }
sub dec { eval{ require'./lib/navi-data-edit.cgi' } or &Die('navi-data-edit.cgiを呼び出せません。'); &DataEditCertify }
sub dep { eval{ require'./lib/navi-data-edit.cgi' } or &Die('navi-data-edit.cgiを呼び出せません。'); &DataEditPart }
sub dea { eval{ require'./lib/navi-data-edit.cgi' } or &Die('navi-data-edit.cgiを呼び出せません。'); &DataEditAct }
sub dda { eval{ require'./lib/navi-data-edit.cgi' } or &Die('navi-data-edit.cgiを呼び出せません。'); &DataDeleteAct }
sub lr { eval{ require'./lib/navi-data-edit.cgi' } or &Die('navi-data-edit.cgiを呼び出せません。'); &LinkReport }
sub lra { eval{ require'./lib/navi-data-edit.cgi' } or &Die('navi-data-edit.cgiを呼び出せません。'); &LinkReportAct }
sub ac { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &AdminCertify }
sub ar { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &AdminRoom }
sub dt { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &Dbm_Text }
sub td { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &Text_Dbm }
sub c { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &Config }
sub ca { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &ConfigAct }
sub aj { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &AdminJudge }
sub aja { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &AdminJudgeAct }
sub ce { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &CaEdit }
sub cca { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &CaCreateAct }
sub cea { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &CaEditAct }
sub cexa { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &CaExchangeAct }
sub cdexa{ eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &CaDataExchangeAct }
sub cdca { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &CaDataCopyAct }
sub cdda { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &CaDataDeleteAct }
sub bk { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &Backup }
sub bkd { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &BackupDelete }
sub mc { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &MenteCreate }
sub md { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &MenteDelete }
sub rs { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &ResetSet }
sub rsa { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &ResetSetAct }
sub lc { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &LinkCheck }
sub lca { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &LinkCheckAct }
sub lcd { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &LinkCheckDl }
sub lcu { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &LinkCheckUp }
sub lcc { eval{ require'./lib/navi-admin.cgi' } or &Die('navi-admin.cgiを呼び出せません。'); &LinkCheckComment }
sub j { eval{ require'./lib/navi-jump.cgi' } or &Die('navi-jump.cgiを呼び出せません。'); &Jump }
sub r { eval{ require'./lib/navi-ref.cgi' } or &Die('navi-ref.cgiを呼び出せません。'); &Ref }
###########################################################
############
# Html #
############
sub Html{ my$file=shift;
print"Content-Type: text/html\n";
if(-x$GzipPass and $ENV{HTTP_ACCEPT_ENCODING}=~/((?:x-)?gzip)/){ $|=1;
print"Content-encoding: $1\n\n";
open(GZIP,"| $GzipPass -1c");
select(GZIP);
}else{ print"\n" }
eval{ require"./lib/template/$file" } or &Die("$file を呼び出せません。",1);
print$Copyright;exit;}
#############
# Error #
#############
sub Error{ $msg=shift;
foreach(@UpFile){ unlink"$MultipartDir/$_" }
&Unlock('ALL');
&Html('error.html');}
###########
# Die #
###########
sub Die{ ($msg,$NoHead)=@_;
$NoHead or print"Content-type: text/html\n\n";
print$msg;exit;}
################
# Location #
################
sub Location{ my$url=shift;
if(!$LocationType){ print"Location: $url\n\n" }
else{ print"Content-type: text/html\n\n";
print<