diff --git a/CMakeLists.txt b/CMakeLists.txt index f8eace9..a78d63e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,9 @@ set(PROJECT_SOURCES ethernetsettingstab.h ethernetsettingstab.cpp ethernetsettingstab.ui + security802_1xtab.h + security802_1xtab.cpp + security802_1xtab.ui ${TS_FILES} ) diff --git a/connectionsettingsengine.cpp b/connectionsettingsengine.cpp index 3e792c6..4f87e0e 100644 --- a/connectionsettingsengine.cpp +++ b/connectionsettingsengine.cpp @@ -7,6 +7,7 @@ QString ConnectionSettingsEngine::targetConnUuidStr = QString(); /* * The configuration map: * + * connName: QString * autoconnectEnabled: bool * autoconnectPriority: int * allUsersMayConnect: bool @@ -35,6 +36,7 @@ QVariantMap ConnectionSettingsEngine::readConnectionSettings(QString connUuidStr NetworkManager::WiredSetting::Ptr connWiredSetting = connSettings->setting(NetworkManager::Setting::Wired).dynamicCast(); NetworkManager::WirelessSetting::Ptr connWirelessSetting = connSettings->setting(NetworkManager::Setting::Wireless).dynamicCast(); QVariantMap result; + result.insert("connName", connSettings->id()); result.insert("autoconnectEnabled", connSettings->autoconnect()); result.insert("autoconnectPriority", connSettings->autoconnectPriority()); result.insert("allUsersMayConnect", connSettings->permissions().isEmpty() ? true : false); @@ -153,6 +155,9 @@ void ConnectionSettingsEngine::modifyConnectionSettings(QString connUuidStr, QVa NetworkManager::WiredSetting::Ptr connWiredSetting = connSettings->setting(NetworkManager::Setting::Wired).dynamicCast(); NetworkManager::WirelessSetting::Ptr connWirelessSetting = connSettings->setting(NetworkManager::Setting::Wireless).dynamicCast(); + if (settings["connName"].isValid()) { + connSettings->setId(settings["connName"].toString()); + } if (settings["autoconnectEnabled"].isValid()) { connSettings->setAutoconnect(settings["autoconnectEnabled"].toBool()); } diff --git a/ethernetsettings.cpp b/ethernetsettings.cpp index e3502ae..4f905f2 100644 --- a/ethernetsettings.cpp +++ b/ethernetsettings.cpp @@ -1,21 +1,24 @@ #include "ethernetsettings.h" #include "ui_genericsettings.h" -EthernetSettings::EthernetSettings(QString title, QString connUuidStr, QWidget *parent) : +EthernetSettings::EthernetSettings(QString connUuidStr, QWidget *parent) : QDialog(parent), ui(new Ui::GenericSettings) { targetConnUuidStr = connUuidStr; ui->setupUi(this); - this->setWindowTitle(title); - ui->connectionNameLineEdit->setText(title); + QVariantMap connSettings = ConnectionSettingsEngine::readConnectionSettings(connUuidStr); + this->setWindowTitle(connSettings["connName"].toString()); + ui->connectionNameLineEdit->setText(connSettings["connName"].toString()); generalSettingsTab = new GeneralSettingsTab(); ethernetSettingsTab = new EthernetSettingsTab(); + security802_1xSettingsTab = new Security802_1xTab(); ui->tabWidget->addTab(generalSettingsTab, "General"); ui->tabWidget->addTab(ethernetSettingsTab, "Ethernet"); - QVariantMap connSettings = ConnectionSettingsEngine::readConnectionSettings(connUuidStr); + ui->tabWidget->addTab(security802_1xSettingsTab, "802.1x Security"); generalSettingsTab->loadSettings(connSettings); ethernetSettingsTab->loadSettings(connSettings); + // security802_1xSettingsTab->loadSettings(connSettings); connect(ui->cancelButton, &QPushButton::clicked, this, &EthernetSettings::onCancelButtonClicked); connect(ui->saveButton, &QPushButton::clicked, this, &EthernetSettings::onSaveButtonClicked); } @@ -25,6 +28,7 @@ EthernetSettings::~EthernetSettings() delete ui; delete generalSettingsTab; delete ethernetSettingsTab; + delete security802_1xSettingsTab; } void EthernetSettings::onCancelButtonClicked() @@ -36,6 +40,8 @@ void EthernetSettings::onSaveButtonClicked() { QVariantMap settings = generalSettingsTab->readSettings(); settings.insert(ethernetSettingsTab->readSettings()); + // settings.insert(security802_1xSettingsTab->readSettings()); + settings.insert("connName", ui->connectionNameLineEdit->text()); ConnectionSettingsEngine::modifyConnectionSettings(targetConnUuidStr, settings); this->done(0); } diff --git a/ethernetsettings.h b/ethernetsettings.h index 20ca0bc..ad642e5 100644 --- a/ethernetsettings.h +++ b/ethernetsettings.h @@ -4,6 +4,7 @@ #include "connectionsettingsengine.h" #include "generalsettingstab.h" #include "ethernetsettingstab.h" +#include "security802_1xtab.h" #include @@ -16,7 +17,7 @@ class EthernetSettings : public QDialog Q_OBJECT public: - explicit EthernetSettings(QString title, QString connUuidStr, QWidget *parent = nullptr); + explicit EthernetSettings(QString connUuidStr, QWidget *parent = nullptr); ~EthernetSettings(); private slots: @@ -29,6 +30,7 @@ private: QString targetConnUuidStr; GeneralSettingsTab *generalSettingsTab; EthernetSettingsTab *ethernetSettingsTab; + Security802_1xTab *security802_1xSettingsTab; }; #endif // ETHERNETSETTINGS_H diff --git a/networkselector.cpp b/networkselector.cpp index 8a63316..7f196a3 100644 --- a/networkselector.cpp +++ b/networkselector.cpp @@ -271,9 +271,10 @@ void NetworkSelector::modifyConnection(QModelIndex index) NetworkManager::ConnectionSettings::ConnectionType connType = connList[i]->settings()->connectionType(); switch(connType) { case NetworkManager::ConnectionSettings::Wired: - dialogWindow = new EthernetSettings(index.data().toString(), index.data(Qt::UserRole+1).toString()); + dialogWindow = new EthernetSettings(index.data(Qt::UserRole+1).toString()); dialogWindow->exec(); delete dialogWindow; + regenConnTree(); break; case NetworkManager::ConnectionSettings::Wireless: case NetworkManager::ConnectionSettings::Adsl: diff --git a/security802_1xtab.cpp b/security802_1xtab.cpp new file mode 100644 index 0000000..3f2eb45 --- /dev/null +++ b/security802_1xtab.cpp @@ -0,0 +1,14 @@ +#include "security802_1xtab.h" +#include "ui_security802_1xtab.h" + +Security802_1xTab::Security802_1xTab(QWidget *parent) : + QDialog(parent), + ui(new Ui::Security802_1xTab) +{ + ui->setupUi(this); +} + +Security802_1xTab::~Security802_1xTab() +{ + delete ui; +} diff --git a/security802_1xtab.h b/security802_1xtab.h new file mode 100644 index 0000000..28b4103 --- /dev/null +++ b/security802_1xtab.h @@ -0,0 +1,22 @@ +#ifndef SECURITY802_1XTAB_H +#define SECURITY802_1XTAB_H + +#include + +namespace Ui { +class Security802_1xTab; +} + +class Security802_1xTab : public QDialog +{ + Q_OBJECT + +public: + explicit Security802_1xTab(QWidget *parent = nullptr); + ~Security802_1xTab(); + +private: + Ui::Security802_1xTab *ui; +}; + +#endif // SECURITY802_1XTAB_H diff --git a/security802_1xtab.ui b/security802_1xtab.ui new file mode 100644 index 0000000..f2616ee --- /dev/null +++ b/security802_1xtab.ui @@ -0,0 +1,720 @@ + + + Security802_1xTab + + + + 0 + 0 + 501 + 546 + + + + Dialog + + + + + + Use 802.1x security for this connection + + + + + + + Authentication mode: + + + + + + + 0 + + + + MD5 + + + + + + + + + Username + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Show password + + + + + + + + 0 + 0 + + + + Password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + TLS + + + + + + Show passwords + + + + + + + + + + CA certificate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Identity + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + + CA certificate password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Domain + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + User private key + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + Open file... + + + + + + + + + User certificate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + User certificate password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + Open file... + + + + + + + + + + + + + + + User key password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + Open file... + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + PWD + + + + + + + + + Password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + Show password + + + + + + + Username + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + FAST + + + + + + Show password + + + + + + + + + + Password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + Open file... + + + + + + + + + + + + + + + Allow automatic PAC provisioning + + + + + + + + + + Username + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + PAC file + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Anonymous identity + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Inner authentication + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Tunneled TLS + + + + + + Password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Domain + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + Open file... + + + + + + + + + + + + + + + Inner authentication + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + CA certificate password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Show password + + + + + + + Anonymous identity + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + CA certificate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + Username + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Protected EAP (PEAP) + + + + + + Anonymous Identity + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + PEAP version + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + + + + + CA certificate password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Show password + + + + + + + Inner authentication + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + Open file... + + + + + + + + + + + + Username + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + CA certificate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Domain + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + Password + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + +