Handle hostnames with upper-case letters
[webmin.git] / majordomo / save_subs.cgi
1 #!/usr/local/bin/perl
2 # save_subs.cgi
3 # Save subscription options
4
5 require './majordomo-lib.pl';
6 &ReadParse();
7 %access = &get_module_acl();
8 &can_edit_list(\%access, $in{'name'}) || &error($text{'edit_ecannot'});
9 $list = &get_list($in{'name'}, &get_config());
10 &lock_file($list->{'config'});
11 $conf = &get_list_config($list->{'config'});
12 &save_list_directive($conf, $list->{'config'}, "subscribe_policy",
13                      $in{'subscribe_policy'}.$in{'subscribe_policy_c'});
14 &save_list_directive($conf, $list->{'config'}, "unsubscribe_policy",
15                      $in{'unsubscribe_policy'});
16 &save_choice($conf, $list->{'config'}, "welcome");
17 &save_choice($conf, $list->{'config'}, "strip");
18 &save_choice($conf, $list->{'config'}, "announcements");
19 &save_choice($conf, $list->{'config'}, "administrivia");
20 &save_opt($conf, $list->{'config'}, "admin_passwd", \&check_pass);
21 &save_choice($conf, $list->{'config'}, "moderate");
22 &save_opt($conf, $list->{'config'}, "moderator", \&check_email);
23 &save_opt($conf, $list->{'config'}, "approve_passwd", \&check_pass);
24
25 $in{'owner'} =~ /^\S+$/ || &error($text{'subs_eowner'});
26 $in{'approval'} =~ /^\S+$/ || &error($text{'subs_eapproval'});
27 $aliases_files = &get_aliases_file();
28 &foreign_call($aliases_module, "lock_alias_files", $aliases_files);
29 @aliases = &foreign_call($aliases_module, "list_aliases", $aliases_files);
30 foreach $a (@aliases) {
31         $listowner = $a if (lc($a->{'name'}) eq lc("$in{'name'}-owner"));
32         $ownerlist = $a if (lc($a->{'name'}) eq lc("owner-$in{'name'}"));
33         $approval = $a if (lc($a->{'name'}) eq lc("$in{'name'}-approval"));
34         }
35 &foreign_call('sendmail', 'modify_alias', $listowner,
36               { 'name' => "$in{'name'}-owner",
37                 'values' => [ $in{'owner'} ],
38                 'enabled' => 1 }) if ($listowner);
39 &foreign_call('sendmail', 'modify_alias', $ownerlist,
40               { 'name' => "owner-$in{'name'}",
41                 'values' => [ $in{'owner'} ],
42                 'enabled' => 1 }) if ($ownerlist);
43 &foreign_call('sendmail', 'modify_alias', $approval,
44               { 'name' => "$in{'name'}-approval",
45                 'values' => [ $in{'approval'} ],
46                 'enabled' => 1 }) if ($approval);
47 &foreign_call($aliases_module, "unlock_alias_files", $aliases_files);
48
49 &flush_file_lines();
50 &unlock_file($list->{'config'});
51 &webmin_log("subs", undef, $in{'name'});
52 &redirect("edit_list.cgi?name=$in{'name'}");
53
54 sub check_email
55 {
56 return $_[0] =~ /^\S+$/ ? undef : $text{'subs_emoderator'};
57 }
58
59 sub check_pass
60 {
61 return $_[0] =~ /^\S+$/ ? undef : $text{'subs_epasswd'};
62 }