From b28691c2d7446e6194f180573c954dff0b55ed6c Mon Sep 17 00:00:00 2001 From: in2 Date: Thu, 3 Jul 2003 06:50:54 +0000 Subject: *** empty log message *** git-svn-id: http://opensvn.csie.org/pttbbs/pttbbs/trunk/pttbbs@1004 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- staticweb/man.pl | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 staticweb/man.pl (limited to 'staticweb/man.pl') 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; -- cgit v1.2.3