#!/usr/bin/perl use POSIX; #defaults my $page = "index"; my $newsitems = 5; my $whatfile = "crypt"; my @strings = split('&', @ENV{'QUERY_STRING'}); my $size = @strings; for (my $x = 0; $x < $size; $x++) { my @tmp = split('=', @strings[$x]); if (@tmp[0] eq "page") { $page = @tmp[1]; } if (@tmp[0] eq "newsitems") { $newsitems = int(@tmp[1]); } if (@tmp[0] eq "whatfile") { $whatfile = @tmp[1]; } } if ($page eq "rss") { doRSSFeed($newsitems); exit; } if ($page eq "atom") { doAtomFeed($newsitems); exit; } if ($page eq "myself") { doSelf(); exit; } doBanner(); if ($page eq "index") { indexPage(); } elsif ($page eq "download") { downloadPage(); } elsif ($page eq "features") { featuresPage(); } elsif ($page eq "changes") { changesPage(); } else { print "

Whoops!

The page you requested doesn't exist, try going back to the index!

"; } print ""; sub doRSSFeed { my $date = localtime; print "Content-Type: text/xml\r\nDate: $date\r\n\r\n"; print "\n"; print "\n"; print "LibTom Projects\n"; print "http://libtom.org/\n"; print "The LibTom Projects\n"; print "en-us\n"; print "http://libtom.org/?page=rss\n"; print "My Magic Coding\n"; print "tom\@libtom.org\n"; print "tom\@libtom.org\n"; open(IN,") { last if ($n-- == 0); my @a = split('#', $_); my $tn = @a; print "\n"; if ($tn == 2) { print "No Title\n"; } else { print "@a[1]\n"; } print "http://libtom.org\n"; my $str = @a[$tn-1]; $str =~ s/\/>/g; print "$str\n"; print "@a[0]\n"; print "\n"; } print ""; close(IN); } sub doAtomFeed { my $date = localtime; print "Content-Type: text/xml\r\nDate: $date\r\n\r\n"; print "\n"; print "\n"; print "LibTom Projects\n"; print "LibTom Projects News\n"; print ""; print "$date\n"; print "\n"; print "Tom St Denis\n"; print "tom\@libtom.org\n"; print "\n"; print "libtom.org\n"; open(IN,") { last if ($n-- == 0); my @a = split('#', $_); my $tn = @a; print "\n"; print ""; if ($tn == 2) { print "No Title ($n)\n"; } else { print "@a[1] ($n)\n"; } my $str = @a[$tn-1]; $str =~ s/\/>/g; print "$str\n"; print "@a[0]\n"; print "\n"; } print "\n"; close(IN); } # yeah yeah, funny function name, shut up sub doSelf { print "Content-Type: text/plain\r\n\r\n"; open(IN,") { print $_; } close(IN); } sub doBanner { my $date = localtime; print "Content-Type: text/html\r\nDate: $date\r\n\r\nLibTom Projects\n\n"; print ""; print "
\"RSS"; print " \"Atom"; print "
About The Projects
"; print "
"; print "
\"LibTom
"; print "[ Index ]  "; print "[ Download ] "; print "[ Features ]  "; print "[ Change Logs ] "; print "[ Email List ]
"; print "[ CVS Tree ]  "; print "[ CVS Tree (mirror) ]  "; print "[ Site Mirror ]  "; print "[ MySelf! ]"; print "
"; latestRevBox(); print "

"; } sub indexPage { readFrom("index.txt"); theNews($newsitems); } sub theNews { my $n = $_[0]; open(IN,"

The News all more less"; while () { last if ($n-- == 0); my @a = split('#', $_); my $tn = @a; my $date = @a[0]; my $summary = ""; my $title = ""; if ($tn == 2) { $summary = @a[1]; $title = "No Title"; } else { $summary = @a[2]; $title = @a[1]; } print "
$title
$date
$summary

"; } close(IN); } sub listings { print "

Listings: "; print "LibTomCrypt, "; print "LibTomMath, "; print "TomsFastMath, "; print "LibTomPoly, "; print "LibTomFloat "; print "

"; } sub downloadPage { listings(); print "

GPG key

"; downloadListing($whatfile); } sub featuresPage { listings(); readFrom("$whatfile.features.txt"); } sub changesPage { listings(); print "
";
   readFrom("$whatfile.changes.txt");
   print "
"; } sub downloadListing { my $prefix = $_[0]; print ""; foreach my $name (reverse glob "files/$prefix-*.tar.bz2") { print ""; my $thename = $name; my $prettyname = $thename; $prettyname =~ s/files\///; print ""; my $thename = $name; $thename =~ s/\.tar\.bz2/.zip/; my $prettyname = $thename; $prettyname =~ s/files\///; print ""; print "" } print "
"; my @a = split('-', $name); my @b = split('\.', $a[1]); print "v@b[0].@b[1]$prettyname ($prettyname.asc) ($prettyname.md5)$prettyname ($prettyname.asc) ($prettyname.md5)
"; } sub latestRevBox { print ""; my $name = lastestRev("crypt"); print ""; my $name = lastestRev("ltm"); print ""; my $name = lastestRev("tfm"); print ""; my $name = lastestRev("ltp"); print ""; my $name = lastestRev("ltf"); print ""; print "
LibTomCrypt ($name)
.bz2, .bz2.asc
.zip, .zip.asc
LibTomMath ($name)
.bz2, .bz2.asc
.zip, .zip.asc
TomsFastMath ($name)
.bz2, .bz2.asc
.zip, .zip.asc
LibTomPoly ($name)
.bz2, .bz2.asc
.zip, .zip.asc
LibTomFloat ($name)
.bz2, .bz2.asc
.zip, .zip.asc
"; } # lastestRev(prefix) # returns the latest version # as a string sub lastestRev { my $prefix = $_[0]; my $ver = 0; opendir(DIR, "files"); while (my $file = readdir(DIR)) { if ($file =~ m/$prefix/) { my @a = split('-', $file); my @b = split('\.', $a[1]); # @b[0] * 100 + @b[1] == ver my $iver = int($b[0]) * 100 + int($b[1]); if ($iver > $ver) { $ver = $iver; } } } closedir(DIR); return sprintf("%d.%02d", $ver / 100, $ver % 100); } sub readFrom { my $fname = $_[0]; if ($fname =~ m/\//) { badUserBad(); } open(IN, "<$fname"); print $_ while (); close(IN); } sub badUserBad { print "BAD USER BAD!"; exit; }