#!/usr/bin/perl -w
#######f($ENV{'SERVER_SOFTWARE'}=~/IIS.\d+.0$/){my $cd=$0;$cd=~s/[^\\]*$//;chdir($cd);}
use File::stat;
require "common_admin.cgi";
%wd = (0,'星期日',1,'星期一',2,'星期二',3,'星期三',4,'星期四',5,'星期五',6,'星期六');
$cgi    = 'user_home.cgi';
$loginf = '.login';

($domain,$name,$dfgroup,$dfdomain,$dfsort,$ext) = @ARGV;
if ($ext eq 'logout'){
	# 取消登录状态
	my $dir = "$cfg{'mailroot'}/domains/$domain/$name/$jdwa";
	unlink("$dir/.banned");
	while (glob("$dir/*.crypt")){unlink($_);}
}
$dfgroup = '_' if !$dfgroup;
$dfdomain = '_' if !$dfdomain;
$dfsort = 0 if !$dfsort;
$arg = "$domain+$name+$dfgroup+$dfdomain+$dfsort";

## 得到POP进入的最后的日期和时间
$file = "$cfg{'mailroot'}/domains/$domain/$name/.ipconn";
if (-f $file){
	my ($y1,$m1,$d1,$hour1,$min1,$sec1,$wday1) = &get_time_stamp($file);
	$poplogin = "$y1年$m1月$d1日\($wd{$wday1}\) $hour1:$min1:$sec1";
}
if (!$poplogin){$poplogin = '-';}

## 获取用户当前环境
&get_userdef($domain,$name,"U");		# user.tab, config.tab读出
if (!$x{'MaxMBSize'}){$x{'MaxMBSize'} = $cfg{'mboxmax'};}
foreach('RealName','Telephone','Address','HomePage'){
	if (!$x{$_}){$x{$_} = '-';}
}
if ($x{'PopEnable'} == 0){$popstat = 'POP 停止中';} else {$popstat = 'POP 有效';}
if ($x{'ReceiveEnable'} == 0){$smtpstat = 'SMTP 停止中';} else {$smtpstat = 'SMTP 有效';}
if ($cfg{'jdwmdir'}){
	if (!-d $cfg{'jdwmdir'}){$jdwm = '不能使用';}
	elsif ($cfg{'jdwmlogin'}){
		my ($file,$login,$slogin,$bantime,$stamp,$ttl);
		$jdwm = '许可';
		$jdwm .= "(电子公告栏显示用户名: $cfg{'jdwmbbshandle'})" if $cfg{'jdwmbbshandle'};
		
		# 获取jdwm最后登录的日期和时间
		$file = "$cfg{'mailroot'}/domains/$domain/$name/$jdwa/$loginf";
		if (-f $file){
			my ($y1,$m1,$d1,$hour1,$min1,$sec1,$wday1) = &get_time_stamp($file);
			$stamp = "$y1年$m1月$d1日\($wd{$wday1}\) $hour1:$min1:$sec1";
		}
		if (!$stamp){$stamp = '-';}
		
		# 登录检查，可能被禁止登录。
		if (open(FILE,"$cfg{'jdwmdir'}/cgi/config.local.cgi")){
				while(<FILE>){
					chomp;
					if (/^ttl *= *(\d+)/){$ttl = $1;}
					if (/^bantime *= *(\d+)/){$bantime = $1;}
					if (/^slogin *= *(\d)/){$slogin = $1;}
				}
			close(FILE);
			if ($ttl){
				my $dir = "$cfg{'mailroot'}/domains/$domain/$name/$jdwa";
				while (glob("$dir/*.crypt")){
					if ((-M "$_")*24*60*60 <= $ttl){$login = 1;}
					else {unlink($_);}
				}
				my $arg = "$domain+$name+$dfgroup+$dfdomain+$dfsort+logout";
				if ($login){
					$jdwmc = '<b>登录中</b>';
					if (!$slogin){$jdwmc .= " <a href='$cgi?$arg'>(取消登录状态$arrow)</a>";}
				} elsif (-f "$dir/.banned" && $bantime && (stat("$dir/.banned"))[9] + $bantime < time()){
					$jdwmc = '<b>禁止登录尝试。</b>';
					if (!$slogin){$jdwmc .= " <a href='$cgi?$arg'>(解除禁止登录状态$arrow)</a>";}
				} else {$jdwmc = '退出中';}
			} else {$jdwmc = '(不明)';}
			$jdwmc = "<tr><td>web登录状态</td><td>$jdwmc<br>";
			$jdwmc .= "<tr><td>最近一次登录时间</td><td>$stamp<br>";
		}
	}
	else {$jdwm = '不允许';}
} else {$jdwm = '未设置';}
if ($cfg{'Log'}){$logging = '开启';} else {$logging = '关闭';}
if ($cfg{'robot'} =~ /^$name\@$domain$/i){$notice2 = 'robot';}
if ($cfg{'postmaster'} =~ /^$name\@$domain$/i){$notice2 = 'postmaster';}

