KENT-WEB サポートコーナー 過去ログ [ 0230 ]


記事No: 10058
投稿日: 2012/01/29(Sun) 19:25:44
タイトルPasswordManagerで新規登録ができない
ID情報: arim
投稿者: arim
URLhttp://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
URLhttp://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
URLhttp://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
URLhttp://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
URLhttp://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
URLhttp://www.a-arim.com/pwmgr/

昨夜は遅くまでおつきあいいただきありがとうございました。
結局、原因はわからずじまいでしたが、無事動くようになりました。

もう一度最初からやり直したり別のサーバにつけてみたり思いつくことはやりましたが解決せず。
結局、タイムマシンをみたら、昨夜の10時38分のパックアップがあったのでそこのファイルでサーバにUPしたところ、動きました。

ちょっと消化不良の所はあるのですが、これで良しにします。
本当にありがとうございました(^_^)


記事No: 10075
投稿日: 2012/01/30(Mon) 17:53:45
タイトルRe: 解決しました
ID情報: web25
投稿者: web25

返答できなくてすみませんでした(^^;

解決してよかったですね(^^♪


[検索ページ] [掲示板]