aboutsummaryrefslogtreecommitdiff
path: root/en/cgi/pds.cgi
diff options
context:
space:
mode:
authorWolfram Schneider <wosch@FreeBSD.org>1998-04-19 13:40:42 +0000
committerWolfram Schneider <wosch@FreeBSD.org>1998-04-19 13:40:42 +0000
commit9f397d91190fac307834c6ecd33d37df86dc226a (patch)
tree5cd477ac47e469ff252b60728b97c3b09fe0b5b6 /en/cgi/pds.cgi
parent7b26dc0dcaf9f67ec45ef050566f2b97e9cada3d (diff)
downloaddoc-9f397d91190fac307834c6ecd33d37df86dc226a.tar.gz
doc-9f397d91190fac307834c6ecd33d37df86dc226a.zip
Rewritten in perl.
Better error check if we don't find the sources. Use the standard FreeBSD Web layout functions. Print MD5 checksum for the port.
Notes
Notes: svn path=/www/; revision=2706
Diffstat (limited to 'en/cgi/pds.cgi')
-rwxr-xr-xen/cgi/pds.cgi149
1 files changed, 104 insertions, 45 deletions
diff --git a/en/cgi/pds.cgi b/en/cgi/pds.cgi
index f45a3acd81..da0df90b3b 100755
--- a/en/cgi/pds.cgi
+++ b/en/cgi/pds.cgi
@@ -1,53 +1,112 @@
-#!/bin/sh
-# Copyright (c) 1997 Wolfram Schneider <wosch@FreeBSD.ORG>, Berlin.
+#!/usr/bin/perl
+# Copyright (c) 1997-1998 Wolfram Schneider <wosch@FreeBSD.ORG>, Berlin.
# All rights reserved.
#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
# pds.cgi - FreeBSD Ports download sources cgi script
# print a list of source files for a port
#
+# $Id: pds.cgi,v 1.2 1998-04-19 13:40:42 wosch Exp $
+
+$hsty_base = '';
+
+require "./cgi-lib.pl";
+require "./cgi-style.pl";
+
+$file = $ENV{'QUERY_STRING'};
+$file2="$file/Makefile";
-file="$QUERY_STRING"
-file2="$file/Makefile"
-CVSROOT=/home/ncvs; export CVSROOT
+$cvsroot = "/home/ncvs";
+$co = '/usr/bin/co';
+$make = '/usr/bin/make';
# set DISTDIR to a dummy directory.
-DISTDIR=/tmp/___pds.cgi___; export DISTDIR
-
-cat <<EOF
-Content-type: text/html
-
-EOF
-
-case "$file" in
- ports/*/*) ;;
- *) echo "usage: pds module"; exit;;
-esac
-
-if [ -f "$CVSROOT/${file2},v" ]; then :
-else
- echo "$file2 does not exist"
- exit
-fi
-
-# security check for ../foo/bar and foo/../../bar/
-case "$file2" in *..*) echo "$file2 does not exist"; exit;; esac
-
- cat <<EOF
-<html>
-<head>
-<title>Sources for $file</title>
-</head>
-<body BGCOLOR="#ffffff" TEXT="#000000"
- vlink="c00000" link="#0000ff" alink="#eeee00">
-
-<h1>Sources for $file</h1>
-
-EOF
-cvs -Q co -p $file2 | make -I /home/fenner/mk -f - bill-fetch |
- perl -ne 'print qq{<a href="$1">$1</a><br>\n}
- if m%((http|ftp)://\S+)%'
-cat <<EOF
-
-</body>
-</html>
-EOF
+$ENV{'DISTDIR'} = "/tmp/___pds.cgi___" . $<;
+
+sub footer {
+ return qq{<P>\n<A HREF="} .
+ ($ENV{'PATH_INFO'} ? 'http://www.freebsd.org/ports/' : '../ports/') .
+ qq{">Help</a>\n} . &html_footer;
+}
+
+print &short_html_header("FreeBSD Ports download script");
+print "<p>\n";
+if ($file !~ m%^ports/[^/]+/[^/]+$%) {
+ print qq{wrong module name: "$file"\n} . &footer;
+ exit;
+}
+
+if (! -f "$cvsroot/$file2,v") {
+ print qq{file "$file2" does no exists.\n} . &footer;
+ exit;
+}
+
+if ($file =~ /\.\./) {
+ print qq{$file2 does not exist\n} . &footer;
+ exit;
+}
+
+print "<h2>Sources for $file</h2>\n\n";
+
+open(MAKE, "$co -q -p $cvsroot/$file2 | $make -I /home/fenner/mk -f - bill-fetch |") || do {
+ print "Sorry, cannot run make\n" . &footer;
+ exit;
+};
+
+local(@sources);
+while(<MAKE>) {
+ push(@sources, $_);
+}
+close MAKE;
+
+if ($#sources < 0) {
+ print "Sorry, did not found the sources for $file\n" . &footer;
+ exit;
+}
+
+foreach (@sources) {
+ print qq{<a href="$1">$1</a><br>\n} if m%((http|ftp)://\S+)%;
+}
+
+local($md5file) = "$cvsroot/$file/files/md5,v";
+if (-f $md5file) {
+ open(CO, "-|") || exec ($co, '-q', '-p', $md5file) || do {
+ print "Cannot read MD5 checksum file for $file\n" . &footer;
+ exit;
+ };
+ local(@checksums);
+ while(<CO>) {
+ push(@checksums, $_) if $_;
+ }
+ close CO;
+ if ($#checksums >= 0) {
+ print "<h3>MD5 Checksum for $file</h3>\n\n";
+ print "<PRE>\n";
+ print @checksums;
+ print "</PRE>\n";
+ }
+}
+
+
+print &footer;
+exit;