aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornixo <nicolo@nixo.xyz>2020-10-29 18:39:17 +0100
committerFelix Queißner <felix@ib-queissner.de>2020-10-29 20:23:32 +0100
commitd3931529ccca3edcdb3fa9f0322a8c4352f2f476 (patch)
treebe8550d98b74163c9ecc12562a3b04442516716a /src
parentbf5b2ecd0fde117d550adeadee48d74034ed2cdb (diff)
downloadkristall-d3931529ccca3edcdb3fa9f0322a8c4352f2f476.tar.gz
gemini: respect sensitive input (status 11)
Diffstat (limited to 'src')
-rw-r--r--src/browsertab.cpp3
-rw-r--r--src/browsertab.hpp2
-rw-r--r--src/protocolhandler.hpp2
-rw-r--r--src/protocols/geminiclient.cpp9
4 files changed, 12 insertions, 4 deletions
diff --git a/src/browsertab.cpp b/src/browsertab.cpp
index d7df827..1c9bcd6 100644
--- a/src/browsertab.cpp
+++ b/src/browsertab.cpp
@@ -618,7 +618,7 @@ File Size: %2
this->updateUI();
}
-void BrowserTab::on_inputRequired(const QString &query)
+void BrowserTab::on_inputRequired(const QString &query, const bool is_sensitive)
{
this->network_timeout_timer.stop();
@@ -626,6 +626,7 @@ void BrowserTab::on_inputRequired(const QString &query)
dialog.setInputMode(QInputDialog::TextInput);
dialog.setLabelText(query);
+ if (is_sensitive) dialog.setTextEchoMode(QLineEdit::Password);
while(true)
{
diff --git a/src/browsertab.hpp b/src/browsertab.hpp
index 0a8f26e..59e4d0c 100644
--- a/src/browsertab.hpp
+++ b/src/browsertab.hpp
@@ -116,7 +116,7 @@ private: // network slots
void on_requestProgress(qint64 transferred);
void on_requestComplete(QByteArray const & data, QString const & mime);
void on_redirected(QUrl const & uri, bool is_permanent);
- void on_inputRequired(QString const & user_query);
+ void on_inputRequired(QString const & user_query, bool is_sensitive);
void on_networkError(ProtocolHandler::NetworkError error, QString const & reason);
void on_certificateRequired(QString const & info);
void on_hostCertificateLoaded(QSslCertificate const & cert);
diff --git a/src/protocolhandler.hpp b/src/protocolhandler.hpp
index c5bb653..bdc1cd3 100644
--- a/src/protocolhandler.hpp
+++ b/src/protocolhandler.hpp
@@ -54,7 +54,7 @@ signals:
void redirected(QUrl const & uri, bool is_permanent);
//! The server needs some information from the user to process this query.
- void inputRequired(QString const & user_query);
+ void inputRequired(QString const & user_query, bool is_sensitive);
//! There was an error while processing the request
void networkError(NetworkError error, QString const & reason);
diff --git a/src/protocols/geminiclient.cpp b/src/protocols/geminiclient.cpp
index 8be1cb6..5fd55af 100644
--- a/src/protocols/geminiclient.cpp
+++ b/src/protocols/geminiclient.cpp
@@ -208,7 +208,14 @@ void GeminiClient::socketReadyRead()
switch(primary_code)
{
case 1: // requesting input
- emit inputRequired(meta);
+ switch (secondary_code) {
+ case 1:
+ emit inputRequired(meta, true);
+ break;
+ case 0:
+ default:
+ emit inputRequired(meta, false);
+ }
return;
case 2: // success