summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xCGI.tcl349
-rw-r--r--CHANGES3
-rwxr-xr-xbug_form.tcl221
-rw-r--r--defparams.tcl171
-rw-r--r--globals.tcl454
-rwxr-xr-xwhineatnews.tcl64
6 files changed, 3 insertions, 1259 deletions
diff --git a/CGI.tcl b/CGI.tcl
deleted file mode 100755
index b2c839865..000000000
--- a/CGI.tcl
+++ /dev/null
@@ -1,349 +0,0 @@
-# -*- Mode: tcl; indent-tabs-mode: nil -*-
-#
-# The contents of this file are subject to the Mozilla Public License
-# Version 1.0 (the "License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-# License for the specific language governing rights and limitations
-# under the License.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are Copyright (C) 1998
-# Netscape Communications Corporation. All Rights Reserved.
-#
-# Contributor(s): Terry Weissman <terry@mozilla.org>
-
-source "globals.tcl"
-
-proc url_decode {buf} {
- regsub -all {\\(.)} $buf {\1} buf ; regsub -all {\\} $buf {\\\\} buf ;
- regsub -all { } $buf {\ } buf ; regsub -all {\+} $buf {\ } buf ;
- regsub -all {\$} $buf {\$} buf ; regsub -all \n $buf {\n} buf ;
- regsub -all {;} $buf {\;} buf ; regsub -all {\[} $buf {\[} buf ;
- regsub -all \" $buf \\\" buf ; regsub ^\{ $buf \\\{ buf ;
- regsub -all -nocase {%([a-fA-F0-9][a-fA-F0-9])} $buf {[format %c 0x\1]} buf
- eval return \"$buf\"
-}
-
-proc url_quote {var} {
- regsub -all { } "$var" {%20} var
- regsub -all {=} "$var" {%3d} var
- regsub -all "\n" "$var" {%0a} var
- return $var
-}
-
-proc lookup { a key } {
- global $a
- set ref [format %s(%s) $a $key]
- if { [ info exists $ref] } {
- eval return \$$ref
- } else {
- return ""
- }
-}
-
-proc ProcessFormFields {buffer} {
- global FORM MFORM
- catch {unset FORM}
- catch {unset MFORM}
- set remaining $buffer
- while {![cequal $remaining ""]} {
- if {![regexp {^([^&]*)&(.*)$} $remaining foo item remaining]} {
- set item $remaining
- set remaining ""
- }
- if {![regexp {^([^=]*)=(.*)$} $item foo name value]} {
- set name $item
- set value ""
- }
- set value [url_decode $value]
- if {![cequal $value ""]} {
- append FORM($name) $value
- lappend MFORM($name) $value
- } else {
- set isnull($name) 1
- }
- }
- if {[info exists isnull]} {
- foreach name [array names isnull] {
- if {![info exists FORM($name)]} {
- set FORM($name) ""
- set MFORM($name) ""
- }
- }
- }
-}
-
-proc FormData { field } {
- global FORM
- return $FORM($field)
-}
-
-if { [info exists env(REQUEST_METHOD) ] } {
- if { $env(REQUEST_METHOD) == "GET" } {
- set buffer [lookup env QUERY_STRING]
- } else { set buffer [ read stdin $env(CONTENT_LENGTH) ] }
- ProcessFormFields $buffer
-}
-
-proc html_quote { var } {
- regsub -all {&} "$var" {\&amp;} var
- regsub -all {<} "$var" {\&lt;} var
- regsub -all {>} "$var" {\&gt;} var
- return $var
-}
-proc value_quote { var } {
- regsub -all {&} "$var" {\&amp;} var
- regsub -all {"} "$var" {\&quot;} var
- regsub -all {<} "$var" {\&lt;} var
- regsub -all {>} "$var" {\&gt;} var
- return $var
-}
-
-proc value_unquote { var } {
- regsub -all {&quot;} $var "\"" var
- regsub -all {&lt;} $var "<" var
- regsub -all {&gt;} $var ">" var
- regsub -all {&amp;} $var {\&} var
- return $var
-}
-
-foreach pair [ split [lookup env HTTP_COOKIE] ";" ] {
- set pair [string trim $pair]
- set eq [string first = $pair ]
- if {$eq == -1} {
- set COOKIE($pair) ""
- } else {
- set COOKIE([string range $pair 0 [expr $eq - 1]]) [string range $pair [expr $eq + 1] end]
- }
-}
-
-proc navigation_header {} {
- global COOKIE FORM next_bug
- set buglist [lookup COOKIE BUGLIST]
- if { $buglist != "" } {
- set bugs [split $buglist :]
- set cur [ lsearch -exact $bugs $FORM(id) ]
- puts "<B>Bug List:</B> ([expr $cur + 1] of [llength $bugs])"
- puts "<A HREF=\"show_bug.cgi?id=[lindex $bugs 0]\">First</A>"
- puts "<A HREF=\"show_bug.cgi?id=[lindex $bugs [expr [ llength $bugs ] - 1]]\">Last</A>"
- if { $cur > 0 } {
- puts "<A HREF=\"show_bug.cgi?id=[lindex $bugs [expr $cur - 1]]\">Prev</A>"
- } else {
- puts "<I><FONT COLOR=\#777777>Prev</FONT></I>"
- }
- if { $cur < [expr [ llength $bugs ] - 1] } {
- set next_bug [lindex $bugs [expr $cur + 1]]
- puts "<A HREF=\"show_bug.cgi?id=$next_bug\">Next</A>"
- } else {
- puts "<I><FONT COLOR=\#777777>Next</FONT></I>"
- }
- }
- puts "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF=\"query.cgi\">Query page</A>"
- puts "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF=\"enter_bug.cgi\">Enter new bug</A>"
-}
-
-proc make_options { src default {isregexp 0} } {
- set last "" ; set popup "" ; set found 0
- foreach item $src {
- if {$item == "-blank-" || $item != $last} {
- if { $item == "-blank-" } { set item "" }
- set last $item
- if {$isregexp ? [regexp $default $item] : [cequal $default $item]} {
- append popup "<OPTION SELECTED VALUE=\"$item\">$item"
- set found 1
- } else {
- append popup "<OPTION VALUE=\"$item\">$item"
- }
- }
- }
- if {!$found && $default != ""} {
- append popup "<OPTION SELECTED>$default"
- }
- return $popup
-}
-
-
-
-proc PasswordForLogin {login} {
- SendSQL "select cryptpassword from profiles where login_name = '[SqlQuote $login]'"
- return [FetchSQLData]
-}
-
-
-
-proc confirm_login {{nexturl ""}} {
-# puts "Content-type: text/plain\n"
- global FORM COOKIE argv0 env
- ConnectToDatabase
- if { [info exists FORM(Bugzilla_login)] &&
- [info exists FORM(Bugzilla_password)] } {
- if {![regexp {^[^@, ]*@[^@, ]*\.[^@, ]*$} $FORM(Bugzilla_login)]} {
- puts "Content-type: text/html\n"
- puts "<H1>Invalid e-mail address entered.</H1>"
- puts "The e-mail address you entered"
- puts "(<b>$FORM(Bugzilla_login)</b>) didn't match our minimal"
- puts "syntax checking for a legal email address. A legal address"
- puts "must contain exactly one '@', and at least one '.' after"
- puts "the @, and may not contain any commas or spaces."
- puts "<p>Please click <b>back</b> and try again."
- exit
- }
- set realcryptpwd [PasswordForLogin $FORM(Bugzilla_login)]
- set enteredpwd $FORM(Bugzilla_password);
- SendSQL "select encrypt('[SqlQuote $enteredpwd]','[crange $realcryptpwd 0 1]')";
- set enteredcryptpwd [lindex [FetchSQLData] 0]
-
-
- if {[info exists FORM(PleaseMailAPassword)]} {
- if {[cequal $realcryptpwd ""]} {
- set realpwd [InsertNewUser $FORM(Bugzilla_login)]
- } else {
- SendSQL "select password from profiles where login_name = '[SqlQuote $FORM(Bugzilla_login)]'"
- set realpwd [lindex [FetchSQLData] 0]
- }
- set template "From: bugzilla-daemon
-To: %s
-Subject: Your bugzilla password.
-
-To use the wonders of bugzilla, you can use the following:
-
- E-mail address: %s
- Password: %s
-
- To change your password, go to:
- [Param urlbase]changepassword.cgi
-
- (Your bugzilla and CVS password, if any, are not currently synchronized.
- Top hackers are working around the clock to fix this, as you read this.)
-"
-
- set msg [format $template $FORM(Bugzilla_login) \
- $FORM(Bugzilla_login) $realpwd]
-
- exec /usr/lib/sendmail -t << $msg
- puts "Content-type: text/html\n"
- puts "<H1>Password has been emailed.</H1>"
- puts "The password for the e-mail address"
- puts "$FORM(Bugzilla_login) has been e-mailed to that address."
- puts "<p>When the e-mail arrives, you can click <b>Back</b>"
- puts "and enter your password in the form there."
- exit
- }
-
- if {[cequal $realcryptpwd ""] || ![cequal $enteredcryptpwd $realcryptpwd]} {
- puts "Content-type: text/html\n"
- puts "<H1>Login failed.</H1>"
- puts "The username or password you entered is not valid. Please"
- puts "click <b>back</b> and try again."
- exit
- }
- set COOKIE(Bugzilla_login) $FORM(Bugzilla_login)
- SendSQL "insert into logincookies (userid,cryptpassword,hostname) values ([DBNameToIdAndCheck $FORM(Bugzilla_login)], '[SqlQuote $realcryptpwd]', '[SqlQuote $env(REMOTE_HOST)]')"
- SendSQL "select LAST_INSERT_ID()"
- set logincookie [FetchSQLData]
-
-
-
-
- set COOKIE(Bugzilla_logincookie) $logincookie
- puts "Set-Cookie: Bugzilla_login=$COOKIE(Bugzilla_login) ; path=/; expires=Sun, 30-Jun-2029 00:00:00 GMT"
- puts "Set-Cookie: Bugzilla_logincookie=$COOKIE(Bugzilla_logincookie) ; path=/; expires=Sun, 30-Jun-2029 00:00:00 GMT"
-
- # This next one just cleans out any old bugzilla passwords that may
- # be sitting around in the cookie files, from the bad old days when
- # we actually stored the password there.
- puts "Set-Cookie: Bugzilla_password= ; path=/; expires=Sun, 30-Jun-80 00:00:00 GMT"
-
- }
-
-
- set loginok 0
-
- if { [info exists COOKIE(Bugzilla_login)] && [info exists COOKIE(Bugzilla_logincookie)] } {
- SendSQL "select profiles.login_name = '[SqlQuote $COOKIE(Bugzilla_login)]' and profiles.cryptpassword = logincookies.cryptpassword and logincookies.hostname = '[SqlQuote $env(REMOTE_HOST)]' from profiles,logincookies where logincookies.cookie = $COOKIE(Bugzilla_logincookie) and profiles.userid = logincookies.userid"
- set loginok [FetchSQLData]
- }
-
- if {$loginok != "1"} {
- puts "Content-type: text/html\n"
- puts "<H1>Please log in.</H1>"
- puts "I need a legitimate e-mail address and password to continue."
- if {[cequal $nexturl ""]} {
- regexp {[^/]*$} $argv0 nexturl
- }
- set method POST
- if {[info exists env(REQUEST_METHOD)]} {
- set method $env(REQUEST_METHOD)
- }
- puts "
-<FORM action=$nexturl method=$method>
-<table>
-<tr>
-<td align=right><b>E-mail address:</b></td>
-<td><input size=35 name=Bugzilla_login></td>
-</tr>
-<tr>
-<td align=right><b>Password:</b></td>
-<td><input type=password size=35 name=Bugzilla_password></td>
-</tr>
-</table>
-"
- foreach i [array names FORM] {
- if {[regexp {^Bugzilla_} $i]} {
- continue
- }
- puts "<input type=hidden name=$i value=\"[value_quote $FORM($i)]\">"
- }
- puts "
-<input type=submit value=Login name=GoAheadAndLogIn><hr>
-If you don't have a password, or have forgotten it, then please fill in the
-e-mail address above and click
- here:<input type=submit value=\"E-mail me a password\"
-name=PleaseMailAPassword>
-</form>"
-
- # This seems like as good as time as any to get rid of old
- # crufty junk in the logincookies table. Get rid of any entry
- # that hasn't been used in a month.
- SendSQL "delete from logincookies where to_days(now()) - to_days(lastused) > 30"
-
-
- exit
- }
-
- # Update the timestamp on our logincookie, so it'll keep on working.
- SendSQL "update logincookies set lastused = null where cookie = $COOKIE(Bugzilla_logincookie)"
-}
-
-
-proc PutHeader {title h1 {h2 ""}} {
- puts "<HTML><HEAD><TITLE>$title</TITLE></HEAD>";
- puts "<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\"";
- puts "LINK=\"#0000EE\" VLINK=\"#551A8B\" ALINK=\"#FF0000\">";
-
- puts [Param bannerhtml]
-
- puts "<TABLE BORDER=0 CELLPADDING=12 CELLSPACING=0 WIDTH=\"100%\">";
- puts " <TR>\n";
- puts " <TD>\n";
- puts " <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=2>\n";
- puts " <TR><TD VALIGN=TOP ALIGN=CENTER NOWRAP>\n";
- puts " <FONT SIZE=\"+3\"><B><NOBR>$h1</NOBR></B></FONT>\n";
- puts " </TD></TR><TR><TD VALIGN=TOP ALIGN=CENTER>\n";
- puts " <B>$h2</B>\n";
- puts " </TD></TR>\n";
- puts " </TABLE>\n";
- puts " </TD>\n";
- puts " <TD>\n";
-
- puts [Param blurbhtml]
-
- puts "</TD></TR></TABLE>\n";
-
-}
diff --git a/CHANGES b/CHANGES
index 788044933..42e262905 100644
--- a/CHANGES
+++ b/CHANGES
@@ -32,6 +32,9 @@ Also, note that the "whineatnews" script has changed name (it now has
an extension of .pl instead of .tcl), so you'll need to change your
cron job.
+And the "comments" file has been moved to the data directory. Just do
+"cat comments >> data/comments" to restore any old comments that may
+have been lost.
diff --git a/bug_form.tcl b/bug_form.tcl
deleted file mode 100755
index 8423f99e8..000000000
--- a/bug_form.tcl
+++ /dev/null
@@ -1,221 +0,0 @@
-# -*- Mode: tcl; indent-tabs-mode: nil -*-
-#
-# The contents of this file are subject to the Mozilla Public License
-# Version 1.0 (the "License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-# License for the specific language governing rights and limitations
-# under the License.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are Copyright (C) 1998
-# Netscape Communications Corporation. All Rights Reserved.
-#
-# Contributor(s): Terry Weissman <terry@mozilla.org>
-
-set query "
-select
- bug_id,
- product,
- version,
- rep_platform,
- op_sys,
- bug_status,
- resolution,
- priority,
- bug_severity,
- component,
- assigned_to,
- reporter,
- bug_file_loc,
- short_desc,
- date_format(creation_ts,'Y-m-d')
-from bugs
-where bug_id = $FORM(id)";
-
-SendSQL $query
-set ret [FetchSQLData]
-if {$ret != ""} {
- set count 0
- foreach field { bug_id product version rep_platform op_sys bug_status
- resolution priority bug_severity component
- assigned_to reporter bug_file_loc short_desc
- creation_ts} {
- if { [regexp {^\{(.*)\}$} [lindex $ret $count] junk bug($field)] == 0 } {
- set bug($field) [lindex $ret $count]
- }
- incr count
- }
- set error "none"
-} else {
- puts "<TITLE>Bug Splat Error</TITLE>"
- puts "<H1>Query Error</H1>Somehow something went wrong. Possibly if you"
- puts "mail this page to $maintainer, he will be able to fix things.<HR>"
- puts "Bug $FORM(id) not found<H2>Query Text</H2><PRE>$query<PRE>"
- exit 0
-}
-
-set bug(assigned_to) [DBID_to_name $bug(assigned_to)]
-set bug(reporter) [DBID_to_name $bug(reporter)]
-set bug(long_desc) [GetLongDescription $FORM(id)]
-
-
-GetVersionTable
-
-#
-# These should be read from the database ...
-#
-set resolution_popup [make_options $legal_resolution_no_dup $bug(resolution)]
-set platform_popup [make_options $legal_platform $bug(rep_platform)]
-set priority_popup [make_options $legal_priority $bug(priority)]
-set sev_popup [make_options $legal_severity $bug(bug_severity)]
-
-
-set component_popup [make_options $components($bug(product)) $bug(component)]
-
-set cc_element "<INPUT NAME=cc SIZE=30 VALUE=\"[ShowCcList $FORM(id)]\">"
-
-
-if {$bug(bug_file_loc) != "none" && $bug(bug_file_loc) != "NULL" && $bug(bug_file_loc) != ""} {
- set URL "<B><A HREF=\"$bug(bug_file_loc)\">URL:</A></B>"
-} else {
- set URL "<B>URL:</B>"
-}
-
-puts "
-<HEAD><TITLE>Bug $FORM(id) -- [html_quote $bug(short_desc)]</TITLE></HEAD><BODY>
-<FORM NAME=changeform METHOD=POST ACTION=\"process_bug.cgi\">
-<INPUT TYPE=HIDDEN NAME=\"id\" VALUE=$FORM(id)>
-<INPUT TYPE=HIDDEN NAME=\"was_assigned_to\" VALUE=\"$bug(assigned_to)\">
- <TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
- <TD ALIGN=RIGHT><B>Bug#:</B></TD><TD>$bug(bug_id)</TD>
- <TD ALIGN=RIGHT><B><A HREF=\"bug_status.html#rep_platform\">Platform:</A></B></TD>
- <TD><SELECT NAME=rep_platform>$platform_popup</SELECT></TD>
- <TD ALIGN=RIGHT><B>Version:</B></TD>
- <TD><SELECT NAME=version>[make_options $versions($bug(product)) $bug(version)]</SELECT></TD>
- </TR><TR>
- <TD ALIGN=RIGHT><B>Product:</B></TD>
- <TD><SELECT NAME=product>[make_options $legal_product $bug(product)]</SELECT></TD>
- <TD ALIGN=RIGHT><B>OS:</B></TD><TD>$bug(op_sys)</TD>
- <TD ALIGN=RIGHT><B>Reporter:</B></TD><TD>$bug(reporter)</TD>
- </TR><TR>
- <TD ALIGN=RIGHT><B><A HREF=\"bug_status.html\">Status:</A></B></TD>
- <TD>$bug(bug_status)</TD>
- <TD ALIGN=RIGHT><B><A HREF=\"bug_status.html#priority\">Priority:</A></B></TD>
- <TD><SELECT NAME=priority>$priority_popup</SELECT></TD>
- <TD ALIGN=RIGHT><B>Cc:</B></TD>
- <TD> $cc_element </TD>
- </TR><TR>
- <TD ALIGN=RIGHT><B><A HREF=\"bug_status.html\">Resolution:</A></B></TD>
- <TD>$bug(resolution)</TD>
- <TD ALIGN=RIGHT><B><A HREF=\"bug_status.html#severity\">Severity:</A></B></TD>
- <TD><SELECT NAME=bug_severity>$sev_popup</SELECT></TD>
- <TD ALIGN=RIGHT><B>Component:</B></TD>
- <TD><SELECT NAME=component>$component_popup</SELECT></TD>
- </TR><TR>
- <TD ALIGN=RIGHT><B><A HREF=\"bug_status.html#assigned_to\">Assigned&nbsp;To:
- </A></B></TD>
- <TD>$bug(assigned_to)</TD>
- </TR><TR>
- <TD ALIGN=\"RIGHT\">$URL
- <TD COLSPAN=6>
- <INPUT NAME=bug_file_loc VALUE=\"$bug(bug_file_loc)\" SIZE=60></TD>
- </TR><TR>
- <TD ALIGN=\"RIGHT\"><B>Summary:</B>
- <TD COLSPAN=6>
- <INPUT NAME=short_desc VALUE=\"[value_quote $bug(short_desc)]\" SIZE=60></TD>
- </TR>
-</TABLE>
-<br>
-<B>Additional Comments:</B>
-<BR>
-<TEXTAREA WRAP=HARD NAME=comment ROWS=5 COLS=80></TEXTAREA><BR>
-<br>
-<INPUT TYPE=radio NAME=knob VALUE=none CHECKED>
- Leave as <b>$bug(bug_status) $bug(resolution)</b><br>"
-
-# knum is which knob number we're generating, in javascript terms.
-
-set knum 1
-
-if {[cequal $bug(bug_status) NEW] || [cequal $bug(bug_status) ASSIGNED] || \
- [cequal $bug(bug_status) REOPENED]} {
- if {![cequal $bug(bug_status) ASSIGNED]} {
- puts "<INPUT TYPE=radio NAME=knob VALUE=accept>
- Accept bug (change status to <b>ASSIGNED</b>)<br>"
- incr knum
- }
- if {[clength $bug(resolution)] > 0} {
- puts "<INPUT TYPE=radio NAME=knob VALUE=clearresolution>"
- puts "Clear the resolution (remove the current resolution of"
- puts "<b>$bug(resolution)</b>)<br>"
- incr knum
- }
- puts "<INPUT TYPE=radio NAME=knob VALUE=resolve>
- Resolve bug, changing <A HREF=\"bug_status.html\">resolution</A> to
- <SELECT NAME=resolution
- ONCHANGE=\"document.changeform.knob\[$knum\].checked=true\">
- $resolution_popup</SELECT><br>"
- incr knum
- puts "<INPUT TYPE=radio NAME=knob VALUE=duplicate>
- Resolve bug, mark it as duplicate of bug #
- <INPUT NAME=dup_id SIZE=6 ONCHANGE=\"document.changeform.knob\[$knum\].checked=true\"><br>"
- incr knum
- set assign_element "<INPUT NAME=assigned_to SIZE=32 ONCHANGE=\"document.changeform.knob\[$knum\].checked=true\" VALUE=$bug(assigned_to)>"
-
- puts "<INPUT TYPE=radio NAME=knob VALUE=reassign>
- <A HREF=\"bug_status.html#assigned_to\">Reassign</A> bug to
- $assign_element
- <br>"
- incr knum
- puts "<INPUT TYPE=radio NAME=knob VALUE=reassignbycomponent>
- Reassign bug to owner of selected component<br>"
- incr knum
-} else {
- puts "<INPUT TYPE=radio NAME=knob VALUE=reopen> Reopen bug<br>"
- incr knum
- if {[cequal $bug(bug_status) RESOLVED]} {
- puts "<INPUT TYPE=radio NAME=knob VALUE=verify>
- Mark bug as <b>VERIFIED</b><br>"
- incr knum
- }
- if {![cequal $bug(bug_status) CLOSED]} {
- puts "<INPUT TYPE=radio NAME=knob VALUE=close>
- Mark bug as <b>CLOSED</b><br>"
- incr knum
- }
-}
-
-puts "
-<INPUT TYPE=\"submit\" VALUE=\"Commit\">
-<INPUT TYPE=\"reset\" VALUE=\"Reset\">
-<INPUT TYPE=hidden name=form_name VALUE=process_bug>
-<BR>
-<FONT size=\"+1\"><B>
- <A HREF=\"show_activity.cgi?id=$FORM(id)\">View Bug Activity</A>
- <A HREF=\"long_list.cgi?buglist=$FORM(id)\">Format For Printing</A>
-</B></FONT><BR>
-</FORM>
-<table><tr><td align=left><B>Description:</B></td><td width=100%>&nbsp;</td>
-<td align=right>Opened:&nbsp;$bug(creation_ts)</td></tr></table>
-<HR>
-<PRE>
-[html_quote $bug(long_desc)]
-</PRE>
-<HR>"
-
-# To add back option of editing the long description, insert after the above
-# long_list.cgi line:
-# <A HREF=\"edit_desc.cgi?id=$FORM(id)\">Edit Long Description</A>
-
-
-
-navigation_header
-
-puts "</BODY>"
-flush stdout
diff --git a/defparams.tcl b/defparams.tcl
deleted file mode 100644
index b9a3a5a82..000000000
--- a/defparams.tcl
+++ /dev/null
@@ -1,171 +0,0 @@
-#! /usr/bonsaitools/bin/mysqltcl
-# -*- Mode: tcl; indent-tabs-mode: nil -*-
-#
-# The contents of this file are subject to the Mozilla Public License
-# Version 1.0 (the "License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-# License for the specific language governing rights and limitations
-# under the License.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are Copyright (C) 1998
-# Netscape Communications Corporation. All Rights Reserved.
-#
-# Contributor(s): Terry Weissman <terry@mozilla.org>
-
-
-# This file defines all the parameters that we have a GUI to edit within
-# Bugzilla.
-
-
-
-proc WriteParams {} {
- global param param_list param_default
- set tmpname "params.[id process]"
- set fid [open $tmpname "w"]
- foreach i $param_list {
- if {![info exists param($i)]} {
- set param($i) $param_default($i)
- }
- puts $fid [list set param($i) $param($i)]
- }
- close $fid
- frename $tmpname "params"
- catch {chmod 0666 "params"}
-}
-
-
-proc DefParam {id desc type default {checker {}}} {
- global param_list param_desc param_type param_default param_checker
- lappend param_list $id
- set param_desc($id) $desc
- set param_type($id) $type
- set param_default($id) $default
- set param_checker($id) $checker
-}
-
-
-proc check_numeric {value} {
- if {[catch {incr value}]} {
- return "must be a numeric value"
- }
- return ""
-}
-
-
-
-set param_list {}
-
-
-
-# OK, here are the definitions themselves.
-#
-# The type of parameters (the third parameter to DefParam) can be one
-# of the following:
-#
-# t -- A short text entry field (suitable for a single line)
-# l -- A long text field (suitable for many lines)
-# b -- A boolean value (either 1 or 0)
-# defenum -- This param defines an enum that defines a column in one of
-# the database tables. The name of the parameter is of the form
-# "tablename.columnname".
-
-# This very first one is silly. At some point, "superuserness" should be an
-# attribute of the person's profile entry, and not a single name like this.
-#
-# When first installing bugzilla, you need to either change this line to be
-# you, or (better) edit the initial "params" file and change the entry for
-# param(maintainer).
-
-DefParam maintainer {The email address of the person who maintains this installation of Bugzilla.} t terry@mozilla.org
-
-DefParam urlbase {The URL that is the common initial leading part of all Bugzilla URLs.} t {http://cvs-mirror.mozilla.org/webtools/bugzilla/} check_urlbase
-
-proc check_urlbase {url} {
- if {![regexp {^http.*/$} $url]} {
- return "must be a legal URL, that starts with http and ends with a slash."
- }
- return ""
-}
-
-
-DefParam usedespot {If this is on, then we are using the Despot system to control our database of users. Bugzilla won't ever write into the user database, it will let the Despot code maintain that. And Bugzilla will send the user over to Despot URLs if they need to change their password. Also, in that case, Bugzilla will treat the passwords stored in the database as being crypt'd, not plaintext.} b 0
-
-DefParam despotbaseurl {The base URL for despot. Used only if <b>usedespot</b> is turned on, above.} t {http://cvs-mirror.mozilla.org/webtools/despot/despot.cgi} check_despotbaseurl
-
-
-proc check_despotbaseurl {url} {
- if {![regexp {^http.*cgi$} $url]} {
- return "must be a legal URL, that starts with http and ends with .cgi"
- }
- return ""
-}
-
-
-
-
-DefParam bannerhtml {The html that gets emitted at the head of every Bugzilla page.} l {<TABLE BGCOLOR="#000000" WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0>
-<TR><TD><A HREF="http://www.mozilla.org/"><IMG
- SRC="http://www.mozilla.org/images/mozilla-banner.gif" ALT=""
- BORDER=0 WIDTH=600 HEIGHT=58></A></TD></TR></TABLE>}
-
-DefParam blurbhtml {A blurb that appears as part of the header of every Bugzilla page. This is a place to put brief warnings, pointers to one or two related pages, etc.} l { This is <B>Bugzilla</B>: the Mozilla bug system. For more
- information about what Bugzilla is and what it can do, see
- <A HREF="http://www.mozilla.org/">mozilla.org</A>'s
- <A HREF="http://www.mozilla.org/bugs/"><B>bug pages</B></A>.
-}
-
-
-DefParam whinedays {The number of days that we'll let a bug sit untouched in a NEW state before our cronjob will whine at the owner.} t 7 check_numeric
-
-
-DefParam whinemail {The email that gets sent to anyone who has a NEW bug that hasn't been touched for more than <b>whinedays</b>. Within this text, %email% gets replaced by the offender's email address. %<i>anythingelse</i>% gets replaced by the definition of that parameter (as defined on this page).<p> It is a good idea to make sure this message has a valid From: address, so that if the mail bounces, a real person can know that there are bugs assigned to an invalid address.} l {From: %maintainer%
-To: %email%
-Subject: Your Bugzilla buglist needs attention.
-
-[This e-mail has been automatically generated.]
-
-You have one or more bugs assigned to you in the Bugzilla
-bugsystem (%urlbase%) that require
-attention.
-
-All of these bugs are in the NEW state, and have not been touched
-in %whinedays% days or more. You need to take a look at them, and
-decide on an initial action.
-
-Generally, this means one of three things:
-
-(1) You decide this bug is really quick to deal with (like, it's INVALID),
- and so you get rid of it immediately.
-(2) You decide the bug doesn't belong to you, and you reassign it to someone
- else. (Hint: if you don't know who to reassign it to, make sure that
- the Component field seems reasonable, and then use the "Reassign bug to
- owner of selected component" option.)
-(3) You decide the bug belongs to you, but you can't solve it this moment.
- Just use the "Accept bug" command.
-
-To get a list of all NEW bugs, you can use this URL (bookmark it if you like!):
-
- %urlbase%buglist.cgi?bug_status=NEW&assigned_to=%email%
-
-Or, you can use the general query page, at
-%urlbase%query.cgi.
-
-Appended below are the individual URLs to get to all of your NEW bugs that
-haven't been touched for a week or more.
-
-You will get this message once a day until you've dealt with these bugs!
-
-}
-
-
-DefParam defaultquery {This is the default query that initially comes up when you submit a bug. It's in URL parameter format, which makes it hard to read. Sorry!} t "bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Mozilla&order=%22Importance%22"
-
-
-DefParam bugs.bug_status {The different statuses that a bug
diff --git a/globals.tcl b/globals.tcl
deleted file mode 100644
index f28ea431a..000000000
--- a/globals.tcl
+++ /dev/null
@@ -1,454 +0,0 @@
-# -*- Mode: tcl; indent-tabs-mode: nil -*-
-#
-# The contents of this file are subject to the Mozilla Public License
-# Version 1.0 (the "License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-# License for the specific language governing rights and limitations
-# under the License.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are Copyright (C) 1998
-# Netscape Communications Corporation. All Rights Reserved.
-#
-# Contributor(s): Terry Weissman <terry@mozilla.org>
-
-# Contains some global variables and routines used throughout bugzilla.
-
-set maintainer "<a href=mailto:terry@netscape.com>terry@netscape.com</a>"
-
-if { ! [info exists oradbname] } {
- set oradbname "SCOPPROD"
-}
-
-set dontchange "--do_not_change--"
-set chooseone "--Choose_one:--"
-
-set tmp_dir ""
-proc TmpName { tail } {
- global tmp_dir
- if { $tmp_dir == "" } {
- set tmp_dir "/var/tmp/bugzilla"
- if {! [file isdirectory $tmp_dir]} {
- mkdir $tmp_dir
- }
- }
- return "$tmp_dir/$tail"
-}
-
-proc ConnectToDatabase {} {
- global mysqlhandle
- if {![info exists mysqlhandle]} {
- set mysqlhandle [mysqlconnect]
- mysqluse $mysqlhandle "bugs"
- }
-}
-
-
-proc SendSQL { str } {
-# puts $str
- global mysqlhandle errorInfo
- if {[catch {mysqlsel $mysqlhandle $str} errmsg]} {
- puts $str
- error "$errmsg - $str" $errorInfo
- }
- return 0
-}
-
-proc MoreSQLData {} {
- global mysqlhandle
- set result [mysqlresult $mysqlhandle "rows?"]
- if {![cequal $result ""]} {
- if {$result > 0} {
- return 1
- }
- }
- return 0
-}
-
-proc FetchSQLData {} {
- global mysqlhandle
- return [mysqlnext $mysqlhandle]
-}
-
-proc Disconnect {} {
- global mysqlhandle
- mysqlclose $mysqlhandle
- unset mysqlhandle
-}
-
-
-set legal_opsys { "Windows 3.1" "Windows 95" "Windows NT" "System 7" "System 7.5"
- "7.1.6" "AIX" "BSDI" "HP-UX" "IRIX" "Linux" "OSF/1" "Solaris" "SunOS"
- "other" }
-
-
-set default_column_list {severity priority platform owner status resolution summary}
-
-set env(TZ) PST8PDT
-
-proc AppendComment {bugid who comment} {
- regsub -all "\r\n" $comment "\n" comment
- if {[cequal $comment "\n"] || [clength $comment] == 0} {
- return
- }
- SendSQL "select long_desc from bugs where bug_id = $bugid"
- set desc [lindex [FetchSQLData] 0]
- append desc "\n\n------- Additional Comments From $who [fmtclock [getclock] "%D %H:%M"] -------\n"
- append desc $comment
- SendSQL "update bugs set long_desc='[SqlQuote $desc]' where bug_id=$bugid"
-}
-
-proc SortIgnoringCase {a b} {
- return [string compare [string tolower $a] [string tolower $b]]
-}
-
-
-proc make_popup { name src default listtype {onchange {}}} {
- set popup "<SELECT NAME=$name"
- if {$listtype > 0} {
- append popup " SIZE=5"
- if {$listtype == 2} {
- append popup " MULTIPLE"
- }
- }
- if {$onchange != ""} {
- append popup " onchange=$onchange"
- }
- append popup ">"
- append popup [make_options $src $default [expr {$listtype == 2 && $default != ""}]]
- append popup "</SELECT>"
- return $popup
-}
-
-proc Product_element { prod {onchange {}} } {
- global versions
- return [make_popup product [lsort [array names versions]] $prod 1 \
- $onchange]
-}
-
-proc Component_element { comp prod {onchange {}} } {
- global components
- if {![info exists components($prod)]} {
- set componentlist {}
- } else {
- set componentlist $components($prod)
- }
-
- if {![cequal $comp ""] && [lsearch $componentlist $comp] >= 0} {
- set defcomponent $comp
- } else {
- set defcomponent [lindex $componentlist 0]
- }
- return [make_popup component $componentlist $defcomponent 1 ""]
-}
-
-proc Version_element { vers prod {onchange {}} } {
- global versions
- if {![info exists versions($prod)]} {
- set versionlist {}
- } else {
- set versionlist $versions($prod)
- }
-
- set defversion [lindex $versionlist 0]
-
- if {[lsearch $versionlist $vers] >= 0} {
- set defversion $vers
- }
- return [make_popup version $versionlist $defversion 1 $onchange]
-}
-
-proc GenerateVersionTable {} {
- ConnectToDatabase
- SendSQL "select value, program from versions order by value"
- while { [ MoreSQLData ] } {
- set line [FetchSQLData]
- if {$line != ""} {
- set v [lindex $line 0]
- set p1 [lindex $line 1]
- lappend versions($p1) $v
- set varray($v) 1
- set parray($p1) 1
- }
- }
-
- SendSQL "select value, program from components"
- while { [ MoreSQLData ] } {
- set line [FetchSQLData]
- if {$line != ""} {
- lassign $line c p
- lappend components($p) $c
- set carray($c) 1
- set parray($p) 1
- }
- }
-
- LearnAboutColumns bugs cols
- set log_columns $cols(-list-)
- foreach i {bug_id creation_ts delta_ts long_desc} {
- set w [lsearch $log_columns $i]
- if {$w >= 0} {
- set log_columns [lreplace $log_columns $w $w]
- }
- }
- set legal_priority [SplitEnumType $cols(priority,type)]
- set legal_severity [SplitEnumType $cols(bug_severity,type)]
- set legal_platform [SplitEnumType $cols(rep_platform,type)]
- set legal_bug_status [SplitEnumType $cols(bug_status,type)]
- set legal_resolution [SplitEnumType $cols(resolution,type)]
- set legal_resolution_no_dup $legal_resolution
- set w [lsearch $legal_resolution_no_dup "DUPLICATE"]
- if {$w >= 0} {
- set legal_resolution_no_dup [lreplace $legal_resolution_no_dup $w $w]
- }
-
- set list [lsort -command SortIgnoringCase [array names versions]]
-
- set tmpname "versioncache.[id process]"
-
- set fid [open $tmpname "w"]
- puts $fid [list set log_columns $log_columns]
- foreach i $list {
- puts $fid [list set versions($i) $versions($i)]
- if {![info exists components($i)]} {
- set components($i) {}
- }
- }
-
- puts $fid [list set legal_versions [lsort -command SortIgnoringCase \
- [array names varray]]]
- foreach i [lsort -command SortIgnoringCase [array names components]] {
- puts $fid [list set components($i) $components($i)]
- }
- puts $fid [list set legal_components [lsort -command SortIgnoringCase \
- [array names carray]]]
- puts $fid [list set legal_product $list]
- puts $fid [list set legal_priority $legal_priority]
- puts $fid [list set legal_severity $legal_severity]
- puts $fid [list set legal_platform $legal_platform]
- puts $fid [list set legal_bug_status $legal_bug_status]
- puts $fid [list set legal_resolution $legal_resolution]
- puts $fid [list set legal_resolution_no_dup $legal_resolution_no_dup]
- close $fid
- frename $tmpname "versioncache"
- catch {chmod 0666 "versioncache"}
-}
-
-# This proc must be called before using legal_product or the versions array.
-
-proc GetVersionTable {} {
- global versions
- set mtime 0
- catch {set mtime [file mtime versioncache]}
- if {[getclock] - $mtime > 3600} {
- GenerateVersionTable
- }
- uplevel #0 {source versioncache}
- if {![info exists versions]} {
- GenerateVersionTable
- uplevel #0 {source versioncache}
- if {![info exists versions]} {
- error "Can't generate version info; tell terry."
- }
- }
-}
-
-
-
-proc GeneratePersonInput { field required def_value {extraJavaScript {}} } {
- if {![cequal $extraJavaScript ""]} {
- set $extraJavaScript "onChange=\" $extraJavaScript \""
- }
- return "<INPUT NAME=\"$field\" SIZE=32 $extraJavaScript VALUE=\"$def_value\">"
-}
-
-proc GeneratePeopleInput { field def_value } {
- return "<INPUT NAME=\"$field\" SIZE=45 VALUE=\"$def_value\">"
-}
-
-
-
-set cachedNameArray() ""
-
-proc InsertNewUser {username} {
- random seed
- set pwd ""
- loop i 0 8 {
- append pwd [cindex "abcdefghijklmnopqrstuvwxyz" [random 26]]
- }
- SendSQL "insert into profiles (login_name, password, cryptpassword) values ('[SqlQuote $username]', '$pwd', encrypt('$pwd'))"
- return $pwd
-}
-
-
-proc DBID_to_name { id } {
- global cachedNameArray
-
- if {![info exists cachedNameArray($id)]} {
-
- SendSQL "select login_name from profiles where userid = $id"
- set r [FetchSQLData]
- if {$r == ""} { set r "__UNKNOWN__" }
- set cachedNameArray($id) $r
- }
- return $cachedNameArray($id)
-}
-
-proc DBname_to_id { name } {
- SendSQL "select userid from profiles where login_name = '[SqlQuote $name]'"
- set r [FetchSQLData]
- if {[cequal $r ""]} {
- return 0
- }
- return $r
-}
-
-proc DBNameToIdAndCheck {name {forceok 0}} {
- set result [DBname_to_id $name]
- if {$result > 0} {
- return $result
- }
- if {$forceok} {
- InsertNewUser $name
- set result [DBname_to_id $name]
- if {$result > 0} {
- return $result
- }
- puts "Yikes; couldn't create user $name. Please report problem to"
- puts "$maintainer."
- } else {
- puts "The name <TT>$name</TT> is not a valid username. Please hit the"
- puts "<B>Back</B> button and try again."
- }
- exit 0
-}
-
-proc GetLongDescription { id } {
- SendSQL "select long_desc from bugs where bug_id = $id"
- return [lindex [FetchSQLData] 0]
-}
-
-proc ShowCcList {num} {
- set cclist ""
- set comma ""
- SendSQL "select who from cc where bug_id = $num"
- set ccids ""
- while {[MoreSQLData]} {
- lappend ccids [lindex [FetchSQLData] 0]
- }
- set result ""
- foreach i $ccids {
- lappend result [DBID_to_name $i]
- }
-
- return [join $result ","]
-}
-
-proc make_options_new { src default {isregexp 0} } {
- set last "" ; set popup "" ; set found 0
- foreach item $src {
- if { $item == "-blank-" } { set item "" } {
- if {$isregexp ? [regexp $default $item] : [cequal $default $item]} {
- append popup "<OPTION SELECTED VALUE=\"$item\">$item"
- set found 1
- } else {
- append popup "<OPTION VALUE=\"$item\">$item"
- }
- }
- }
- if {!$found && $default != ""} {
- append popup "<OPTION SELECTED>$default"
- }
- return $popup
-}
-
-
-proc Shell {} {
- ConnectToDatabase
- while (1) {
- puts -nonewline "> "
- if {[gets stdin line] < 0} {
- break
- }
- if {[catch {SendSQL $line} errorinfo]} {
- puts "Error -- $errorinfo"
- } else {
- while {[MoreSQLData]} {
- puts [FetchSQLData]
- }
- }
- }
-}
-
-
-
-
-# Fills in the given array with info about the columns. The array gets
-# the following entries:
-# -list- the list of column names
-# <name>,type the type for the given name
-
-proc LearnAboutColumns {table arrayname} {
- upvar $arrayname a
- catch (unset a)
- SendSQL "show columns from $table"
- set list {}
- while {[MoreSQLData]} {
- lassign [FetchSQLData] name type
- set a($name,type) $type
- lappend list $name
- }
- set a(-list-) $list
-}
-
-# If the above returned a enum type, take that type and parse it into the
-# list of values. Assumes that enums don't ever contain an apostrophe!
-
-proc SplitEnumType {str} {
- set result {}
- if {[regexp {^enum\((.*)\)$} $str junk guts]} {
- append guts ","
- while {[regexp {^'([^']*)',(.*)$} $guts junk first guts]} {
- lappend result $first
- }
- }
- return $result
-}
-
-
-proc SqlQuote {str} {
- regsub -all "'" $str "''" str
- #
- # This next line is quoting hell. One level of quoting comes from
- # the TCL interpreter, and another level comes from TCL's regular
- # expression parser. It really works out to "change every
- # backslash to two backslashes".
- regsub -all "\\\\" $str "\\\\\\\\" str
-
- return $str
-}
-
-
-proc Param {value} {
- global param
- if {[info exists param($value)]} {
- return $param($value)
- }
- # Um, maybe we haven't sourced in the params at all yet.
- catch {uplevel \#0 source "params"}
- if {[info exists param($value)]} {
- return $param($value)
- }
- # Well, that didn't help. Maybe it's a new param, and the user
- # hasn't defined anything for it. Try and load a default value
- # for it.
- uplevel #0 source "defparams.tcl"
- WriteParams
- return $param($value)
-}
diff --git a/whineatnews.tcl b/whineatnews.tcl
deleted file mode 100755
index c9ec42dac..000000000
--- a/whineatnews.tcl
+++ /dev/null
@@ -1,64 +0,0 @@
-#! /usr/bonsaitools/bin/mysqltcl
-# -*- Mode: tcl; indent-tabs-mode: nil -*-
-#
-# The contents of this file are subject to the Mozilla Public License
-# Version 1.0 (the "License"); you may not use this file except in
-# compliance with the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-# License for the specific language governing rights and limitations
-# under the License.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are Copyright (C) 1998
-# Netscape Communications Corporation. All Rights Reserved.
-#
-# Contributor(s): Terry Weissman <terry@mozilla.org>
-
-
-# This is a script suitable for running once a day from a cron job. It
-# looks at all the bugs, and sends whiny mail to anyone who has a bug
-# assigned to them that has status NEW that has not been touched for
-# more than 7 days.
-
-source "globals.tcl"
-source "defparams.tcl"
-
-ConnectToDatabase
-
-SendSQL "select bug_id,login_name from bugs,profiles where bug_status = 'NEW' and to_days(now()) - to_days(delta_ts) > [Param whinedays] and userid=assigned_to"
-
-set bugs(zz) x
-unset bugs(zz)
-
-while {[MoreSQLData]} {
- lassign [FetchSQLData] id email
- if {$id == ""} {
- continue
- }
- lappend bugs($email) $id
-}
-
-
-set template [Param whinemail]
-
-
-foreach i $param_list {
- regsub -all "%$i%" $template [Param $i] template
-}
-
-
-foreach email [lsort [array names bugs]] {
-
- regsub -all {%email%} $template $email msg
- set list [lsort -integer $bugs($email)]
- foreach i $list {
- append msg " http://cvs-mirror.mozilla.org/webtools/bugzilla/show_bug.cgi?id=$i\n"
- }
- exec /usr/lib/sendmail -t << $msg
- puts "$email $list"
-}