librelist archives

« back to archive

Four issues + Two suggestions

Four issues + Two suggestions

From:
Anonymous
Date:
2015-04-24 @ 13:59
Dearest opkode,

Please forgive the lack of brevity but I would rather give too much 
information than too little. At the very least, this wealth of information
will shed light on what is *not* the problem.
With that said, Converse.js is *happily* working as expected and I do 
greatly appreciate your effort you've put into making this code work.
I must report that I have run into the following issues and would like to 
see if anything is wrong server-side before opening any Converse.js 
tickets.

Notes:

- We are using a standard LAMP and Openfire server. Everything is in 
working order. Openfire works fluidly. No problems when testing with 
Pidgin although since Pidgin does not have native SASL support (AFAIK, and
I don't intend to re-build with their patch), I cannot verify that 
ANONYMOUS login does in fact work but, even with standard Openfire 
defaults (ANONYMOUS login enabled), this should not be a problem.
- For this report, our domain will be known simply as as 'scrubbed'.
- This is the working configuration that was the base for all further additions:

    require(['converse'], function (converse) {
      converse.initialize({
        bosh_service_url: 'http://scrubbed:7070/http-bind/',
        i18n: locales.en,
        show_controlbox_by_default: true,
        roster_groups: true,
        domain_placeholder: 'scrubbed',
      });
    });

------------------------------------------------------

Scenario 1 - Attempt HTTPS BOSH
===============================

bosh_service_url: 'https://scrubbed:7443/http-bind/',

- We are using a self-signed certificate.
- Openfire CORS is enabled with default * wildcard domains allowed, HTTP/S
bindings are correct and available. The HTTPS http-bind URL is accessible 
through Firefox (though, with expected self-signed certificate warning).
- HTTP/S is all in ONE domain: 'scrubbed'.

Results
=======

Firefox dev console feedback:
"Cross-Origin Request Blocked: The Same Origin Policy disallows reading 
the remote resource at https://scrubbed:7443/http-bind/. This can be fixed
by moving the resource to the same domain or enabling CORS."

- Openfire debug log: No errors reported.
- Convserse.js: Gives the eternal spinner. Nothing happens. 

Note: Upon further testing, running an Apache rewrite rule only gives the 
same error. Regardless, this shouldn't be needed because Openfire's Jetty 
handles all of this. The Apache rewrite rule has since been removed.

Conclusion
==========

Setting the BOSH URL to plaintext HTTP (*:7070) works flawlessly.
Perhaps Converse.js doesn't play well with self-signed certificates?

------------------------------------------------------

Scenario 2 - Anonymous login + auto_login
=========================================

Both sub-scenarios:

1)

authentication: 'anonymous',
auto_login: true

2)

authentication: 'login',
jid: 'anyuser@scrubbed',
password: 'password',
auto_login: true

Results
========

Upon page load, Converse shows the original 'login'/sign-in window.
We attempt to sign-in with the above credentials because, both times, the 
default 'login'/sign-in window is given.
A tcpdump is as follows:

-->
Converse.js:
POST /http-bind/ HTTP/1.1
Host: scrubbed:7070
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate..Content-Type: text/xml; charset=utf-8
Referer: http://scrubbed/
Content-Length: 219
Origin: http://scrubbed
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

<body rid='987654321' xmlns='http://jabber.org/protocol/httpbind' 
to='scrubbed' xml:lang='en' wait='60' hold='1' content='text/xml; 
charset=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh'/>

<--
Openfire: 
HTTP/1.1 200 OK
Date: Fri, 24 Apr 2015 03:29:35 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE, 
MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT, 
UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
Cache-Control
Access-Control-Max-Age: 86400
Content-Type: text/xml; charset=UTF-8
Vary: Accept-Encoding, User-Agent
Content-Encoding: gzip
Content-Length: 360
Server: Jetty(9.2.z-SNAPSHOT)

-->
Converse.js:
POST /http-bind/ HTTP/1.1
Host: scrubbed:7070
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: text/xml; charset=utf-8
Referer: http://scrubbed/
Content-Length: 159
Origin: http://scrubbed
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

<body rid='987654322' xmlns='http://jabber.org/protocol/httpbind' 
sid='scrubbed'><auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' 
mechanism='DIGEST-MD5'/></body>

