📄 mailmembers.cgi
字号:
#!/usr/bin/perl
#############################################################
# LeoBoard ver.5000 / LB5000 / 雷傲超级论坛 ver.5000
#
# 版权所有: 雷傲工作室(原蓝宝石软件工作室)
#
# 制作人 : 山鹰糊 (Shining Hu)
# 花无缺 (Ifairy Han)
#
# 主页地址: http://www.CGIer.com/ CGI 编程者之家
# http://www.LeoBoard.com/ 雷傲论坛支持主页
# http://www.leoBBS.com/ 本论坛直通车
#
#############################################################
BEGIN {
$LBPATH = '.';
my $pgm = $0;
$pgm =~s/\\/\//g;
$pgm =~s/^.*\/([^\/]+)$/$1/g;
unless (-e $LBPATH.'/'.$pgm) {
foreach ($0, $ENV{'SCRIPT_FILENAME'}, $ENV{'PATH_TRANSLATED'}) {
s!\\!/!g; s/^(.*)\/[^\/]+$/$1/g;
if (-e $_ . '/' .$pgm) { $LBPATH = $_; last; }
}
}
unshift (@INC, "$LBPATH");
}
use LBCGI;
$LBCGI::POST_MAX=20000;
$LBCGI::DISABLE_UPLOADS = 1;
$LBCGI::HEADERS_ONCE = 1;
require "data/boardinfo.cgi";
require "lbadmin.lib.pl";
require "lbmail.lib.pl";
require "lb.lib.pl";
$|++; # Unbuffer the output
########################## Main Program #######################################################
$thisprog = "mailmembers.cgi";
$remprog = "remmail.cgi";
$query = new LBCGI;
$action = $query -> param('action');
$subjekt = $query -> param('subjekt');
$message = $query -> param('text');
$sendto = $query -> param('sendto');
$membersnamesin = $query -> param('membersnames');
$footerlinein = $query -> param('footerline');
$action = &unHTML("$action");
$subjekt = &unHTML("$subjekt");
$message = &unHTML("$message");
$sendto = &unHTML("$sendto");
$inmembername = $query->cookie("adminname");
$inpassword = $query->cookie("adminpass");
$inmembername =~ s/[\a\f\n\e\0\r\t\`\~\!\@\#\$\%\^\&\*\(\)\+\=\\\{\}\;\'\:\"\,\.\/\<\>\?]//isg;
$inpassword =~ s/[\a\f\n\e\0\r\t\|\@\;\#\{\}\$]//isg;
$WIN = $^O =~ /Win32/oi;
$MAC = $^O =~ /MacOS/oi;
$UNIX = !($WIN || $MAC );
&getadmincheck;
print header(-charset=>gb2312);
&admintitle;
&getmember("$inmembername");
if (($membercode eq "ad") && ($inpassword eq $password) && (lc($inmembername) eq lc($membername))) {
print qq~
<tr><td bgcolor=#333333" colspan=2><font color=#FFFFFF>
<b>欢迎来到论坛管理中心 / Email 群发</b>
</td></tr>
~;
if ($action eq "send") {&sendmymail;}
elsif ($action eq "sent") {&mailsent;}
elsif ($action eq "compose") {&composemail;}
elsif ($action eq "view") {&view;}
elsif ($action eq "Update") {&update;}
elsif ($action eq "footer") {&viewfoot;}
elsif ($action eq "Save") {&updatefoot;}
else {&mailoptions;}
print qq~</table></td></tr></table>~;
}
else {
&adminlogin;
}
exit;
sub mailoptions {
$output= qq~
<tr>
<br><br><td bgcolor=#eeeeee colspan=2 align=center><font color=#333333><b>功能菜单</b><BR>为了不打扰用户,在非必要情况下,尽量不要使用此功能</font> </td>
</tr>
<tr bgcolor="#ffffff">
<td align="center"><BR><SELECT name=action style="WIDTH: 250px">
<OPTION selected value="compose">编辑并发送邮件</OPTION>
<OPTION value="view">已退出邮件用户列表</OPTION>
<OPTION value="footer">查看/编辑页脚</OPTION>
</SELECT>
<BR>
<BR>
</td>
</tr>
<tr>
<td colspan="2" width="100%" bgcolor=#eeeeee align=center>
<input type="submit" name="Button" value="确 定">
</td>
</tr>
~;
&displayoutput;
}
sub composemail {
$output = qq~
<tr>
<br><br><td bgcolor=#EEEEEE align="center" colspan=2><font color=#333333><b>编辑要发送的邮件</td>
</tr>
<tr bgcolor="#FFFFFF" valign=top>
<td>
<b>主题:</b>
</td>
<td>
<input type="text" name="subjekt">
</td>
</tr>
<tr bgcolor="#FFFFFF" valign=top>
<td width="40%">
<b>内容:</b>
</td>
<td width="60%">
<textarea size=20 name="text" cols="60" rows="10"></textarea>
<br>
</td>
</tr>
<tr>
<td colspan="2" align="center" width="100%" bgcolor=#EEEEEE>
<SELECT name="sendto" style="HEIGHT: 22px; WIDTH: 148px">
<OPTION selected value="members">所有注册用户</OPTION>
<OPTION value="moderators">论坛所有版主</OPTION>
</SELECT>
<input type=hidden name="action" value="send">
<input type="submit" name="Button" value="确 定"> <input type="reset" name="Button" value="重 置">
</td>
</tr>
~;
&displayoutput;
}
sub sendmymail {
if (($message eq "") || ($subjekt eq "")) {
$output = qq~
<tr>
<br><br><td bgcolor=#EEEEEE align="center" colspan=2><font color=#333333><b>出错。。。</td>
</tr>
<tr>
<td width="100%" align="center">
<br><br>
<font color="#FF0000">请输入主题和邮件内容</font><br>
<a href="$thisprog?action=compose">按此返回</a>
</tr>
<tr>
~;
&displayoutput
}
$filetoopen = "$lbdir" . "data/footer.cgi";
open (FILE,"<$filetoopen");
flock (FILE,2);
@footerin = <FILE>;
close (FILE);
$footer = "\n";
foreach $line (@footerin) {
chomp($line);
if ($line ne "") {
$footer .= "$line\n";
}
}
$filetoopen = "$lbdir" . "data/remmem.cgi";
open (FILE,"<$filetoopen");
flock (FILE,2);
@members = <FILE>;
close (FILE);
if ($sendto eq "members") {
&sendmembers
}elsif ($sendto eq "moderators") {
&sendmoderators
}else{
&composemail
}
}
sub mailsent {
$output = qq~
<tr>
<br><br><td bgcolor=#eeeeee colspan=2><font color=#333333><b>群发 Email</b></font> </td>
</tr>
<tr bgcolor="#ffffff">
<Td align="center">
邮件已经发送给了 $membercount 个用户了。
</td>
</tr>
<tr>
<td colspan="2" width="100%" bgcolor=#eeeeee>
<input type="submit" name="Button" value="返 回">
</td>
</tr>
~;
&displayoutput;
}
sub sendmembers {
$mail = "";
open (MEMFILE, "${lbdir}data/lbmember.cgi");
flock (MEMFILE, 1) if ($OS_USED eq "Unix");
@cgi = <MEMFILE>;
close(MEMFILE);
$membercount = 0;
foreach $member (@cgi) {
@memberdaten = split(/\t/,$member);
$mail = $memberdaten[4];
$checkmember = 1;
foreach $remmember (@members) {
chomp($remmember);
if ($remmember eq $memberdaten[0]) {$checkmember = 0;}
}
if ($checkmember == 1 && $mail ne "") {
$membercount++;
}
}
&mailsent;
if ($UNIX) {
my $pid=fork();
if (defined $pid) {
if ($pid > 0) {
exit;
}else{
close(STDOUT);
&mailall;
exit;
}
}else{
&mailall;
exit;
}
}else{
close(STDOUT);
&mailall;
exit;
}
}
sub mailall
{
####
foreach $member (@cgi) {
@memberdaten = split(/\t/,$member);
$mail = $memberdaten[4];
$checkmember = 1;
foreach $remmember (@members) {
chomp($remmember);
if ($remmember eq $memberdaten[0]) {$checkmember = 0;}
}
if ($checkmember == 1 && $mail ne "") {
&gosend;
}
}
####
}
sub sendmoderators {
$mail = "";
open (MEMFILE, "${lbdir}data/lbmember.cgi");
flock (MEMFILE, 1) if ($OS_USED eq "Unix");
@cgi = <MEMFILE>;
close(MEMFILE);
$membercount = 0;
foreach $member (@cgi) {
@memberdaten = split(/\t/,$member);
$mail = $memberdaten[4];
if (($memberdaten[1] eq "ad") || ($memberdaten[1] eq 'smo') || ($memberdaten[1] eq "mo")) {
$checkmember = 1;
foreach $remmember (@members) {
chomp($remmember);
if ($remmember eq $memberdaten[0]) {$checkmember = 0;}
}
if ($checkmember == 1 && $mail ne "") {
$membercount++;
}
}
}
&mailsent;
if ($UNIX) {
my $pid=fork();
if (defined $pid) {
if ($pid > 0) {
exit;
}else{
close(STDOUT);
&mailm;
exit;
}
}else{
&mailm;
exit;
}
}else{
close(STDOUT);
&mailm;
exit;
}
}
sub mailm
{
####
foreach $member (@cgi) {
@memberdaten = split(/\t/,$member);
$mail = $memberdaten[4];
if (($memberdaten[1] eq "ad") || ($memberdaten[1] eq 'smo') || ($memberdaten[1] eq "mo")) {
$checkmember = 1;
foreach $remmember (@members) {
chomp($remmember);
if ($remmember eq $memberdaten[0]) {$checkmember = 0;}
}
if ($checkmember == 1 && $mail ne "") {
&gosend;
}
}
}
####
}
sub gosend {
$mymessage = "$message\n<br><br>\n$footer\n<br><br>\n如果以后不想收到类似的信件,请点击下面的链接:<br>\n$boardurl/remmail.cgi?member=$memberdaten[0]<br>\n.\n";
&sendmail($adminemail_out, $adminemail_in, $mail, $subjekt, $mymessage);
}
sub view {
$filetoopen = "$lbdir" . "data/remmem.cgi";
open (FILE,"<$filetoopen");
flock (FILE,2);
@members = <FILE>;
close (FILE);
$memberoutput = "\n";
foreach $member (@members) {
chomp($member);
if ($member ne "") {
$memberoutput .= "$member\n";
}
}
$output = qq~
<tr>
<br><br><td bgcolor=#EEEEEE align="center" colspan=2><font color=#333333><b>已退出邮件用户列表</td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center">
<center>
<TEXTAREA style="WIDTH: 200px; HEIGHT: 400px" name=membersnames rows=29 cols=25>$memberoutput</TEXTAREA>
</center>
</td>
</tr>
<tr>
<td align="center" width="100%" bgcolor=#EEEEEE>
<input type="hidden" name="action" value="Update">
<input type="submit" value="保 存">
</td>
</tr>
~;
&displayoutput;
}
sub update {
@membersname = split(" ", $membersnamesin);
foreach $membername (@membersname) {
chomp($membername);
if ($membername ne "") {
chomp($membername);
$membersnames .= "$membername\n";
}
}
$filetoopen = "$lbdir" . "data/remmem.cgi";
open (FILE,">$filetoopen");
flock (FILE,2);
print FILE "$membersnames";
close (FILE);
$output = qq~
<tr>
<br><br><td bgcolor=#EEEEEE align="center" colspan=2><font color=#333333><b>已退出邮件用户列表</td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center">
<center>
所有数据已经保存
</center>
</td>
</tr>
<tr>
<td align="center" width="100%" bgcolor=#EEEEEE>
<input type="submit" name="Button" value="返 回">
</td>
</tr>
~;
&displayoutput;
}
sub viewfoot {
$filetoopen = "$lbdir" . "data/footer.cgi";
open (FILE,"<$filetoopen");
flock (FILE,2);
@footer = <FILE>;
close (FILE);
$footeroutput ="";
foreach $line (@footer) {
chomp($line);
if ($line ne "") {
$footeroutput .= "$line\n";
}
}
$output = qq~
<tr>
<br><br><td bgcolor=#EEEEEE align="center" colspan=2><font color=#333333><b>编辑页脚</td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center">
<center>
<TEXTAREA style="WIDTH: 400px; HEIGHT: 100px" name=footerline rows=29 cols=25>$footeroutput</TEXTAREA>
</center>
</td>
</tr>
<tr>
<td align="center" width="100%" bgcolor=#EEEEEE>
<input type="hidden" name="action" value="Save">
<input type="submit" value="保 存">
</td>
</tr>
~;
&displayoutput;
}
sub updatefoot {
@footerline = split("\n", $footerlinein);
foreach $line (@footerline) {
chomp($line);
if ($line ne "") {
chomp($line);
$footerlines .= "$line\n";
}
}
$filetoopen = "$lbdir" . "data/footer.cgi";
open (FILE,">$filetoopen");
flock (FILE,2);
print FILE "$footerlines";
close (FILE);
$output = qq~
<tr>
<br><br><td bgcolor=#EEEEEE align="center" colspan=2><font color=#333333><b>更新页脚完成</td>
</tr>
<tr bgcolor="#FFFFFF">
<td align="center">
<center>
信息已经保存
</center>
</td>
</tr>
<tr>
<td align="center" width="100%" bgcolor=#EEEEEE>
<input type="submit" name="Button" value="返 回">
</td>
</tr>
~;
&displayoutput;
}
sub displayoutput {
print qq~
<form action="$thisprog" method="post">
<table border="0" align="center" width="456">
$output
</table>
</form>
</table>
</body>
</html>
~;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -