You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.4 KiB
58 lines
1.4 KiB
<?php
|
|
|
|
/**
|
|
* Hestia Control Panel Password Driver
|
|
*
|
|
* @version 1.0
|
|
* @author HestiaCP <info@hestiacp.com>
|
|
*/
|
|
class rcube_hestia_password {
|
|
public function save($curpass, $passwd) {
|
|
$rcmail = rcmail::get_instance();
|
|
$hestia_host = $rcmail->config->get("password_hestia_host");
|
|
|
|
if (empty($hestia_host)) {
|
|
$hestia_host = "localhost";
|
|
}
|
|
|
|
$hestia_port = $rcmail->config->get("password_hestia_port");
|
|
if (empty($hestia_port)) {
|
|
$hestia_port = "8083";
|
|
}
|
|
|
|
$postvars = [
|
|
"email" => $_SESSION["username"],
|
|
"password" => $curpass,
|
|
"new" => $passwd,
|
|
];
|
|
$url = "https://{$hestia_host}:{$hestia_port}/reset/mail/";
|
|
$ch = curl_init();
|
|
if (
|
|
false ===
|
|
curl_setopt_array($ch, [
|
|
CURLOPT_URL => $url,
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_HEADER => true,
|
|
CURLOPT_POST => true,
|
|
CURLOPT_POSTFIELDS => http_build_query($postvars),
|
|
CURLOPT_USERAGENT => "Hestia Control Panel Password Driver",
|
|
CURLOPT_SSL_VERIFYPEER => false,
|
|
CURLOPT_SSL_VERIFYHOST => false,
|
|
])
|
|
) {
|
|
// should never happen
|
|
throw new Exception("curl_setopt_array() failed: " . curl_error($ch));
|
|
}
|
|
$result = curl_exec($ch);
|
|
if (curl_errno($ch) !== CURLE_OK) {
|
|
throw new Exception("curl_exec() failed: " . curl_error($ch));
|
|
}
|
|
curl_close($ch);
|
|
if (strpos($result, "ok") && !strpos($result, "error")) {
|
|
return PASSWORD_SUCCESS;
|
|
} else {
|
|
return PASSWORD_ERROR;
|
|
}
|
|
}
|
|
}
|