mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-23 01:36:15 +03:00
Fixed Web UI compatibility with Safari
This commit is contained in:
parent
12fff1b966
commit
165b33a94e
4 changed files with 124 additions and 12 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue