記事No | : 10058 |
投稿日 | : 2012/01/29(Sun) 19:25:44 |
タイトル | : PasswordManagerで新規登録ができない |
ID情報 | : arim |
投稿者 | : arim |
URL | : http://www.a-arim.com/pwmgr/ |
よろしくお願いします。
PasswordManagerをパターン2で設置しました。
check.cgiは
Check Mode: [ PasswordManager v3.32 ]
会員ファイルパス : OK
会員ファイルパーミッション : OK
パスワードファイルパス : OK
パスワードファイルパーミッション : OK
アクセスログパス : OK
アクセスログパーミッション : OK
sendmailパス : OKです。
init.cgiは
# ■ 基本設定
#===========================================================
# 管理用パスワード
$cf{password} = '3955';
# 管理アドレス
$cf{master} = 'xxx@xxx.xxx';
# パスワード発行形態
# 1 : ユーザからの発行&メンテを可能にする
# 2 : 発行は管理者のみ。ユーザはメンテのみ
# 3 : 発行&メンテは管理者のみ(pwmgr.cgi index.htmlは不要)
$cf{pwd_regist} = 1;
# パスワードファイル【サーバパス】
# → 正確にフルパスを記述すること
$cf{pwdfile} = '/home/arim/public_html/arim/pwmgr';
# 会員ファイル【サーバパス】
# → 正確にフルパスを記述すること
$cf{memfile} = '/home/arim/public_html/arim/pwmgr';
# アクセスログファイル【サーバパス】
# → 正確にフルパスを記述すること
$cf{axsfile} = '/home/arim/public_html/arim/pwmgr';
# アクセスログの最大数
$cf{log_max} = 300;
# 本体プログラムURL【URLパス】
$cf{pwmgr_cgi} = './pwmgr.cgi';
# 管理プログラムURL【URLパス】
$cf{admin_cgi} = './admin.cgi';
# テンプレートディレクトリ【サーバパス】
$cf{tmpldir} = './tmpl';
# 戻り先URL【URLパス】
$cf{back_url} = '../index.html';
# 1ページ当り会員表示件数
$cf{pageView} = 50;
# sendmailパス【サーバパス】
$cf{sendmail} = '/usr/lib/sendmail';
# sendmailの -fコマンドが必要な場合
# 0=no 1=yes
$cf{sendm_f} = 0;
# ユーザ登録アクセス制限(半角スペースで区切る)
# → 拒否するホスト名又はIPアドレスを記述
# → 記述例 $deny = '.anonymizer.com 211.154.120.';
$cf{denyhost} = '';
# 1回当りの最大投稿サイズ (bytes)
$cf{maxdata} = 51200;
# ホスト取得方法
# 0 : gethostbyaddr関数を使わない
# 1 : gethostbyaddr関数を使う
$cf{gethostbyaddr} = 0;
#===========================================================
# ■ 設定完了
.htaccessは
AuthUserFile //home/arim/public_html/arim/pwmgr/.htpasswd
AuthGroupFile /dev/null
AuthName "mama no kimochi "
AuthType Basic
<Limit POST GET>
require valid-user
</Limit>
です。
何が原因でエラーになっているのかどこをどう直したらいいのかご教授下さい。
よろしくお願いします。
記事No | : 10060 |
投稿日 | : 2012/01/29(Sun) 21:35:25 |
タイトル | : Re: PasswordManagerで新規登録ができない |
ID情報 | : web25 |
投稿者 | : web25 |
open err: /home/arim/public_html/arim/pwmgr
になっているので・・・
パスワードファイル、会員ファイル、ログファイル
が同一の場所になっていませんか?
**********
$cf{pwdfile} = '/home/USER/private/.htpasswd';
.htpasswdまでのサーバパスを正確に記述します。
$cf{memfile} = '/home/USER/private/member.dat';
member.datまでのサーバパスをフルパスで正確に記述します。
$cf{axsfile} = '/home/USER/private/pwlog.dat';
pwlog.datまでのサーバパスをフルパスで正確に記述します。
**********
となっているので
$cf{pwdfile} であれば
$cf{pwdfile} = '/設置場所パス/.htpasswd';
にしないといけないと思います。
誤表記あったらすみません・・・。
記事No | : 10064 |
投稿日 | : 2012/01/29(Sun) 22:40:56 |
タイトル | : ありがとうございました! |
ID情報 | : arim |
投稿者 | : arim |
URL | : http://www.a-arim.com/pwmgr/ |
web25さん、お返事をありがとうございました。
もう初歩的な見落としですみません。
お時間をかけていただきありがとうございました(^_^)
記事No | : 10065 |
投稿日 | : 2012/01/29(Sun) 23:07:27 |
タイトル | : Re: ありがとうございました! |
ID情報 | : web25 |
投稿者 | : web25 |
よかったですね(^^)!
これからもがんばってください♪
記事No | : 10066 |
投稿日 | : 2012/01/29(Sun) 23:38:23 |
タイトル | : きゃ〜急にSoftware error!!! |
ID情報 | : arim |
投稿者 | : arim |
URL | : http://www.a-arim.com/pwmgr/ |
すみません。せっかくできたと思ったのですが(T_T)
なぜか急にSoftware errorがでるようになってしまいました。
なぜですか?
特に変なことはしていないのですが・・・・
記事No | : 10069 |
投稿日 | : 2012/01/30(Mon) 00:20:32 |
タイトル | : Re: きゃ〜急にSoftware error!!! |
ID情報 | : web25 |
投稿者 | : web25 |
> すみません。せっかくできたと思ったのですが(T_T)
> なぜか急にSoftware errorがでるようになってしまいました。
> なぜですか?
> 特に変なことはしていないのですが・・・・
init.cgi がおかしいみたいなので、
$cf{pwmgr_cgi}のあたりをコピペしてもらえます?
記事No | : 10070 |
投稿日 | : 2012/01/30(Mon) 00:42:35 |
タイトル | : Re^2: きゃ〜急にSoftware error!!! |
ID情報 | : arim |
投稿者 | : arim |
URL | : http://www.a-arim.com/pwmgr/ |
# 管理用パスワード
$cf{password} = '3955';
# 管理アドレス
$cf{master} = ';
# パスワード発行形態
# 1 : ユーザからの発行&メンテを可能にする
# 2 : 発行は管理者のみ。ユーザはメンテのみ
# 3 : 発行&メンテは管理者のみ(pwmgr.cgi index.htmlは不要)
$cf{pwd_regist} = 3;
# パスワードファイル【サーバパス】
# → 正確にフルパスを記述すること
$cf{pwdfile} = '/home/arim/public_html/arim/pwmgr/.htpasswd';
# 会員ファイル【サーバパス】
# → 正確にフルパスを記述すること
$cf{memfile} = '/home/arim/public_html/arim/pwmgr/member_dat.cgi';
# アクセスログファイル【サーバパス】
# → 正確にフルパスを記述すること
$cf{axsfile} = '/home/arim/public_html/arim/pwmgr/pwlog_dat.cgi';
# アクセスログの最大数
$cf{log_max} = 300;
# 本体プログラムURL【URLパス】
$cf{pwmgr_cgi} = './pwmgr.cgi';
# 管理プログラムURL【URLパス】
$cf{admin_cgi} = './admin.cgi';
# テンプレートディレクトリ【サーバパス】
$cf{tmpldir} = './tmpl';
# 戻り先URL【URLパス】
$cf{back_url} = '../index.html';
# 1ページ当り会員表示件数
$cf{pageView} = 50;
# sendmailパス【サーバパス】
$cf{sendmail} = '/usr/lib/sendmail';
# sendmailの -fコマンドが必要な場合
# 0=no 1=yes
$cf{sendm_f} = 0;
# ユーザ登録アクセス制限(半角スペースで区切る)
# → 拒否するホスト名又はIPアドレスを記述
# → 記述例 $deny = '.anonymizer.com 211.154.120.';
$cf{denyhost} = '';
# 1回当りの最大投稿サイズ (bytes)
$cf{maxdata} = 51200;
# ホスト取得方法
# 0 : gethostbyaddr関数を使わない
# 1 : gethostbyaddr関数を使う
$cf{gethostbyaddr} = 0;
#===========================================================
# ■ 設定完了
とりあえずすべてコピペしてみました。
これでわかりますか?
記事No | : 10071 |
投稿日 | : 2012/01/30(Mon) 00:52:40 |
タイトル | : Re^3: きゃ〜急にSoftware error!!! |
ID情報 | : web25 |
投稿者 | : web25 |
すみません(^^;
まだちょっと、、、
pwmgr.cgi にはなんて書いてありますか(・・;
それか、上記のcgiはパーミッション705ですか?
記事No | : 10072 |
投稿日 | : 2012/01/30(Mon) 00:59:56 |
タイトル | : Re^4: きゃ〜急にSoftware error!!! |
ID情報 | : arim |
投稿者 | : arim |
URL | : http://www.a-arim.com/pwmgr/ |
pwmgr.cgiはまったく開いてもなくてサーバに送って705にしたのです。
他のCGIもパーミッションは705になってます。
(T_T)
ほんとに急にエラーが出るようになってしまって・・・なんででしょうね。
他の場所で新たにダウンロードしたものを前回のように変更してサーバに送って試したのですがそちらも同じエラーメッセージなんです。 一晩寝たら直るかなぁ(^_^; なんてことはないですね(T_T)
#!/usr/local/bin/perl
#┌─────────────────────────────────
#│ PasswordManager : pwmgr.cgi - 2011/09/28
#│ Copyright (c) KentWeb
#│ http://www.kent-web.com/
#└─────────────────────────────────
# モジュール宣言
use strict;
use CGI::Carp qw(fatalsToBrowser);
use lib "./lib";
use Jcode;
# 設定ファイル認識
require "./init.cgi";
my %cf = &init;
# データ受理
my %in = &parse_form;
# 条件分岐
if ($in{mode} eq "new_user") { &new_user; }
if ($in{mode} eq "chg_user") { &chg_user; }
if ($in{mode} eq "del_user") { &del_user; }
&error("不明なアクセスです");
#-----------------------------------------------------------
# ユーザ登録
#-----------------------------------------------------------
sub new_user {
# 発行制限確認
if ($cf{pwd_regist} > 1) { &error("不正なアクセスです"); }
# ホスト名を取得
my $host = &get_host;
# 入力チェック
my $err;
if ($in{name} eq "") { $err .= "名前が入力モレです<br>"; }
if ($in{eml1} ne $in{eml2}) { $err .= "メールの再度入力が異なります<br>"; }
if ($in{eml1} !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,}$/) {
$err .= "メールの入力内容が不正です<br>";
}
if (length($in{id}) < 4 || length($in{id}) > 8) {
$err .= "ログインIDは4〜8文字で入力してください<br>";
}
if ($in{id} =~ /\W/) {
$err .= "ログインIDに英数字以外の文字が含まれています<br>";
}
&error($err) if ($err);
# IDの重複チェック
my ($flg,@data);
open(DAT,"+< $cf{pwdfile}") or &error("open err: $cf{pwdfile}");
eval "flock(DAT, 2);";
while (<DAT>) {
my ($id,$pw) = split(/:/);
if ($in{id} eq $id) {
$flg++;
last;
}
push(@data,$_);
}
# 重複あり
if ($flg) {
close(DAT);
&error("$in{id}は既に発行済です。他のID名をご指定ください");
}
# パスワード発行
my @wd = (0 .. 9, 'a' .. 'z', 'A' .. 'Z');
my $pwd;
srand;
for (1 .. 8) {
$pwd .= $wd[int(rand(@wd))];
}
# 暗号化
my $crypt = &encrypt($pwd);
# 更新
seek(DAT, 0, 0);
print DAT @data;
print DAT "$in{id}:$crypt\n";
truncate(DAT, tell(DAT));
close(DAT);
# 会員ファイル
open(DAT,">> $cf{memfile}") or &error("write err: $cf{memfile}");
print DAT "$in{id}<>$in{name}<>$in{eml1}<><>\n";
close(DAT);
# 時間取得
my $date = &get_time;
# メール本文読み込み
open(IN,"$cf{tmpldir}/mail.txt") or &error("open err: mail.txt");
my $mbody = join('', <IN>);
close(IN);
# 文字置き換え
$mbody =~ s/!name!/$in{name}/g;
$mbody =~ s/!date!/$date/g;
$mbody =~ s/!host!/$host/g;
$mbody =~ s/!email!/$in{eml1}/g;
$mbody =~ s/!id!/$in{id}/g;
$mbody =~ s/!pw!/$pwd/g;
# 本文コード変換
Jcode::convert(\$mbody, 'jis', 'sjis');
# 件名BASE64化
my $msub = Jcode->new("登録の案内")->mime_encode;
# sendmailコマンド
my $scmd = "$cf{sendmail} -t -i";
if ($cf{sendm_f}) {
$scmd .= " -f $in{master}";
}
# sendmail送信
open(MAIL,"| $scmd") or &error("メール送信失敗");
print MAIL "To: $in{eml1}\n";
print MAIL "From: $cf{master}\n";
print MAIL "Cc: $cf{master}\n";
print MAIL "Subject: $msub\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $cf{version}\n\n";
print MAIL "$mbody\n";
close(MAIL);
# 完了メッセージ
my $ttl = "ご登録ありがとうございました。";
my $msg = "ログインIDとパスワード情報は以下のアドレスへ送信しました。";
$msg .= "<p><b>$in{eml1}</b></p>";
&message($ttl, $msg);
}
#-----------------------------------------------------------
# パスワード変更
#-----------------------------------------------------------
sub chg_user {
# 発行制限
if ($cf{pwd_regist} > 2) { &error("不正なアクセスです"); }
# ホスト名を取得
my $host = &get_host;
# チェック
my $err;
if ($in{id} eq "") { $err .= "ログインIDが入力モレです<br>"; }
if ($in{pw} eq "") { $err .= "旧パスワードが入力モレです<br>"; }
if ($in{pw1} eq "") { $err .= "新パスワードが入力モレです<br>"; }
if ($in{pw1} ne $in{pw2}) {$err .= "新パスワードで再度入力分が異なります<br>";}
&error($err) if ($err);
# 暗号化
my $newpw = &encrypt($in{pw1});
# IDチェック
my ($flg, $crypt, @new);
open(DAT,"+< $cf{pwdfile}") or &error("open err: $cf{pwdfile}");
eval "flock(DAT, 2);";
while (<DAT>) {
my ($id,$pw) = split(/:/);
if ($in{id} eq $id) {
$flg = 1;
$crypt = $pw;
$_ = "$id:$newpw\n";
}
push(@new,$_);
}
if (!$flg) {
close(DAT);
&error("ログインID ($in{id}) は存在しません");
}
# 照合
chomp($crypt);
if (&decrypt($in{pw}, $crypt) != 1) {
close(DAT);
&error("パスワードが違います");
}
# パスファイル更新
seek(DAT, 0, 0);
print DAT @new;
truncate(DAT, tell(DAT));
close(DAT);
# 完了メッセージ
my $ttl = "パスワード変更完了";
my $msg = "ご利用をありがとうございました。";
&message($ttl, $msg);
}
#-----------------------------------------------------------
# ユーザ削除
#-----------------------------------------------------------
sub del_user {
# 発行制限
if ($cf{pwd_regist} > 2) { &error("不正なアクセスです"); }
# ホスト名を取得
my $host = &get_host;
# チェック
if ($in{id} eq "" || $in{pw} eq "") {
&error("ID又はパスワードが入力モレです");
}
# IDチェック
my ($flg, $crypt, @new);
open(DAT,"+< $cf{pwdfile}") or &error("open err: $cf{pwdfile}");
eval "flock(DAT, 2);";
while (<DAT>) {
my ($id,$pw) = split(/:/);
if ($in{id} eq $id) {
$flg = 1;
$crypt = $pw;
next;
}
push(@new,$_) if ($in{job} eq "del");
}
if (!$flg) {
close(DAT);
&error("ログインID ($in{id}) は存在しません");
}
# 照合
chomp($crypt);
if (&decrypt($in{pw}, $crypt) != 1) {
close(DAT);
&error("パスワードが違います");
}
# 実行
if ($in{job} eq "del") {
# パスファイル更新
seek(DAT, 0, 0);
print DAT @new;
truncate(DAT, tell(DAT));
close(DAT);
# 会員ファイル
my @file;
open(DAT,"+< $cf{memfile}") or &error("Open Error: $cf{memfile}");
eval "flock(DAT, 2);";
while (<DAT>) {
my ($id) = split(/<>/);
next if ($in{id} eq $id);
push(@file,$_);
}
seek(DAT, 0, 0);
print DAT @file;
truncate(DAT, tell(DAT));
close(DAT);
# 完了メッセージ
my $ttl = "登録ID削除完了";
my $msg = "これまでのご利用をありがとうございました。";
&message($ttl, $msg);
# 確認画面
} else {
&conf_del;
}
}
#-----------------------------------------------------------
# ホスト名取得
#-----------------------------------------------------------
sub get_host {
my $host = $ENV{REMOTE_HOST};
my $addr = $ENV{REMOTE_ADDR};
if ($cf{gethostbyaddr} && ($host eq "" || $host eq $addr)) {
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2);
}
$host ||= $addr;
my $flg;
foreach ( split(/\s+/, $cf{denyhost}) ) {
if (index($host,$_) >= 0) { $flg = 1; last; }
}
if ($flg) { &error("現在登録休止中です"); }
return $host;
}
#-----------------------------------------------------------
# エラー処理
#-----------------------------------------------------------
sub error {
my $err = shift;
open(IN,"$cf{tmpldir}/error.html") or die;
print "Content-type: text/html\n\n";
while(<IN>) {
s/!error!/$err/g;
print;
}
close(IN);
exit;
}
#-----------------------------------------------------------
# 完了メッセージ
#-----------------------------------------------------------
sub message {
my ($ttl,$msg) = @_;
# テンプレート読み込み
open(IN,"$cf{tmpldir}/message.html") or &error("open err: message.html");
my $tmpl = join('', <IN>);
close(IN);
# 置き換え
$tmpl =~ s/!title!/$ttl/g;
$tmpl =~ s/!message!/$msg/g;
$tmpl =~ s/!back_url!/$cf{back_url}/g;
# 著作権表記(削除・改変禁止)
my $copy = <<EOM;
<p align="center" style="margin-top:3em;font-size:10px;font-family:verdana,helvetica,arial,osaka;">
- <a href="http://www.kent-web.com/" target="_top">PasswordManager</a> -
</p>
EOM
# 表示
print "Content-type: text/html\n\n";
if ($tmpl =~ /(.+)(<\/body[^>]*>.*)/si) {
print "$1$copy$2\n";
} else {
print "$tmpl$copy\n";
print "</body></html>\n";
}
exit;
}
#-----------------------------------------------------------
# 削除確認画面
#-----------------------------------------------------------
sub conf_del {
open(IN,"$cf{tmpldir}/conf.html") or &error("open err: conf.html");
print "Content-type: text/html\n\n";
while(<IN>) {
s/!id!/$in{id}/g;
s/!pw!/$in{pw}/g;
print;
}
close(IN);
exit;
}
記事No | : 10073 |
投稿日 | : 2012/01/30(Mon) 11:29:13 |
タイトル | : 解決しました |
ID情報 | : arim |
投稿者 | : arim |
URL | : http://www.a-arim.com/pwmgr/ |
昨夜は遅くまでおつきあいいただきありがとうございました。
結局、原因はわからずじまいでしたが、無事動くようになりました。
もう一度最初からやり直したり別のサーバにつけてみたり思いつくことはやりましたが解決せず。
結局、タイムマシンをみたら、昨夜の10時38分のパックアップがあったのでそこのファイルでサーバにUPしたところ、動きました。
ちょっと消化不良の所はあるのですが、これで良しにします。
本当にありがとうございました(^_^)
記事No | : 10075 |
投稿日 | : 2012/01/30(Mon) 17:53:45 |
タイトル | : Re: 解決しました |
ID情報 | : web25 |
投稿者 | : web25 |
返答できなくてすみませんでした(^^;
解決してよかったですね(^^♪