Use HTTP digest mode for Web UI authentication (instead of Basic)

This commit is contained in:
Christophe Dumez
2010-01-15 14:20:20 +00:00
parent 4522174555
commit c7ca51f950
5 changed files with 126 additions and 27 deletions

View File

@@ -36,6 +36,8 @@
#include <QPair>
#include <QDir>
#define QBT_REALM "Web UI Access"
class Preferences {
public:
// General options
@@ -708,9 +710,10 @@ public:
if(current_pass_md5 == new_password) return;
// Encode to md5 and save
QCryptographicHash md5(QCryptographicHash::Md5);
md5.addData(getWebUiUsername().toLocal8Bit()+":"+QBT_REALM+":");
md5.addData(new_password.toLocal8Bit());
QSettings settings("qBittorrent", "qBittorrent");
settings.setValue("Preferences/WebUI/Password_md5", md5.result().toHex());
settings.setValue("Preferences/WebUI/Password_ha1", md5.result().toHex());
}
static QString getWebUiPassword() {
@@ -720,18 +723,20 @@ public:
QString clear_pass = settings.value("Preferences/WebUI/Password", "adminadmin").toString();
settings.remove("Preferences/WebUI/Password");
QCryptographicHash md5(QCryptographicHash::Md5);
md5.addData(getWebUiUsername().toLocal8Bit()+":"+QBT_REALM+":");
md5.addData(clear_pass.toLocal8Bit());
QString pass_md5(md5.result().toHex());
settings.setValue("Preferences/WebUI/Password_md5", pass_md5);
settings.setValue("Preferences/WebUI/Password_ha1", pass_md5);
return pass_md5;
}
QString pass_md5 = settings.value("Preferences/WebUI/Password_md5", "").toString();
if(pass_md5.isEmpty()) {
QString pass_ha1 = settings.value("Preferences/WebUI/Password_ha1", "").toString();
if(pass_ha1.isEmpty()) {
QCryptographicHash md5(QCryptographicHash::Md5);
md5.addData(getWebUiUsername().toLocal8Bit()+":"+QBT_REALM+":");
md5.addData("adminadmin");
pass_md5 = md5.result().toHex();
pass_ha1 = md5.result().toHex();
}
return pass_md5;
return pass_ha1;
}
};