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 = "";
+
+ $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}
+
+
+
+
+
+
+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--