From 21b24bd8b5805ef07616fee0380723b2c1383013 Mon Sep 17 00:00:00 2001 From: alec Date: Wed, 7 Mar 2012 11:35:54 +0000 Subject: - Added Samba password (#1488364) git-svn-id: https://svn.roundcube.net/trunk@5979 208e9e7b-5314-0410-a742-e7e81cd9613c --- plugins/password/README | 8 +++++ plugins/password/config.inc.php.dist | 8 +++++ plugins/password/drivers/smb.php | 59 ++++++++++++++++++++++++++++++++++++ plugins/password/package.xml | 2 ++ 4 files changed, 77 insertions(+) create mode 100644 plugins/password/drivers/smb.php 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 @@ + + * + * 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) @@ -93,6 +94,7 @@ + -- cgit v1.2.3