From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc MAURICE Date: Mon, 27 Feb 2012 21:50:31 +0000 Subject: [mlmmj] Subscribers management in php-admin Message-Id: <4F4BFAA7.4060702@pub.positon.org> MIME-Version: 1 Content-Type: multipart/mixed; boundary="------------080605030404050203090404" List-Id: To: mlmmj@mlmmj.org This is a multi-part message in MIME format. --------------080605030404050203090404 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hello mlmmj team, Here is a patch I made to add simple subscribers management in the php-admin interface. I added some lines in php-admin README file in order to fix some permission issues. Those issues might also be relevant for the perl version. I also suggest you to add a log_error line in subscriberfuncs.c. Without it we have no clue about what is wrong when mlmmj is not able to read subdir files. Feel free to adapt my patch if needed. Thanks for providing mlmmj to us ! Regards, Marc --------------080605030404050203090404 Content-Type: text/plain; name="patches.txt" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="patches.txt" diff -r 3168aed4b01a contrib/web/php-admin/README --- a/contrib/web/php-admin/README Wed Feb 22 00:11:07 2012 +1100 +++ b/contrib/web/php-admin/README Mon Feb 27 22:41:56 2012 +0100 @@ -22,8 +22,19 @@ you need to create a group (eg. mlmmj) and add both users to it. The subscribers.d directory then needs to be writable by that group: + # addgroup mlmmj + # adduser wwwrun mlmmj + # adduser mailuser mlmmj # chgrp -R mlmmj /var/spool/mlmmj/mlmmj-test/subscribers.d/ # chmod -R g+w /var/spool/mlmmj/mlmmj-test/subscribers.d/ + # chmod g+s /var/spool/mlmmj/mlmmj-test/subscribers.d/ + + setgid flag is needed when the webserver calls mlmmj-sub and creates a file + under subscribers.d, to keep the mlmmj group. + + If using the Exim mailserver, you should add initgroups = true in your + mlmmj_transport, otherwise it won't be able to write files having write + permission to mlmmj group. 5) To enable access control on Apache you have to rename dot.htaccess to .htaccess and edit the path inside the file to point to a htpasswd file diff -r 3168aed4b01a contrib/web/php-admin/htdocs/index.php --- a/contrib/web/php-admin/htdocs/index.php Wed Feb 22 00:11:07 2012 +1100 +++ b/contrib/web/php-admin/htdocs/index.php Mon Feb 27 22:41:56 2012 +0100 @@ -35,15 +35,16 @@ $lists = ""; -$dir = opendir($topdir); -while ($file = readdir($dir)) { +# use scandir to have alphabetical order +foreach (scandir($topdir) as $file) { if (!ereg("^\.",$file)) { - $lists .= "". - htmlentities($file)."
\n"; + $lists .= "

".htmlentities($file)."
+Config - Subscribers +

+"; } } -closedir($dir); $tpl->assign(array("LISTS" => $lists)); diff -r 3168aed4b01a contrib/web/php-admin/htdocs/subscribers.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/web/php-admin/htdocs/subscribers.php Mon Feb 27 22:41:56 2012 +0100 @@ -0,0 +1,86 @@ +&1"; + exec($cmd, $out, $ret); + if ($ret !== 0) { + $message.= "Subscribe error for $email
"; + } + } + + } + +# delete some people if delete is set +} else if (isset($_POST["delete"])) { + + $email = $_POST["email"]; + $cmd = "/usr/bin/mlmmj-unsub -L /var/spool/mlmmj/$list -a '$email' 2>&1"; + exec($cmd, $out, $ret); + if ($ret !== 0) { + $message = "Unsubscribe error. cmd=$cmd out=".implode($out)." ret=$ret"; + } +} + +$subscribers=""; + +# get subscribers from mlmmj +$cmd = "/usr/bin/mlmmj-list -L /var/spool/mlmmj/$list 2>&1"; +exec($cmd, $out, $ret); +if ($ret !== 0) { + $message.= "Error: Could not get subscribers list."; +} + +foreach ($out as $email) { + $email = trim($email); + + $form = "
"; + $form.= ""; + $form.= ""; + $form.= "
"; + + $subscribers.= "".htmlspecialchars($email)."$form\n"; +} + +if ($subscribers === "") { + $subscribers = "This list is empty.\n"; +} + +# set template vars +$tpl->define(array("main" => "subscribers.html")); + +$tpl->assign(array("LIST" => $list)); +$tpl->assign(array("MESSAGE" => "

$message

")); +$tpl->assign(array("SUBS" => $subscribers)); + +$tpl->parse("MAIN","main"); +$tpl->FastPrint("MAIN"); + +?> diff -r 3168aed4b01a contrib/web/php-admin/templates/subscribers.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/web/php-admin/templates/subscribers.html Mon Feb 27 22:41:56 2012 +0100 @@ -0,0 +1,38 @@ + + +mlmmj - {LIST} subscribers + + + +

{LIST} subscribers

+ +{MESSAGE} + + +{SUBS} +
+ +
+Add subscribers:
+
+ +
+ +

+Index +

+ + diff -r 3168aed4b01a src/subscriberfuncs.c --- a/src/subscriberfuncs.c Wed Feb 22 00:11:07 2012 +1100 +++ b/src/subscriberfuncs.c Mon Feb 27 22:41:56 2012 +0100 @@ -132,6 +132,7 @@ subreadname = concatstr(2, subddirname, dp->d_name); subread = open(subreadname, O_RDONLY); if(subread < 0) { + log_error(LOG_ARGS, "Could not open %s", subreadname); myfree(subreadname); continue; } --------------080605030404050203090404--