## 获取所属用户组
if ($cfg{'robot'} ne "$name\@$domain"){
	foreach (&get_private_group_info("$name\@$domain")){
		my ($gid,$name2) = split(/\t/,$_);
		$group .= "$name2($gid), ";
	}
	$group =~ s/[, ]+$//;
}
$group = '-' if !$group;

## 病毒扫描
if (!-f $cfg{'scanner'} || !$cfg{'scanner'}){
	$scan = "未设置";
} elsif ($cfg{'scanning'}){
	if ($cfg{'scanonline'}){
		if (!&chk_filterOK('post-data')){$scan = "在线病毒扫描开启。";}
		else {$scan = "在线病毒扫描关闭。";}
	} else {
		if (!&chk_filterOK('in')){
			my $dir = "$cfg{'mailroot'}/domains";
			if (-f "$dir/$domain/$name/$jdwa/.no$avscan"){
				$scan = "关闭(个人禁用)";
			} elsif (-f "$dir/$avscan"){
				$scan = "扫描全域/所有用户";
			} elsif (-f "$dir/$domain/$avscan"){
				$scan = "扫描$domain的所有用户。";
			} elsif (-f "$dir/$domain/$name/$jdwa/$avscan"){
				$scan = "扫描单个用户。";
			} else {
				$scan = "关闭(个人禁用)";
			}
		} else {
			$scan = "离线病毒扫描关闭。";
		}
	}
} else {
	$scan = "[安全设置]-[病毒扫描] 停止";
}

# 转发指定、中继指定
if (open(FILE,"$cfg{'mailroot'}/domains/$domain/$name/mailproc.tab")){
		while(<FILE>){
			chomp;
			if (/^"*l?redirect"*\t(.*)/i){
				$redirect = $1;
				$redirect =~ s/"//g;
				$redirect =~ s/\s+/, /g;
			} elsif (/^"*smtprelay"*\t(.*)/i){
				$relay = $1;
				$relay =~ s/"//g;
				$relay =~ s/\s+/, /g;
			}
		}
	close(FILE);
}
$redirect = '-' if $redirect =~ /^\s*$/;
$relay = '-' if $relay =~ /^\s*$/;

## 累计磁盘使用量
$quota = &get_quota($domain,$name);
if (!$quota){$quota = 0;}
if ($quota >= $x{'MaxMBSize'}){$notice1 = '<b>(邮箱已满)</b>';}
1 while $quota =~ s/(.*\d)(\d\d\d)/$1,$2/g;
1 while $x{'MaxMBSize'} =~ s/(.*\d)(\d\d\d)/$1,$2/g;
$quota1 = &get_quota($domain,$name,'logs');		# 获取日志大小
1 while $quota1 =~ s/(.*\d)(\d\d\d)/$1,$2/g;
if (!$quota1){$quota1 = 0;}

## 自动过滤收到的邮件
if ($cfg{'distribute'}){
	if ($cfg{'Distribute'}){$distribute = '开启(运行中)';}
	else {$distribute = '关闭(该用户停止)';}
} else {
	$distribute = '关闭(环境设置为停止)';
}

## 个人头像
if (copy("$cfg{'mailroot'}/domains/$domain/$name/$jdwa/$myimg","$tempdir/$myimg")){$image = 1;}
else {unlink("$tempdir/$myimg");}

&html();

