summaryrefslogtreecommitdiffstats
path: root/ui/qt/credentials_dialog.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /ui/qt/credentials_dialog.cpp
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ui/qt/credentials_dialog.cpp')
-rw-r--r--ui/qt/credentials_dialog.cpp120
1 files changed, 120 insertions, 0 deletions
diff --git a/ui/qt/credentials_dialog.cpp b/ui/qt/credentials_dialog.cpp
new file mode 100644
index 0000000..810e0c8
--- /dev/null
+++ b/ui/qt/credentials_dialog.cpp
@@ -0,0 +1,120 @@
+/*
+ * credentials_dialog.c
+ *
+ * Copyright 2019 - Dario Lombardo <lomato@gmail.com>
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include <config.h>
+
+#include "file.h"
+
+#include "credentials_dialog.h"
+#include <ui_credentials_dialog.h>
+#include <ui/tap-credentials.h>
+#include "main_application.h"
+#include "ui/qt/widgets/wireshark_file_dialog.h"
+#include "ui/qt/models/credentials_model.h"
+#include <ui/qt/models/url_link_delegate.h>
+
+#include <QClipboard>
+#include <QMessageBox>
+#include <QPushButton>
+#include <QTextCursor>
+#include <QSortFilterProxyModel>
+
+class CredentialsUrlDelegate : public UrlLinkDelegate
+{
+public:
+
+ CredentialsUrlDelegate(QObject * parent) : UrlLinkDelegate(parent) {}
+
+ virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
+ {
+ bool ok = false;
+ int val = index.data(Qt::UserRole).toInt(&ok);
+ if (!ok || val <= 0)
+ QStyledItemDelegate::paint(painter, option, index);
+ else
+ UrlLinkDelegate::paint(painter, option, index);
+ }
+
+};
+
+CredentialsDialog::CredentialsDialog(QWidget &parent, CaptureFile &cf, PacketList *packet_list) :
+ WiresharkDialog(parent, cf),
+ ui(new Ui::CredentialsDialog)
+{
+ ui->setupUi(this);
+ loadGeometry();
+ packet_list_ = packet_list;
+
+ model_ = new CredentialsModel(this);
+ QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
+
+ proxyModel->setSourceModel(model_);
+ ui->auths->setModel(proxyModel);
+
+ setWindowSubtitle(tr("Credentials"));
+
+ ui->auths->setRootIsDecorated(false);
+ ui->auths->setItemDelegateForColumn(CredentialsModel::COL_NUM, new CredentialsUrlDelegate(this));
+ ui->auths->setItemDelegateForColumn(CredentialsModel::COL_USERNAME, new CredentialsUrlDelegate(this));
+
+ ui->auths->resizeColumnToContents(CredentialsModel::COL_NUM);
+ ui->auths->resizeColumnToContents(CredentialsModel::COL_PROTO);
+ ui->auths->resizeColumnToContents(CredentialsModel::COL_USERNAME);
+
+ ui->auths->setSortingEnabled(true);
+ ui->auths->sortByColumn(CredentialsModel::COL_NUM, Qt::AscendingOrder);
+
+ connect(ui->auths, &QTreeView::clicked, this, &CredentialsDialog::actionGoToPacket);
+
+ registerTapListener("credentials", this, "", 0, tapReset, tapPacket, Q_NULLPTR);
+ cf.retapPackets();
+}
+
+CredentialsDialog::~CredentialsDialog()
+{
+ delete ui;
+}
+
+void CredentialsDialog::tapReset(void *tapdata)
+{
+ CredentialsDialog * d = (CredentialsDialog*) tapdata;
+ d->model_->clear();
+}
+
+tap_packet_status CredentialsDialog::tapPacket(void *tapdata, _packet_info *, epan_dissect *, const void *data, tap_flags_t)
+{
+ CredentialsDialog * d = (CredentialsDialog*) tapdata;
+ d->model_->addRecord((const tap_credential_t*)data);
+ return TAP_PACKET_REDRAW;
+}
+
+void CredentialsDialog::actionGoToPacket(const QModelIndex& idx)
+{
+ if (!idx.isValid())
+ return;
+
+ QVariant packet_data = idx.data(Qt::UserRole);
+ QVariant hf_id = idx.data(CredentialsModel::ColumnHFID);
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
+ if (!hf_id.canConvert<int>())
+ hf_id = QVariant::fromValue(0);
+
+ if (packet_data.canConvert<int>())
+ packet_list_->goToPacket(packet_data.toInt(), hf_id.toInt());
+#else
+ if (!hf_id.canConvert(QVariant::Int))
+ hf_id = QVariant::fromValue(0);
+
+ if (packet_data.canConvert(QVariant::Int))
+ packet_list_->goToPacket(packet_data.toInt(), hf_id.toInt());
+#endif
+}