head 1.5; access; symbols INITIAL:1.1.1.1 VENDOR:1.1.1; locks; strict; comment @# @; 1.5 date 2005.02.24.19.08.22; author rse; state dead; branches; next 1.4; 1.4 date 2003.09.16.10.21.12; author rse; state Exp; branches; next 1.3; 1.3 date 2001.11.19.09.17.49; author rse; state Exp; branches; next 1.2; 1.2 date 2001.10.26.19.31.23; author rse; state Exp; branches; next 1.1; 1.1 date 2001.08.28.12.57.50; author rse; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2001.08.28.12.57.50; author rse; state Exp; branches; next ; desc @@ 1.5 log @remove old package repository stuff @ text @#!/e/openpkg/sw/bin/perl ## ## pkg.cgi ## require 5.000; use IO; # switch to unbuffered I/O $|++; # let us catch runtime errors... eval { my $dbfile = 'pkg.db'; my $rpmurl = 'ftp://ftp.openpkg.org/current'; # PATH_INFO $path_info = $ENV{'PATH_INFO'}; # QUERY_STRING $query_string = $ENV{'QUERY_STRING'}; if ($ENV{'REQUEST_METHOD'} eq 'POST') { $query_string = ''; while () { $query_string .= $_; } } %qs = (); @@query = split(/&/, $query_string); foreach $query (@@query) { $query =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg; if ($query =~ m|=|) { my ($name, $value) = split(/=/, $query); $qs{$name} = $value; } else { $qs{$query} = 1; } } # send a HTTP response for a complete page sub send_page { my ($type, $data) = @@_; print "Content-type: $type\n"; print "Content-length: ".sprintf("%d", length($data))."\n"; print "Connection: close\n"; print "Server: $our_name/$our_vers\n"; print "\n"; print $data; } my $fh = new IO::File "); $fh->close; require "$dbfile"; my $db = $VAR1; my $c = {}; my $g = {}; my $p = {}; foreach my $name (keys(%{$db})) { $p->{$name} = 1; $g->{$db->{$name}->{"Group"}} = 1; $c->{$db->{$name}->{"Distribution"}} = 1; } my $nc = keys(%{$c}); my $ng = keys(%{$g}); my $np = keys(%{$p}); $page =~ s|%NC%|$nc|sg; $page =~ s|%NG%|$ng|sg; $page =~ s|%NP%|$np|sg; my $cl = ''; foreach my $class (sort(keys(%{$c}))) { $class =~ s|^OpenPKG \[(\S+)\]|$1|s; $cl .= "$class
"; } $page =~ s|%CL%|$cl|s; my $gl = ''; foreach my $group (sort(keys(%{$g}))) { $gl .= "$group
"; } $page =~ s|%GL%|$gl|s; # root (OpenPKG-CURRENT) # by-class (CORE) # by-group (Mail) # package (openssh) if ($qs{file} ne '') { } &send_page("text/html", $page); # die gracefully exit(0); # ...the runtime error handler: }; if ($@@) { my $text = $@@; print "Content-type: text/html\n"; print "Connection: close\n"; print "\n"; print "

Internal Error

\n"; print $text; } @ 1.4 log @flush pending changes @ text @@ 1.3 log @ad-hoc and ugly fixes for old repo browsing stuff @ text @d16 1 a16 1 my $rpmdir = 'ftp://ftp.openpkg.org/current'; d51 3 a53 7 my $fh = new IO::File "); $fh->close; my $fh = new IO::File "); d57 1 a57 1 my $DB = $VAR1; d59 32 a90 1 my $page = ''; d92 1 a92 16 my $ng = 0; my $np = 0; my $nf = 0; foreach $g (sort(keys(%{$DB}))) { $ng++; foreach $n (keys(%{$DB->{$g}})) { $np++; foreach $f (keys(%{$DB->{$g}->{$n}->{FILES}})) { $nf++; } } } $head =~ s|%NG%|$ng|sg; $head =~ s|%NP%|$np|sg; $head =~ s|%NF%|$nf|sg; a93 237 if ($qs{file} ne '') { my $group; my $name; my $file; foreach $g (sort(keys(%{$DB}))) { foreach $n (keys(%{$DB->{$g}})) { foreach $f (keys(%{$DB->{$g}->{$n}->{FILES}})) { if ($f eq $qs{file}) { $group = $g; $name = $n; $file = $f; last; } } } } my $info = $DB->{$group}->{$name}->{FILES}->{$file}->{INFO}; $info =~ s|\n$||s; $info =~ s|(http://\S+)|$1|sg; my $desc; ($info, $desc) = ($info =~ m|^(.+)Description:\s+(.+)$|s); $page .= "OpenPKG "; $page .= "/ $group "; $page .= " / $name "; $page .= " / $file:"; $page .= "

