summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2012-03-07 11:35:54 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2012-03-07 11:35:54 +0000
commit21b24bd8b5805ef07616fee0380723b2c1383013 (patch)
tree38c2667a91b54820c1f6a6b7d3e124c95f392afa /plugins
parent092d3d0f4dfbd722d4fba86ac4d92a8d56c478fb (diff)
- Added Samba password (#1488364)
git-svn-id: https://svn.roundcube.net/trunk@5979 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'plugins')
-rw-r--r--plugins/password/README8
-rw-r--r--plugins/password/config.inc.php.dist8
-rw-r--r--plugins/password/drivers/smb.php59
-rw-r--r--plugins/password/package.xml2
4 files changed, 77 insertions, 0 deletions
diff --git a/plugins/password/README b/plugins/password/README
index 4ae0521d1..25af8cbcd 100644
--- a/plugins/password/README
+++ b/plugins/password/README
@@ -43,6 +43,7 @@
2.15. domainFACTORY (domainfactory)
2.16. DBMail (dbmail)
2.17. Expect (expect)
+ 2.18. Samba (smb)
3. Driver API
@@ -290,6 +291,13 @@
See config.inc.php.dist file for configuration description.
+ 2.18. Samba (smb)
+ -----------------------------------
+
+ Driver to change Samba user password via the 'smbpasswd' command.
+ See config.inc.php.dist file for configuration description.
+
+
3. Driver API
-------------
diff --git a/plugins/password/config.inc.php.dist b/plugins/password/config.inc.php.dist
index d39610680..aed0eaf28 100644
--- a/plugins/password/config.inc.php.dist
+++ b/plugins/password/config.inc.php.dist
@@ -337,3 +337,11 @@ $rcmail_config['password_expect_script'] = '';
// This is probably a good starting default:
// -telent -host localhost -output /tmp/passwd.log -log /tmp/passwd.log
$rcmail_config['password_expect_params'] = '';
+
+
+// smb Driver options
+// ---------------------
+// Samba host (default: localhost)
+$rcmail_config['password_smb_host'] = 'localhost';
+// Location of smbpasswd binary
+$rcmail_config['password_smb_cmd'] = '/usr/bin/smbpasswd';
diff --git a/plugins/password/drivers/smb.php b/plugins/password/drivers/smb.php
new file mode 100644
index 000000000..138313be8
--- /dev/null
+++ b/plugins/password/drivers/smb.php
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * smb Driver
+ *
+ * Driver that adds functionality to change the systems user password via
+ * the 'smbpasswd' command.
+ *
+ * For installation instructions please read the README file.
+ *
+ * @version 2.0
+ * @author Andy Theuninck <gohanman@gmail.com)
+ *
+ * Based on chpasswd roundcubemail password driver by
+ * @author Alex Cartwright <acartwright@mutinydesign.co.uk)
+ * and smbpasswd horde passwd driver by
+ * @author Rene Lund Jensen <Rene@lundjensen.net>
+ *
+ * Configuration settings:
+ * password_smb_host => samba host (default: localhost)
+ * password_smb_cmd => smbpasswd binary (default: /usr/bin/smbpasswd)
+ */
+
+class rcube_smb_password
+{
+
+ public function save($currpass, $newpass)
+ {
+ $host = rcmail::get_instance()->config->get('password_smb_host','localhost');
+ $bin = rcmail::get_instance()->config->get('password_smb_cmd','/usr/bin/smbpasswd');
+ $username = $_SESSION['username'];
+
+ $tmpfile = tempnam(sys_get_temp_dir(),'smb');
+ $cmd = $bin . ' -r ' . $host . ' -s -U "' . $username . '" > ' . $tmpfile . ' 2>&1';
+ $handle = @popen($cmd, 'w');
+ fputs($handle, $currpass."\n");
+ fputs($handle, $newpass."\n");
+ fputs($handle, $newpass."\n");
+ @pclose($handle);
+ $res = file($tmpfile);
+ unlink($tmpfile);
+
+ if (strstr($res[count($res) - 1], 'Password changed for user') !== false) {
+ return PASSWORD_SUCCESS;
+ }
+ else {
+ raise_error(array(
+ 'code' => 600,
+ 'type' => 'php',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Password plugin: Unable to execute $cmd"
+ ), true, false);
+ }
+
+ return PASSWORD_ERROR;
+ }
+
+}
+?>
diff --git a/plugins/password/package.xml b/plugins/password/package.xml
index 20517eed8..29d222409 100644
--- a/plugins/password/package.xml
+++ b/plugins/password/package.xml
@@ -32,6 +32,7 @@
- Added DBMail driver (#1488281)
- Helper files moved to helpers/ directory from drivers/
- Added Expect driver (#1488363)
+- Added Samba password (#1488364)
</notes>
<contents>
<dir baseinstalldir="/" name="/">
@@ -93,6 +94,7 @@
<file name="drivers/pam.php" role="php"></file>
<file name="drivers/pw_usermod.php" role="php"></file>
<file name="drivers/sasl.php" role="php"></file>
+ <file name="drivers/smb.php" role="php"></file>
<file name="drivers/virtualmin.php" role="php"></file>
<file name="drivers/ximss.php" role="php"></file>
<file name="drivers/xmail.php" role="php"></file>