<--
Openfire:
HTTP/1.1 200 OK
Date: Fri, 24 Apr 2015 03:29:36 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE, 
MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT, 
UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
Cache-Control
Access-Control-Max-Age: 86400
Content-Type: text/xml; charset=UTF-8
Vary: Accept-Encoding, User-Agent
Content-Encoding: gzip
Content-Length: 258
Server: Jetty(9.2.z-SNAPSHOT)

-->
Converse.js
POST /http-bind/ HTTP/1.1
Host: scrubbed:7070
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: text/xml; charset=utf-8
Referer: http://scrubbed/
Content-Length: 494
Origin: http://scrubbed
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

<body rid='987654323' xmlns='http://jabber.org/protocol/httpbind' 
sid='scrubbed'><response 
xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>scrubbed</response></body>

<--
Openfire:
HTTP/1.1 200 OK
Date: Fri, 24 Apr 2015 03:29:37 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE, 
MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT, 
UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
Cache-Control
Access-Control-Max-Age: 86400
Content-Type: text/xml; charset=UTF-8
Vary: Accept-Encoding, User-Agent
Content-Length: 134
Server: Jetty(9.2.z-SNAPSHOT)

<body xmlns='http://jabber.org/protocol/httpbind'><failure 
xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure></body>

-->
Converse.js
POST /http-bind/ HTTP/1.1
Host: scrubbed:7070
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: text/xml; charset=utf-8
Referer: http://scrubbed/
Content-Length: 99
Origin: http://scrubbed
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

<body rid='987654324' xmlns='http://jabber.org/protocol/httpbind' 
sid='scrubbed' type='terminate'/>

<--
Openfire:
HTTP/1.1 200 OK
Date: Fri, 24 Apr 2015 03:29:38 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE, 
MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT, 
UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
Cache-Control
Access-Control-Max-Age: 86400
Content-Type: text/xml; charset=UTF-8
Vary: Accept-Encoding, User-Agent
Content-Length: 74
Server: Jetty(9.2.z-SNAPSHOT)

<body xmlns="http://jabber.org/protocol/httpbind" type="terminate"></body>

#end of dump

Logs
====

