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 (<STDIN>) { $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 "<pkg.html";
my $page = '';
$page .= $_ while (<$fh>);
$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 .= "<a href=\"pkg.cgi?class=$class\">$class</a><br>";
}
$page =~ s|%CL%|$cl|s;

my $gl = '';
foreach my $group (sort(keys(%{$g}))) {
    $gl .= "<a href=\"pkg.cgi?group=$group\">$group</a><br>";
}
$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 "<h1>Internal Error</h1>\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 "<pkg.head.html";
my $head = '';
$head .= $_ while (<$fh>);
$fh->close;
my $fh = new IO::File "<pkg.foot.html";
my $foot = '';
$foot .= $_ while (<$fh>);
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+)|<a href="$1">$1</a>|sg;
    my $desc;
    ($info, $desc) = ($info =~ m|^(.+)Description:\s+(.+)$|s);
    $page .= "<a href=\"pkg.cgi\"><font size=+1><b>OpenPKG</b></font></a> ";
    $page .= "<a href=\"pkg.cgi?group=$group\"><font size=+1><b>/ $group</b></font></a> ";
    $page .= "<a href=\"pkg.cgi?package=$name\"><font size=+1><b> / $name</b></font></a> ";
    $page .= "<font size=+1><b> / $file:</b></font>";
    $page .= "<p>\n";
    $page .= "<table width=600 cellspacing=0 cellpadding=0 border=0>\n".
             "<tr>" .
             "<td bgcolor=\"#b5b0a0\">" .
             "<font size=+1 color=\"#ffffff\"><b>$file</b></font><br>" .
             "<font color=\"#ffffff\">".$DB->{$group}->{$name}->{SUMMARY}."</font></td>"  .
             "</tr>\n";
    $page .= "<tr><td bgcolor=\"#f5f0e0\"><b>Package Meta-Information:</b></td></tr>\n";
    $page .= "<tr><td bgcolor=\"#e5e0d0\"><pre>\n";
    $page .= $info;
    $page .= "</pre></td></tr>\n";
    $page .= "<tr><td bgcolor=\"#f5f0e0\"><b>Package Description:</b></td></tr>\n";
    $page .= "<tr><td bgcolor=\"#e5e0d0\">".$desc."<br><br></td></tr>";
    $page .= "<tr><td bgcolor=\"#f5f0e0\"><b>Package Files:</b></td></tr>\n";
    $page .= "<tr><td bgcolor=\"#e5e0d0\"><font size=-2>\n";
    $page .= "<pre>\n";
    $page .= $DB->{$group}->{$name}->{FILES}->{$file}->{FLIST};
    $page .= "</pre>\n";
    $page .= "</font></td></tr>\n";
    if (-f "dep/$name.png") {
        $page .= "<tr><td bgcolor=\"#f5f0e0\"><b>Package Dependency Graph:</b></td></tr>\n";
        $page .= "<tr><td bgcolor=\"#e5e0d0\"><font size=-2>\n";
        $page .= "<blockquote><img src=\"dep/$name.png\"></blockquote>\n";
        $page .= "</td></tr>\n";
    }
    $page .= "</table>\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 .= "<a href=\"pkg.cgi\"><font size=+1><b>OpenPKG</b></font></a> ";
    $page .= "<a href=\"pkg.cgi?group=$group\"><font size=+1><b>/ $group</b></font></a> ";
    $page .= "<font size=+1><b> / $name:</b></font>";
    $page .= "<p>\n";
    $page .= "<table width=600 cellspacing=0 cellpadding=0 border=0>\n".
             "<tr>" .
             "<td colspan=4 bgcolor=\"#b5b0a0\">" .
             "<a name=\"$name\"><font size=+1 color=\"#ffffff\"><b>$name</b></font></a><br>" .
             "<font color=\"#ffffff\">".$DB->{$group}->{$name}->{SUMMARY}."</font></td>"  .
             "</tr>\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 .= "<tr bgcolor=\"$bgcolor\">" .
                 "<td width=300><a href=\"$rpmdir/SRC/$file\"><font color=\"$color\"><tt>$file</tt></font></a></td>" .
                 "<td width=50 align=right>".
                 ($file =~ m/\.sh$/ ? "&nbsp;" :
                 "<a href=\"pkg.cgi?file=$file\"><font size=-1 color=\"#a09080\"><b>INFO</b></font></a>") . "</td>" .
                 "<td width=100 align=right>".$size." KB</td>" .
                 "<td width=150 align=right><tt>".$mtime."</tt></td>" .
                 "</tr>\n";
    }
    $page .= "</table>\n";
}
elsif ($qs{group} ne '') {
    my $group = $qs{group};
    $page .= "<a href=\"pkg.cgi\"><font size=+1><b>OpenPKG</b></font></a> ";
    $page .= "<font size=+1><b> / $group:</b></font>";
    $page .= "<p>\n";
    foreach my $name (sort(keys(%{$DB->{$group}}))) {
        my $header2 = "<table width=600 cellspacing=0 cellpadding=0 border=0>\n".
                      "<tr>" .
                      "<td colspan=4 bgcolor=\"#b5b0a0\">" .
                      "<a href=\"pkg.cgi?package=$name\"><font size=+1 color=\"#ffffff\"><b>$name</b></font></a><br>" .
                      "<font color=\"#ffffff\">".$DB->{$group}->{$name}->{SUMMARY}."</font></td>"  .
                      "</tr>\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 .= "<tr bgcolor=\"$bgcolor\">" .
                         "<td width=300><a href=\"$rpmdir/SRC/$file\"><font color=\"$color\"><tt>$file</tt></font></a></td>" .
                         "<td width=50 align=right>".
                         ($file =~ m/\.sh$/ ? "&nbsp;" :
                         "<a href=\"pkg.cgi?file=$file\"><font size=-1 color=\"#a09080\"><b>INFO</b></font></a>") . "</td>" .
                         "<td width=100 align=right>".$size." KB</td>" .
                         "<td width=150 align=right><tt>".$mtime."</tt></td>" .
                         "</tr>\n";
            }
        }
        $page .= "</table>\n";
        $page .= "<p>\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 .= "<font size=+1><b>OpenPKG:</b></font><p>";
    $page .= "<table cellspacing=2 cellpadding=0 border=0>";
    my $now = time();
    foreach my $group (@@GL) {
        $page .= "<tr>" if ($cols == 0);
        $page .= "<td bgcolor=\"#e5e0d0\" width=90 valign=top>";
        $page .= "<table width=90 cellspacing=0 cellpadding=2 border=0>\n";
        $page .= "<tr>\n";
        $page .= "<td bgcolor=\"#b5b0a0\">\n";

        $page .= "<a href=\"pkg.cgi?group=$group\"><font color=\"#ffffff\"><b>$group</b></font><br>\n";
        $page .= "</td>\n";
        $page .= "</tr>\n";
        $page .= "<tr>\n";
        $page .= "<td>\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 .= "<a href=\"pkg.cgi?package=$name\"><font color=\"#000000\">$name</font></a>\n";
            }
            else {
                $page .= "<a href=\"pkg.cgi?package=$name\">$name</a>\n";
            }
            $page .= "<br>";
        }
        $page .= "</td>\n";
        $page .= "</tr>\n";
        $page .= "</table>\n";

        $page .= "</td>";
        $cols++;
        if ($cols >= 6) {
            $cols = 0;
            $page .= "</tr>\n"; 
        }
    }
    if ($cols > 0 and $cols < 6) {
        while ($cols++ < 6) {
            $page .= "<td bgcolor=\"#e5e0d0\" width=90 valign=top>&nbsp;</td>";
        }
        $page .= "</tr>\n";
    }
    $page .= "</table>";
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
                 "<td width=300><a href=\"$rpmdir/$file\"><font color=\"$color\"><tt>$file</tt></font></a></td>" .
d249 1
a249 1
                         "<td width=300><a href=\"$rpmdir/$file\"><font color=\"$color\"><tt>$file</tt></font></a></td>" .
@


1.1.1.1
log
@Import www.openpkg.org website
@
text
@@