\n"; $page .= "\n". "" . "" . "\n"; $page .= "\n"; $page .= "\n"; $page .= "\n"; $page .= ""; $page .= "\n"; $page .= "\n"; if (-f "dep/$name.png") { $page .= "\n"; $page .= "\n"; } $page .= "
" . "$file
" . "".$DB->{$group}->{$name}->{SUMMARY}."
Package Meta-Information:
\n";
    $page .= $info;
    $page .= "
Package Description:
".$desc."

Package Files:
\n"; $page .= "
\n";
    $page .= $DB->{$group}->{$name}->{FILES}->{$file}->{FLIST};
    $page .= "
\n"; $page .= "
Package Dependency Graph:
\n"; $page .= "
\n"; $page .= "
\n"; } elsif ($qs{package} ne '') { my $group; my $name; foreach $g (sort(keys(%{$DB}))) { foreach $n (keys(%{$DB->{$g}})) { if ($n eq $qs{package}) { $group = $g; $name = $n; last; } } } $page .= "OpenPKG "; $page .= "/ $group "; $page .= " / $name:"; $page .= "

\n"; $page .= "\n". "" . "" . "\n"; my @@FL = keys(%{$DB->{$group}->{$name}->{FILES}}); my @@FL_SH = sort(grep(/.sh$/, @@FL)); my @@FL_RPM = sort(grep(/.rpm$/, @@FL)); my @@FL_SH_SRC = sort(grep(/\.src\.sh$/, @@FL_SH)); my @@FL_SH_BIN = sort(grep(! /\.src\.sh$/, @@FL_SH)); my @@FL_RPM_SRC = sort(grep(/\.src\.rpm$/, @@FL_RPM)); my @@FL_RPM_BIN = sort(grep(! /\.src\.rpm$/, @@FL_RPM)); @@FL = (@@FL_SH_SRC, @@FL_SH_BIN, @@FL_RPM_SRC, @@FL_RPM_BIN); my $bgcolor = ''; my $bgcolidx = 0; foreach my $file (@@FL) { if ($header1 ne '') { $page .= $header1; $header1 = ''; } if ($header2 ne '') { $page .= $header2; $header2 = ''; } my $h = $DB->{$group}->{$name}->{FILES}->{$file}; my $size = $h->{SIZE}; my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($h->{MTIME}); my $mtime = sprintf("%02d-%02d-%04d %02d:%02d:%02d", $mday, $mon+1, $year+1900, $hour, $min, $sec); my $color = ''; $color = "#666666" if ($file =~ m|\.sh|); $color = "#666666" if ($file =~ m|\.src\.sh|); $color = "#a09080" if ($file =~ m|\.rpm|); $color = "#908070" if ($file =~ m|\.src\.rpm|); $bgcolidx = ($bgcolidx + 1) % 2; $bgcolor = ("#e5e0d0", "#f5f0e0")[$bgcolidx]; $size = sprintf("%d", $size / 1024); $size =~ s|(.)(.{3})$|$1,$2|; $page .= "" . "" . "" . "" . "" . "\n"; } $page .= "
" . "$name
" . "".$DB->{$group}->{$name}->{SUMMARY}."
$file". ($file =~ m/\.sh$/ ? " " : "INFO") . "".$size." KB".$mtime."
\n"; } elsif ($qs{group} ne '') { my $group = $qs{group}; $page .= "OpenPKG "; $page .= " / $group:"; $page .= "