- Openfire debug log:
javax.security.sasl.SaslException: DIGEST-MD5: IO error acquiring password
[Caused by java.io.IOException: 
org.jivesoftware.Openfire.user.UserNotFoundException: anyuser]
at 
com.sun.security.sasl.digest.DigestMD5Server.validateClientResponse(DigestMD5Server.java:598)
at 
com.sun.security.sasl.digest.DigestMD5Server.evaluateResponse(DigestMD5Server.java:244)
at 
org.jivesoftware.Openfire.net.SASLAuthentication.handle(SASLAuthentication.java:361)
at 
org.jivesoftware.Openfire.SessionPacketRouter.route(SessionPacketRouter.java:66)
at 
org.jivesoftware.Openfire.http.HttpSession.sendPendingPackets(HttpSession.java:655)
at 
org.jivesoftware.Openfire.http.HttpSession$HttpPacketSender.run(HttpSession.java:1292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: 
org.jivesoftware.Openfire.user.UserNotFoundException: anyuser
at 
org.jivesoftware.Openfire.net.XMPPCallbackHandler.handle(XMPPCallbackHandler.java:91)
at 
com.sun.security.sasl.digest.DigestMD5Server.validateClientResponse(DigestMD5Server.java:589)

- FF dev console: No errors reported.
- Convserse.js reports: 'Authentication Failed'

Conclusion
==========

Everything appears in working order except that Converse.js asks for 
mechanism='DIGEST-MD5'. Shouldn't it be ANONYMOUS?

------------------------------------------------------

Scenario 3 - Pre-defined login + auto_login
===========================================

- create user 'anyuser@scrubbed'

authentication: 'login',
jid: 'anyuser@scrubbed',
password: 'password',
auto_login: true

Results
========

Upon page load, Converse shows the original 'login'/sign in window.

- FF dev console: 'TypeError: this.roster is undefined' 
- Openfire debug log: No errors reported. No connection is ever made to 
the server.

tcpdump:
--------

Nothing. No connection is ever made to the server.

Conclusion
==========

No f'ing clue.

------------------------------------------------------

Scenario 4 - Register + Fetch form 
==================================

- Enter our 'scrubbed' domain 

Results
========

Upon upgrading Openfire to 3.10.0, this now works
*BUT*
the Convsere.js UI has un-usability issues:

The Username box is squeezed vertically to only a few pixels and the 
@domain takes up the rest of the box space. I cannot enter text into the 
Username box and cannot pull the window horizontally.
The entire Converse.js window as a whole is now too short so when I 
grab-pull up, the window never releases the mouse. As a final result, even
when *not* grab-pulling, I cannot enter a password.

- FF dev console: No errors reported but "onRegistering" is reported after
the 2nd POST 
- Openfire debug log: No errors reported. No connection is ever made to 
the server.

Conclusion
==========

I'm not a huge web person so I can't help there but I imagine the issue is
simply UI-related?

------------------------------------------------------

Suggestions/Enhancements
========================

With the bugs out of the way, I'll say the following and if it is ticket 
worthy, please let me know.

-Would it be possible to have a variable made available that would 
autofill domain_placeholder into both:
  - "user@server" in the "XMPP Username:" field in the Sign in tab
  - "Your XMPP provider's domain name:" field in the Register tab?

  This would be tremendously helpful to non-tech people who are already 
confused about the "Please enter an email address." error response. This 
would also save unnecessary typing for a domain that is already in the 
URL.

- Would you consider replacing the "Please enter an email address." error 
response with something other than "email"?

  Not every XMPP server has an email backend and I find this error 
response confusing. Why not "Please enter your XMPP account@domain"?

------------------------------------------------------

Thanks again for your work. I'll answer questions as best I can. I look 
forward to a fully functional Converse.js!

Re: [conversejs] Four issues + Two suggestions

From:
Jc Brand
Date:
2015-04-25 @ 21:32
On Fri, Apr 24, 2015 at 01:59:31PM +0000, Anonymous wrote:

<snip>

> I must report that I have run into the following issues and would like 
to see if anything is wrong server-side before opening any Converse.js 
tickets.

<snip>

> Firefox dev console feedback:
> "Cross-Origin Request Blocked: The Same Origin Policy disallows reading 
the remote resource at https://scrubbed:7443/http-bind/. This can be fixed
by moving the resource to the same domain or enabling CORS."
> 
> - Openfire debug log: No errors reported.
> - Convserse.js: Gives the eternal spinner. Nothing happens. 

<snip>
  
> Setting the BOSH URL to plaintext HTTP (*:7070) works flawlessly.
> Perhaps Converse.js doesn't play well with self-signed certificates?

It's firefox which is not allowing the remote resource to be loaded as you see
in the dev console.

Either you are not using the same domain (which you say you are) or perhaps
you're mixing HTTPS and HTTP in a way which firefox doesn't like.

I don't know which it is (or if it's something else) but nothing 
converse.js can do about it AFAIK.

> Scenario 2 - Anonymous login + auto_login
> =========================================

<snip>
 
> Upon page load, Converse shows the original 'login'/sign-in window.

Sounds like you're not using the latest (unreleased) code. Anon login is not
yet available in any released version of converse.js.

I made a mistake by publishing the docs for the anon login feature before a
release was available and this appears to be confusing people.

I'm going to ignore the tcpdump, too much cognitive load for this time of
night. If you're using the latest code and still have the issue, let me know
and I can take a look.

<snip>

> Scenario 3 - Pre-defined login + auto_login
> ===========================================

<snip>

> Upon page load, Converse shows the original 'login'/sign in window.

Same here.

<snip>
 
> The Username box is squeezed vertically to only a few pixels and the 
@domain takes up the rest of the box space. I cannot enter text into the 
Username box and cannot pull the window horizontally.

This has already been fixed in the master branch.

> The entire Converse.js window as a whole is now too short so when I 
grab-pull up, the window never releases the mouse. As a final result, even
when *not* grab-pulling, I cannot enter a password.

Dunno what's going on here...

> - FF dev console: No errors reported but "onRegistering" is reported 
after the 2nd POST 
> - Openfire debug log: No errors reported. No connection is ever made to 
the server.

Same here.
 
> I'm not a huge web person so I can't help there but I imagine the issue 
is simply UI-related?

Not completely clear to me from what you wrote but sounds like it yes.
>
> Suggestions/Enhancements
> ========================
> 
> With the bugs out of the way, I'll say the following and if it is ticket
worthy, please let me know.

Enhancements can go straight to the github tracker. No need to ask here first.
I can always close/reject the ticket there if need be.

> -Would it be possible to have a variable made available that would 
autofill domain_placeholder into both:
>   - "user@server" in the "XMPP Username:" field in the Sign in tab
>   - "Your XMPP provider's domain name:" field in the Register tab?

