4.2. 可选的附加配置

4.2.1. 依赖关系图

除了基于文本的依赖关系图,Bugzilla 还支持使用名为 'dot' 的软件包生成依赖关系图。具体工作方式由 'webdotbase' 参数控制,该参数可以有三个值

  1. 指向 'dot' 命令的完整文件路径(GraphViz 的一部分)将在本地生成图形

  2. 指向 webdot 软件包安装的 URL 前缀将在远程生成图形

  3. 空值将禁用依赖关系图功能。

因此,要使其工作,请安装 GraphViz。 如果这样做,您需要在 Apache 中启用服务器端图像地图。 或者,您可以设置 webdot 服务器,或使用 AT&T 公共 webdot 服务器(webdotbase 参数的默认值)。 请注意,如果 Bugzilla 只能通过 HTTPS 访问,则 AT&T 的服务器将无法工作。

4.2.2. 缺陷图表

只要您安装了 GD 和 Graph::Base Perl 模块,您不妨启用 Bugzilla 出色的错误报告图表。

添加如下 cron 条目来运行collectstats.pl每天凌晨 0 点 5 分

bash# crontab -e
5 0 * * * cd <your-bugzilla-directory> ; ./collectstats.pl

两天后,您将能够从“缺陷报告”页面查看缺陷图表。

4.2.3. 抱怨 Cron

现在您已经有了一个功能齐全的 Bugzilla,但是如果缺陷不烦人,那有什么用呢? 为了让这些缺陷更烦人,您可以设置 Bugzilla 的自动抱怨系统,以向那些将缺陷留在 NEW 状态而未对其进行分类的工程师抱怨。

这可以通过添加以下命令作为每日 cron 条目来完成(有关帮助,请参阅 crontab 手册页)

cd <your-bugzilla-directory> ; ./whineatnews.pl

Tip

根据您的系统,crontab 可能有多个手册页。 以下命令应引导您找到最适合此目的的页面
man 5 crontab

4.2.4. LDAP 身份验证

Warning

关于在 Bugzilla 中使用 LDAP 身份验证选项的信息已过时,作者不知道有任何人对其进行过测试。 请谨慎对待。

Bugzilla 现有的身份验证方案使用电子邮件地址作为主要用户 ID,并使用密码来验证该用户。 Bugzilla 中所有需要处理用户 ID 的地方(例如,分配缺陷)都使用电子邮件地址。 LDAP 身份验证建立在此方案之上,而不是替换它。 初始登录使用 LDAP 目录的用户名和密码完成。 然后,它从 LDAP 获取电子邮件地址,并使用此电子邮件地址在标准 Bugzilla 身份验证方案中无缝验证。 如果您的 Bugzilla 系统中已存在此地址的帐户,它将登录到该帐户。 如果不存在该电子邮件地址的帐户,则会在登录时创建一个帐户。 (在这种情况下,Bugzilla 将尝试使用“displayName”或“cn”属性来确定用户的全名。) 身份验证后,所有其他与用户相关的任务仍由电子邮件地址处理,而不是 LDAP 用户名。 您仍然通过电子邮件地址分配缺陷,通过电子邮件地址查询用户等。

将 LDAP 用于 Bugzilla 身份验证需要 Mozilla::LDAP(又名 PerLDAP)Perl 模块。 Mozilla::LDAP 模块反过来需要 Netscape 的 Directory SDK for C。 安装 SDK 后,然后安装 PerLDAP 模块。 Mozilla::LDAP 和 Directory SDK for C 均可从 mozilla.org 下载。

仅当您将使用 LDAP 目录进行身份验证时,才将参数 'useLDAP' 设置为 "On"。 设置此参数时要非常小心; 如果您设置了 LDAP 身份验证,但没有设置有效的 LDAP 目录,则一旦您注销,您将无法重新登录 Bugzilla。 (如果发生这种情况,您可以手动编辑 data/params 文件,并将 useLDAP 设置回 0 来重新登录。)

