summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c>2009-06-30 17:23:39 +0000
committerthomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c>2009-06-30 17:23:39 +0000
commit4c8ece5bde62cd30ad976020444f324a738179e6 (patch)
tree0530758cc959b99bea67dc69efe40497c24a7bc4
parentcf876a73fbd2108a4d55c185dbf7df780d2eb4f2 (diff)
Add SASL password wrapper program + update SASL instructions in README
git-svn-id: https://svn.roundcube.net/trunk@2688 208e9e7b-5314-0410-a742-e7e81cd9613c
-rw-r--r--roundcubemail/plugins/password/README6
-rw-r--r--roundcubemail/plugins/password/drivers/chgsaslpasswd.c27
2 files changed, 30 insertions, 3 deletions
diff --git a/roundcubemail/plugins/password/README b/roundcubemail/plugins/password/README
index 920d3a36f..a7e386e50 100644
--- a/roundcubemail/plugins/password/README
+++ b/roundcubemail/plugins/password/README
@@ -123,13 +123,13 @@
Installation:
- Edit the chgsaslpasswd.c and chgsaslpasswd.sh files as is documented
- within them.
+ Change into the drivers directory. Edit the chgsaslpasswd.c file as is
+ documented within it.
Compile the wrapper program:
gcc -o chgsaslpasswd chgsaslpasswd.c
- Chown the chgsaslpasswd and chgsaslpasswd.sh to the cyrus user and group
+ Chown the compiled chgsaslpasswd binary to the cyrus user and group
that your browser runs as, then chmod them to 4550.
For example, if your cyrus user is 'cyrus' and the apache server group is
diff --git a/roundcubemail/plugins/password/drivers/chgsaslpasswd.c b/roundcubemail/plugins/password/drivers/chgsaslpasswd.c
new file mode 100644
index 000000000..17e20c67f
--- /dev/null
+++ b/roundcubemail/plugins/password/drivers/chgsaslpasswd.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+#include <unistd.h>
+
+// set the UID this script will run as (cyrus user)
+#define UID 96
+// set the path to saslpasswd or saslpasswd2
+#define CMD "/usr/sbin/saslpasswd2"
+
+/* INSTALLING:
+ gcc -o chgsaslpasswd chgsaslpasswd.c
+ chown root.apache chgsaslpasswd
+ strip chgsaslpasswd
+ chmod 4550 chgsaslpasswd
+*/
+
+main(int argc, char *argv[])
+{
+ int rc,cc;
+
+ cc = setuid(UID);
+ rc = execvp(CMD, argv);
+ if ((rc != 0) || (cc != 0))
+ {
+ fprintf(stderr,"__ %s: failed %d %d\n",argv[0],rc,cc);
+ exit(1);
+ }
+}