\n"; foreach my $name (sort(keys(%{$DB->{$group}}))) { my $header2 = "\n". "" . "" . "\n"; my @@FL = keys(%{$DB->{$group}->{$name}->{FILES}}); my @@FL_SH = sort(grep(/.sh$/, @@FL)); my @@FL_RPM = sort(grep(/.rpm$/, @@FL)); my @@FL_SH_SRC = sort(grep(/\.src\.sh$/, @@FL_SH)); my @@FL_SH_BIN = sort(grep(! /\.src\.sh$/, @@FL_SH)); my @@FL_RPM_SRC = sort(grep(/\.src\.rpm$/, @@FL_RPM)); my @@FL_RPM_BIN = sort(grep(! /\.src\.rpm$/, @@FL_RPM)); @@FL = (@@FL_SH_SRC, @@FL_SH_BIN, @@FL_RPM_SRC, @@FL_RPM_BIN); my $bgcolor = ''; my $bgcolidx = 0; foreach my $file (@@FL) { if ($file =~ m|^.*${display}.*$|) { if ($header1 ne '') { $page .= $header1; $header1 = ''; } if ($header2 ne '') { $page .= $header2; $header2 = ''; } my $h = $DB->{$group}->{$name}->{FILES}->{$file}; my $size = $h->{SIZE}; my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($h->{MTIME}); my $mtime = sprintf("%02d-%02d-%04d %02d:%02d:%02d", $mday, $mon+1, $year+1900, $hour, $min, $sec); my $color = ''; $color = "#666666" if ($file =~ m|\.sh|); $color = "#666666" if ($file =~ m|\.src\.sh|); $color = "#a09080" if ($file =~ m|\.rpm|); $color = "#908070" if ($file =~ m|\.src\.rpm|); $bgcolidx = ($bgcolidx + 1) % 2; $bgcolor = ("#e5e0d0", "#f5f0e0")[$bgcolidx]; $size = sprintf("%d", $size / 1024); $size =~ s|(.)(.{3})$|$1,$2|; $page .= "" . "" . "" . "" . "" . "\n"; } } $page .= "
" . "$name
" . "".$DB->{$group}->{$name}->{SUMMARY}."
$file". ($file =~ m/\.sh$/ ? " " : "INFO") . "".$size." KB".$mtime."
\n"; $page .= "

\n"; } } else { my @@GL = keys(%{$DB}); my @@GL_BS = sort(grep(/Bootstrapping/, @@GL)); my @@GL_OT = sort(grep(! /Bootstrapping/, @@GL)); @@GL = (@@GL_BS, @@GL_OT); my $cols = 0; $page .= "OpenPKG:

"; $page .= ""; my $now = time(); foreach my $group (@@GL) { $page .= "" if ($cols == 0); $page .= ""; $cols++; if ($cols >= 6) { $cols = 0; $page .= "\n"; } } if ($cols > 0 and $cols < 6) { while ($cols++ < 6) { $page .= ""; } $page .= "\n"; } $page .= "
"; $page .= "\n"; $page .= "\n"; $page .= "\n"; $page .= "\n"; $page .= "\n"; $page .= "\n"; $page .= "\n"; $page .= "
\n"; $page .= "$group
\n"; $page .= "
\n"; foreach my $name (sort(keys(%{$DB->{$group}}))) { if ($DB->{$group}->{$name}->{LICENSE} =~ m/[Cc]ommercial/) { next; } my $mtime = 0; foreach my $file (sort(keys(%{$DB->{$group}->{$name}->{FILES}}))) { if ($mtime < $DB->{$group}->{$name}->{FILES}->{$file}->{MTIME}) { $mtime = $DB->{$group}->{$name}->{FILES}->{$file}->{MTIME}; } } if ($mtime >= ($now - (60*60*24*1))) { $page .= "$name\n"; } else { $page .= "$name\n"; } $page .= "
"; } $page .= "
\n"; $page .= "
 
"; d96 1 a96 1 &send_page("text/html", $head . $page . $foot); @ 1.2 log @fix repository listings after recent changes @ text @d1 1 a1 1 #!/usr/bin/perl d16 1 a16 1 my $rpmdir = 'pkg'; @ 1.1 log @Initial revision @ text @d191 1 a191 1 "$file" . d249 1 a249 1 "$file" . @ 1.1.1.1 log @Import www.openpkg.org website @ text @@