| 1 | <?php |
|---|
| 2 | |
|---|
| 3 | /** |
|---|
| 4 | * Cpanel Password Driver |
|---|
| 5 | * |
|---|
| 6 | * Driver to change passwords via Cpanel |
|---|
| 7 | * |
|---|
| 8 | * @version 1.0 |
|---|
| 9 | * @author Brian Devendorf |
|---|
| 10 | * |
|---|
| 11 | */ |
|---|
| 12 | |
|---|
| 13 | function password_save($curpass, $passwd) { |
|---|
| 14 | |
|---|
| 15 | //cutomize this path based on your cpanel configuration |
|---|
| 16 | $path = "webmail/x3/mail"; |
|---|
| 17 | |
|---|
| 18 | $rcmail = rcmail::get_instance(); |
|---|
| 19 | $host = $rcmail->config->get('default_host'); |
|---|
| 20 | |
|---|
| 21 | $filePointer = fsockopen($host, 2095, $errorNumber, $errorString); |
|---|
| 22 | if (!$filePointer) { |
|---|
| 23 | return false; |
|---|
| 24 | } |
|---|
| 25 | |
|---|
| 26 | $email = $_SESSION['username']; |
|---|
| 27 | $exp = explode("@", $email); |
|---|
| 28 | $username = $exp[0]; |
|---|
| 29 | $domain = $exp[1]; |
|---|
| 30 | $data = "email={$username}&domain={$domain}&password={$passwd}&password2={$passwd}"; |
|---|
| 31 | |
|---|
| 32 | $requestHeader = "POST {$path}/dopasswdpop.html HTTP/1.1\r\n"; |
|---|
| 33 | $requestHeader.= "Host: ".$host."\r\n"; |
|---|
| 34 | $requestHeader.= "Authorization: Basic ".base64_encode($username."@".$domain.":".$curpass)."\r\n"; |
|---|
| 35 | $requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n"; |
|---|
| 36 | $requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n"; |
|---|
| 37 | $requestHeader.= "Content-Length: ".strlen($data)."\r\n"; |
|---|
| 38 | $requestHeader.= "Connection: close\r\n\r\n"; |
|---|
| 39 | $requestHeader.= $data; |
|---|
| 40 | |
|---|
| 41 | fwrite($filePointer, $requestHeader); |
|---|
| 42 | $responseHeader = ''; |
|---|
| 43 | $responseContent = ''; |
|---|
| 44 | |
|---|
| 45 | do { |
|---|
| 46 | $responseHeader.= fread($filePointer, 1); |
|---|
| 47 | } |
|---|
| 48 | while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader)); |
|---|
| 49 | |
|---|
| 50 | if (!strstr($responseHeader, "Transfer-Encoding: chunked")) { |
|---|
| 51 | while (!feof($filePointer)) { |
|---|
| 52 | $responseContent.= fgets($filePointer, 128); |
|---|
| 53 | } |
|---|
| 54 | } else { |
|---|
| 55 | while ($chunk_length = hexdec(fgets($filePointer))) { |
|---|
| 56 | $responseContentChunk = ''; |
|---|
| 57 | $read_length = 0; |
|---|
| 58 | while ($read_length < $chunk_length) { |
|---|
| 59 | $responseContentChunk .= fread($filePointer, $chunk_length - $read_length); |
|---|
| 60 | $read_length = strlen($responseContentChunk); |
|---|
| 61 | } |
|---|
| 62 | $responseContent.= $responseContentChunk; |
|---|
| 63 | fgets($filePointer); |
|---|
| 64 | } |
|---|
| 65 | } |
|---|
| 66 | return chop($responseContent); |
|---|
| 67 | } |
|---|
| 68 | |
|---|
| 69 | ?> |
|---|