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 |
} |