Thomas Bruederli
2013-06-20 07c6c69eca8751c0e96a846afb30c24ab2638b1f
commit | author | age
48e9c1 1 <?php
T 2
3 /**
4  * domainFACTORY Password Driver
5  *
6  * Driver to change passwords with the hosting provider domainFACTORY.
7  * See: http://www.df.eu/
8  *
9  * @version 2.0
10  * @author Till Krüss <me@tillkruess.com>
11  * @link http://tillkruess.com/projects/roundcube/
12  *
13  */
14
15 class rcube_domainfactory_password
16 {
17     function save($curpass, $passwd)
18     {
19         $rcmail = rcmail::get_instance();
20
21         if (is_null($curpass)) {
22             $curpass = $rcmail->decrypt($_SESSION['password']);
23         }
24
25         if ($ch = curl_init()) {
26             // initial login
27             curl_setopt_array($ch, array(
28                 CURLOPT_RETURNTRANSFER => true,
29                 CURLOPT_URL => 'https://ssl.df.eu/chmail.php',
30                 CURLOPT_POST => true,
31                 CURLOPT_POSTFIELDS => array(
32                     'login' => $rcmail->user->get_username(),
33                     'pwd' => $curpass,
34                     'action' => 'change'
35                 )
36             ));
37
38             if ($result = curl_exec($ch)) {
39                 // login successful, get token!
40                 $postfields = array(
41                     'pwd1' => $passwd,
42                     'pwd2' => $passwd,
43                     'action[update]' => 'Speichern'
44                 );
45
46                 preg_match_all('~<input name="(.+?)" type="hidden" value="(.+?)">~i', $result, $fields);
47                 foreach ($fields[1] as $field_key => $field_name) {
48                     $postfields[$field_name] = $fields[2][$field_key];
49                 }
50
51                 // change password
52                 $ch = curl_copy_handle($ch);
53                 curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
54                 if ($result = curl_exec($ch)) {
55                     if (strpos($result, 'Einstellungen erfolgreich') !== false) {
56                         return PASSWORD_SUCCESS;
57                     }
58                 } else {
59                     return PASSWORD_CONNECT_ERROR;
60                 }
61             } else {
62                 return PASSWORD_CONNECT_ERROR;
63             }
64         } else {
65             return PASSWORD_CONNECT_ERROR;
66         }
67
68         return PASSWORD_ERROR;
69     }
70 }