Yes, sounds sensible.
 
>   This would be tremendously helpful to non-tech people who are already 
confused about the "Please enter an email address." error response. This 
would also save unnecessary typing for a domain that is already in the 
URL.
> - Would you consider replacing the "Please enter an email address." 
error response with something other than "email"?
>   Not every XMPP server has an email backend and I find this error 
response confusing. Why not "Please enter your XMPP account@domain"?

This is a standard browser error and is because of the fact that the input is
set to type email which is due to a fix someone contributed so that mobile
browsers
provide a better keyboard layout when entering a JID (which is similar to 
an email address).

This error you see is an unfortunate side effect I wasn't aware of. I guess
we'll have to remove the "type=email" attribute again.
 
> Thanks again for your work. I'll answer questions as best I can. I look 
forward to a fully functional Converse.js!

Thanks as well.

JC

Re: [conversejs] Four issues + Two suggestions

From:
Thomas Camaran
Date:
2015-04-24 @ 14:03
can you try with http://bind.chatme.im and https://bind.chatme.im and you
see if is a server error or converseJS error

You can login with your account without problem if you use bind.chatme.im

2015-04-24 15:59 GMT+02:00 Anonymous <anonimal@i2pmail.org>:

> Dearest opkode,
>
> Please forgive the lack of brevity but I would rather give too much
> information than too little. At the very least, this wealth of information
> will shed light on what is *not* the problem.
> With that said, Converse.js is *happily* working as expected and I do
> greatly appreciate your effort you've put into making this code work.
> I must report that I have run into the following issues and would like to
> see if anything is wrong server-side before opening any Converse.js tickets.
>
> Notes:
>
> - We are using a standard LAMP and Openfire server. Everything is in
> working order. Openfire works fluidly. No problems when testing with Pidgin
> although since Pidgin does not have native SASL support (AFAIK, and I don't
> intend to re-build with their patch), I cannot verify that ANONYMOUS login
> does in fact work but, even with standard Openfire defaults (ANONYMOUS
> login enabled), this should not be a problem.
> - For this report, our domain will be known simply as as 'scrubbed'.
> - This is the working configuration that was the base for all further
> additions:
>
>     require(['converse'], function (converse) {
>       converse.initialize({
>         bosh_service_url: 'http://scrubbed:7070/http-bind/',
>         i18n: locales.en,
>         show_controlbox_by_default: true,
>         roster_groups: true,
>         domain_placeholder: 'scrubbed',
>       });
>     });
>
> ------------------------------------------------------
>
> Scenario 1 - Attempt HTTPS BOSH
> ===============================
>
> bosh_service_url: 'https://scrubbed:7443/http-bind/',
>
> - We are using a self-signed certificate.
> - Openfire CORS is enabled with default * wildcard domains allowed, HTTP/S
> bindings are correct and available. The HTTPS http-bind URL is accessible
> through Firefox (though, with expected self-signed certificate warning).
> - HTTP/S is all in ONE domain: 'scrubbed'.
>
> Results
> =======
>
> Firefox dev console feedback:
> "Cross-Origin Request Blocked: The Same Origin Policy disallows reading
> the remote resource at https://scrubbed:7443/http-bind/. This can be
> fixed by moving the resource to the same domain or enabling CORS."
>
> - Openfire debug log: No errors reported.
> - Convserse.js: Gives the eternal spinner. Nothing happens.
>
> Note: Upon further testing, running an Apache rewrite rule only gives the
> same error. Regardless, this shouldn't be needed because Openfire's Jetty
> handles all of this. The Apache rewrite rule has since been removed.
>
> Conclusion
> ==========
>
> Setting the BOSH URL to plaintext HTTP (*:7070) works flawlessly.
> Perhaps Converse.js doesn't play well with self-signed certificates?
>
> ------------------------------------------------------
>
> Scenario 2 - Anonymous login + auto_login
> =========================================
>
> Both sub-scenarios:
>
> 1)
>
> authentication: 'anonymous',
> auto_login: true
>
> 2)
>
> authentication: 'login',
> jid: 'anyuser@scrubbed',
> password: 'password',
> auto_login: true
>
> Results
> ========
>
> Upon page load, Converse shows the original 'login'/sign-in window.
> We attempt to sign-in with the above credentials because, both times, the
> default 'login'/sign-in window is given.
> A tcpdump is as follows:
>
> -->
> Converse.js:
> POST /http-bind/ HTTP/1.1
> Host: scrubbed:7070
> User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101
> Firefox/31.0
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip, deflate..Content-Type: text/xml; charset=utf-8
> Referer: http://scrubbed/
> Content-Length: 219
> Origin: http://scrubbed
> Connection: keep-alive
> Pragma: no-cache
> Cache-Control: no-cache
>
> <body rid='987654321' xmlns='http://jabber.org/protocol/httpbind'
> to='scrubbed' xml:lang='en' wait='60' hold='1' content='text/xml;
> charset=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh'/>
>
> <--
> Openfire:
> HTTP/1.1 200 OK
> Date: Fri, 24 Apr 2015 03:29:35 GMT
> Access-Control-Allow-Origin: *
> Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE,
> MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT,
> UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
> Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
> User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
> Cache-Control
> Access-Control-Max-Age: 86400
> Content-Type: text/xml; charset=UTF-8
> Vary: Accept-Encoding, User-Agent
> Content-Encoding: gzip
> Content-Length: 360
> Server: Jetty(9.2.z-SNAPSHOT)
>
> -->
> Converse.js:
> POST /http-bind/ HTTP/1.1
> Host: scrubbed:7070
> User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101
> Firefox/31.0
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip, deflate
> Content-Type: text/xml; charset=utf-8
> Referer: http://scrubbed/
> Content-Length: 159
> Origin: http://scrubbed
> Connection: keep-alive
> Pragma: no-cache
> Cache-Control: no-cache
>
> <body rid='987654322' xmlns='http://jabber.org/protocol/httpbind'
> sid='scrubbed'><auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl'
> mechanism='DIGEST-MD5'/></body>
>
> <--
> Openfire:
> HTTP/1.1 200 OK
> Date: Fri, 24 Apr 2015 03:29:36 GMT
> Access-Control-Allow-Origin: *
> Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE,
> MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT,
> UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
> Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
> User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
> Cache-Control
> Access-Control-Max-Age: 86400
> Content-Type: text/xml; charset=UTF-8
> Vary: Accept-Encoding, User-Agent
> Content-Encoding: gzip
> Content-Length: 258
> Server: Jetty(9.2.z-SNAPSHOT)
>
> -->
> Converse.js
> POST /http-bind/ HTTP/1.1
> Host: scrubbed:7070
> User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101
> Firefox/31.0
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip, deflate
> Content-Type: text/xml; charset=utf-8
> Referer: http://scrubbed/
> Content-Length: 494
> Origin: http://scrubbed
> Connection: keep-alive
> Pragma: no-cache
> Cache-Control: no-cache
>
> <body rid='987654323' xmlns='http://jabber.org/protocol/httpbind'
> sid='scrubbed'><response
> xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>scrubbed</response></body>
> <--
> Openfire:
> HTTP/1.1 200 OK
> Date: Fri, 24 Apr 2015 03:29:37 GMT
> Access-Control-Allow-Origin: *
> Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE,
> MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT,
> UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
> Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
> User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
> Cache-Control
> Access-Control-Max-Age: 86400
> Content-Type: text/xml; charset=UTF-8
> Vary: Accept-Encoding, User-Agent
> Content-Length: 134
> Server: Jetty(9.2.z-SNAPSHOT)
>
> <body xmlns='http://jabber.org/protocol/httpbind'><failure
> xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure></body>
>
> -->
> Converse.js
> POST /http-bind/ HTTP/1.1
> Host: scrubbed:7070
> User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101
> Firefox/31.0
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip, deflate
> Content-Type: text/xml; charset=utf-8
> Referer: http://scrubbed/
> Content-Length: 99
> Origin: http://scrubbed
> Connection: keep-alive
> Pragma: no-cache
> Cache-Control: no-cache
>
> <body rid='987654324' xmlns='http://jabber.org/protocol/httpbind'
> sid='scrubbed' type='terminate'/>
> <--
> Openfire:
> HTTP/1.1 200 OK
> Date: Fri, 24 Apr 2015 03:29:38 GMT
> Access-Control-Allow-Origin: *
> Access-Control-Allow-Methods: PROPFIND, PROPPATCH, COPY, MOVE, DELETE,
> MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT,
> UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST
> Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth,
> User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name,
> Cache-Control
> Access-Control-Max-Age: 86400
> Content-Type: text/xml; charset=UTF-8
> Vary: Accept-Encoding, User-Agent
> Content-Length: 74
> Server: Jetty(9.2.z-SNAPSHOT)
>
> <body xmlns="http://jabber.org/protocol/httpbind" type="terminate"></body>
>
> #end of dump
>
> Logs
> ====
>
> - Openfire debug log:
> javax.security.sasl.SaslException: DIGEST-MD5: IO error acquiring password
> [Caused by java.io.IOException:
> org.jivesoftware.Openfire.user.UserNotFoundException: anyuser]
> at
> 
com.sun.security.sasl.digest.DigestMD5Server.validateClientResponse(DigestMD5Server.java:598)
> at
> 
com.sun.security.sasl.digest.DigestMD5Server.evaluateResponse(DigestMD5Server.java:244)
> at
> 
org.jivesoftware.Openfire.net.SASLAuthentication.handle(SASLAuthentication.java:361)
> at
> org.jivesoftware.Openfire.SessionPacketRouter.route(SessionPacketRouter.java:66)
> at
> 
org.jivesoftware.Openfire.http.HttpSession.sendPendingPackets(HttpSession.java:655)
> at
> 
org.jivesoftware.Openfire.http.HttpSession$HttpPacketSender.run(HttpSession.java:1292)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.io.IOException:
> org.jivesoftware.Openfire.user.UserNotFoundException: anyuser
> at
> 
org.jivesoftware.Openfire.net.XMPPCallbackHandler.handle(XMPPCallbackHandler.java:91)
> at
> 
com.sun.security.sasl.digest.DigestMD5Server.validateClientResponse(DigestMD5Server.java:589)
>
> - FF dev console: No errors reported.
> - Convserse.js reports: 'Authentication Failed'
>
> Conclusion
> ==========
>
> Everything appears in working order except that Converse.js asks for
> mechanism='DIGEST-MD5'. Shouldn't it be ANONYMOUS?
>
> ------------------------------------------------------
>
> Scenario 3 - Pre-defined login + auto_login
> ===========================================
>
> - create user 'anyuser@scrubbed'
>
> authentication: 'login',
> jid: 'anyuser@scrubbed',
> password: 'password',
> auto_login: true
>
> Results
> ========
>
> Upon page load, Converse shows the original 'login'/sign in window.
>
> - FF dev console: 'TypeError: this.roster is undefined'
> - Openfire debug log: No errors reported. No connection is ever made to
> the server.
>
> tcpdump:
> --------
>
> Nothing. No connection is ever made to the server.
>
> Conclusion
> ==========
>
> No f'ing clue.
>
> ------------------------------------------------------
>
> Scenario 4 - Register + Fetch form
> ==================================
>
> - Enter our 'scrubbed' domain
>
> Results
> ========
>
> Upon upgrading Openfire to 3.10.0, this now works
> *BUT*
> the Convsere.js UI has un-usability issues:
>
> The Username box is squeezed vertically to only a few pixels and the
> @domain takes up the rest of the box space. I cannot enter text into the
> Username box and cannot pull the window horizontally.
> The entire Converse.js window as a whole is now too short so when I
> grab-pull up, the window never releases the mouse. As a final result, even
> when *not* grab-pulling, I cannot enter a password.
>
> - FF dev console: No errors reported but "onRegistering" is reported after
> the 2nd POST
> - Openfire debug log: No errors reported. No connection is ever made to
> the server.
>
> Conclusion
> ==========
>
> I'm not a huge web person so I can't help there but I imagine the issue is
> simply UI-related?
>
> ------------------------------------------------------
>
> Suggestions/Enhancements
> ========================
>
> With the bugs out of the way, I'll say the following and if it is ticket
> worthy, please let me know.
>
> -Would it be possible to have a variable made available that would
> autofill domain_placeholder into both:
>   - "user@server" in the "XMPP Username:" field in the Sign in tab
>   - "Your XMPP provider's domain name:" field in the Register tab?
>
>   This would be tremendously helpful to non-tech people who are already
> confused about the "Please enter an email address." error response. This
> would also save unnecessary typing for a domain that is already in the URL.
>
> - Would you consider replacing the "Please enter an email address." error
> response with something other than "email"?
>
>   Not every XMPP server has an email backend and I find this error
> response confusing. Why not "Please enter your XMPP account@domain"?
>
> ------------------------------------------------------
>
> Thanks again for your work. I'll answer questions as best I can. I look
> forward to a fully functional Converse.js!
>