diff options
| author | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2012-03-07 10:01:32 +0000 |
|---|---|---|
| committer | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2012-03-07 10:01:32 +0000 |
| commit | 465ac159bf1827d67227300fd50fc1f9cf85eba1 (patch) | |
| tree | 083a8854f8771708ad2f72074807b6552f80bb80 | |
| parent | beb5bc650559db7771a78e57cecbe6c4fccbd4aa (diff) | |
- Added domainfactory driver (#1487882)
git-svn-id: https://svn.roundcube.net/trunk@5974 208e9e7b-5314-0410-a742-e7e81cd9613c
| -rw-r--r-- | plugins/password/README | 8 | ||||
| -rw-r--r-- | plugins/password/drivers/domainfactory.php | 70 | ||||
| -rw-r--r-- | plugins/password/package.xml | 1 |
3 files changed, 79 insertions, 0 deletions
diff --git a/plugins/password/README b/plugins/password/README index 268d5194c..ec9fba59c 100644 --- a/plugins/password/README +++ b/plugins/password/README @@ -40,6 +40,7 @@ 2.12. LDAP - no PEAR (ldap_simple) 2.13. XMail (xmail) 2.14. Pw (pw_usermod) + 2.15. domainFACTORY (domainfactory) 3. Driver API @@ -261,6 +262,13 @@ See config.inc.php.dist file for configuration description. + 2.15. domainFACTORY (domainfactory) + ----------------------------------- + + Driver for the hosting provider domainFACTORY (www.df.eu). + No configuration options. + + 3. Driver API ------------- diff --git a/plugins/password/drivers/domainfactory.php b/plugins/password/drivers/domainfactory.php new file mode 100644 index 000000000..7f6b8860e --- /dev/null +++ b/plugins/password/drivers/domainfactory.php @@ -0,0 +1,70 @@ +<?php + +/** + * domainFACTORY Password Driver + * + * Driver to change passwords with the hosting provider domainFACTORY. + * See: http://www.df.eu/ + * + * @version 2.0 + * @author Till Krüss <me@tillkruess.com> + * @link http://tillkruess.com/projects/roundcube/ + * + */ + +class rcube_domainfactory_password +{ + function save($curpass, $passwd) + { + $rcmail = rcmail::get_instance(); + + if (is_null($curpass)) { + $curpass = $rcmail->decrypt($_SESSION['password']); + } + + if ($ch = curl_init()) { + // initial login + curl_setopt_array($ch, array( + CURLOPT_RETURNTRANSFER => true, + CURLOPT_URL => 'https://ssl.df.eu/chmail.php', + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => array( + 'login' => $rcmail->user->get_username(), + 'pwd' => $curpass, + 'action' => 'change' + ) + )); + + if ($result = curl_exec($ch)) { + // login successful, get token! + $postfields = array( + 'pwd1' => $passwd, + 'pwd2' => $passwd, + 'action[update]' => 'Speichern' + ); + + preg_match_all('~<input name="(.+?)" type="hidden" value="(.+?)">~i', $result, $fields); + foreach ($fields[1] as $field_key => $field_name) { + $postfields[$field_name] = $fields[2][$field_key]; + } + + // change password + $ch = curl_copy_handle($ch); + curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); + if ($result = curl_exec($ch)) { + if (strpos($result, 'Einstellungen erfolgreich') !== false) { + return PASSWORD_SUCCESS; + } + } else { + return PASSWORD_CONNECT_ERROR; + } + } else { + return PASSWORD_CONNECT_ERROR; + } + } else { + return PASSWORD_CONNECT_ERROR; + } + + return PASSWORD_ERROR; + } +} diff --git a/plugins/password/package.xml b/plugins/password/package.xml index 39fb2aad8..a99d9c4d5 100644 --- a/plugins/password/package.xml +++ b/plugins/password/package.xml @@ -28,6 +28,7 @@ <notes> - Added pw_usermod driver (#1487826) - Added option password_login_exceptions (#1487826) +- Added domainfactory driver (#1487882) </notes> <contents> <dir baseinstalldir="/" name="/"> |
