vbZ{?; uNbIcL2:*3fKBY^I-mh"W2 ,r܍ &_(t՜ܧ}=98kѯ|q|G a(VN8_&og`sh2FuZ쥂Q^RR:+-ttuE'l=Ԑ$3[xi'0&}cZ=Z:3!ީSѻKID"EYi8G'u)|DW {Sfptͦ4$ga! s 7@!Ufߎ!hxfa\eChހTµɱ#}c#ZwUOH^`i*N`/$w9X4}V.&h%b|d)LnVԓ#qaYcn!LRq`E\|3_`[ Gli״TvyT޻\*X7Rauj@~0h3UR8hǾC48hqeW6MP6>(~h ߌ ~7"vY5܌VzwmpY[ے3-UQa8(DrxK:0RG=.>܊QR:rU! IT]$BT1}*>ı][x_S) ަYPYDj8sM,)ffS;S<: ^P-^[4 21,9}7vydC6NXBN~%ZpA|t(mue O(f z"TO` CЀN4h =I^E-OQR HUs*/6_kh7o8~1O<_J\c+#Aa F2"d.եF38=^Zqzlpb^l|G ~1x& *~)APo7-ڷˊZjS a%끞bpE_$ 0&Kd(D"&0K2d*k 8s|9W4>@1][8AhI;_O?f7eKvz,J ^@#jm1NIky/6sXvY>?dt" %=wxGc'&-Z{'sYhv< {5G>r{IFA;7 `RyUSĆȟ{kt-!m Md>qa1I#g+0D]3$&YXLCCV@OI|75lгkiD,@5pMbkQz=D4yi)b9 #/g(Ay.H\.͏~?3v>:=Bq^L!e[q9Ζ~-gm^ ?tA,bƿMѤ#v[aerݰY98Eihl%{>Ćȟ{kviȅIR%THDG"o Q;q}aP͉ZVb_6sHmANsl$UnjVcOn5{曵>_S˷ȃ8_9#h&OG9o494mLNb''PEEb-{> l =. @FhɥzI鱷ZUV10֟s֟?"T:j?Rtq:$qJr\kȩ|9dQ֒=/Go+SVkWm +G3X4*L\LA;.0jW`  dۆ+M5E/2 r{D=ȑթ@7J AMػD5j0y@5]gyMCn6Yt/b ʌs8~Մ /L  )^FhĞ~\f/(n?3%;)J,@ φ-I8u_DևsY?HSc2}/TuK]#G[]M$Nfݱ!6(vN WH{~dY*rdh?S|y-4"6,t&) ՟'` X8;*Yе$J ^@#jm1N-y" EAlMHbb`)>+-GYG)|2ZkEa'謁l5 ^w뒣bpkmݭc 32ٮAZjx#5$A98H 9/@eQ1y!vu Zș\ZOd>WM3q'Ђ1keihם43O hkO1;l@u!:BE"ި3)ʁ *)Sw~!а`2 _QvQm ;>6vŻx4H<?WA.ѧU@ kF0J]14*ibvQV7gƘ !$H'K V 4e` B_̉WojY~v,2[ * send a request to the plesk * * @param string $packet XML-Packet to send to Plesk * * @returns string Response body */ function send_request($packet) { curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $packet); $result = curl_exec($this->curl); return $result && strpos($result, 'curl); } /** * Get all hosting-information of a domain * * @param string $domain domain-name * @returns object SimpleXML object */ function domain_info($domain) { // build xml $request = new SimpleXMLElement(""); $site = $request->addChild("site"); $get = $site->addChild("get"); $filter = $get->addChild("filter"); $filter->addChild("name", utf8_encode($domain)); $dataset = $get->addChild("dataset"); $dataset->addChild("hosting"); $packet = $request->asXML(); $xml = null; // send the request and make it to simple-xml-object if ($res = $this->send_request($packet)) { $xml = new SimpleXMLElement($res); } // Old Plesk versions require version attribute, add it and try again if ($xml && $xml->site->get->result->status == 'error' && $xml->site->get->result->errcode == 1017) { $request->addAttribute("version", "1.6.3.0"); $packet = $request->asXML(); $this->old_version = true; // send the request and make it to simple-xml-object if ($res = $this->send_request($packet)) { $xml = new SimpleXMLElement($res); } } return $xml; } /** * Get psa-id of a domain * * @param string $domain domain-name * * @returns int Domain ID */ function get_domain_id($domain) { if ($xml = $this->domain_info($domain)) { return intval($xml->site->get->result->id); } } /** * Change Password of a mailbox * * @param string $mailbox full email-address (user@domain.tld) * @param string $newpass new password of mailbox * * @returns bool */ function change_mailbox_password($mailbox, $newpass) { list($user, $domain) = explode("@", $mailbox); $domain_id = $this->get_domain_id($domain); // if domain cannot be resolved to an id, do not continue if (!$domain_id) { return false; } // build xml-packet $request = new SimpleXMLElement(""); $mail = $request->addChild("mail"); $update = $mail->addChild("update"); $add = $update->addChild("set"); $filter = $add->addChild("filter"); $filter->addChild("site-id", $domain_id); $mailname = $filter->addChild("mailname"); $mailname->addChild("name", $user); $password = $mailname->addChild("password"); $password->addChild("value", $newpass); $password->addChild("type", "plain"); if ($this->old_version) { $request->addAttribute("version", "1.6.3.0"); } $packet = $request->asXML(); // send the request to plesk if ($res = $this->send_request($packet)) { $xml = new SimpleXMLElement($res); $res = strval($xml->mail->update->set->result->status); if ($res != "ok") { $res = [ 'code' => PASSWORD_ERROR, 'message' => strval($xml->mail->update->set->result->errtext) ]; } return $res; } return false; } }