| #!/usr/bin/perl |
| # Copyright (c) 2006 Eclipse Foundation, made available under EPL v1.0 |
| # Contributors Ward Cunningham, Bjorn Freeman-Benson |
| |
| use strict; |
| use Sys::Hostname; |
| require 'siteconfig'; |
| |
| print "Content-type: text/html\n\n"; |
| our $site; |
| my $prog = "//dash/commits/web-api/commit-details.php"; |
| |
| # id date yearmonth project repository filename type revision change login message |
| # project date login type change message |
| |
| $_ = $ENV{QUERY_STRING} || 'top=technology&project=technology.dash&year=2006&month=200602&company=individual&login=wcunningh'; |
| |
| #my $fields = 'id|time|year|month|day|top|project|cvsroot|file|type|version|change|message|login'; |
| my $fields = 'id|time|year|month|day|top|project|file|type|version|change|message|login|company'; |
| my $var = 'year|month|day|top|project|company|login|type|change|message'; |
| my $num = 'change|message'; |
| my ($args) = /((($var)=[A-Za-z0-9_.-]+&?)+)/; |
| my $log; |
| |
| my %cvs = ( |
| '/cvsroot/webtools' => 'WebTools', |
| '/cvsroot/technology' => 'Technology', |
| '/cvsroot/birt' => 'BIRT', |
| '/cvsroot/eclipse' => 'Eclipse', |
| '/cvsroot/tptp' => 'TPTP', |
| '/cvsroot/tools' => 'Tools' |
| ); |
| |
| |
| print <<; |
| <html><head> |
| <META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW"> |
| </head><body> |
| <table width="100%" border="0" cellpadding="0" cellspacing="0"> |
| <tr style="background-image: url(header_bg.gif);"> |
| <td> |
| <a href="http://www.eclipse.org/"><img src="header_logo.gif" width="163" height="68" border="0" alt="Eclipse Logo" class="logo" /></a> |
| </td> |
| <td align="right" style="color: white; font-family: verdana,arial,helvetica; font-size: 1.25em; font-style: italic;"><b>Eclipse dashboard </b></font> </td> |
| </tr> |
| </table> |
| |
| print "<h2>commit details"; |
| while (/($var)=([A-Za-z0-9_.-]{2,})/g) { |
| print "<br>for $1 $2"; |
| my $qq = $_; |
| my $var = $1; |
| $qq =~ s/$1=$2&?//; |
| $qq =~ s/&$//; |
| print " <a href=details.cgi?$qq><font size=-2>all ${var}s</font></a>"; |
| $fields =~ s/$var//; |
| } |
| print "</h2>"; |
| |
| $fields =~ s/id|year|month|day|top|cvsroot|type//g; |
| my @fields = split (/\|/, $fields); |
| my @indices; |
| for (0..$#fields) { |
| push (@indices, $_) if $fields[$_]; |
| } |
| #print "$fields are ", map ("[$_] ", @indices), "<br>"; |
| |
| query(); |
| |
| sub query { |
| |
| my $sockaddr = 'S n a4 x8'; |
| my $AF_INET = 2; |
| my $SOCK_STREAM = 1; |
| chop(my $hostname = hostname()); |
| |
| my ($name, $aliases, $proto) = getprotobyname('tcp'); |
| my ($name, $aliases, $type, $len, $thisaddr) = gethostbyname($hostname); |
| my ($name, $aliases, $type, $len, $thataddr) = gethostbyname($site); |
| |
| my $this = pack($sockaddr, $AF_INET, 0, $thisaddr); |
| my $that = pack($sockaddr, $AF_INET, 80, $thataddr); |
| |
| socket (S, $AF_INET, $SOCK_STREAM, $proto) || die "socket: $!"; |
| bind(S, $this) || die "bind: $!"; |
| connect(S, $that) || die "connect: $!"; |
| |
| select(S); |
| $| = 1; |
| print S "GET /$prog?$args\r\n"; |
| |
| select(STDOUT); |
| print "<table border=0 cellspacing=0 cellpadding=3>"; |
| print "<tr>", map (" <td>$_ ", @fields[@indices]); |
| my $i; |
| while (<S>) { |
| if (/^#/) { |
| $log .= "$_<br>"; |
| next; |
| } |
| my @fields = split /\t/; |
| my $color = ($i++)/3%2 ? '#aaffaa' : 'ccffcc'; |
| $fields[7] =~ /^((\/[^\/]+){2})\/(.*\/([^\/]+))/; |
| my $cvs = $cvs{$1}; |
| $fields[7] = "<a href=\"http:\/\/dev.eclipse.org\/viewcvs\/index.cgi\/$3?rev=$fields[9]&cvsroot=\u${cvs}_Project&content-type=text\/vnd.viewcvs-markup\">$4<\/a>"; |
| print "<tr bgcolor=$color>", map ("<td> $_ ", @fields[@indices]); |
| } |
| print "</table>"; |
| } |