#! /usr/bin/perl # # flmob.cgi # # 1.001 : 6/19/08 : 表示順のバグを修正 # 1.0 : 1/2/08 : flist3.cgiより携帯用にシンプル化 # # http://www.hidekik.com/ # # $Id: flmob.cgi,v 1.4 2008/06/18 14:45:37 Hideki Kanayama Exp $ # Copyright(c) 2005-2008, Hideki Kanayama, All rights reserved. use CGI::Carp qw(fatalsToBrowser); use Cwd; use File::Basename; use CGI qw(:cgi-lib); use strict; my $script= basename($0); my $version = "1.001"; my $updatedyear = "2008"; my $lang = 0; my $charset = ('Shift_JIS', 'ISO-8859-1')[$lang]; my $setupfile = "flmob_setup.pl"; #### Environment setup from here #################### # 公開するファイルがあるディレクトリ # A directory to be disclosed our $dldir = "files"; # タイトル # title our $title = 'file list for mobile'; # 1ページ表示行数 # number to be displayed in one page our $num_in_a_page = 20; # 表示順 0:アルファベット順 1:最新順 our $list_order = 0; # サイズ表示 1:表示 0:非表示 our $size_disp = 0; # 更新日時表示 1:表示 0:非表示 our $time_disp = 0; # 戻るリンク # back link our $back = ('戻る','Back')[$lang]; our $backlink = ".."; #### Environment setup till here #################### require "$setupfile" if (-e "$setupfile"); my $q = new CGI; my $cgierror = $q->cgi_error; &error($cgierror) if ($cgierror); my %in = $q->Vars; opendir(DLDIR, "$dldir") or &error(("ディレクトリ$dldirが存在しません","Cannot open directory:$dldir")[$lang]); my @filelist = grep !/^\./, readdir DLDIR; closedir(DLDIR); if ($list_order == 1){ @filelist = sort {(stat("$dldir/$b"))[9] <=> (stat("$dldir/$a"))[9]} @filelist; } else { @filelist = sort @filelist; } unshift(@filelist,'dummy'); &display; exit; sub display { my $from; if (! exists $in{from}) { $from = 1; } else { $from = $in{from}; } my $to; if (! exists $in{to}){ $to = $num_in_a_page; } else { $to = $in{to}; } &beginning($from,$to); print qq($back\n); print "
\n"; &listlink($from,$to); print "

\n"; my $i; for ($i=1;$i<=$#filelist;$i++){ if ($i < $from or $i > $to) { next; } my $dlfile = $filelist[$i]; chomp($dlfile); my $dllistfile = "$dldir/$dlfile"; my ($d_dev,$d_ino,$d_mode,$d_nlink,$d_uid,$d_gid,$d_rdev,$d_size,$d_atime,$d_mtime,$d_ctime,$d_blksize,$d_blocks)=stat("$dllistfile"); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($d_mtime); my $update; if ($lang) { $update = sprintf("%02s:%02s %s/%s/%s",$hour,$min,$mon+1,$mday,$year+1900); } else { $update = sprintf("%s年%s月%s日%02s時%02s分",$year+1900,$mon+1,$mday,$hour,$min); } my $size; if ($d_size > 1048576){ $size = sprintf("%.1fMB",$d_size/1048576); } elsif ($d_size > 1024){ $size = sprintf("%.1fkB",$d_size/1024); } else { $size = sprintf("%dB",$d_size); } my $checkname = "check_$i"; print "$i. $dlfile"; print "($size)" if ($size_disp); print " $update" if ($time_disp); print "
\n"; } print "

\n"; &listlink($from,$to); &ending; } sub beginning { print $q->header(-type=>'text/html', -charset=>"$charset"); print ""; print < $title HEADPRINT print "\n"; print "\n"; } sub ending { my $mysite = ('http://www.hidekik.com/','http://www.hidekik.com/en/')[$lang]; print "
\n"; print qq|flmob.cgi Ver. $version Copyright(c) 2005-$updatedyear, hidekik.com\n|; print ""; print ""; } sub error { &beginning; print "
$_[0]
\n"; &ending; exit; } sub listlink { my ($from, $to) = @_; my $i; for ($i=1;$i<=$#filelist;$i+=$num_in_a_page){ my $end = $i + $num_in_a_page - 1; if ($end > $#filelist) { $end = $#filelist; } print qq(); print $i . '-' . $end; print " "; } print "
\n"; }