如果使用 LDAP,您必须设置三个附加参数: 将 LDAPserver 设置为您的 LDAP 服务器的名称(和可选端口)。 如果未指定端口,则默认为默认端口 389。 (例如“ldap.mycompany.com”或“ldap.mycompany.com:1234”)将 LDAPBaseDN 设置为用于在 LDAP 目录中搜索用户的基本 DN。 (例如“ou=People,o=MyCompany”)uid 必须在此处指定的 DN 下是唯一的。 将 LDAPmailattribute 设置为 LDAP 目录中包含主要电子邮件地址的属性的名称。 在大多数可用的目录服务器上,这是“mail”,但您可能需要更改它。

4.2.5. 防止不受信任的 Bugzilla 内容执行恶意 Javascript 代码

Bugzilla 有可能执行恶意 Javascript 代码。 由于国际化方面的考虑,我们无法合并必要的代码更改以满足 http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3 中提到的 CERT 咨询要求。 如果您的 Bugzilla 安装是为英语使用者准备的,则从 UNIX 命令 shell 执行以下代码片段将纠正此问题。 与往常一样,在进行更改之前,请确保您的 Bugzilla 安装具有良好的备份,并且我建议您在执行脚本之前了解脚本的作用。

bash# perl -pi -e "s/Content-Type\: text\/html/Content-Type\: text\/html\; charset=ISO-8859-1/i" *.cgi *.pl
        

此单行命令所做的只是搜索所有 "Content-type: text/html" 实例,并将其替换为 "Content-Type: text/html; charset=ISO-8859-1"。 此规范可防止浏览器上可能发生的 Javascript 攻击,并建议所有英语网站使用。 对于非英语 Bugzilla 网站,我建议将上面的 "ISO-8859-1" 更改为 "UTF-8"

注意:不建议使用 <meta> 标签设置字符集,因为 Netscape 4.x 中存在一个错误,该错误会导致以这种方式标记的页面加载两次。

4.2.6. .htaccess文件和安全

为了增强您的 Bugzilla 安装的安全性,Bugzilla 的checksetup.pl脚本将生成 .htaccess 文件,Apache 网络服务器可以使用这些文件来限制对 bugzilla 数据文件的访问。 这些 .htaccess 文件不适用于 Apache 1.2.x - 但这存在安全漏洞,因此无论如何您都不应使用它。

Note

如果您正在使用 webdot 服务的备用提供商进行图形处理(如查看时所述editparams.cgi在您的网络浏览器中),您将需要更改以下位置的 IP 地址data/webdot/.htaccess到您正在使用的 webdot 服务器的 IP 地址。

默认的 .htaccess 文件可能无法提供足够的访问限制,具体取决于您的 Web 服务器配置。 务必检查您的 Bugzilla 目录的 <Directory> 条目,以便.htaccess文件被允许覆盖 Web 服务器默认值。 例如,假设您的 Bugzilla 安装安装到/usr/local/bugzilla。 您应该在您的httpd.conf文件中包含以下 <Directory> 条目

  <Directory /usr/local/bugzilla/>
  Options +FollowSymLinks +Indexes +Includes +ExecCGI
  AllowOverride All
</Directory>

上面重要的部分是 "AllowOverride All"。 如果没有它,则.htaccess由以下文件创建的checksetup.pl文件将没有足够的权限来保护您的 Bugzilla 安装。

如果您正在使用 Internet Information Server (IIS) 或另一个不遵守.htaccess约定的 Web 服务器,则可以通过编辑localconfig并设置$create_htaccess变量为0.

4.2.7. mod_throttle和安全

用户可能因错误或故意连续多次访问数据库,这可能会导致其他用户的访问速度非常慢。 如果您的 Bugzilla 安装遇到此问题,您可以安装 Apache 模块mod_throttle,该模块可以按 IP 地址限制连接。 您可以从 http://www.snert.com/Software/Throttle/ 下载此模块。 按照说明将其安装到您的 Apache 安装中。 此模块仅适用于 Apache Web 服务器! 您可以使用此模块提供的 ThrottleClientIP 命令来实现此目标。 有关更多信息,请参阅模块说明。