Skip to content

Commit 5378e9c

Browse files
committed
Improved mailman plugin and fixed errors in mailman installer.
1 parent 906f08e commit 5378e9c

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

install/lib/installer_base.lib.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -671,10 +671,10 @@ public function configure_postfix($options = '') {
671671

672672
//* Create the mailman files
673673
exec('mkdir -p /var/lib/mailman/data');
674-
touch('/var/lib/mailman/data/aliases');
675-
exec('postmap /var/lib/mailman/data/aliases');
676-
touch('/var/lib/mailman/data/virtual-mailman');
677-
exec('postmap /var/lib/mailman/data/virtual-mailman');
674+
if(!is_file('/var/lib/mailman/data/aliases')) touch('/var/lib/mailman/data/aliases');
675+
exec('postalias /var/lib/mailman/data/aliases');
676+
if(!is_file('/var/lib/mailman/data/virtual-mailman')) touch('/var/lib/mailman/data/virtual-mailman');
677+
exec('postalias /var/lib/mailman/data/virtual-mailman');
678678

679679
//* Make a backup copy of the main.cf file
680680
copy($config_dir.'/main.cf', $config_dir.'/main.cf~');

server/plugins-available/mailman_plugin.inc.php

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,32 +73,31 @@ function insert($event_name,$data) {
7373

7474
$this->update_config();
7575

76-
exec("/usr/lib/mailman/bin/newlist -u ".$data["new"]["domain"]." -e ".$data["new"]["domain"]." ".$data["new"]["listname"]." ".$data["new"]["email"]." ".$data["new"]["password"]."");
76+
exec("/usr/lib/mailman/bin/newlist -u ".escapeshellcmd($data["new"]["domain"])." -e ".escapeshellcmd($data["new"]["domain"])." ".escapeshellcmd($data["new"]["listname"])." ".escapeshellcmd($data["new"]["email"])." ".escapeshellcmd($data["new"]["password"])."");
7777

7878
exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null');
7979

80-
$app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$data["new"]['mailinglist_id']);
80+
$app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$app->db->quote($data["new"]['mailinglist_id']));
8181

8282
}
8383

8484
// The purpose of this plugin is to rewrite the main.cf file
8585
function update($event_name,$data) {
8686
global $app, $conf;
8787

88-
exec("/usr/lib/mailman/bin/change_pw -l ".$data["new"]["listname"]." -p ".$data["new"]["password"]."");
89-
90-
exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null');
91-
92-
$app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$data["new"]['mailinglist_id']);
93-
88+
if($data["new"]["password"] != $data["old"]["password"] && $data["new"]["password"] != '') {
89+
exec("/usr/lib/mailman/bin/change_pw -l ".escapeshellcmd($data["new"]["listname"])." -p ".escapeshellcmd($data["new"]["password"])."");
90+
exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null');
91+
$app->db->query("UPDATE mail_mailinglist SET password = '' WHERE mailinglist_id = ".$app->db->quote($data["new"]['mailinglist_id']));
92+
}
9493
}
9594

9695
function delete($event_name,$data) {
9796
global $app, $conf;
9897

9998
$this->update_config();
10099

101-
exec("/usr/lib/mailman/bin/rmlist -a ".$data["old"]["listname"]);
100+
exec("/usr/lib/mailman/bin/rmlist -a ".escapeshellcmd($data["old"]["listname"]));
102101

103102
exec($conf['init_scripts'] . '/' . 'mailman reload &> /dev/null');
104103

0 commit comments

Comments
 (0)