mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-11 15:27:54 +00:00
Fixed Web UI compatibility with Safari
This commit is contained in:
parent
12fff1b966
commit
165b33a94e
@ -140,6 +140,14 @@ void HttpConnection::respond() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QString auth = parser.value("Authorization");
|
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()));
|
qDebug("Auth: %s", qPrintable(auth.split(" ").first()));
|
||||||
if (QString::compare(auth.split(" ").first(), "Digest", Qt::CaseInsensitive) != 0 || !parent->isAuthorized(auth.toLocal8Bit(), parser.method())) {
|
if (QString::compare(auth.split(" ").first(), "Digest", Qt::CaseInsensitive) != 0 || !parent->isAuthorized(auth.toLocal8Bit(), parser.method())) {
|
||||||
// Update failed attempt counter
|
// Update failed attempt counter
|
||||||
|
@ -259,7 +259,7 @@ bool HttpServer::isAuthorized(QByteArray auth, QString method) const {
|
|||||||
md5_ha.addData(password_ha1+":"+prop_nonce+":"+ha2);
|
md5_ha.addData(password_ha1+":"+prop_nonce+":"+ha2);
|
||||||
response = md5_ha.result().toHex();
|
response = md5_ha.result().toHex();
|
||||||
}
|
}
|
||||||
qDebug("AUTH: comparing reponses");
|
qDebug("AUTH: comparing reponses: (%d)", static_cast<int>(prop_response == response));
|
||||||
return prop_response == response;
|
return prop_response == response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ LANG_PATH = lang
|
|||||||
ICONS_PATH = Icons
|
ICONS_PATH = Icons
|
||||||
|
|
||||||
# Set the following variable to 1 to enable debug
|
# Set the following variable to 1 to enable debug
|
||||||
DEBUG_MODE = 0
|
DEBUG_MODE = 1
|
||||||
|
|
||||||
# Global
|
# Global
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
|
@ -22,6 +22,116 @@
|
|||||||
* THE SOFTWARE.
|
* 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();
|
myTable = new dynamicTable();
|
||||||
ajaxfn = function(){};
|
ajaxfn = function(){};
|
||||||
setSortedColumn = function(index){
|
setSortedColumn = function(index){
|
||||||
@ -206,8 +316,10 @@ window.addEvent('load', function(){
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
ajaxfn();
|
ajaxfn();
|
||||||
|
if(BrowserDetect.browser != "Safari") {
|
||||||
|
// Safari has trouble with this
|
||||||
loadTransferInfo();
|
loadTransferInfo();
|
||||||
// ajaxfn.periodical(5000);
|
}
|
||||||
|
|
||||||
setFilter = function(f) {
|
setFilter = function(f) {
|
||||||
// Visually Select the right filter
|
// Visually Select the right filter
|
||||||
@ -229,14 +341,6 @@ function closeWindows() {
|
|||||||
MochaUI.closeAll();
|
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){
|
window.addEvent('keydown', function(event){
|
||||||
if (event.key == 'a' && event.control) {
|
if (event.key == 'a' && event.control) {
|
||||||
event.stop();
|
event.stop();
|
||||||
|
Loading…
Reference in New Issue
Block a user