Hi Koen, please try this patch. I can't test it myself since it's logging automatically in my setup but I *think* I may have found the problem. Could you please apply attached patch (revert the patch I sent to you before) and provide me the test results? Thanks, Michal On 06/29/2011 03:47 PM, Koen Calliauw wrote: > Hi Michal, > > Here's the output. Please note that special characters were visible > when opening the file with vi, though not with a cat on the console, > so this is a copy/paste out of vi. > > [2011-06-29 15:43:58 libvirt-php/core]: libvirt_connect: credentials > index 2 > [2011-06-29 15:43:58 libvirt-php/core]: libvirt_connect: credentials > index 5 > [2011-06-29 15:43:58 libvirt-php/core]: libvirt_connect: Found 2 > elements for credentials > [2011-06-29 15:43:58 libvirt-php/core]: > libvirt_virConnectAuthCallback: cred 0, type 2, prompt Enter username > for 10.9.0.2 [root] challenge 10.9.0.2 > [2011-06-29 15:43:58 libvirt-php/core]: > libvirt_virConnectAuthCallback: result rootV^? (4) > [2011-06-29 15:43:58 libvirt-php/core]: > libvirt_virConnectAuthCallback: cred 0, type 5, prompt Enter rootV^?'s > password for 10.9.0.2 challenge 10.9.0.2 > [2011-06-29 15:43:58 libvirt-php/core]: > libvirt_virConnectAuthCallback: result fakepass (12) > [Wed Jun 29 15:44:00 2011] [error] [client 10.9.1.10] PHP Warning: > libvirt_connect(): internal error HTTP response code 500 for call to > 'Login'. Fault: ServerFaultCode - Cannot complete login due to an > incorrect user name or password. in /var/www/virt.php on line 9, > referer: http://10.9.0.3/ > [2011-06-29 15:44:00 libvirt-php/core]: libvirt_connect: Cannot > establish connection to esx://10.9.0.2?transport=http > <http://10.9.0.2?transport=http> > > Best regards, > Koen Calliauw > > > > On Wed, Jun 29, 2011 at 3:35 PM, Michal Novotny <minovotn@xxxxxxxxxx > <mailto:minovotn@xxxxxxxxxx>> wrote: > > Hi Koen, > that's bad. I don't have logging of username and password length here. > I'll try to work on this. You can try attached patch to extend logging > by username and password in the mean time and provide me the full > resulting log file? Please review whether there is no password and if > there is then please change it to fakepass. > > Thanks, > Michal > > On 06/29/2011 03:19 PM, Koen Calliauw wrote: > > Hi Michal, > > > > Here's what appears in the logfile when using libvirt_logfile_set: > > > > [Wed Jun 29 15:18:00 2011] [error] [client 10.9.1.10] PHP Warning: > > libvirt_connect(): internal error HTTP response code 500 for call to > > 'Login'. Fault: ServerFaultCode - Cannot complete login due to an > > incorrect user name or password. in /var/www/virt.php on line 9, > > referer: http://10.9.0.3/ > > [2011-06-29 15:18:00 libvirt-php/core]: libvirt_connect: Cannot > > establish connection to esx://10.9.0.2?transport=http > <http://10.9.0.2?transport=http> > > <http://10.9.0.2?transport=http> > > > > Best regards, > > Koen Calliauw > > > > On Wed, Jun 29, 2011 at 3:10 PM, Michal Novotny > <minovotn@xxxxxxxxxx <mailto:minovotn@xxxxxxxxxx> > > <mailto:minovotn@xxxxxxxxxx <mailto:minovotn@xxxxxxxxxx>>> wrote: > > > > Hi Koen, > > thanks for you e-mail. I don't know what exactly is going on > here but > > could you please try to enable debug logging using > > > > libvirt_logfile_set($filename, $maxsize) > > > > API function? The maxsize parameter is optional and it > defaults to > > 1024 > > KiB (1M). The file have to have write permissions so you can > touch the > > file, e.g. debug.log and change it's permissions to 777 to allow > > logging. Once you try to login using the script you > mentioned with > > debug > > set you will get the debug output into the debug.log file which > > could be > > send to us for further analysis. > > > > Thanks, > > Michal > > > > > > On 06/29/2011 03:03 PM, Koen Calliauw wrote: > > > Hi all, > > > > > > I've started playing with libvirt-php yesterday and with > the help of > > > Michal Novotny got it running quite painlessly. However, > the login > > > from PHP to my testing ESXi server seems to be failing. I've > > > wiresharked the HTTP traffic with a virsh -c (which works) and > > > compared that to the traffic I see when using the libvirt-php > > > extension, here's the difference I see (mind the username) > > > > > > Not working (libvirt-php) > > > > > > <Login xmlns="urn:vim25"><_this xmlns="urn:vim25" > > > xsi:type="ManagedObjectReference" > > > type="SessionManager">ha-sessionmgr</_this><userName > > xmlns="urn:vim25" > > > xsi:type="xsd:string">root8.</userName><password > xmlns="urn:vim25" > > > xsi:type="xsd:string">fakepass</password></Login> > > > > > > Working (virsh -c) > > > > > > <Login xmlns="urn:vim25"><_this xmlns="urn:vim25" > > > xsi:type="ManagedObjectReference" > > > type="SessionManager">ha-sessionmgr</_this><userName > > xmlns="urn:vim25" > > > xsi:type="xsd:string">root</userName><password > xmlns="urn:vim25" > > > xsi:type="xsd:string">fakepass</password></Login> > > > > > > So for some reason something gets appended (8.) or encoded > wrong or > > > something when I use the PHP extension. This is the > testing code > > I run: > > > > > > <?php > > > $credentials = > > > > array(VIR_CRED_AUTHNAME=>'root',VIR_CRED_PASSPHRASE=>'fakepass'); > > > $conn = libvirt_connect("esx://10.9.0.2?transport=http > <http://10.9.0.2?transport=http> > > <http://10.9.0.2?transport=http> > > > <http://10.9.0.2?transport=http>", FALSE, $credentials); > > > if($conn) { > > > print_r(libvirt_connect_get_hypervisor($conn)); > > > > > > } else { > > > echo "Connection failed: ".libvirt_get_last_error(); > > > } > > > > > > Any help with this issue would be greatly appreciated. Thanks! > > > > > > Best regards, > > > Koen Calliauw > > > > > > -- > > Michal Novotny <minovotn@xxxxxxxxxx > <mailto:minovotn@xxxxxxxxxx> <mailto:minovotn@xxxxxxxxxx > <mailto:minovotn@xxxxxxxxxx>>>, > > RHCE, Red Hat > > Virtualization | libvirt-php bindings | php-virt-control.org > <http://php-virt-control.org> > > <http://php-virt-control.org> > > > > > > > -- > Michal Novotny <minovotn@xxxxxxxxxx <mailto:minovotn@xxxxxxxxxx>>, > RHCE, Red Hat > Virtualization | libvirt-php bindings | php-virt-control.org > <http://php-virt-control.org> > > -- Michal Novotny <minovotn@xxxxxxxxxx>, RHCE, Red Hat Virtualization | libvirt-php bindings | php-virt-control.org
diff --git a/src/libvirt-php.c b/src/libvirt-php.c index c3253c0..21793ee 100644 --- a/src/libvirt-php.c +++ b/src/libvirt-php.c @@ -1196,18 +1196,19 @@ static int libvirt_virConnectAuthCallback(virConnectCredentialPtr cred, unsigne php_libvirt_cred_value *creds=(php_libvirt_cred_value*) cbdata; for(i=0;i<ncred;i++) { - //printf ("Cred %i: type %i, prompt %s challenge %s\n",i,cred[i].type,cred[i].prompt,cred[i].challenge); + DPRINTF("%s: cred %d, type %d, prompt %s challenge %s\n ", __FUNCTION__, i, cred[i].type, cred[i].prompt, cred[i].challenge); if (creds != NULL) for (j=0;j<creds[0].count;j++) { if (creds[j].type==cred[i].type) { cred[i].resultlen=creds[j].resultlen; - cred[i].result=malloc(creds[j].resultlen); + cred[i].result=malloc(creds[j].resultlen + 1); + memset(cred[i].result, 0, creds[j].resultlen + 1); strncpy(cred[i].result,creds[j].result,creds[j].resultlen); } } - //printf ("Result: %s (%i)\n",cred[i].result,cred[i].resultlen); + DPRINTF("%s: result %s (%d)\n", __FUNCTION__, cred[i].result, cred[i].resultlen); } return 0; @@ -1316,16 +1317,20 @@ PHP_FUNCTION(libvirt_connect) zend_hash_move_forward_ex(arr_hash, &pointer)) { if (Z_TYPE_PP(data) == IS_STRING) { if (zend_hash_get_current_key_ex(arr_hash, &key, &key_len, &index, 0, &pointer) == HASH_KEY_IS_STRING) { + DPRINTF("%s: Writing key %s (len %d)\n", PHPFUNC, key, key_len); PHPWRITE(key, key_len); } else { + DPRINTF("%s: credentials index %d\n", PHPFUNC, index); creds[j].type=index; - creds[j].result=emalloc(Z_STRLEN_PP(data)); + creds[j].result=emalloc( Z_STRLEN_PP(data) + 1 ); + memset(creds[j].result, 0, Z_STRLEN_PP(data) + 1); creds[j].resultlen=Z_STRLEN_PP(data); strncpy(creds[j].result,Z_STRVAL_PP(data),Z_STRLEN_PP(data)); j++; } } } + DPRINTF("%s: Found %d elements for credentials\n", PHPFUNC, j); creds[0].count=j; libvirt_virConnectAuth.cbdata = (void*)creds; conn->conn = virConnectOpenAuth (url, &libvirt_virConnectAuth, readonly ? VIR_CONNECT_RO : 0);
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list