#!/usr/bin/perl
#+----------------------------------------+
#|       スレッド表示対応掲示板           |
#| - BULLETIN BOARD Pro - Ver1.0 98/01/31 |
#|             bbpro_reg.cgi              |
#|      (c)1997-8 Takeshi Iwanami         |
#|        akira67@po.jah.or.jp            |
#|  http://www.jah.or.jp/~akira67/perl/   |
#| ※このスクリプト群はシェアウエアです。 |
#| ※継続使用の場合はレジスト料金をお支払 |
#| いの上ご利用ください。                 |
#| ※サポートページの利用規定を遵守してく |
#| ださい。再配布および転貸等は一切認めな |
#| いものとします。                       |
#+----------------------------------------+
# このスクリプトは、発言者事前登録処理用のものです。
use Pg;
require 'bbpro_lib.pl';
require 'bbpro_conf.pl';
require 'jcode.pl';
&setver;
&conf;

&decording(*FORM);

&check_reg if $FORM{'flag'} eq '1';
&display_reg_form;

sub display_reg_form {

print <<HTML;
Content-type: text/html

<HTML><HEAD><TITLE>$title</TITLE>
<STYLE type="text/css">A{text-decoration: none;}</STYLE>
</HEAD>
<BODY BGCOLOR=$body2_bg TEXT=$body2_text LINK=$body2_link
VLINK=$body2_vlink ALINK=$body2_alink>
<BLOCKQUOTE>
<H2>$title 会員登録</H2>
この掲示板に投稿するには事前にあなたのE-mailアドレスを登録してパスワードをメールで受け取る必要があります。<BR>
以前に登録した方でパスワードを忘れてしまった方は、再度登録することで再び投稿ができるようになります。
<P><FORM ACTION=bbpro_reg.cgi METHOD=post>
<TABLE BORDER=3 CELLPADDING=3 WIDTH=87%>
<TR><TH>E-mailアドレス</TH><TD><INPUT NAME=email SIZE=50></TD></TR>
</TABLE></P>
<P><B>《注意》</B><BR>
<B>パスワードは、ここで入力したE-mailアドレスへ直接送ります</B>ので、必ず正確に入力してください。全角英数字ではメールが届きませんので注意してください。念のため、日本語変換ツール(IME)をOFFにしてから入力してください。<P>
<DIV ALIGN=right>
<INPUT TYPE=hidden NAME=flag VALUE=1>
<INPUT TYPE=reset VALUE=取　消>
<INPUT TYPE=submit VALUE=登　録>
<HR NOSHADE>
</DIV></FORM></BLOCKQUOTE></BODY></HTML>
HTML

    exit;
}

sub check_reg {

    $FORM{'email'} || push(@msg, 'E-mailアドレスが入力されていません。');
    if ($FORM{'email'} =~ /[\0-,\/\:\;<-?\[-\^\`\{-\~]/) {
        push(@msg, '特殊文字は使用できません。');
    }
    if ($FORM{'email'} =~ /[^ -\~]/) {
        push(@msg, 'メールアドレスに全角文字は使用できません。');
    }
    if ($FORM{'email'} && $FORM{'email'} !~ /.+\@.+\..+/) {
        push(@msg, 'メールアドレスが正しくありません。');
    }
    if ($FORM{'email'} eq $admin_email) {
        push(@msg, '管理者のメールアドレスでは登録できません。');
    }
    &error(@msg) if @msg;

    @str = ('a'..'z','0'..'9');
    srand(time|$$);
    $passwd = '';
    foreach (1..6) { $passwd .= $str[rand(36)]; }

    $db = Pg::connectdb("dbname = bbpro user = postgres");
    $sql = "delete from member where email='$FORM{'email'}'";
    $dataset = $db->exec($sql);
    if ($msg = $db->errorMessage) { &error($msg,$sql); }
    $sql = "insert into member values ('$FORM{'email'}','$passwd')";
    $dataset = $db->exec($sql);
    if ($msg = $db->errorMessage) { &error($msg,$sql); }

    $mail = <<MAIL;
---------------------------------------------------------
 $title パスワードの発行
---------------------------------------------------------
 あなたのパスワードは

 $passwd

 です。忘れないようにメモをしてください。

 $titleは以下のURLから見ることができます。

 $bbpro_url

 なお、このメールに覚えがない場合は、誰かがあなたのアド
 レスを使って勝手に登録したものと思われます。上記のパス
 ワードがわからなければ書込みができないようになっていま
 すのでご安心ください。
 不明な点は下記までメールにてお願いいたします。


 $title
 管理人 $admin_name
 $admin_email
---------------------------------------------------------
MAIL

    &sendmail($FORM{'email'},$mail);

    print <<HTML;
Content-type: text/html

<HTML><HEAD><TITLE>$title</TITLE>
<STYLE type="text/css">A{text-decoration: none;}</STYLE>
</HEAD>
<BODY BGCOLOR=$body2_bg TEXT=$body2_text LINK=$body2_link
VLINK=$body2_vlink ALINK=$body2_alink>
<BLOCKQUOTE>
<H2>$title 会員登録</H2>
登録が完了\しました。<BR>
<B>あなたが入力したメールアドレス宛に</B>パスワードが送られます。<BR>
メールが届かない場合はアドレスの入力が間違っている可能\性があります。その時は再度登録の手続きをしてください。<P>
<DIV ALIGN=right>
<FORM ACTION=bbpro_view1.cgi><INPUT TYPE=submit VALUE=投稿リスト画面へ>
<HR NOSHADE>
<SMALL><B>$prod_name v$version <A HREF=$a_url>$signature</A></B></SMALL>
</FORM></BLOCKQUOTE></BODY></HTML>
HTML

    exit;


}

sub sendmail {

     local($mailto, $data) = @_;
     $subject = $title.' パスワードの発行';
     &jcode'convert(*subject,'jis');
     &jcode'convert(*data,'jis');

#     open(MAIL, ">> bbpro_mail.log") || &error("Can\'t send to: $mailto");
     open(MAIL, "| $sendmail -t $mailto") || &error("Can\'t send to: $mailto");

     print MAIL "To: $mailto\n",
                "From: $admin_email\n",
                "Subject: $subject\n",
                "Content-Transfer-Encording: 7bit\n",
                "Content-Type: text/plain\n\n",

                "$data\n";

     close(MAIL);
}
