Fixed Web UI compatibility with Safari

This commit is contained in:
Christophe Dumez 2010-03-16 00:20:32 +00:00
parent 12fff1b966
commit 165b33a94e
4 changed files with 124 additions and 12 deletions

View file

@ -140,6 +140,14 @@ void HttpConnection::respond() {
return;
}
QString auth = parser.value("Authorization");
if(auth.isEmpty()) {
// Return unauthorized header
qDebug("Auth is Empty...");
generator.setStatusLine(401, "Unauthorized");
generator.setValue("WWW-Authenticate", "Digest realm=\""+QString(QBT_REALM)+"\", nonce=\""+parent->generateNonce()+"\", opaque=\""+parent->generateNonce()+"\", stale=\"false\", algorithm=\"MD5\", qop=\"auth\"");
write();
return;
}
qDebug("Auth: %s", qPrintable(auth.split(" ").first()));
if (QString::compare(auth.split(" ").first(), "Digest", Qt::CaseInsensitive) != 0 || !parent->isAuthorized(auth.toLocal8Bit(), parser.method())) {
// Update failed attempt counter

View file

@ -259,7 +259,7 @@ bool HttpServer::isAuthorized(QByteArray auth, QString method) const {
md5_ha.addData(password_ha1+":"+prop_nonce+":"+ha2);
response = md5_ha.result().toHex();
}
qDebug("AUTH: comparing reponses");
qDebug("AUTH: comparing reponses: (%d)", static_cast<int>(prop_response == response));
return prop_response == response;
}

View file

@ -3,7 +3,7 @@ LANG_PATH = lang
ICONS_PATH = Icons
# Set the following variable to 1 to enable debug
DEBUG_MODE = 0
DEBUG_MODE = 1
# Global
TEMPLATE = app

View file

@ -22,6 +22,116 @@
* THE SOFTWARE.
*/
// Debug
//alert(navigator.userAgent);
// From http://www.quirksmode.org/js/detect.html
var BrowserDetect = {
init: function () {
this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
//this.version = this.searchVersion(navigator.userAgent)
// || this.searchVersion(navigator.appVersion)
// || "an unknown version";
//this.OS = this.searchString(this.dataOS) || "an unknown OS";
},
searchString: function (data) {
for (var i=0;i<data.length;i++) {
var dataString = data[i].string;
var dataProp = data[i].prop;
this.versionSearchString = data[i].versionSearch || data[i].identity;
if (dataString) {
if (dataString.indexOf(data[i].subString) != -1)
return data[i].identity;
}
else if (dataProp)
return data[i].identity;
}
},
dataBrowser: [
{
string: navigator.userAgent,
subString: "Chrome",
identity: "Chrome"
},
{
string: navigator.userAgent,
subString: "Epiphany",
identity: "Epiphany"
},
{
string: navigator.userAgent,
subString: "Arora",
identity: "Arora"
},
{
string: navigator.userAgent,
subString: "midori",
identity: "Midori"
},
{
string: navigator.userAgent,
subString: "OmniWeb",
versionSearch: "OmniWeb/",
identity: "OmniWeb"
},
{
string: navigator.vendor,
subString: "Apple",
identity: "Safari",
versionSearch: "Version"
},
{
prop: window.opera,
identity: "Opera"
},
{
string: navigator.vendor,
subString: "iCab",
identity: "iCab"
},
{
string: navigator.vendor,
subString: "KDE",
identity: "Konqueror"
},
{
string: navigator.userAgent,
subString: "Firefox",
identity: "Firefox"
},
{
string: navigator.vendor,
subString: "Camino",
identity: "Camino"
},
{ // for newer Netscapes (6+)
string: navigator.userAgent,
subString: "Netscape",
identity: "Netscape"
},
{
string: navigator.userAgent,
subString: "MSIE",
identity: "Explorer",
versionSearch: "MSIE"
},
{
string: navigator.userAgent,
subString: "Gecko",
identity: "Mozilla",
versionSearch: "rv"
},
{ // for older Netscapes (4-)
string: navigator.userAgent,
subString: "Mozilla",
identity: "Netscape",
versionSearch: "Mozilla"
}
]
};
BrowserDetect.init();
myTable = new dynamicTable();
ajaxfn = function(){};
setSortedColumn = function(index){
@ -206,8 +316,10 @@ window.addEvent('load', function(){
}
};
ajaxfn();
loadTransferInfo();
// ajaxfn.periodical(5000);
if(BrowserDetect.browser != "Safari") {
// Safari has trouble with this
loadTransferInfo();
}
setFilter = function(f) {
// Visually Select the right filter
@ -229,14 +341,6 @@ function closeWindows() {
MochaUI.closeAll();
}
// This runs when a person leaves your page.
//window.addEvent('unload', function(){
// if (MochaUI && Browser.Engine.trident != true) {
// MochaUI.garbageCleanUp();
// }
//});
window.addEvent('keydown', function(event){
if (event.key == 'a' && event.control) {
event.stop();