]> git.donarmstrong.com Git - debbugs.git/blob - cgi/pkgreport.cgi
12a07421c57107293ea83955021a2d5d69f7a969
[debbugs.git] / cgi / pkgreport.cgi
1 #!/usr/bin/perl -wT
2
3 package debbugs;
4
5 use strict;
6 use POSIX qw(strftime tzset nice);
7
8 #require '/usr/lib/debbugs/errorlib';
9 require '/usr/lib/debbugs/common.pl';
10 #require '/debian/home/ajt/newajbug/common.pl';
11
12 require '/etc/debbugs/config';
13 require '/etc/debbugs/text';
14
15 nice(5);
16
17 sub readparse {
18         my ($in, $key, $val, %ret);
19         if (defined $ENV{"QUERY_STRING"} && $ENV{"QUERY_STRING"} ne "") {
20                 $in=$ENV{QUERY_STRING};
21         } elsif(defined $ENV{"REQUEST_METHOD"}
22                 && $ENV{"REQUEST_METHOD"} eq "POST")
23         {
24                 read(STDIN,$in,$ENV{CONTENT_LENGTH});
25         } else {
26                 return;
27         }
28         foreach (split(/&/,$in)) {
29                 s/\+/ /g;
30                 ($key, $val) = split(/=/,$_,2);
31                 $key=~s/%(..)/pack("c",hex($1))/ge;
32                 $val=~s/%(..)/pack("c",hex($1))/ge;
33                 $ret{$key}=$val;
34         }
35         return %ret;
36 }
37
38 my %param = readparse();
39
40 my ($pkg, $maint, $maintenc, $submitter, $severity, $status);
41
42 if (defined ($pkg = $param{'pkg'})) {
43 } elsif (defined ($maint = $param{'maint'})) {
44 } elsif (defined ($maintenc = $param{'maintenc'})) {
45 } elsif (defined ($submitter= $param{'submitter'})) { 
46 } elsif (defined ($severity = $param{'severity'})) { 
47         $status = $param{'status'} || 'open';
48 } else {
49         quit("You have to choose something to select by");
50 }
51
52 my $repeatmerged = ($param{'repeatmerged'} || "yes") eq "yes";
53 my $archive = ($param{'archive'} || "no") eq "yes";
54 my $include = $param{'include'} || "";
55 my $exclude = $param{'exclude'} || "";
56
57 my $Archived = $archive ? "Archived" : "";
58
59 my $this = "";
60
61 my %indexentry;
62 my %maintainer = &getmaintainers();
63 my %strings = ();
64
65 $ENV{"TZ"} = 'UTC';
66 tzset();
67
68 my $dtime = strftime "%a, %e %b %Y %T UTC", localtime;
69 my $tail_html = $debbugs::gHTMLTail;
70 $tail_html = $debbugs::gHTMLTail;
71 $tail_html =~ s/SUBSTITUTE_DTIME/$dtime/;
72
73 my $tag;
74 if (defined $pkg) {
75     $tag = "package $pkg";
76 } elsif (defined $maint) {
77     $tag = "maintainer $maint";
78 } elsif (defined $maintenc) {
79     $tag = "encoded maintainer $maintenc";
80 } elsif (defined $submitter) {
81     $tag = "submitter $submitter";
82 } elsif (defined $severity) {
83     $tag = "$status $severity bugs";
84 }
85
86 set_option("repeatmerged", $repeatmerged);
87 set_option("archive", $archive);
88 set_option("include", { map {($_,1)} (split /[\s,]+/, $include) })
89         if ($include);
90 set_option("exclude", { map {($_,1)} (split /[\s,]+/, $exclude) })
91         if ($exclude);
92
93 my @bugs;
94 if (defined $pkg) {
95     @bugs = pkgbugs($pkg);
96 } elsif (defined $maint) {
97     @bugs = maintbugs($maint);
98 } elsif (defined $maintenc) {
99     @bugs = maintencbugs($maintenc);
100 } elsif (defined $submitter) {
101     @bugs = submitterbugs($submitter);
102 } elsif (defined $severity) {
103     @bugs = severitybugs($status, $severity);
104 }
105
106 my $result = htmlizebugs(@bugs);
107
108 print "Content-Type: text/html\n\n";
109
110 print "<HTML><HEAD><TITLE>\n" . 
111     "$debbugs::gProject $Archived $debbugs::gBug report logs: $tag\n" .
112     "</TITLE></HEAD>\n" .
113     '<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#800080">' .
114     "\n";
115 print "<H1>" . "$debbugs::gProject $Archived $debbugs::gBug report logs: $tag" .
116       "</H1>\n";
117
118 if (defined $pkg) {
119     if (defined $maintainer{$pkg}) {
120         print "<p>Maintainer for $pkg is <a href=\"" 
121               . mainturl($maintainer{$pkg}) . "\">"
122               . htmlsanit($maintainer{$pkg}) . "</a>.</p>\n";
123     }
124     print "<p>Note that with multi-binary packages there may be other\n";
125     print "reports filed under the different binary package names.</p>\n";
126     print "\n";
127     printf "<p>You might like to refer to the <a href=\"%s\">%s package page</a></p>\n", "http://packages.debian.org/$pkg", "$pkg";
128 } elsif (defined $maint || defined $maintenc) {
129     print "<p>Note that maintainers may use different Maintainer fields for\n";
130     print "different packages, so there may be other reports filed under\n";
131     print "different addresses.\n";
132 } elsif (defined $submitter) {
133     print "<p>Note that people may use different email accounts for\n";
134     print "different bugs, so there may be other reports filed under\n";
135     print "different addresses.\n";
136 }
137
138 print $result;
139
140 print "<hr>\n";
141 print "$tail_html";
142
143 print "</body></html>\n";