## --------------------------------------------------------------------
sub html {
	if ($notice2 eq 'robot'){$notice3 = "(这个用户是一个特殊用户(邮件列表处理器))";}
	elsif ($notice2 eq 'postmaster'){$notice3 = "(这个用户是postmaster管理员)";}
	
	&print_header();
	&print_menu1('home');
	&print_users_stat1();
	
	print <<"EOF";
$fs5$button 管理选项$fe$hr
<table cellpadding=0 cellspacing=0 border=0>
<tr><td>
<table celpadding=0 cellspacing=8 class='doc131' border=0>
EOF
	
	print <<"EOF";
<tr><td>$fs4<a href='user_config.cgi?$arg'>$arrow 帐户信息</a>$fe<br>
姓名和地址、邮箱大小限制、SMTP许可属性、帐户暂停、
管理用的备注、显示、修改这个用户的基本信息。</td></tr>
EOF
	if ($image){
		print "<tr><td><a href='user_config.cgi?$arg'>";
		print "<img src='../temp/$myimg' title='$name\@$domain的帐户信息' border=0></a></td></tr>\n";
	}
	if ($notice2 eq 'robot'){
		print "<tr><td>$fs4<a href='user_robotmsg1.cgi?$arg'>$arrow 应答消息</a>$fe<br>\n";
		print "通过这个列表处理器创建、修改应答消息。</td></tr>\n";
	} else {
		print <<"EOF";
<tr><td>$fs4<a href='user_jdwm.cgi?$arg'>$arrow 用户WEB设置</a>$fe<br>
设定web邮件系统的访问权限<br>
在这里指定的比在 [用户组管理] 指定的优先级高。</td></tr>

<tr><td>$fs4<a href='common_jdwmmsgfooter.cgi?$arg'>$arrow 邮件脚注</a>$fe<br>
将设置的页脚信息在web发信时强加到正文的末尾。</td></tr>

<tr><td>$fs4<a href='user_jdwmlog.cgi?$arg'>$arrow web访问日志</a>$fe<br>
显示该用户的web访问记录。</td></tr>

<tr><td>$fs4<a href='user_netsend.cgi?$arg'>$arrow 局域网（LAN）内邮件到达提醒</a>$fe<br>
新邮件到达后，在该用户的局域网电脑上弹出窗口提示。</td></tr>
EOF
	}
	
	print <<"EOF";
<tr><td>$fs4<a href='accessctrl.cgi?pop+$arg'>$arrow POP访问许可</a>$fe<br>
限制对此帐户的POP访问。</td></tr>
EOF
	
	if ($notice2 ne 'robot' || $cfg{'scanonline'}){
		print "<tr><td>$fs4<a href='common_avscan.cgi?$arg'>$arrow 病毒扫描</a>$fe<br>\n";
		print "病毒扫描设置。</td></tr>\n";
	}
	
	if ($notice2 ne 'robot'){
		print <<"EOF";
<tr><td>$fs4<a href='user_notify.cgi?$arg'>$arrow 邮件提醒</a>$fe<br>
新邮件到达后自动向设定的地址发邮件提醒。</td></tr>

<tr><td>$fs4<a href='common_spamscan.cgi?$arg'>$arrow 垃圾邮件扫描</a>$fe<br>
过滤收到的邮件。</td></tr>

<tr><td>$fs4<a href='common_wlist.cgi?$arg'>$arrow 白名单管理</a>$fe<br>
登记不需要过滤的地址。</td></tr>
EOF
	}
	
	print <<"EOF";
<tr><td>$fs4<a href='user_password.cgi?$arg'>$arrow 密码更新</a>$fe<br>
修改用户密码。</td></tr>

<tr><td>$fs4<a href='common_viewmbox.cgi?$arg+top'>$arrow 查看邮箱</a>$fe<br>
浏览邮箱内的邮件内容。</td></tr>
EOF
	
	if ($notice2 ne 'robot'){
		print <<"EOF";
<tr><td>$fs4<a href='user_popsync.cgi?$arg'>$arrow 外部POP收信</a>$fe<br>
自动定时从外部POP服务器收取邮件。</td></tr>

<tr><td>$fs4<a href='common_sendmail.cgi?$arg'>$arrow 发送邮件</a>$fe<br>
管理员使用这个功能联系用户。</td></tr>

<tr><td>$fs4<a href='user_autoreply.cgi?$arg'>$arrow 自动回复</a>$fe<br>
邮件到达后自动回复一封邮件。</td></tr>

<tr><td>$fs4<a href='user_autodelete.cgi?$arg'>$arrow 自动删除</a>$fe<br>
自动删除在规则中指定的邮件。</td></tr>

<tr><td>$fs4<a href='common_allow.cgi?$arg'>$arrow 收信许可(收信限制)</a>$fe<br>
只能从指定的地址接收邮件。</td></tr>

<tr><td>$fs4<a href='common_deny.cgi?$arg'>$arrow 黑名单管理</a>$fe<br>
拒绝接收来自指定地址的邮件。</td></tr>

<tr><td>$fs4<a href='user_distribute.cgi?$arg'>$arrow 过滤规则</a>$fe<br>
自动过滤收到的邮件。</td></tr>
EOF
	}
	
	print <<"EOF";
<tr><td>$fs4<a href='common_logging.cgi?$arg'>$arrow 收信记录</a>$fe<br>
收到的邮件做一个拷贝副本。</td></tr>

<tr><td>$fs4<a href='common_forward.cgi?$arg'>$arrow 邮件转发</a>$fe<br>
到达的邮件转发到另一个电子邮件。</td></tr>

<tr><td>$fs4<a href='common_smtprelay.cgi?$arg'>$arrow 传输(中继)指定</a>$fe<br>
到达的邮件传输到其它SMTP服务器。</td></tr>
EOF
	
	if ($notice2 ne 'robot'){
		print "<tr><td>$fs4<a href='common_attachment.cgi?$arg'>$arrow 删除附件</a>$fe<br>\n";
		print "收到的邮件自动删除附件。</td></tr>\n";
	}
	
	print "<tr><td>$fs4<a href='common_remove.cgi?$arg'>$arrow 删除用户</a>$fe<br>\n";
	print "完全删除该帐户和相关文件（邮件）。</td></tr>\n";
	print "<tr><td>$fs4<a href='user_new.cgi?top'>$arrow 添加新用户</a>$fe</td></tr>\n";
	print "</table></td></tr>\n</table>\n";
	
	&print_footer();
	&chk_filter();
	exit;
}
