Roundcube Community Forum

Release Support => Pending Issues => Topic started by: jeffshead on November 05, 2013, 08:43:33 PM

Title: How to add an unsupported browser
Post by: jeffshead on November 05, 2013, 08:43:33 PM
I use several different devices and browsers to access RoundCube. All of them work just fine with RC but I have to spoof some of the browsers' user agents to avoid triggering the "Your browser does not suit the requirements for this application" error that hides the login form.

How can I add specific user agents to Roundcube so they do not trigger this error?

I searched the code and tried a couple of things but I was not able to get anything to work.

Can someone please tell me which files and what code needs to be edited?
Title: Re: How to add an unsupported browser
Post by: SKaero on November 05, 2013, 10:29:03 PM
To my knowledge RoundCube doesn't check for specific browsers/versions are you using any plugins?
Title: Re: How to add an unsupported browser
Post by: ABerglund on November 05, 2013, 10:49:59 PM
Are you talking about the javascript warning? If so, and the browser you are trying does have javascript support, then you need to coax the browser to report that it truly is javascript-capable. That's not a roundcube thing, its the browser.
Title: Re: How to add an unsupported browser
Post by: jeffshead on November 05, 2013, 10:58:47 PM
To my knowledge RoundCube doesn't check for specific browsers/versions are you using any plugins?

Thanks for replying  :)

I'm using the jqueryui and contextmenu plugins but I get the same results after disabling them and clearing the browser's cache.

There are some files that do check the user agent and generate the error.

As far as I can tell, the files below handle the checking and errors but my mods did not work:

..\program\lib\Roundcube\rcube_browser.php
..\program\steps\utils\error.inc
..\program\include\rcmail_output_html.php
Title: Re: How to add an unsupported browser
Post by: jeffshead on November 05, 2013, 11:09:38 PM
Are you talking about the javascript warning? If so, and the browser you are trying does have javascript support, then you need to coax the browser to report that it truly is javascript-capable. That's not a roundcube thing, its the browser.

This particular error does not have anything to do with JavaScript support. It has to do with the user agent. RC does check the user agent and notifies the user if the browser is not supported.

Below is a screen cap:
(http://i.imgur.com/8omvgT4.png)
Title: Re: How to add an unsupported browser
Post by: SKaero on November 05, 2013, 11:35:38 PM
I've never seen that error, even when using obscure browsers. I also can't find any of the text in that error message in any of the RoundCube language files. I also noticed that the error message says it that it requires IE 7+ but RoundCube officially support IE 6 so I don't see how it would coming from RoundCube.
Title: Re: How to add an unsupported browser
Post by: jeffshead on November 05, 2013, 11:42:12 PM
I've never seen that error, even when using obscure browsers. I also can't find any of the text in that error message in any of the RoundCube language files. I also noticed that the error message says it that it requires IE 7+ but RoundCube officially support IE 6 so I don't see how it would coming from RoundCube.
The text for the error is located in the following file:
..\program\steps\utils\error.inc
Title: Re: How to add an unsupported browser
Post by: SKaero on November 06, 2013, 01:28:40 AM
Interesting it is indeed there, its very odd that I've never run across it before. Tracking back the code it doesn't look like its actually check for browser versions, the code that triggers the error is in the app.js:
Code: [Select]
// check browser
if (!bw.dom || !bw.xmlhttp_test() || (bw.mz && bw.vendver < 1.9)) {
  this.goto_url('error', '_code=0x199');
  return;
}

There are three checks, first "!bw.dom" That checks a variable in the common.js file which checks for the ability to select an element by id.
Code: [Select]
this.dom = document.getElementById ? true : false;

The second check "!bw.xmlhttp_test()" calls the xmlhttp_test() function also in the common.js file to check for XMLHTTP support.
Code: [Select]
// test for XMLHTTP support
this.xmlhttp_test = function()
{
  var activeX_test = new Function("try{var o=new ActiveXObject('Microsoft.XMLHTTP');return true;}catch(err){return false;}");
  this.xmlhttp = (window.XMLHttpRequest || (window.ActiveXObject && activeX_test()));
  return this.xmlhttp;
};

The third check "(bw.mz && bw.vendver < 1.9)" checks if you are running Mozilla and that the version is less than 1.9.

I'm not sure which check is causing it to break for you though, what browser are you using?
Title: Re: How to add an unsupported browser
Post by: jeffshead on November 06, 2013, 07:24:47 AM
I'm not sure which check is causing it to break for you though, what browser are you using?

Thank you so much for taking the time to find the actual check.

The browser I use the most is Firefox 25 with the following custom user agent which triggers that error:

Mozilla/5.0 (en-us;)

I have to use that specific user agent from one location.

It's the third check that causes the trigger for that user agent.
Title: Re: How to add an unsupported browser
Post by: alec on November 06, 2013, 07:45:07 AM
Change it to "Mozilla/5.0 (en-us; rv:25.0)" and it should work.
Title: Re: How to add an unsupported browser
Post by: jeffshead on November 06, 2013, 06:07:59 PM
Change it to "Mozilla/5.0 (en-us; rv:25.0)" and it should work.

Thanks :)

That works for RC. Now I have to wait till tomorrow and test the new user agent from the other location and make sure it does not cause any issues.