How to debug "Soap Error: Not Found"?

Discussion in 'ISPConfig 3 Priority Support' started by Taleman, Aug 27, 2018.

  1. Taleman

    Taleman Well-Known Member HowtoForge Supporter

    ISPConfig 3.1.13 installed using Perfect Server Quide for Stretch and Apache. This is a test system, freshly installed and updated to latest Debian and ISPConfig.
    I installed ISPConfig3 Plugins for Roundcube. The plugins appear in the Account settings, but every time I click one of them a popop box appears stating
    I could fix other errors by reading logs, but this error does not write anything in any logfile I have looked at. /var/log/roundcube/errors, /var/log/syslog, /var/log/apache/* do not show anything wrong.
    How can I get more information on what is not found? This error does not appear on my production systems, luckily. I can not see what could be wrong. I already downgraded the ISPCONFIG3_plugins to before May 2018 version, that looked like the only code change since last autumn.

    Code:
    ##### SERVER #####
    IP-address (as per hostname): ***.***.***.***
    [WARN] could not determine server's ip address by ifconfig
    [INFO] ISPConfig is installed.
    
    ##### ISPCONFIG #####
    ISPConfig version is 3.1.13
    
    
    ##### VERSION CHECK #####
    
    [INFO] php (cli) version is 7.0.30-0+deb9u1
    
    ##### PORT CHECK #####
    
    
    ##### MAIL SERVER CHECK #####
    
    
    ##### RUNNING SERVER PROCESSES #####
    
    [INFO] I found the following web server(s):
        Apache 2 (PID 22547)
    [INFO] I found the following mail server(s):
        Postfix (PID 2279)
    [INFO] I found the following pop3 server(s):
        Dovecot (PID 2329)
    [INFO] I found the following imap server(s):
        Dovecot (PID 2329)
    [INFO] I found the following ftp server(s):
        PureFTP (PID 2448)
    
    ##### LISTENING PORTS #####
    (only        ()
    Local        (Address)
    [localhost]:10023        (956/postgrey)
    [localhost]:10024        (2310/amavisd-new)
    [localhost]:10025        (2279/master)
    [localhost]:10026        (2310/amavisd-new)
    [localhost]:10027        (2279/master)
    [anywhere]:587        (2279/master)
    [localhost]:11211        (724/memcached)
    [anywhere]:110        (2329/dovecot)
    [anywhere]:143        (2329/dovecot)
    [anywhere]:465        (2279/master)
    [anywhere]:21        (2448/pure-ftpd)
    [anywhere]:22        (803/sshd)
    [anywhere]:25        (2279/master)
    [anywhere]:993        (2329/dovecot)
    [anywhere]:995        (2329/dovecot)
    *:*:*:*::*:10023        (956/postgrey)
    *:*:*:*::*:10024        (2310/amavisd-new)
    *:*:*:*::*:10026        (2310/amavisd-new)
    *:*:*:*::*:3306        (2070/mysqld)
    *:*:*:*::*:587        (2279/master)
    [localhost]10        (2329/dovecot)
    [localhost]43        (2329/dovecot)
    *:*:*:*::*:80        (22547/apache2)
    *:*:*:*::*:8080        (22547/apache2)
    *:*:*:*::*:465        (2279/master)
    *:*:*:*::*:8081        (22547/apache2)
    *:*:*:*::*:21        (2448/pure-ftpd)
    *:*:*:*::*:22        (803/sshd)
    *:*:*:*::*:25        (2279/master)
    *:*:*:*::*:443        (22547/apache2)
    *:*:*:*::*:993        (2329/dovecot)
    *:*:*:*::*:995        (2329/dovecot)
    
    
    
    
    ##### IPTABLES #####
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    f2b-postfix-sasl  tcp  --  [anywhere]/0            [anywhere]/0            multiport dports 25
    f2b-dovecot  tcp  --  [anywhere]/0            [anywhere]/0            multiport dports 110,995,143,993,587,465,4190
    f2b-pure-ftpd  tcp  --  [anywhere]/0            [anywhere]/0            multiport dports 21
    f2b-sshd   tcp  --  [anywhere]/0            [anywhere]/0            multiport dports 22
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain f2b-dovecot (1 references)
    target     prot opt source               destination         
    RETURN     all  --  [anywhere]/0            [anywhere]/0           
    
    Chain f2b-postfix-sasl (1 references)
    target     prot opt source               destination         
    RETURN     all  --  [anywhere]/0            [anywhere]/0           
    
    Chain f2b-pure-ftpd (1 references)
    target     prot opt source               destination         
    RETURN     all  --  [anywhere]/0            [anywhere]/0           
    
    Chain f2b-sshd (1 references)
    target     prot opt source               destination         
    RETURN     all  --  [anywhere]/0            [anywhere]/0           
    
     
  2. till

    till Super Moderator Staff Member ISPConfig Developer

    maybe the soap module is missing in php. try to install the php soap module, it should be:

    apt-get install php7.0-soap

    for streatch or just:

    apt-get install php-soap
     
  3. Taleman

    Taleman Well-Known Member HowtoForge Supporter

    That was installed, I just copypasted the commands from the Perferct Server Guide.
    Code:
    root@web:/tmp# apt-cache policy php7.0-soap
    php7.0-soap:
      Asennettu: 7.0.30-0+deb9u1
      Ehdokas:   7.0.30-0+deb9u1
    
    root@web:/tmp# apt-cache policy php-soap
    php-soap:
      Asennettu: 1:7.0+49
      Ehdokas:   1:7.0+49
    
    I installed also the plain php-soap package, but that did not change the error.

    Also, I forgot to mention in the original post: The plugins can not save anything. All plugins open and I can write in the web form, and save even. But nothing is stored in the database.
     
  4. till

    till Super Moderator Staff Member ISPConfig Developer

    Then it might be a connection problem. Do you use a self-signed SSL cert for ISPConfig on port 8080?
     
  5. Taleman

    Taleman Well-Known Member HowtoForge Supporter

    Yes, the certificate was created when installing ISPConfig. My browser does complain it is not safe, but shows the certificate information OK.
    I can not use LE, this is test system in Intranet, with domain name xyzzy.tld.
    I tried connecting with browser, it says certificate is not trusted because it is self signed.
    I changed soap_url from IP-number to fqdn. Now the error change to "Soap Error: Bad Request". Still nothing in logs.
     
    Last edited: Aug 27, 2018
  6. till

    till Super Moderator Staff Member ISPConfig Developer

    I wonder if it might be PHP which blocks the connection. Is it a test system where you would be able to comment out the SSL lines in the ispconfig.vhost so that it uses HTTP instead of https and then try to use an HTTP:// remote api url in RoundCube? If that would work, then we'll have to take a look where the RoundCube plugins have their soap connect lines and change these to ignore invalid SSL certs.
     
  7. Taleman

    Taleman Well-Known Member HowtoForge Supporter

    xyzzy.tld is test system, I can muck about any way needed.
    If I have
    Code:
    $rcmail_config['soap_url'] = 'http://web.xyzzy.tld:8080/remote';
    
    the error is Soap Error: Bad Request
    If I change that to httpS I get Soap Error: Not Found.
    I removed lines between #SSL Configuration and </VirtualHost>. The soap_url is plain http. I get Soap Error: Not Found.
    If I now change soap_url to httpS error is: Soap Error: Could not connect to host.
     
  8. till

    till Super Moderator Staff Member ISPConfig Developer

    Ok, then the error must have a different reason. I'll have to dig into the code to find out what this short error message might mean.
     
  9. florian030

    florian030 Well-Known Member HowtoForge Supporter

    web.xyzzy.tld points to your test-server? you can test this with i.e. ping. if this fails, add it to /etc/hosts
     
  10. Taleman

    Taleman Well-Known Member HowtoForge Supporter

    I have added it to my /etc/hosts, that is how I have to test it on my test Intranet.
     
  11. till

    till Super Moderator Staff Member ISPConfig Developer

    I've searched in the ispconfig source for this error message and I could not find it, so I guess it's either thrown by the PHP soap extension itself or by the roundcube plugin.
     
  12. Taleman

    Taleman Well-Known Member HowtoForge Supporter

    My guess is this has something to do with the not really proper domain, xyzzy.tld. On two production systems where I run Roundcube ISPConfig3 plugins, it works.
    How can I find out which part of the code is involved here? Then I could maybe see what the plugins are trying to do and why it fails. I do not have much experience with PHP coding, I gave it up when my PHP 4 programs stopped working when PHP 5 came out.
     
  13. till

    till Super Moderator Staff Member ISPConfig Developer

    In a first step, you might want to check if the roundcube plugin connects to the API at all. a soap connect is basically the same than a normal http page request, jsut the exchanged data is a different XML dialect. So when this error occurs, you should see a connect to the remote API endpoint URL in the global webserver access.log. It's in the global log as the ispconfig.vhost does not has it's own access.log file.
     
  14. Taleman

    Taleman Well-Known Member HowtoForge Supporter

    I now notice that ISPConfig panel does have the self signed certificate, but https://web.xyzzy.tld/ does not. Browser shows "ERR_SSL_PROTOCOL_ERROR". It does work with plain http.
    This is from clicking in Roundcube Account:
    Code:
    192.168.250.42 - - [28/Aug/2018:12:25:11 +0300] "GET /webmail/?_task=settings&_action=plugin.ispconfig3_account HTTP/1.1" 200 4737 "http://web.xyzzy.tld/webmail/?_task=settings" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"
    192.168.250.42 - - [28/Aug/2018:12:25:11 +0300] "GET /webmail/?_task=settings&_action=plugin.ispconfig3_account.show&_framed=1 HTTP/1.1" 200 3763 "http://web.xyzzy.tld/webmail/?_task=settings&_action=plugin.ispconfig3_account" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"
    
    
     
  15. till

    till Super Moderator Staff Member ISPConfig Developer

    If that's from the global access.log, then I would say that RoundCube does not connect to the api as I would expect to see a request with /remote/ path otherwise. Just to cross-check, when you access the ispconfig GUI, then these requests shown up in this log?
     
  16. Taleman

    Taleman Well-Known Member HowtoForge Supporter

    Looks like when I use https://web.xyzzy.tld:8080/index.php I do not get lines in that access.log.
    The logs go to /var/log/apache2/other_vhosts_access.log
    This is from that log when clicking in Roundcube:
    Code:
    web.xyzzy.tld:8080 192.168.250.42 - - [28/Aug/2018:12:37:28 +0300] "GET /datalogstatus.php HTTP/1.1" 200 650 "https://web.xyzzy.tld:8080/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"
    web.xyzzy.tld:8080 192.168.250.42 - - [28/Aug/2018:12:37:34 +0300] "GET /datalogstatus.php HTTP/1.1" 200 650 "https://web.xyzzy.tld:8080/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"
    web.xyzzy.tld:8080 192.168.250.42 - - [28/Aug/2018:12:37:40 +0300] "GET /datalogstatus.php HTTP/1.1" 200 650 "https://web.xyzzy.tld:8080/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"
    web.xyzzy.tld:8080 192.168.250.42 - - [28/Aug/2018:12:37:46 +0300] "GET /datalogstatus.php HTTP/1.1" 200 650 "https://web.xyzzy.tld:8080/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"
    web.xyzzy.tld:8080 192.168.250.71 - - [28/Aug/2018:12:37:49 +0300] "POST /remoteindex.php HTTP/1.1" 404 2926 "-" "PHP-SOAP/7.0.30-0+deb9u1"
    web.xyzzy.tld:8080 192.168.250.42 - - [28/Aug/2018:12:37:52 +0300] "GET /datalogstatus.php HTTP/1.1" 200 650 "https://web.xyzzy.tld:8080/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"
    web.xyzzy.tld:8080 192.168.250.42 - - [28/Aug/2018:12:37:58 +0300] "GET /datalogstatus.php HTTP/1.1" 200 650 "https://web.xyzzy.tld:8080/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"
    web.xyzzy.tld:8080 192.168.250.42 - - [28/Aug/2018:12:38:04 +0300] "GET /datalogstatus.php HTTP/1.1" 200 650 "https://web.xyzzy.tld:8080/index.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"
    
    
     
  17. till

    till Super Moderator Staff Member ISPConfig Developer

    Hmmm:

    "POST /remoteindex.php HTTP/1.1" 404 2926 "-" "PHP-SOAP/7.0.30-0+deb9u1"

    should be

    /remote/index.php

    maybe a typo in the remote URL, try adding a / at the end, so that it is similar to:

    https://yourserver:8080/remote/
     
    Taleman likes this.
  18. Taleman

    Taleman Well-Known Member HowtoForge Supporter

    Missing / at end of soap_url, indeed.
    Now I get username or password wrong, but that I can fix.
    After fixin that I get login is not allowed from this hosts IP number.
    And now it works. I allowed remote access from this hosts own IP-address. Why is that needed?
    Silly typo.
    Thanks for help and patience.
     
    Last edited: Aug 28, 2018
    till likes this.

Share This Page