#!/usr/bin/perl -wT

use strict;
use CGI;
push @INC, "../../i";
require NaiveCGI;

# global variables
my ($cgi_obj) = new CGI;
my (%form_data) = NaiveCGI::ImportFormParam($cgi_obj);
my (@major_names, $major_name, @sites, $site);

@major_names = qw(ARCHIE CPAN CRAN LDP METALAB RFC RPMFIND RTFM SIMTELNET);

foreach (qw(major)) { NaiveCGI::Launder(\$form_data{$_}); }

if (defined $form_data{site}) {
#    print "Content-type: text/plain\n\n";
#    foreach (keys %form_data) {
#	print "$_: $form_data{$_}\n";
#    }
    $site = NaiveCGI::FastGrep($form_data{major}, "^(.*$form_data{site}.*)\$");
    my $url = $site;
    $url .= "/$form_data{path}" if $form_data{path};
    $url =~ s#([^:])//+#$1/#g;
#    print "$url\n";
    print $cgi_obj->redirect($url);
    exit;
}

@major_names = ($form_data{major}) if (defined $form_data{major});

my $title = defined $form_data{major} ? $form_data{major} : "著名站臺";
& NaiveCGI::PrintHeader("$title 映射站");

print <<'eof';
<p>許多著名的 ftp 站臺都有它們的映射站, 以分散 ftp 流量.
為了方便讀者找到我網頁上所提到的一些檔案,
在連不上原始站臺的時候, 可以到映射站臺去找,
所以我用這樣間接的方式來作 hyperlinks.
希望「多走一個中繼站網頁」的小小麻煩可以換來比較穩定的鏈結.</p>

<p>如果連得上某映射站, 卻找不到某網頁, 也許是那個站的擺設與原始站臺不同.
你可以試試看到該站的首頁 (把瀏覽器上面顯示的網址當中, 路徑的部分刪除),
再往下找找看; 或者也可以試試其他映射站.</p>

<p>萬一要是 <em>作者的站</em> 掛掉了怎麼辦? 如果你使用此頁次數頻繁,
那麼建議你 <a href = "../../dl/">下載</a> 我的網頁.
這支 cgi 程式也在網頁打包裡面. 這樣你就不怕我的網頁歇業了 :-)
eof

foreach $major_name (@major_names) {
    print "\n<h2>$major_name</h2>\n\n";
    @sites = grep {!/^#/ && !/^\s*$/} `cat $major_name`;
    chomp @sites;
    print "<form>\n選一個映射站: <select name=site>\n";
    foreach $site (@sites) {
	$site =~ m#^(\w+://.+?)(/|$)#;
	$site = $1;
	$site =~ s#^ftp://##;
	print "<option>$site\n";
    }
    my $dft_dir = defined $form_data{path} ?
	"value=$form_data{path}" : "";
    print <<eof;
</select><br>
底下的那個路徑? (不知道就留白) <input type=text name=path $dft_dir><br>
<input type=hidden name=major value=$major_name><br>
選好以後就... <input type=submit value="連過去!"><br>
</form>

eof
}

& NaiveCGI::PrintFooter;

