#!../perl/bin/perl

## 用户注册

if($ENV{'SERVER_SOFTWARE'}=~/IIS.\d+.0$/){my $cd=$0;$cd=~s/[^\\]*$//;chdir($cd);}

use CGI_Lite;
use Digest::MD5 'md5_hex';
require "config.cgi";

if (!defined $allowregister or $allowregister != 1) {
	&html("此功能已关闭！",0);
}

@array = qw(name domain pass1 pass2 question answer realname idno depart checkcode agreement rsid);

&parse_form(@array);

my $domainlist = $ENV{'HTTP_HOST'};
$domainlist =~ s/^mail\.//g;
$domainlist = qq{<input name="domain" style="width:65px;height:15px" value="}.$domain.qq{" OnKeyPress='if(event.keyCode==13){return false;}'/>};
if (open(FILE,"$mailroot/domains.tab")){
	$domainlist = '<select name="domain" style="width:140px">';
	while (<FILE>){
		chompEx($_);
		if (/"([^"]+\.[^"]+)"/) {
			$domainlist .= "<option value =\"$1\">$1</option>";
		}
	}
	$domainlist .= '</select>';
	close(FILE);
}

my $passmin = 6;
my $passmax = 16;
if (open F,"../../JDWA/cgi/config.local.cgi") {
	while (<F>) {
		if (/^passmin\s*=\s*(\d+)/) {
			$passmin = $1;
			last;
		}
	}
	close F;
}

if ($name ne '') {
	my $email = "$name\@$domain";
	&html("请填写用户名",2) if ($name eq '');
	&html("用户名只能包含：英文字母 数字 - _",2) if ($name =~ /[^a-z0-9\_\-]/);
	&html("用户 $email 已注册",2) if (isExists($email));
	
	&html("请填写密码",2) if ($pass1 eq '' or $pass2 eq '');
	&html("密码包含非法字符",2) if ($pass1 =~ /\s/);
	&html("两次输入的密码不一致",2) if ($pass1 ne $pass2);
	&html("密码长度在$passmin-$passmax个字符之间",2) if (((length $pass1) < $passmin) || ((length $pass1) > $passmax));

	&html("密码提示问题和答案不能相同",2) if ($question eq $answer);
	
	#&html("请阅读并接受服务条款",2) if (!defined $agreement or $agreement != 1);

	if (!defined $checkcode or $checkcode !~ /^\d{4}$/) {
		&html("验证码错误，请输入4位数字组成的验证码",2);
	}
	&html("验证码错误，请重新输入",2) if (!-f "../checkcode/$rsid\_$checkcode");
	unlink glob "../checkcode/$rsid\_*";

	if (open USER,">>$svrTab{MailBoxPath}/domains/newUserList.tab"){
		flock(USER,2);
		print USER "$name\t$domain\t$pass1\t$realname\t$depart\t$question\t$answer\n";
		close USER;
	}
	
	&html("申请已提交，请耐心等待管理员的审核 ",3);
}else{
	if (!defined $rsid or $rsid !~ /^\w{32}$/) {
		$rsid = md5_hex(time().rand(1));
	}
	&html("&nbsp",1);
}


sub isExists
{
	my $username=shift;
	my @tmp=split('@',$username);
	my @tmp1=();
	open(F,"$mailroot/mailusers.tab") or die("can't open the file $!\n");
	@tmp1=<F>;
	close(F);
	my @tmp2=grep{$_=~/"$tmp[0]"/i and $_=~/"$tmp[1]"/i}@tmp1;
	my $count=@tmp2;
	if($count){
		return 1;
	}
	else{
		return 0;
	}
}

sub html {
	my ($emsg,$flag) = @_;

	print "Content-Type: text/html; charset=$charset\n\n";
	print qq~
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
 <head>
	<meta http-equiv='content-type' content='text/html; charset=utf-8'>
<link href="../css/style.css" rel="stylesheet" type="text/css" />
	<title>$ttitle</title>
	<script language=javascript>
		function refresh(){
			document.regform.checkimg.src = "checkcode.cgi?$rsid+"+Math.random(1);
		}
		function clsform(){
			document.regform.name.value = "";
			document.regform.pass1.value = "";
			document.regform.pass2.value = "";
			document.regform.question.value = "";
			document.regform.answer.value = "";
			document.regform.checkcode.value = "";
			document.regform.realname.value = "";
			document.regform.idno.value = "";
			document.regform.depart.value = "";
			document.getElementById('alertmsg').innerHTML = "&nbsp";
			return true;
		}
		function checkform(){
			if(!confirm('确定要注册吗？')){
				return false;
			}
			if (document.regform.name.value == "") {
				document.getElementById('alertmsg').innerHTML = "请填写用户名";
				return false;
			}
			if (document.regform.name.value.match(/"/)){
				document.getElementById('alertmsg').innerHTML = "用户名不能包含双引号";
				return false;
			}
			if (document.regform.pass1.value == "" || document.regform.pass2.value == "") {
				document.getElementById('alertmsg').innerHTML = "请填写密码";
				return false;
			}
			if (document.regform.pass1.value != document.regform.pass2.value) {
				document.getElementById('alertmsg').innerHTML = "两次输入的密码不一致";
				return false;
			}
			if (document.regform.pass1.value.match(/"/)){
				document.getElementById('alertmsg').innerHTML = "密码不能包含双引号";
				return false;
			}
			if (document.regform.pass1.value.length < $passmin || document.regform.pass1.value.length > $passmax) {
				document.getElementById('alertmsg').innerHTML = "密码长度在$passmin-$passmax个字符之间";
				return false;
			}
			if (document.regform.question.value == "") {
				document.getElementById('alertmsg').innerHTML = "请填写密码保护问题";
				return false;
			}
			if (document.regform.answer.value == "") {
				document.getElementById('alertmsg').innerHTML = "请填写密码保护问题的答案";
				return false;
			}
			if (document.regform.name.value == "") {
				document.getElementById('alertmsg').innerHTML = "请填写验证码";
				return false;
			}
			if (!document.agreement.checked) {
				document.getElementById('alertmsg').innerHTML = "请阅读并接受服务条款";
			}
			if (document.regform.question.value == document.regform.answer.value) {
				document.getElementById('alertmsg').innerHTML = "密码保护问题和答案不能相同，请重新填写！";
				return false;
			}
			if (document.regform.pass1.value != document.regform.pass2.value) {
				document.getElementById('alertmsg').innerHTML = "两次输入的密码不一致，请重新输入";
				document.regform.pass1.value = "";
				document.regform.pass2.value = "";
				document.regform.pass1.focus();
				return false;
			}

			return true;
		}
	</script>
</head>
<body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0>
 ~;

	$JDWM = <<"EOF";
<div id="body">
<div class="top">
	<div class="head">
		<div class="logo"><a href="#"><img src="../imgs/logo.jpg" /></a></div>
		<div class="head_rt">
			<ul>
			<br />
			<li class="contt">service\@mailer.com.cn</li>
		</ul>
		</div>
	</div>
</div>
<div>
	<table align="left" cellpadding=0 cellspacing=0>
EOF

	if ($flag == 0) {
		$JDWM .= qq~ 
			<tr>
				<td></td>
				<td><div id='alertmsg' style='color:red'>$emsg</div></td>
			</tr>
		~;
	}elsif($flag == 3){
		$JDWM .= qq~ 
			<tr>
				<td width=100></td>
				<td height="100" class="doc131"><div id='alertmsg' style="color:#ff0000;font-size:18px">&nbsp;&nbsp;&nbsp;$emsg&nbsp;&nbsp;&nbsp;&nbsp;<a href='/'>返回登录页</a></div></td>
				<td height="100" width=100></td>
			</tr>
		~;
	}else{
		$JDWM .= qq~
			<tr>
				<td></td>
				<td><div id='alertmsg' style='color:red'>$emsg</div></td>
			</tr>
		<form name='regform' method='post' action='register.cgi' OnKeyPress='if(event.keyCode==13){return false;}' onSubmit="return checkform();"> 
			<input type='hidden' name='rsid' value='$rsid'/>
			<tr>
				<td height="40" align="right" class="doc131">用户名<span class="STYLE1">*</span>：</td>
				<td><input type='text' name='name' size=30 maxlength=128 value="$name" OnKeyPress='if(event.keyCode==13){return false;}'></td>
			</tr>
			<tr>
				<td height="40" align="right" class="doc131">域名<span class="STYLE1">*</span>：</td>
				<td height="40" align="left" class="doc131"><span valign="middle">\@</span>$domainlist</td>
			</tr>
			<tr>
				<td height="40" align="right" class="doc131">密码<span class="STYLE1">*</span>：</td>
				<td><input type='password' name='pass1' size=32 maxlength=128 value="" OnKeyPress='if(event.keyCode==13){return false;}'></td>
			</tr>
			<tr>
				<td height="40" align="right" class="doc131">再次输入密码<span class="STYLE1">*</span>：</td>
				<td><input type='password' name='pass2' size=32 maxlength=128 value="" OnKeyPress='if(event.keyCode==13){return false;}'></td>
			</tr>
			<tr>
				<td height="40" align="right" class="doc131">密码保护问题<span class="STYLE1">*</span>：</td>
				<td><input type='text' name='question' size=30 maxlength=128 value="$question" OnKeyPress='if(event.keyCode==13){return false;}'></td>
			</tr>
			<tr>
				<td height="40" align="right" class="doc131">密码保护问题答案<span class="STYLE1">*</span>：</td>
				<td><input type='text' name='answer' size=30 maxlength=128 value="$answer" OnKeyPress='if(event.keyCode==13){return false;}'></td>
			</tr>
			<tr>
				<td height="40" align="right" class="doc131">验证码<span class="STYLE1">*</span>：</td>
				<td><input type='text' name='checkcode' size=4 maxlength=4 value="" OnKeyPress='if(event.keyCode==13){return false;}'>&nbsp&nbsp<img src='checkcode.cgi?$rsid' name='checkimg' title='点击图片刷新' onclick='refresh();'/>&nbsp<a href='javascript:refresh();'>看不清？换一个</a></td>
			</tr>
			<!--tr>
				<td height="40" align="right" class="doc131">服务条款<span class="STYLE1">*</span>：</td>
				<td><input type='checkbox' name='agreement' value=1 /><span class="doc131">接受</span><a href='../agreement.html' target='_blank'>（查看服务条款）</a></td>
			</tr-->
			<tr>

			</tr>
			<tr>
				<td height="40" align="right" class="doc131">真实姓名：</td>
				<td><input type='text' name='realname' size=30 maxlength=128 value="$realname" OnKeyPress='if(event.keyCode==13){return false;}'></td>
			</tr>
			<tr>
				<td height="40" align="right" class="doc131">证件号：</td>
				<td><input type='text' name='idno' size=30 maxlength=128 value="$idno" OnKeyPress='if(event.keyCode==13){return false;}'></td>
			</tr>
			<tr>
				<td height="40" align="right" class="doc131">部门：</td>
				<td><input type='text' name='depart' size=30 maxlength=128 value="$depart" OnKeyPress='if(event.keyCode==13){return false;}'></td>
			</tr>
			<tr>
				<td></td><td><input type='submit' value=' 注册 '>&nbsp&nbsp&nbsp&nbsp<input type='button' value=' 重填 ' onClick='return clsform();'></td>
			</tr>
		</form>
		~;
	}
	$JDWM .= qq~
	</table>
	</div>
</div>

<div id="footer">
	Copyright © 2011 北京春笛网络信息技术服务有限公司<br />有春笛软件旗下网站：<a href="#">金笛邮件</a>、<a href="#">金笛无线
	</a>、<a href="#">金笛即时通讯软件</a><br />服务热线:010-82355864,82358387,82356956,82356576,82356577,82356575    客服邮箱：service\@mailer.com.cn<br />京ICP备10009974号
	</div>
</div>
	</body>
</html>
~;
	#$JDWM =~ s/[\r\n]+\s*//g;
	print "$JDWM";
	exit;
}
