diff options
author | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-07-03 14:50:54 +0800 |
---|---|---|
committer | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-07-03 14:50:54 +0800 |
commit | b28691c2d7446e6194f180573c954dff0b55ed6c (patch) | |
tree | c3dfd59a31f4473f9f1fda812f426c714b5a3701 /staticweb/man.pl | |
parent | 2934f2e18f04ee139dd12ff9bfaa924f948ffa55 (diff) | |
download | pttbbs-b28691c2d7446e6194f180573c954dff0b55ed6c.tar pttbbs-b28691c2d7446e6194f180573c954dff0b55ed6c.tar.gz pttbbs-b28691c2d7446e6194f180573c954dff0b55ed6c.tar.bz2 pttbbs-b28691c2d7446e6194f180573c954dff0b55ed6c.tar.lz pttbbs-b28691c2d7446e6194f180573c954dff0b55ed6c.tar.xz pttbbs-b28691c2d7446e6194f180573c954dff0b55ed6c.tar.zst pttbbs-b28691c2d7446e6194f180573c954dff0b55ed6c.zip |
*** empty log message ***
git-svn-id: http://opensvn.csie.org/pttbbs/pttbbs/trunk/pttbbs@1004 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'staticweb/man.pl')
-rwxr-xr-x | staticweb/man.pl | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/staticweb/man.pl b/staticweb/man.pl new file mode 100755 index 00000000..307108c7 --- /dev/null +++ b/staticweb/man.pl @@ -0,0 +1,67 @@ +#!/usr/bin/perl +# $Id: man.pl,v 1.1 2003/07/03 06:49:23 in2 Exp $ +use CGI qw/:standard/; +use lib qw/./; +use LocalVars; +use DB_File; +use strict; +use Data::Dumper; +use Date::Calc qw(:all); +use Template; +use HTML::Calendar::Simple; +use OurNet::FuzzyIndex; +use Data::Serializer; +use vars qw/%db $brdname $fpath/; + +sub main +{ + my($tmpl, $rh); + + if( !(($brdname, $fpath) = $ENV{PATH_INFO} =~ m|^/([\w\-]+?)(/.*)|) || + !(tie %db, 'DB_File', + "$MANDATA/$brdname.db", O_RDONLY, 0666, $DB_HASH) ){ + return redirect("/man.pl/$1/") + if( $ENV{PATH_INFO} =~ m|^/([\w\-]+?)$| ); + print header(-status => 404); + return; + } + + charset(''); + print header(); + + $rh = (($fpath =~ m|/$|) ? dirmode($fpath) : articlemode($fpath)); + $tmpl = Template->new({INCLUDE_PATH => '.', + ABSOLUTE => 0, + RELATIVE => 0, + RECURSION => 0, + EVAL_PERL => 0}); + $tmpl->process($rh->{tmpl}, $rh); +} + +sub dirmode +{ + my(%th); + my $serial = Data::Serializer->new(serializer => 'Storable', + digester => 'MD5', + compress => 0, + ); + foreach( @{$serial->deserialize($db{$fpath})} ){ + push @{$th{dat}}, {isdir => (($_->[0] =~ m|/$|) ? 1 : 0), + fn => "/man.pl/$brdname$_->[0]", + title => $_->[1]}; + } + + $th{tmpl} = 'dir.html'; + return \%th; +} + +sub articlemode +{ + my(%th); + $th{tmpl} = 'article.html'; + $th{content} = $db{$fpath}; + return \%th; +} + +main(); +1; |