config->get('password_modoboa_api_token'); $RoudCubeUsername = $_SESSION['username']; $IMAPhost = $_SESSION['imap_host']; // Call GET to fetch values from modoboa server $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://" . $IMAPhost . "/api/v1/accounts/?search=" . urlencode($RoudCubeUsername), CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Authorization: Token " . $ModoboaToken, "Cache-Control: no-cache", "Content-Type: application/json" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { return PASSWORD_CONNECT_ERROR; } // Decode json string $decoded = json_decode($response); if (!is_array($decoded)) { return PASSWORD_CONNECT_ERROR; } // Get user ID (pk) $userid = $decoded[0]->pk; // Encode json with new password $ret['username'] = $decoded[0]->username; $ret['role'] = $decoded[0]->role; $ret['password'] = $passwd; // new password $encoded = json_encode($ret); // Call HTTP API Modoboa $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://" . $IMAPhost . "/api/v1/accounts/" . $userid . "/", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "PUT", CURLOPT_POSTFIELDS => "" . $encoded . "", CURLOPT_HTTPHEADER => array( "Authorization: Token " . $ModoboaToken, "Cache-Control: no-cache", "Content-Type: application/json" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { return PASSWORD_CONNECT_ERROR; } return PASSWORD_SUCCESS; } }