SOAP Error: Could not connect to host

Discussion in 'Installation/Configuration' started by minddigger, Feb 20, 2013.

  1. minddigger

    minddigger New Member

    Hi, I want to use the API of ISPConfig 3.0.4.6 and therefore I have made a test script (using example), simply to connect to the SOAP server.
    It runs on a Ubuntu 12.04.2 LTS precise server.
    I have to mention that I had for about 4 months ago a working script, but now, after I have upgraded the server, it no longer works.

    The script is very common:

    $username = 'remoteusr';
    $password = 'password';


    $soap_location = 'https://myserverip:8080/remote/index.php';
    $soap_uri = 'https://myserverip:8080/remote/';


    $client = new SoapClient(null, array('location' => $soap_location,
    'uri' => $soap_uri,
    'trace' => 1));

    // ini_set('soap.wsdl_cache_enabled',0);
    // ini_set('soap.wsdl_cache_ttl',0);

    try {
    //* Login to the remote server
    if($session_id = $client->login(trim($username),trim($password))) {
    echo 'Logged into remote server sucessfully. The SessionID is '.$session_id.' - <br>';
    }

    //* Logout
    if($client->logout($session_id)) {
    echo "Logout for session ".$session_id;
    }

    } catch (SoapFault $e) {
    var_dump($client->__getLastRequest())."<br>";
    var_dump($client->__getLastResponse())."<br>";

    echo "<br>Please contact the server administator<br>";
    die('SOAP Error: '.$e->getMessage());
    }


    The getLastRequest gives me the username and password back
    The getLastResponse gives me NULL

    I don't get what is wrong here, especially where it did work before!!
     
  2. till

    till Super Moderator Staff Member ISPConfig Developer

    The error "SOAP Error: Could not connect to host" indicates that either $soap_location or $soap_uri are incorrect so that sopa could not reach a server under that url.
     
  3. minddigger

    minddigger New Member

    Yes that could be possible, but... The $soap_location AND the $soap_uri are right. They are besides the /remote part the same as what I use to login to my ISPConfig. Offcourse the 'myserverip' should be replaced by the IP or URL of the real server, but I will not encourage anyone to hack my server at this moment ;-)

    When I enter the whole URL in a browser, I get a blank screen as well. I think at least it should display something...
     
  4. till

    till Super Moderator Staff Member ISPConfig Developer

    No, it has to be blank. When you connect to a soap server with a web borwser, then nothing gets displayed.

    Did you run the browser on the same server that you run the php script on, so the connection is made from same network interface and IP?
     
  5. minddigger

    minddigger New Member

    Yes, I developped it on my Desktop PC and call the servers SOAP from there. It did work in the past as I did mention earlyer and I was able to add a user as well in the API, but now it does not work anymore. As far as I can see nothing has changed, besides the upgrade of the (Ubuntu) server OS.
     
  6. till

    till Super Moderator Staff Member ISPConfig Developer

    maybe the php soap extension is not installed of the server anymore. You can e.g. check that with the phpinfo() function if soap is available.
     
  7. minddigger

    minddigger New Member

    Nope, this have I already checked. SOAP is available.
     
  8. minddigger

    minddigger New Member

    It even getting stranger: When I use the script on a different server, or from my home location, where 'myserverip' is my server IP address or my server URL like this :

    $soap_location = 'https://myserverip:8080/remote/index.php';
    $soap_uri = 'https://myserverip:8080/remote/';

    I got a SOAP Fault.

    When I run the same script on the SOAP server itself using
    $soap_location = 'https://localhost:8080/remote/index.php';
    $soap_uri = 'https://localhost:8080/remote/';

    it works fine!!!

    When I call the SOAP servers ISPConfig admin screen from a different server, using
    'https://myserverip:8080' or 'https://myserverURL:8080' I got the login screen of ISPConfig, so it could not be a DNS problem.
    I'm confused because I have tried it on different servers with ISPConfig and everywhere got the same result....
     
    Last edited: Feb 22, 2013
  9. ismo-conguairta

    ismo-conguairta New Member

    What is your PHP version?

    This should be related to php-5.6. All encrypted client streams now enable peer verification by default. If you use a self-signed certificate, the peer verification fails. In my ispconfig installation on Debian Jessie I solved with the following steps.

    Copy the ISPconfig CA (=CRT for self-signed) to dir /usr/local/share/ca-certificates/

    # cp /usr/local/ispconfig/interface/ssl/ispserver.crt /usr/local/share/ca-certificates/
    # update-ca-certificates

    Then change the related php.ini file. If you use fcgi for roundcube you have to modify /etc/php5/cgi/php.ini and add in section [openssl] the following line:

    openssl.cafile=/etc/ssl/certs/ca-certificates.crt

    Then, restart apache

    # service apache2 restart
     
    MasteRTriX and till like this.
  10. renky

    renky New Member

    Or simply deactivate peer-check in your php-script:

    $client = new SoapClient(null, array('location' => $soap_location,
    'uri' => $soap_uri,
    'trace' => 1,
    'stream_context'=> stream_context_create(array('ssl'=> array('verify_peer'=>false,'verify_peer_name'=>false)))
    ));

    this worked for me
     
    sjau, wetzesas and MasteRTriX like this.
  11. wetzesas

    wetzesas New Member

    This is working fine for me too.
     
  12. sjau

    sjau Local Meanie Moderator

    Just encountered the same issue. Thx for the solution.
     

Share This Page