Ticket #1485963: cpanel.php

File cpanel.php, 1.9 KB (added by brian, 4 years ago)

Password Plugin Drivers File

Line 
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
13function 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?>