![]() ![]() |
czf4bfu.prosek.czf |
Subversion Repositories: |
Compare with Previous - Blame - Download
#!/usr/bin/perl## Cte ze stdin DEU a generuje z nich html stranku# Autor: Petr Mensik <pihhan@cipis.net>#use strict;my (@parameters);my %record;my %services;my %options;my $image_prefix = "icons/";my $image_suffix = "png";my $services_prefix = "/home/www/html/czf4bfu/services/";my $image_systemprefix = "$services_prefix";my $all_list = $services_prefix."index.html";sub check_icon{my ($fileh,$svcname) = @_;my $webfile = "$image_prefix$svcname.$image_suffix";my $file = "$image_systemprefix$webfile";open(EXTRA, "< $file") || return 1;close(EXTRA);print $fileh "<img src=\"$webfile\" alt=\"$svcname\" />";return 0;# } else {# print STDERR "nepodarilo se $svcname\n";return 1;# }}sub service_header{my ($svcname) = @_;open( SVC, "> $services_prefix$svcname.html") || return 1;print SVC "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"><html><head><title>Seznam poskytovatelů služby $svcname</title></head><body><h1>Poskytovatelé služby $svcname v síti CzFree.net</h1>";close(SVC);}sub service_footer{my ($svcname) = @_;open( SVC, ">> $services_prefix$svcname.html") || return 1;print SVC "<p id=\"summary\">Nalezených služeb tohoto typu: $services{$svcname}</p></body></html>";}# z jednoho deu udelej jeden HTMLsub makeone{my ($file) = @_;if (!$file) {$file = $all_list;}open (SVC, ">> $file") || die "Nelze pridat zaznam do $file: $_";print SVC "<div id=\"svc$record{IDPOLOZKY}\">\n";print SVC "<h2>\n";if ($record{TYP}) {check_icon(\*SVC, $record{TYP});}print SVC " $record{NAZEV}</h2>\n";print SVC "<p>";print SVC "<span id=\"id\">[$record{IDPOLOZKY}]</span> ";print SVC "<a href=\"$record{TYP}.html\" id=\"typ\">$record{TYP}</a>";if ($record{URL}) {print SVC "<a href=\"$record{URL}\" id=\"dns\">[dns]</a>";}if ($record{URLIP}) {print SVC "<a href=\"$record{URLIP}\" id=\"ip\">[ip-only]</a>";}if ($record{URLINET}) {print SVC "<a href=\"$record{URLINET}\" id=\"inet\">[internet]</a>";}if ($record{PRIVATNI}) {print SVC "(privátní) ";}print SVC "</p>\n";print SVC "<p>$record{POPIS}</p>\n";# print "# <dt id=\"typ\">typ</dt><dd>$record{TYP}</dd># ";if ($record{OBLASTI}) {print SVC "<dt id=\"oblasti\">oblasti</dt><dd>$record{OBLASTI}</dd>";}if ($record{IP}) {print SVC "<dt id=\"hostname\">hostname</dt><dd>$record{HOST}</dd>";}if ($record{IP}) {print SVC "<dt id=\"host\">IP</dt><dd>$record{IP}</dd>";}if ($record{KONTAKT}) {my $kontakt = $record{KONTAKT};print SVC "<dt id=\"kontakt\">kontakt</dt><dd>$record{KONTAKT}</dd>";}if ($record{ORIGIN}) {print SVC "<dt id=\"origin\">původ</dt><dd>$record{ORIGIN}</dd>";}if ($record{ALT}) {print SVC "<dt id=\"alt\">alternativní</dt><dd>$record{ALT}</dd>";}print SVC "</div>";close(SVC);}#getopts("", \%options );open(SVC, "> $all_list");print SVC "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"><html><head><title>Seznam služeb z CZF4BFU listu</title></head><body><h1>Seznam všech nalezených služeb</h1>";close(SVC);foreach my $file (@ARGV) {open(DEU, "< $file") || die("Chyba otevirani $file");print "Processing $file\n";while (<DEU>) {chomp;# pokus o ostraneni dosoveho CR$_ =~ s/\r$//;if (/^\s*$/ && $record{TYP}) {# prazdny radek, oddelovac# pokud nenacteme aspon prvni TYP, nedelame nic.# ochrana proti vice prazdnym radkum$record{FILE}= $file;$record{ORIGIN} = $file;$record{ORIGIN} =~ s/.*global-(\d+\.\d+\.\d+\.\d+).txt$/\1/;makeone($all_list,\%record);my $typ = $record{TYP};if (!$services{$typ}) {print "New service $typ\n";service_header($typ);$services{$typ} = 0;}makeone("$services_prefix$typ.html");$services{$typ}++;%record = ();} elsif (/^([A-Zi]+):\s*(.*)\s{0,1}$/) {# jelikoz se zda, ze prvni zaznam ma prioritu pred nasledujicimi, budu pro# jednoduchost mit jenom prvni zaznam tak, ze ty dalsi ignoruju$record{$1} = $2 unless ($record{$1});# print "dbg: $1 $2 $record{URL}\n";} else {print STDERR "Nepodporovany radek $_\n.";}} # whileclose(DEU);} # foreachopen (SVC, ">> $all_list") || die "Nelze pridat do $all_list";print SVC "</body></html>";foreach my $typ (keys %services) {service_footer($typ);}close(SVC);