⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 create_list.cgi

📁 Unix下基于Web的管理工具
💻 CGI
字号:
#!/usr/local/bin/perl# create_list.cgi# Create a new mailing listrequire './majordomo-lib.pl';require 'ctime.pl';%access = &get_module_acl();$access{'create'} || &error("You are not allowed to create new lists");&ReadParse();$conf = &get_config();$ldir = &perl_var_replace(&find_value("listdir", $conf), $conf);# Validate inputs$in{'name'} =~ /^\S+$/ ||	&error("Invalid or missing list name");$in{'name'} = lc($in{'name'});if (&get_list($in{'name'}, $conf)) {	&error("A mailing list called '$in{'name'}' already exists");	}$aliases_files = &get_aliases_file();@aliases = &foreign_call("sendmail", "list_aliases", $aliases_files);foreach $a (@aliases) {	if ($a->{'enabled'} && lc($a->{'name'}) eq lc($in{'name'})) {		&error("A mail alias for '$in{'name'}' already exists");		}	}$in{'owner'} =~ /^\S+$/ ||	&error("Invalid or missing owner's email address");$in{'password'} =~ /^\S+$/ ||	&error("Invalid or missing administration password");$in{'moderator_def'} || $in{'moderator'} =~ /^\S+$/ ||	&error("Invalid or missing moderator's email address");$in{'info'} =~ s/\r//g;$in{'footer'} =~ s/\r//g;# Create list members fileopen(MEMS, ">$ldir/$in{'name'}");close(MEMS);&set_permissions("$ldir/$in{'name'}");# Have majordomo create the new config file, by fooling the wrapper# into thinking it has received an email with a config commandopen(WRAPPER, "|$config{'program_dir'}/wrapper majordomo >/dev/null 2>&1");print WRAPPER "From: root\n\n";print WRAPPER "config $in{'name'} $in{'password'}\n\n";close(WRAPPER);# create the .info file$lfile = "$ldir/$in{'name'}.config";$list = &get_list_config($lfile);chop($ctime = ctime(time()));$updated = "[Last updated on: $ctime]\n";open(INFO, ">$ldir/$in{'name'}.info");if (&find_value("date_info", $list) eq "yes") {	print INFO $updated;	}print INFO $in{'info'};close(INFO);&set_permissions("$ldir/$in{'name'}.info");# Create aliases for the new list&newlist_alias($in{'name'}, "\"|$config{'program_dir'}/wrapper resend ".		            "-l $in{'name'} $in{'name'}-list\"");&newlist_alias($in{'name'}."-list", ":include:$ldir/$in{'name'}");&newlist_alias("owner-".$in{'name'}, $in{'owner'});&newlist_alias($in{'name'}."-owner", $in{'owner'});&newlist_alias($in{'name'}."-approval", $in{'owner'});&newlist_alias($in{'name'}."-request", "\"|$config{'program_dir'}/wrapper ".				       "majordomo -l $in{'name'}\"", 1);# Update the new config file&save_list_directive($list, $lfile, "description", $in{'desc'});&save_list_directive($list, $lfile, "admin_passwd", $in{'password'});&save_list_directive($list, $lfile, "approve_passwd", $in{'password'});&save_list_directive($list, $lfile, "message_footer", $in{'footer'}, 1);&save_list_directive($list, $lfile, "moderate", $in{'moderate'});&save_list_directive($list, $lfile, "moderator",		     $in{'moderator_def'} ? "" : $in{'moderator'});&flush_file_lines();# add to this user's ACLif ($access{'lists'} ne '*') {	$access{'lists'} .= " $in{'name'}";	&save_module_acl(\%access);	}&redirect("edit_list.cgi?name=$in{'name'}");# newlist_alias(name, value, last)sub newlist_alias{local $al = { 'name' => $_[0],	      'values' => [ $_[1] ],	      'enabled' => 1 };&foreign_call("sendmail", "create_alias", $al, $aliases_files, !$_[2]);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -