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 <[email protected]
> <mailto:[email protected]>> 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
> <[email protected] <mailto:[email protected]>
> > <mailto:[email protected] <mailto:[email protected]>>> 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 <[email protected]
> <mailto:[email protected]> <mailto:[email protected]
> <mailto:[email protected]>>>,
> > RHCE, Red Hat
> > Virtualization | libvirt-php bindings | php-virt-control.org
> <http://php-virt-control.org>
> > <http://php-virt-control.org>
> >
> >
>
>
> --
> Michal Novotny <[email protected] <mailto:[email protected]>>,
> RHCE, Red Hat
> Virtualization | libvirt-php bindings | php-virt-control.org
> <http://php-virt-control.org>
>
>
--
Michal Novotny <[email protected]>, 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
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list