归档:Hermes 破解

跳转到:导航搜索
Icon-trash.png 本文正在考虑删除!
理由

openSUSE 已经不再使用 Hermes,开发已于 2013 年停止。

请勿清空、合并或移动本文,或删除此通知。请参阅本文的页面和我们的删除策略以获取更多信息。


此页面提供了一些关于如何开始破解 Hermes 的提示。

如果您需要进一步的帮助(您可能需要 ;-)),请不要犹豫在 freenode 的 IRC 频道 #opensuse-boosters 中提问。

可能还有更多有用的信息,在开始破解 Hermes 时需要了解。如果您发现了它们,请将其添加到此页面或告诉我...


如何开始

Hermes 可以在 git checkout 中进行破解。要检出源代码,请运行

git clone https://github.com/openSUSE/hermes.git

要使用 Herminator,请确保已设置 HTTP 服务器,例如 Apache 或 lighttpd,以提供 Perl 脚本。

要使用 Starship,您需要一个 Ruby on Rails 环境。我们使用来自 openSUSE Tools 构建的“官方”Ruby 仓库

还需要 perl-DBD-mysql 包。

创建数据库

要创建 Hermes 的数据库,使用 ruby on rails 迁移,因为它是在这方面的最强大的机制。即使您只想使用 Hermes 的非 Ruby 部分,您也需要使用 starship 创建数据库。

首先,在 mysql 中创建一个空数据库,例如,名为 hermes,如下所示,以 root 身份

 mysql -e "create database hermes character set 'utf8'; grant all on hermes.* to hermes@localhost identified by 'hermes'; flush privileges;"

进入“starship”子目录

 cd starship

检查 config/database.yml 并为您的环境设置正确的用户、主机和数据库名称(如果您想在生产环境中运行 hermes,请配置“production”环境);请注意,在某些系统上,您还需要将 MySQL socket 文件路径更改为 /var/run/mysql/mysql.sock 而不是 /var/lib/mysql/mysql.sock

您可以通过环境变量 RAILS_ENV来控制要使用的环境(以及设置),例如:

 export RAILS_ENV=development

对于生产系统,使用

 export RAILS_ENV=production

要实际创建和设置所有表,请调用

 rake db:migrate

在 starship 目录中。就这样了。

注意:migration 20091125104613_change_gennotisent_default.rb 有问题。它应该将某些 datetime 字段的默认值设置为 '0'。不幸的是,这并没有发生。它仍然是 NULL,这阻止了 hermesgenerator 和 hermesworker 生成/发送任何消息。在修复此问题之前,您可以使用以下 SQL 代码片段来修复它

 ALTER table notifications CHANGE generated generated datetime DEFAULT 0;
 ALTER table generated_notifications CHANGE sent sent datetime DEFAULT 0;

Starship 没有一些初始数据库内容可以工作。可以通过调用以下命令轻松创建这些内容

 rake db:seed

Starship 中的身份验证

Hermes 当前知道三种身份验证方式

  • 模拟,即用户是硬编码的
  • ichain,使用 Novell iChain 身份验证
  • 使用浏览器窗口的基本身份验证

要选择身份验证代码,请在 starship/config/environments/ 中设置环境变量,例如在 development.rb 中用于开发模式

# Authentication:
# Starship can either authenticate against Novell iChain or use basic
# auth, which can be be configured with various sources through the
# webserver
# Parameter: AUTHENTICATION
# set this parameter to either
# :simulate => means the user is hardcoded to termite
# :ichain   => iChain is used.
# :off      => basic auth
AUTHENTICATION = :off


设置用户

由于您至少需要在 Starship 中需要一个用户,以下是如何创建它的方法

 freitag@trixa:~/suse/git/hermes/starship> script/console 
 Loading development environment (Rails 2.3.8)
 Loaded gui abstraction from .../abstraction.xml
 Loaded starship config from config/starship.yml
 >> p = Person.new
 => #<Person id: nil, email: nil, name: nil, jid: nil, stringid: nil, admin: false, hashed_password: nil, salt: nil>
 >> p.email='hacker@opensuse.org'
 => "hacker@opensuse.org"
 >> p.name='Heino Hack'
 => "Heino Hack"
 >> p.stringid='heino'
 => "heino"
 >> p.salt = Person.random_string(10)
 => "gMbLgpLPXg"
 >> p.hashed_password = Person.encrypt('secret', p.salt)
 => "e81e3d8242e87979756bd94fc8ff8273b9ab11bb"
 >> p.save
 => true
 >> exit
 freitag@trixa:~/suse/git/hermes/starship>

创建配置文件

Hermes 需要一个全局配置文件,放置在

 /etc/hermes.conf

要创建它,请将 conf/hermes.conf.in 中的模板复制到 /etc 并根据您的设置进行调整。配置文件必须是有效的 Perl 代码,并且可以使用 Perl 解释器检查语法

 kf@subbotin:~/hermes> perl -c /etc/hermes.conf
 /etc/hermes.conf syntax OK

一些重要的设置

  • %LOG:建议设置 logpath 条目以进行日志记录,这将导致 Hermes 进程在路径中生成日志文件。
  • $DB{'default'}:在此处指定您想要使用的数据库设置。
  • $HerminatorDir:Herminator 的基本路径,当前从这里读取通知插件
  • $OBSAPIBase:要使用的 openSUSE 构建服务的 API(如果需要)。

根据需要更改其他设置。

创建通知类型

安装后,可用通知类型的列表为空。它们会在首次使用时自动创建,因此无需显式创建它们。使用 Hermes 结账的顶级目录中的命令行工具 notifyHermes.pl 创建通知,例如使用

 notifyHermes -o 'bla=foo, bar=baz' CheckHermes

调用 notifyHermes.pl -h 以获取帮助。