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
			| 
								 
											2 years ago
										 
									 | 
							
								<?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;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |