This commit is contained in:
DavidXanatos 2024-04-08 19:24:26 +02:00
parent de1714a60e
commit bc60e2d9eb
6 changed files with 56 additions and 12 deletions

View File

@ -18,6 +18,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- on systems in test signing mode sandboxie will by default try outdated offsets - on systems in test signing mode sandboxie will by default try outdated offsets
- changed Qt5 version to Qt5.15.13 with latest security patches [#3694](https://github.com/sandboxie-plus/Sandboxie/pull/3694) (thanks LumitoLuma) - changed Qt5 version to Qt5.15.13 with latest security patches [#3694](https://github.com/sandboxie-plus/Sandboxie/pull/3694) (thanks LumitoLuma)
- moved network restrictions from general restrictions tab to an own tab on the network page - moved network restrictions from general restrictions tab to an own tab on the network page
- improved certificate retrival UI messages.
### Fixed ### Fixed
- fixed Virtualization scheme Version 2 causing extremely slow file deleting speed [#3650](https://github.com/sandboxie-plus/Sandboxie/issues/3650) - fixed Virtualization scheme Version 2 causing extremely slow file deleting speed [#3650](https://github.com/sandboxie-plus/Sandboxie/issues/3650)

View File

@ -203,12 +203,12 @@ void CGetFileJob::Finish(QNetworkReply* pReply)
SB_PROGRESS COnlineUpdater::GetSupportCert(const QString& Serial, QObject* receiver, const char* member, const QVariantMap& Params) SB_PROGRESS COnlineUpdater::GetSupportCert(const QString& Serial, QObject* receiver, const char* member, const QVariantMap& Params)
{ {
QString UpdateKey = GetArguments(g_Certificate, L'\n', L':').value("UPDATEKEY"); QString UpdateKey = Params["key"].toString();
QUrlQuery Query; QUrlQuery Query;
if (!Serial.isEmpty()) { if (!Serial.isEmpty()) {
Query.addQueryItem("SN", Serial); Query.addQueryItem("SN", Serial);
if (Serial.length() > 5 && Serial.at(4).toUpper() == 'N') { // node locked business use if (Serial.length() > 5 && Serial.at(4).toUpper() == 'N') {
wchar_t uuid_str[40]; wchar_t uuid_str[40];
theAPI->GetDriverInfo(-2, uuid_str, sizeof(uuid_str)); theAPI->GetDriverInfo(-2, uuid_str, sizeof(uuid_str));
Query.addQueryItem("HwId", QString::fromWCharArray(uuid_str)); Query.addQueryItem("HwId", QString::fromWCharArray(uuid_str));

View File

@ -2880,13 +2880,7 @@ void CSandMan::OnLogSbieMessage(quint32 MsgCode, const QStringList& MsgData, qui
if (!Message.isEmpty()) if (!Message.isEmpty())
{ {
QMessageBox msgBox(this); ShowMessageBox(this, QMessageBox::Critical, Message);
msgBox.setTextFormat(Qt::RichText);
msgBox.setIcon(QMessageBox::Critical);
msgBox.setWindowTitle("Sandboxie-Plus");
msgBox.setText(Message);
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
/*msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); /*msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
if (msgBox.exec() == QDialogButtonBox::Yes) { if (msgBox.exec() == QDialogButtonBox::Yes) {
OpenUrl(QUrl("https://sandboxie-plus.com/go.php?to=sbie-get-cert")); OpenUrl(QUrl("https://sandboxie-plus.com/go.php?to=sbie-get-cert"));
@ -2923,6 +2917,17 @@ void CSandMan::OnLogSbieMessage(quint32 MsgCode, const QStringList& MsgData, qui
m_pPopUpWindow->AddLogMessage(MsgCode, MsgData, ProcessId); m_pPopUpWindow->AddLogMessage(MsgCode, MsgData, ProcessId);
} }
void CSandMan::ShowMessageBox(QWidget* Widget, QMessageBox::Icon Icon, const QString& Message)
{
QMessageBox msgBox(Widget);
msgBox.setTextFormat(Qt::RichText);
msgBox.setIcon(Icon);
msgBox.setWindowTitle("Sandboxie-Plus");
msgBox.setText(Message);
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
}
void CSandMan::SaveMessageLog(QIODevice* pFile) void CSandMan::SaveMessageLog(QIODevice* pFile)
{ {
foreach(const SSbieMsg& Msg, m_MessageLog) foreach(const SSbieMsg& Msg, m_MessageLog)

View File

@ -48,6 +48,7 @@ public:
CAddonManager* GetAddonManager() { return m_AddonManager; } CAddonManager* GetAddonManager() { return m_AddonManager; }
static QString GetVersion(); static QString GetVersion();
static void ShowMessageBox(QWidget* Widget, QMessageBox::Icon Icon, const QString& Message);
bool IsImDiskReady() const { return m_ImDiskReady; } bool IsImDiskReady() const { return m_ImDiskReady; }

View File

@ -1288,7 +1288,32 @@ void CSettingsWindow::UpdateCert()
void CSettingsWindow::OnGetCert() void CSettingsWindow::OnGetCert()
{ {
SB_PROGRESS Status = theGUI->m_pUpdater->GetSupportCert(ui.txtSerial->text(), this, SLOT(OnCertData(const QByteArray&, const QVariantMap&))); QByteArray Certificate = ui.txtCertificate->toPlainText().toUtf8();
QString Serial = ui.txtSerial->text();
QString Message;
if (Serial.length() > 5 && Serial.at(4).toUpper() == 'U') {
Message = tr("You are attempting to use a feature Upgrade-Key without having entered a preexisting supporter certificate. "
"Please note that these type of key (<b>as it is clearly stated in bold on the website</b>) require you to have a preexisting valid supporter certificate, it is useless without one."
"<br />If you want to use the advanced features you need to obtain booth a standard certificate and the feature upgrade key to unlock advanced functionality.");
}
if (Serial.length() > 5 && Serial.at(4).toUpper() == 'R') {
Message = tr("You are attempting to use a Renew-Key without having a preexisting supporter certificate. "
"Please note that these type of key (<b>as it is clearly stated in bold on the website</b>) require you to have a preexisting supporter certificate, it is useless without one.");
}
if (!Message.isEmpty()) {
Message += tr("<br /><br /><u>If you have not read the product description and got this key by mistake, please contact us by email (provided on our website) to resolve this issue.</u>");
CSandMan::ShowMessageBox(this, QMessageBox::Critical, Message);
return;
}
QVariantMap Params;
if(!Certificate.isEmpty())
Params["key"] = GetArguments(Certificate, L'\n', L':').value("UPDATEKEY");
SB_PROGRESS Status = theGUI->m_pUpdater->GetSupportCert(Serial, this, SLOT(OnCertData(const QByteArray&, const QVariantMap&)), Params);
if (Status.GetStatus() == OP_ASYNC) { if (Status.GetStatus() == OP_ASYNC) {
theGUI->AddAsyncOp(Status.GetValue()); theGUI->AddAsyncOp(Status.GetValue());
Status.GetValue()->ShowMessage(tr("Retrieving certificate...")); Status.GetValue()->ShowMessage(tr("Retrieving certificate..."));
@ -1297,6 +1322,14 @@ void CSettingsWindow::OnGetCert()
void CSettingsWindow::OnCertData(const QByteArray& Certificate, const QVariantMap& Params) void CSettingsWindow::OnCertData(const QByteArray& Certificate, const QVariantMap& Params)
{ {
if (Certificate.isEmpty())
{
QString Error = Params["error"].toString();
qDebug() << Error;
QString Message = tr("Error retriving certificate: %1").arg(Error.isEmpty() ? tr("Unknown Error (probably a network issue)") : Error);
CSandMan::ShowMessageBox(this, QMessageBox::Critical, Message);
return;
}
ui.txtCertificate->setPlainText(Certificate); ui.txtCertificate->setPlainText(Certificate);
ApplyCert(); ApplyCert();
} }

View File

@ -355,9 +355,14 @@ bool CCertificatePage::validatePage()
if (m_pEvaluate->isChecked()) if (m_pEvaluate->isChecked())
return true; return true;
QByteArray Certificate = m_pCertificate->toPlainText().toUtf8();
QString Serial = m_pSerial->text(); QString Serial = m_pSerial->text();
if (!Serial.isEmpty()) { if (!Serial.isEmpty()) {
SB_PROGRESS Status = theGUI->m_pUpdater->GetSupportCert(Serial, this, SLOT(OnCertData(const QByteArray&, const QVariantMap&))); QVariantMap Params;
if(!Certificate.isEmpty())
Params["key"] = GetArguments(Certificate, L'\n', L':').value("UPDATEKEY");
SB_PROGRESS Status = theGUI->m_pUpdater->GetSupportCert(Serial, this, SLOT(OnCertData(const QByteArray&, const QVariantMap&)), Params);
if (Status.GetStatus() == OP_ASYNC) { if (Status.GetStatus() == OP_ASYNC) {
theGUI->AddAsyncOp(Status.GetValue()); theGUI->AddAsyncOp(Status.GetValue());
Status.GetValue()->ShowMessage(tr("Retrieving certificate...")); Status.GetValue()->ShowMessage(tr("Retrieving certificate..."));
@ -365,7 +370,6 @@ bool CCertificatePage::validatePage()
return false; return false;
} }
QByteArray Certificate = m_pCertificate->toPlainText().toUtf8();
if (!Certificate.isEmpty() && Certificate != g_Certificate) if (!Certificate.isEmpty() && Certificate != g_Certificate)
return CSettingsWindow::ApplyCertificate(Certificate, this); return CSettingsWindow::ApplyCertificate(Certificate, this);