Mantisではことあるごとにメールを送信する仕様になっています。
http://www.alles.or.jp/~sogabe/mantis/manual/1.4.5.html
まあバグトラッキングシステムであるから当然といえば当然ですが。
ですがXAMPPでメールを送信するには外部SMTPサーバを使用したりMercuryを起動したりする必要があって面倒なので、メール無しで使えるようにしてみます。
ここに同じ改造をしている人がいましたが、残念ながらソースは公開していません。
config_inc.php
Mantisは新規ユーザ登録時、ユーザ名を登録するとパスワードを自動発行してメールで送付する仕組みになっているので、パスワードを自動発行するけどメールは送付しないようにします。
core/print_api.php
手っ取り早く初期パスワードをとりあえずメールアドレスと同じにしてしまいます。
公開サーバでこんなことやったらアウトですが、そんな状況であればメール送信できないってことがありえないのでまあいいでしょう。
何故IDではなくメアドかというと、パスワードを作成してる関数の引数にメアドがあってIDがないからというだけです。
core/authentication_api.php
さっそく登録。
SELECT * FROM `mantis_user_table` ;
無事登録されました。
ではログイン!
あなたのアカウントが無効化もしくはブロックされているか、入力した利用者名かパスワードが間違っています。
あれ?
ちなみにログインチェックしてるのはcore/authentication_api.phpのauth_attempt_login()なのですが、無駄に超ややこしくて一体何をやってるのかよくわかりません。
誰かこの関数の動作を説明してくれ。
http://www.alles.or.jp/~sogabe/mantis/manual/1.4.5.html
まあバグトラッキングシステムであるから当然といえば当然ですが。
ですがXAMPPでメールを送信するには外部SMTPサーバを使用したりMercuryを起動したりする必要があって面倒なので、メール無しで使えるようにしてみます。
ここに同じ改造をしている人がいましたが、残念ながらソースは公開していません。
config_inc.php
$g_validate_email = 'OFF'; $g_check_mx_record = 'OFF'; $g_send_reset_password = 'OFF'; $g_enable_email_notification = 'OFF';$g_enable_email_notification = 'OFF'を指定すると新規ユーザ登録ができなくなります。
Mantisは新規ユーザ登録時、ユーザ名を登録するとパスワードを自動発行してメールで送付する仕組みになっているので、パスワードを自動発行するけどメールは送付しないようにします。
core/print_api.php
# prints the signup link
function print_signup_link() {
if ( ( ON == config_get_global( 'allow_signup' ) ) &&
( LDAP != config_get_global( 'login_method' ) ) &&
( ON == config_get( 'enable_email_notification' ) )
) {
print_bracket_link( 'signup_page.php', lang_get( 'signup_link' ) );
}
}
↓
function print_signup_link() {
if ( ( ON == config_get_global( 'allow_signup' ) ) &&
( LDAP != config_get_global( 'login_method' ) )
) {
print_bracket_link( 'signup_page.php', lang_get( 'signup_link' ) );
}
}
パスワードはランダムに作成されているので、メールが送信されないと確認不能になります。手っ取り早く初期パスワードをとりあえずメールアドレスと同じにしてしまいます。
公開サーバでこんなことやったらアウトですが、そんな状況であればメール送信できないってことがありえないのでまあいいでしょう。
何故IDではなくメアドかというと、パスワードを作成してる関数の引数にメアドがあってIDがないからというだけです。
core/authentication_api.php
function auth_generate_random_password( $p_email ) {
$t_val = mt_rand( 0, mt_getrandmax() ) + mt_rand( 0, mt_getrandmax() );
$t_val = md5( $t_val );
return utf8_substr( $t_val, 0, 12 );
}
↓
function auth_generate_random_password( $p_email ) {
return $p_email;
}
function auth_generate_confirm_hash( $p_user_id ) {
$t_confirm_hash_generator = config_get( 'password_confirm_hash_magic_string' );
$t_password = user_get_field( $p_user_id, 'password' );
$t_last_visit = user_get_field( $p_user_id, 'last_visit' );
$t_confirm_hash = md5( $t_confirm_hash_generator . $t_password . $t_last_visit );
return $t_confirm_hash;
}
↓
function auth_generate_confirm_hash( $p_user_id ) {
return $p_user_id;
}
これで完成!さっそく登録。
SELECT * FROM `mantis_user_table` ;
| id | 6 |
|---|---|
| username | hoge |
| realname | |
| dummy@example.com | |
| password | 32066a2f550b9a8b3f3c8b25c918de37 |
| enabled | 1 |
| protected | 0 |
| access_level | 25 |
| login_count | 0 |
| lost_password_request_count | 0 |
| failed_login_count | 0 |
| cookie_string | 32ff7a31ef3159f0d6be9e1e4fb6699b7b6a7aade80f86269e0768eb1e419579 |
| last_visit | 1304299714 |
| date_created | 1304299714 |
無事登録されました。
ではログイン!
あなたのアカウントが無効化もしくはブロックされているか、入力した利用者名かパスワードが間違っています。
あれ?
ちなみにログインチェックしてるのはcore/authentication_api.phpのauth_attempt_login()なのですが、無駄に超ややこしくて一体何をやってるのかよくわかりません。
誰かこの関数の動作を説明してくれ。
PR
トラックバック
トラックバックURL:
本文のSELECT結果にあるようにパスワードにdummy@example.comを使用したということでしたら、単純にmd5で計算した場合はpassword欄の文字列にはならないかと思います。
auth_generate_random_password( $p_email )の返値をmd5( $p_email )とすれば良いのではないでしょうか?
私は深くソースを追いかけていないため、ハッシュ値がずれた原因がどこにあるかは推測になってしまい申し訳ありません…。