From: Emil Williams Date: Tue, 6 May 2025 17:49:57 +0000 (-0600) Subject: -- X-Git-Url: https://git.xolatile.top/?a=commitdiff_plain;h=cc18f0e3daf79c4c8772d7a3279b240d9b46bbf5;p=emil-3chen.org.git -- --- diff --git a/perl/Triple.pm b/perl/Triple.pm index f77c097..1090dc4 100644 --- a/perl/Triple.pm +++ b/perl/Triple.pm @@ -3,6 +3,7 @@ package Triple; use strict; use warnings; +use Cwd; use Sys::Syslog; use Data::Dumper; @@ -10,140 +11,14 @@ use CGI; use FCGI; use Template; -use feature 'state'; - # Internal use Secrets; our $debug = 0; -our @boards = ( - '/img/', - '/doc/', - ); - -our %titles = ( - '/' => 'Root', - '/img/' => 'Imgb.', - '/doc/' => '2nd.', - ); - -our %descriptions = ( - '/' => 'Forum Index', - '/img/' => 'Test Board', - '/doc/' => 'Secondary Board', - ); - -our %sitemap_static = ( - '/' => 'index', - '/404/' => '404', - ); -our %sitemap; - -sub sitemapgen { - %sitemap = %sitemap_static; - foreach (@boards) { - syslog("info", "+ $_"); - $sitemap{"$_"} = 'img'; - } -} - -sub sitename { - use Cwd; - my $sitename = getcwd(); # pwd - $sitename =~ s/.*\///; # /a/b/c/sitename/ => sitename - return $sitename; -} - -sub debug { - my $sitename = $_[0]; +Triple::main() { + $sitename = (getcwd() =~ s/.*\///); $debug = 1 if $sitename =~ /^test\./; openlog($sitename, "ndelay,pid", Sys::Syslog::LOG_DAEMON); -} - -sub handlers { - my $include = $_[0]; - my $request = FCGI::Request(); - my $template; - $template = Template->new({INCLUDE_PATH => $include}) or syslog("info", $template->error()); - return ($request, $template); -} -sub version { - open my $fh, '<', $_[0] or die "Can't open file: $!"; - my $line = uc(substr(<$fh>, 0, 12)); - close $fh; - return $line; } - -sub init { - my $sitename = sitename(); - debug($sitename); - my ($request, $template) = handlers('tt'); - sitemapgen(); - return $sitename, $request, $template; -} - -sub main() { - my ($sitename, $request, $template) = Triple::init(); - - my $version = Triple::version("version"); - syslog("info", "loading $version"); - - my %static; - { - my $vars = { - boards => \@Triple::boards, - titles => \%Triple::titles, - descriptions => \%Triple::descriptions, - sitename => $sitename, - version => $version, - }; - foreach (my ($path, $page) = each %sitemap_static) { - syslog("info", "staticify $path"); - $vars->{uri} = $path; - my $description = $Triple::descriptions{$path} // 'No Description Retard'; - $vars->{description} = $description; - my $pregen; - $template->process($page, $vars, \$pregen) or syslog("info", $template->error()); - $static{$path} = $pregen; - } - } - - - while($request->Accept() >= 0) { - my $cgi = CGI->new; - - # my $method = $ENV{'REQUEST_METHOD'} || '?'; - my $ip = $ENV{'REMOTE_ADDR'} || '?'; - $ip = 'hidden' if not $Triple::debug; - - my $path = $ENV{'REQUEST_URI'} // '/'; - my $page = $Triple::sitemap{$path} // '404'; - my $stale = $static{$path} || ''; - - print $cgi->header( - -Content_Type => 'text/html', - -charset => 'UTF-8', - ); - if (not $stale) { - syslog("info", "serving live"); - my $description = $Triple::descriptions{$path} // 'No Description Retard'; - my $vars = { - uri => $path, - description => $description, - sitename => $sitename, - version => $version, - ip => $ip, - }; - $template->process($page, $vars) or syslog("info", $template->error()); - } else { - syslog("info", "serving stale"); - print $stale; - } - # my $description = $Triple::descriptions{$path} // 'No Description Retard'; - # syslog("info", "$ip $method $path template $page described as '$description'") if $Triple::debug; - } -} - -1;