Merge branch 'kylin-nm-dbus-renpj' into 'dbus-interface'
feature:1、add create connect、update connect and delete connect function with wired。 See merge request kylin-desktop/kylin-nm!99
This commit is contained in:
commit
c41e070e53
|
@ -15,6 +15,8 @@ Build-Depends: debhelper (>=9),
|
||||||
libkf5windowsystem-dev,
|
libkf5windowsystem-dev,
|
||||||
libx11-dev,
|
libx11-dev,
|
||||||
libqt5svg5-dev,
|
libqt5svg5-dev,
|
||||||
|
libkf5networkmanagerqt-dev (>= 5.36.0),
|
||||||
|
libnm-dev,
|
||||||
Standards-Version: 4.5.0
|
Standards-Version: 4.5.0
|
||||||
Rules-Requires-Root: no
|
Rules-Requires-Root: no
|
||||||
Homepage: https://github.com/ukui/kylin-nm
|
Homepage: https://github.com/ukui/kylin-nm
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
kylin-nm_3.0.1-1kylin54_source.buildinfo utils optional
|
kylin-nm-dbgsym_3.0.1-1kylin54_amd64.ddeb debug optional automatic=yes
|
||||||
|
kylin-nm_3.0.1-1kylin54_amd64.buildinfo utils optional
|
||||||
|
kylin-nm_3.0.1-1kylin54_amd64.deb utils optional
|
||||||
|
|
|
@ -64,6 +64,7 @@ include(src/singleapplication/qt-single-application.pri)
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
src/backthread.cpp \
|
src/backthread.cpp \
|
||||||
|
src/kylinconnectinfo.cpp \
|
||||||
src/kylinnetworkconnect.cpp \
|
src/kylinnetworkconnect.cpp \
|
||||||
src/kylinnetworkresourcemanager.cpp \
|
src/kylinnetworkresourcemanager.cpp \
|
||||||
src/wifi-auth-thread.cpp \
|
src/wifi-auth-thread.cpp \
|
||||||
|
@ -98,6 +99,7 @@ SOURCES += \
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
src/backthread.h \
|
src/backthread.h \
|
||||||
|
src/kylinconnectinfo.h \
|
||||||
src/kylinnetworkconnect.h \
|
src/kylinnetworkconnect.h \
|
||||||
src/kylinnetworkresourcemanager.h \
|
src/kylinnetworkresourcemanager.h \
|
||||||
src/wifi-auth-thread.h \
|
src/wifi-auth-thread.h \
|
||||||
|
|
218
src/confform.cpp
218
src/confform.cpp
|
@ -181,7 +181,7 @@ void ConfForm::setProp(QString connName, QString uuidName, QString v4method, QSt
|
||||||
lastIpv6 = v6addr;
|
lastIpv6 = v6addr;
|
||||||
lastTypeIndex = ui->cbType->currentIndex();
|
lastTypeIndex = ui->cbType->currentIndex();
|
||||||
netUuid = uuidName;
|
netUuid = uuidName;
|
||||||
//qDebug() << Q_FUNC_INFO << __LINE__ << connName << uuidName;
|
qDebug() << Q_FUNC_INFO << connName << uuidName;
|
||||||
|
|
||||||
isActWifi = false;
|
isActWifi = false;
|
||||||
if (isWiFi) {
|
if (isWiFi) {
|
||||||
|
@ -230,27 +230,43 @@ void ConfForm::setProp(QString connName, QString uuidName, QString v4method, QSt
|
||||||
ui->btnSave->setEnabled(false);
|
ui->btnSave->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfForm::connectInfoConstruct(KyConnectInfo &connectInfo)
|
||||||
|
{
|
||||||
|
QString connectName = ui->leName->text();
|
||||||
|
|
||||||
|
connectInfo.setConnectName(connectName);
|
||||||
|
connectInfo.setIfaceName(m_ifaceName);
|
||||||
|
if (MANUAL_IP == ui->cbType->currentIndex()) {
|
||||||
|
if (!ui->leAddr->text().isEmpty()) {
|
||||||
|
QString ipv4Address = ui->leAddr->text();
|
||||||
|
QString ipv4NetMask = ui->cbMask->currentText();
|
||||||
|
QString ipv4GateWay = ui->leGateway->text();
|
||||||
|
|
||||||
|
QStringList ipv4DnsList;
|
||||||
|
ipv4DnsList.clear();
|
||||||
|
ipv4DnsList<<ui->leDns->text();
|
||||||
|
if (ui->leDns2->text() != "") {
|
||||||
|
ipv4DnsList << ui->leDns2->text();
|
||||||
|
}
|
||||||
|
|
||||||
|
connectInfo.setIpConfigType(IPADDRESS_V4, CONFIG_IP_MANUAL);
|
||||||
|
connectInfo.ipv4AddressConstruct(ipv4Address, ipv4NetMask,
|
||||||
|
ipv4GateWay, ipv4DnsList);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ui->leAddr_ipv6->text().isEmpty()) {
|
||||||
|
qWarning()<<"ipv6 function need todo";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//点击了创建新的网络的按钮
|
//点击了创建新的网络的按钮
|
||||||
void ConfForm::on_btnCreate_clicked()
|
void ConfForm::on_btnCreate_clicked()
|
||||||
{
|
{
|
||||||
KylinDBus kylindbus;
|
KylinDBus kylindbus;
|
||||||
kylindbus.getWiredCardName();
|
kylindbus.getWiredCardName();
|
||||||
QString mIfname;
|
|
||||||
|
|
||||||
QString mask = "";
|
|
||||||
if (ui->cbMask->currentIndex() == 0) {
|
|
||||||
mask = "24";
|
|
||||||
} else if(ui->cbMask->currentIndex() == 1) {
|
|
||||||
mask = "23";
|
|
||||||
} else if(ui->cbMask->currentIndex() == 2) {
|
|
||||||
mask = "22";
|
|
||||||
} else if(ui->cbMask->currentIndex() == 3) {
|
|
||||||
mask = "16";
|
|
||||||
} else if(ui->cbMask->currentIndex() == 4) {
|
|
||||||
mask = "8";
|
|
||||||
} else {
|
|
||||||
mask = "24";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (kylindbus.multiWiredIfName.size() == 0) {
|
if (kylindbus.multiWiredIfName.size() == 0) {
|
||||||
QString tip(tr("Can not create new wired network for without wired card"));
|
QString tip(tr("Can not create new wired network for without wired card"));
|
||||||
|
@ -258,64 +274,28 @@ void ConfForm::on_btnCreate_clicked()
|
||||||
onConfformHide();
|
onConfformHide();
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
mIfname = kylindbus.multiWiredIfName.at(0);
|
m_ifaceName = kylindbus.multiWiredIfName.at(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ui->cbType->currentIndex() == 1) {
|
if (ui->cbType->currentIndex() == MANUAL_IP) {
|
||||||
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
||||||
if (!ui->leAddr->text().isEmpty()|| !ui->leAddr_ipv6->text().isEmpty()) {
|
if (!ui->leAddr->text().isEmpty()|| !ui->leAddr_ipv6->text().isEmpty()) {
|
||||||
if (check_ip_conflict(mIfname)) {
|
if (check_ip_conflict(m_ifaceName)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
QString name = ui->leName->text();
|
|
||||||
QString cmdStr;
|
|
||||||
if(ui->cbType->currentIndex() == 0){
|
|
||||||
cmdStr = "nmcli connection add con-name '" + name + "' ifname '" + mIfname + "' type ethernet";
|
|
||||||
}else{
|
|
||||||
if (ui->leAddr->text().isEmpty()) { //只配置了ipv6地址
|
|
||||||
cmdStr = "nmcli connection add con-name '" + name + "' ifname '" + mIfname + "' type ethernet ipv4.method auto ipv6.method manual ipv6.address "
|
|
||||||
+ ui->leAddr_ipv6->text();
|
|
||||||
} else if (ui->leAddr_ipv6->text().isEmpty()) { //只配置了ipv4地址
|
|
||||||
cmdStr = "nmcli connection add con-name '" + name + "' ifname '" + mIfname + "' type ethernet ipv6.method auto ipv4.method manual ipv4.address "
|
|
||||||
+ ui->leAddr->text() + "/" + mask.toUtf8().data();
|
|
||||||
} else {
|
|
||||||
cmdStr = "nmcli connection add con-name '" + name + "' ifname '" + mIfname + "' type ethernet ipv6.method manual ipv6.address " + ui->leAddr_ipv6->text()
|
|
||||||
+ " ipv4.method manual ipv4.address " + ui->leAddr->text() + "/" + mask.toUtf8().data();
|
|
||||||
}
|
|
||||||
if(!ui->leGateway->text().isEmpty()){
|
|
||||||
cmdStr += " ipv4.gateway " + ui->leGateway->text();
|
|
||||||
}
|
|
||||||
if(!ui->leDns->text().isEmpty()){
|
|
||||||
cmdStr += " ipv4.dns " + ui->leDns->text();
|
|
||||||
if(!ui->leDns2->text().isEmpty()){
|
|
||||||
cmdStr += "," + ui->leDns2->text();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cmdStr += " connection.autoconnect yes connection.autoconnect-priority 0";
|
|
||||||
Utils::m_system(cmdStr.toUtf8().data());
|
|
||||||
|
|
||||||
if (ui->cbType->currentIndex() == 1) {
|
KyConnectInfo newConnectInfo;
|
||||||
//选择手动,配置Ipv4、掩码、网关
|
connectInfoConstruct(newConnectInfo);
|
||||||
this->isCreateNewNet = true;
|
m_networkConnect.createConnect(WIRED_CONNECT, newConnectInfo);
|
||||||
newUuid = "--";
|
|
||||||
this->saveNetworkConfiguration();
|
if (DHCP_IP == ui->cbType->currentIndex()) {
|
||||||
} else {
|
|
||||||
//选择自动,则配置完成并发出桌面通知
|
//选择自动,则配置完成并发出桌面通知
|
||||||
QString txt(tr("New network already created"));
|
QString txt(tr("New network already created"));
|
||||||
kylindbus.showDesktopNotify(txt);
|
kylindbus.showDesktopNotify(txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (!ui->leAddr_ipv6->text().isEmpty()) {
|
|
||||||
// QString cmdStr = "nmcli connection modify '" + name + "' ipv6.method manual ipv6.addresses " + ui->leAddr_ipv6->text();
|
|
||||||
// Utils::m_system(cmdStr.toUtf8().data());
|
|
||||||
// } else {
|
|
||||||
// QString cmdStr = "nmcli connection modify '" + name + "' ipv6.method auto";
|
|
||||||
// Utils::m_system(cmdStr.toUtf8().data());
|
|
||||||
// }
|
|
||||||
|
|
||||||
onConfformHide();
|
onConfformHide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -326,10 +306,10 @@ void ConfForm::on_btnSave_clicked()
|
||||||
|
|
||||||
if (isActWifi) {
|
if (isActWifi) {
|
||||||
kylindbus.getWirelessCardName();
|
kylindbus.getWirelessCardName();
|
||||||
QString mWifiIfname = kylindbus.dbusWiFiCardName;
|
m_ifaceName = kylindbus.dbusWiFiCardName;
|
||||||
this->isCreateNewNet = false;
|
this->isCreateNewNet = false;
|
||||||
|
|
||||||
if (mWifiIfname.isEmpty()) {
|
if (m_ifaceName.isEmpty()) {
|
||||||
QString notifyTxt(tr("Wireless card not exist"));
|
QString notifyTxt(tr("Wireless card not exist"));
|
||||||
kylindbus.showDesktopNotify(notifyTxt);
|
kylindbus.showDesktopNotify(notifyTxt);
|
||||||
return;
|
return;
|
||||||
|
@ -337,7 +317,7 @@ void ConfForm::on_btnSave_clicked()
|
||||||
if (ui->cbType->currentIndex() == 1) {
|
if (ui->cbType->currentIndex() == 1) {
|
||||||
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
||||||
if ((!ui->leAddr->text().isEmpty() && (ui->leAddr->text() != lastIpv4)) || (!ui->leAddr_ipv6->text().isEmpty() && (ui->leAddr_ipv6->text() != lastIpv6))) {
|
if ((!ui->leAddr->text().isEmpty() && (ui->leAddr->text() != lastIpv4)) || (!ui->leAddr_ipv6->text().isEmpty() && (ui->leAddr_ipv6->text() != lastIpv6))) {
|
||||||
if (check_ip_conflict(mWifiIfname)) {
|
if (check_ip_conflict(m_ifaceName)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -346,8 +326,6 @@ void ConfForm::on_btnSave_clicked()
|
||||||
this->saveNetworkConfiguration();
|
this->saveNetworkConfiguration();
|
||||||
} else {
|
} else {
|
||||||
kylindbus.getWiredCardName();
|
kylindbus.getWiredCardName();
|
||||||
QString mIfname;
|
|
||||||
|
|
||||||
if (kylindbus.multiWiredIfName.size() == 0) {
|
if (kylindbus.multiWiredIfName.size() == 0) {
|
||||||
QString tip(tr("Can not save wired network for without wired card"));
|
QString tip(tr("Can not save wired network for without wired card"));
|
||||||
kylindbus.showDesktopNotify(tip);
|
kylindbus.showDesktopNotify(tip);
|
||||||
|
@ -355,64 +333,22 @@ void ConfForm::on_btnSave_clicked()
|
||||||
onConfformHide();
|
onConfformHide();
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
mIfname = kylindbus.multiWiredIfName.at(0);
|
m_ifaceName = kylindbus.multiWiredIfName.at(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//如果网络的名称已经修改,则删掉当前网络,新建一个网络
|
|
||||||
//修改为 直接modify 不删除不新建
|
|
||||||
QString name = ui->leName->text();
|
|
||||||
if (name != lastConnName) {
|
|
||||||
// QString cmd = "nmcli connection delete '" + netUuid + "'";
|
|
||||||
QString cmd = "nmcli connection modify '" + lastConnName + "' con-name '"+name+"'";
|
|
||||||
int status = system(cmd.toUtf8().data());
|
|
||||||
qDebug()<<"executed 'nmcli connection modify'. cmd="<<cmd<<". res="<<status;
|
|
||||||
|
|
||||||
// this->isCreateNewNet = true;
|
|
||||||
// newUuid = "--";
|
|
||||||
|
|
||||||
// QProcess * processAdd = new QProcess;
|
|
||||||
// QString cmdAdd = "nmcli connection add con-name '" + name + "' ifname '" + mIfname + "' type ethernet";
|
|
||||||
// QStringList options;
|
|
||||||
// options << "-c" << cmdAdd;
|
|
||||||
// processAdd->start("/bin/bash",options);
|
|
||||||
// connect(processAdd, static_cast<void(QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished), this, [ = ]() {
|
|
||||||
// processAdd->deleteLater();
|
|
||||||
// });
|
|
||||||
// connect(processAdd, &QProcess::channelReadyRead, this, [ = ]() {
|
|
||||||
// QString str = processAdd->readAll();
|
|
||||||
// QString regExpPattern("[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}");
|
|
||||||
// QRegExp regExpTest(regExpPattern);
|
|
||||||
// int pos = str.indexOf(regExpTest);
|
|
||||||
// newUuid = str.mid(pos,36); //36是uuid的长度
|
|
||||||
|
|
||||||
if (ui->cbType->currentIndex() == 1) {
|
|
||||||
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
|
||||||
if ((!ui->leAddr->text().isEmpty() && (ui->leAddr->text() != lastIpv4)) || (!ui->leAddr_ipv6->text().isEmpty() && (ui->leAddr_ipv6->text() != lastIpv6))) {
|
|
||||||
if (check_ip_conflict(mIfname)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this->saveNetworkConfiguration();
|
|
||||||
return;
|
|
||||||
// });
|
|
||||||
// processAdd->waitForFinished();
|
|
||||||
} else {
|
|
||||||
this->isCreateNewNet = false;
|
this->isCreateNewNet = false;
|
||||||
newUuid = "--";
|
|
||||||
|
|
||||||
if (ui->cbType->currentIndex() == 1) {
|
if (ui->cbType->currentIndex() == 1) {
|
||||||
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
||||||
if ((!ui->leAddr->text().isEmpty() && (ui->leAddr->text() != lastIpv4)) || (!ui->leAddr_ipv6->text().isEmpty() && (ui->leAddr_ipv6->text() != lastIpv6))) {
|
if ((!ui->leAddr->text().isEmpty() && (ui->leAddr->text() != lastIpv4)) || (!ui->leAddr_ipv6->text().isEmpty() && (ui->leAddr_ipv6->text() != lastIpv6))) {
|
||||||
if (check_ip_conflict(mIfname)) {
|
if (check_ip_conflict(m_ifaceName)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this->saveNetworkConfiguration();
|
this->saveNetworkConfiguration();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
QString txt(tr("New network settings already finished"));
|
QString txt(tr("New network settings already finished"));
|
||||||
kylindbus.showDesktopNotify(txt);
|
kylindbus.showDesktopNotify(txt);
|
||||||
|
@ -420,67 +356,19 @@ void ConfForm::on_btnSave_clicked()
|
||||||
|
|
||||||
void ConfForm::saveNetworkConfiguration()
|
void ConfForm::saveNetworkConfiguration()
|
||||||
{
|
{
|
||||||
//获取对应掩码的参数
|
KylinDBus kylindbus;
|
||||||
QString mask = "";
|
|
||||||
if (ui->cbMask->currentIndex() == 0) {
|
KyConnectInfo newConnectInfo;
|
||||||
mask = "24";
|
connectInfoConstruct(newConnectInfo);
|
||||||
} else if(ui->cbMask->currentIndex() == 1) {
|
m_networkConnect.updateConnect(netUuid, newConnectInfo);
|
||||||
mask = "23";
|
|
||||||
} else if(ui->cbMask->currentIndex() == 2) {
|
|
||||||
mask = "22";
|
|
||||||
} else if(ui->cbMask->currentIndex() == 3) {
|
|
||||||
mask = "16";
|
|
||||||
} else if(ui->cbMask->currentIndex() == 4) {
|
|
||||||
mask = "8";
|
|
||||||
} else {
|
|
||||||
mask = "24";
|
|
||||||
}
|
|
||||||
|
|
||||||
QString name = ui->leName->text();
|
|
||||||
QString dnss = ui->leDns->text();
|
|
||||||
if (ui->leDns2->text() != "") {
|
|
||||||
dnss.append(",");
|
|
||||||
dnss.append(ui->leDns2->text());
|
|
||||||
}
|
|
||||||
//是选择的自动还是手动配置网络
|
//是选择的自动还是手动配置网络
|
||||||
if (ui->cbType->currentIndex() == 0) {
|
if (ui->cbType->currentIndex() == DHCP_IP) {
|
||||||
qDebug() << Q_FUNC_INFO << __LINE__ << name << newUuid << ui->leAddr->text() << mask << ui->leGateway->text();
|
|
||||||
//kylin_network_set_automethod(name.toUtf8().data());
|
|
||||||
kylin_network_set_automethod(netUuid.toUtf8().data());
|
|
||||||
kylin_network_set_ipv6_automethod(netUuid.toUtf8().data());
|
|
||||||
if (this->isActConf && lastTypeIndex == 1 && ui->cbType->currentIndex() == 0) {
|
if (this->isActConf && lastTypeIndex == 1 && ui->cbType->currentIndex() == 0) {
|
||||||
//对于已经连接的网络,若由手动改为自动,则进行重连以保证配置生效
|
//对于已经连接的网络,若由手动改为自动,则进行重连以保证配置生效
|
||||||
KylinDBus kylindbus;
|
|
||||||
kylindbus.reConnectWiredNet(netUuid.toUtf8().data());
|
kylindbus.reConnectWiredNet(netUuid.toUtf8().data());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
if (newUuid != "--" && newUuid != "" && !newUuid.isEmpty()) {
|
|
||||||
qDebug() << Q_FUNC_INFO << __LINE__ << name << newUuid << ui->leAddr->text() << mask << ui->leGateway->text() << dnss;
|
|
||||||
if (!ui->leAddr->text().isEmpty()) {
|
|
||||||
kylin_network_set_manualall(newUuid.toUtf8().data(), ui->leAddr->text().toUtf8().data(), mask.toUtf8().data(), ui->leGateway->text().toUtf8().data(), dnss.toUtf8().data());
|
|
||||||
} else {
|
|
||||||
kylin_network_set_automethod(newUuid.toUtf8().data());
|
|
||||||
}
|
|
||||||
if (!ui->leAddr_ipv6->text().isEmpty()) {
|
|
||||||
kylin_network_set_ipv6_manualmethod(newUuid.toUtf8().data(), ui->leAddr_ipv6->text().toUtf8().data());
|
|
||||||
} else {
|
|
||||||
kylin_network_set_ipv6_automethod(newUuid.toUtf8().data());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
qDebug() << Q_FUNC_INFO << __LINE__ << name << netUuid << ui->leAddr->text() << mask << ui->leGateway->text() << dnss;
|
|
||||||
if (!ui->leAddr->text().isEmpty()) {
|
|
||||||
kylin_network_set_manualall(netUuid.toUtf8().data(), ui->leAddr->text().toUtf8().data(), mask.toUtf8().data(), ui->leGateway->text().toUtf8().data(), dnss.toUtf8().data());
|
|
||||||
} else {
|
|
||||||
kylin_network_set_automethod(netUuid.toUtf8().data());
|
|
||||||
}
|
|
||||||
if (!ui->leAddr_ipv6->text().isEmpty()) {
|
|
||||||
kylin_network_set_ipv6_manualmethod(netUuid.toUtf8().data(), ui->leAddr_ipv6->text().toUtf8().data());
|
|
||||||
} else {
|
|
||||||
kylin_network_set_ipv6_automethod(netUuid.toUtf8().data());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onConfformHide();
|
onConfformHide();
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,18 @@
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QListView>
|
#include <QListView>
|
||||||
#include "kylin-dbus-interface.h"
|
#include "kylin-dbus-interface.h"
|
||||||
|
#include "kylinnetworkconnect.h"
|
||||||
|
#include "kylinconnectinfo.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class ConfForm;
|
class ConfForm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum{
|
||||||
|
DHCP_IP = 0,
|
||||||
|
MANUAL_IP = 1,
|
||||||
|
};
|
||||||
|
|
||||||
class ConfForm : public QDialog
|
class ConfForm : public QDialog
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -90,6 +97,7 @@ private:
|
||||||
bool check_ip_conflict(QString ifname);
|
bool check_ip_conflict(QString ifname);
|
||||||
void onConfformHide();
|
void onConfformHide();
|
||||||
bool isEditingAlready(); //连接按钮是否可被按
|
bool isEditingAlready(); //连接按钮是否可被按
|
||||||
|
void connectInfoConstruct(KyConnectInfo &connectInfo);
|
||||||
|
|
||||||
bool isPress;
|
bool isPress;
|
||||||
QPoint winPos;
|
QPoint winPos;
|
||||||
|
@ -105,6 +113,9 @@ private:
|
||||||
|
|
||||||
QString labelQss, cbxQss, leQss, lineQss, btnOnQss, btnOffQss;
|
QString labelQss, cbxQss, leQss, lineQss, btnOnQss, btnOffQss;
|
||||||
|
|
||||||
|
KyNetworkConnect m_networkConnect;
|
||||||
|
QString m_ifaceName;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void requestRefreshLanList(int updateType);
|
void requestRefreshLanList(int updateType);
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include "kylinconnectinfo.h"
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
KyConnectInfo::KyConnectInfo()
|
||||||
|
{
|
||||||
|
m_connectName = "";
|
||||||
|
m_ifaceName = "";
|
||||||
|
|
||||||
|
m_ipv4ConfigIpType = CONFIG_IP_DHCP;
|
||||||
|
m_ipv4Address.clear();
|
||||||
|
m_ipv4Dns.clear();
|
||||||
|
|
||||||
|
m_ipv6ConfigIpType = CONFIG_IP_DHCP;
|
||||||
|
m_ipv6Address.clear();
|
||||||
|
m_ipv6Dns.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
KyConnectInfo::~KyConnectInfo()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void KyConnectInfo::setIfaceName(QString &ifaceName)
|
||||||
|
{
|
||||||
|
m_ifaceName = ifaceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KyConnectInfo::setConnectName(QString &connectName)
|
||||||
|
{
|
||||||
|
m_connectName = connectName;
|
||||||
|
}
|
||||||
|
|
||||||
|
int KyConnectInfo::setIpConfigType(KyIpAddressType ipType, KyIpConfigType ipConfigType)
|
||||||
|
{
|
||||||
|
if (ipType != IPADDRESS_V4 && ipType != IPADDRESS_V6) {
|
||||||
|
qWarning()<<"set config ip type failed, the ip address type undefined"<<ipType;
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CONFIG_IP_DHCP != ipConfigType && CONFIG_IP_MANUAL != ipConfigType) {
|
||||||
|
qWarning()<<"set config ip type failed, the config ip type undefined"<<ipConfigType;
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IPADDRESS_V4 == ipType) {
|
||||||
|
m_ipv4ConfigIpType = ipConfigType;
|
||||||
|
} else {
|
||||||
|
m_ipv6ConfigIpType = ipConfigType;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
void KyConnectInfo::ipv4AddressConstruct(QString &ipv4Address, QString &ipv4NetMask, QString &ipv4GateWay, QStringList &ipv4Dns)
|
||||||
|
{
|
||||||
|
qDebug()<<"ipv4 address"<<ipv4Address << ipv4NetMask << ipv4GateWay;
|
||||||
|
NetworkManager::IpAddress nmIpv4Address;
|
||||||
|
nmIpv4Address.setIp(QHostAddress(ipv4Address));
|
||||||
|
nmIpv4Address.setGateway(QHostAddress(ipv4GateWay));
|
||||||
|
nmIpv4Address.setNetmask(QHostAddress(ipv4NetMask));
|
||||||
|
m_ipv4Address << nmIpv4Address;
|
||||||
|
|
||||||
|
for (int index = 0; index < ipv4Dns.size(); ++index) {
|
||||||
|
qDebug()<<"dns"<<ipv4Dns[index];
|
||||||
|
m_ipv4Dns << QHostAddress(ipv4Dns[index]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
void KyConnectInfo::ipv6AddressConstruct(QString &ipv6Address, QString &ipv6NetMask, QString &ipv6GateWay, QStringList &ipv6Dns)
|
||||||
|
{
|
||||||
|
NetworkManager::IpAddress nmIpv6Address;
|
||||||
|
nmIpv6Address.setIp(QHostAddress(ipv6Address));
|
||||||
|
nmIpv6Address.setGateway(QHostAddress(ipv6GateWay));
|
||||||
|
nmIpv6Address.setPrefixLength(ipv6NetMask.toInt());
|
||||||
|
m_ipv6Address << nmIpv6Address;
|
||||||
|
|
||||||
|
for (int index = 0; index < ipv6Dns.size(); index++) {
|
||||||
|
m_ipv6Dns << QHostAddress(ipv6Dns[index]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ;
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef KYLINCONNECTINFO_H
|
||||||
|
#define KYLINCONNECTINFO_H
|
||||||
|
|
||||||
|
#include <QStringList>
|
||||||
|
#include <QString>
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include <NetworkManagerQt/AdslDevice>
|
||||||
|
#include <NetworkManagerQt/WiredDevice>
|
||||||
|
#include <NetworkManagerQt/Ipv4Setting>
|
||||||
|
#include <NetworkManagerQt/Ipv6Setting>
|
||||||
|
#include <NetworkManagerQt/WiredSetting>
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
CONFIG_IP_MANUAL,
|
||||||
|
CONFIG_IP_DHCP,
|
||||||
|
}KyIpConfigType;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
IPADDRESS_V4,
|
||||||
|
IPADDRESS_V6,
|
||||||
|
}KyIpAddressType;
|
||||||
|
|
||||||
|
class KyConnectInfo : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
KyConnectInfo();
|
||||||
|
~KyConnectInfo();
|
||||||
|
|
||||||
|
public:
|
||||||
|
void setIfaceName(QString &ifaceName);
|
||||||
|
void setConnectName(QString &connectName);
|
||||||
|
int setIpConfigType(KyIpAddressType ipType, KyIpConfigType configType);
|
||||||
|
void ipv4AddressConstruct(QString &ipv4Address, QString &ipv4NetMask, QString &ipv4GateWay, QStringList &ipv4Dns);
|
||||||
|
void ipv6AddressConstruct(QString &ipv6Address, QString &ipv6NetMask, QString &ipv6GateWay, QStringList &ipv6Dns);
|
||||||
|
|
||||||
|
public:
|
||||||
|
QString m_connectName;
|
||||||
|
QString m_ifaceName;
|
||||||
|
|
||||||
|
KyIpConfigType m_ipv4ConfigIpType;
|
||||||
|
QList<NetworkManager::IpAddress> m_ipv4Address;
|
||||||
|
QList<QHostAddress> m_ipv4Dns;
|
||||||
|
|
||||||
|
KyIpConfigType m_ipv6ConfigIpType;
|
||||||
|
QList<NetworkManager::IpAddress> m_ipv6Address;
|
||||||
|
QList<QHostAddress> m_ipv6Dns;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // KYLINCONNECTINFO_H
|
|
@ -1,3 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#include "kylinnetworkconnect.h"
|
#include "kylinnetworkconnect.h"
|
||||||
#include "sys/syslog.h"
|
#include "sys/syslog.h"
|
||||||
|
|
||||||
|
@ -33,8 +51,15 @@ NetworkManager::ConnectionSettings::Ptr assembleWpaXPskSettings(const NetworkMan
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#include <NetworkManagerQt/AdslDevice>
|
||||||
|
#include <NetworkManagerQt/WiredDevice>
|
||||||
|
#include <NetworkManagerQt/Ipv4Setting>
|
||||||
|
#include <NetworkManagerQt/Ipv6Setting>
|
||||||
|
#include <NetworkManagerQt/WiredSetting>
|
||||||
|
|
||||||
KyNetworkConnect::KyNetworkConnect()
|
KyNetworkConnect::KyNetworkConnect()
|
||||||
{
|
{
|
||||||
|
qDebug()<<"construct network connect";
|
||||||
m_networkResourceInstance = KyNetworkResourceManager::getInstance();
|
m_networkResourceInstance = KyNetworkResourceManager::getInstance();
|
||||||
|
|
||||||
connect(this, &KyNetworkConnect::checkActiveonnection, this, &KyNetworkConnect::onCheckActiveonnection);
|
connect(this, &KyNetworkConnect::checkActiveonnection, this, &KyNetworkConnect::onCheckActiveonnection);
|
||||||
|
@ -45,6 +70,147 @@ KyNetworkConnect::~KyNetworkConnect()
|
||||||
m_networkResourceInstance = nullptr;
|
m_networkResourceInstance = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KyNetworkConnect::ipv4SettingInit(
|
||||||
|
NetworkManager::Ipv4Setting::Ptr &ipv4Setting,
|
||||||
|
const KyConnectInfo &connectInfo)
|
||||||
|
{
|
||||||
|
ipv4Setting->setInitialized(true);
|
||||||
|
|
||||||
|
if (CONFIG_IP_DHCP == connectInfo.m_ipv4ConfigIpType) {
|
||||||
|
ipv4Setting->setMethod(NetworkManager::Ipv4Setting::Automatic);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
ipv4Setting->setMethod(NetworkManager::Ipv4Setting::Manual);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!connectInfo.m_ipv4Dns.empty()) {
|
||||||
|
ipv4Setting->setDns(connectInfo.m_ipv4Dns);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!connectInfo.m_ipv4Address.empty()) {
|
||||||
|
ipv4Setting->setAddresses(connectInfo.m_ipv4Address);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
void KyNetworkConnect::ipv6SettingInit(
|
||||||
|
NetworkManager::Ipv6Setting::Ptr &ipv6Setting,
|
||||||
|
const KyConnectInfo &connectInfo)
|
||||||
|
{
|
||||||
|
ipv6Setting->setInitialized(true);
|
||||||
|
|
||||||
|
if (CONFIG_IP_DHCP == connectInfo.m_ipv6ConfigIpType) {
|
||||||
|
ipv6Setting->setMethod(NetworkManager::Ipv6Setting::Automatic);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ipv6Setting->setMethod(NetworkManager::Ipv6Setting::Manual);
|
||||||
|
if (!connectInfo.m_ipv6Dns.empty()) {
|
||||||
|
ipv6Setting->setDns(connectInfo.m_ipv6Dns);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!connectInfo.m_ipv6Address.empty()) {
|
||||||
|
ipv6Setting->setAddresses(connectInfo.m_ipv6Address);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KyNetworkConnect::connectSettingInit(
|
||||||
|
NetworkManager::ConnectionSettings::Ptr connectionSettings,
|
||||||
|
const KyConnectInfo &connectInfo)
|
||||||
|
{
|
||||||
|
connectionSettings->setId(connectInfo.m_connectName);
|
||||||
|
connectionSettings->setUuid(NetworkManager::ConnectionSettings::createNewUuid());
|
||||||
|
connectionSettings->setAutoconnect(true);
|
||||||
|
connectionSettings->setAutoconnectPriority(0);
|
||||||
|
connectionSettings->setInterfaceName(connectInfo.m_ifaceName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KyNetworkConnect::createWiredConnect(const KyConnectInfo &connectInfo)
|
||||||
|
{
|
||||||
|
NetworkManager::ConnectionSettings::Ptr connectionSettings = NetworkManager::ConnectionSettings::Ptr(new NetworkManager::ConnectionSettings(NetworkManager::ConnectionSettings::Wired));
|
||||||
|
connectSettingInit(connectionSettings, connectInfo);
|
||||||
|
|
||||||
|
NetworkManager::Ipv4Setting::Ptr ipv4Setting = connectionSettings->setting(NetworkManager::Setting::Ipv4).dynamicCast<NetworkManager::Ipv4Setting>();
|
||||||
|
ipv4SettingInit(ipv4Setting, connectInfo);
|
||||||
|
|
||||||
|
NetworkManager::Ipv6Setting::Ptr ipv6Setting = connectionSettings->setting(NetworkManager::Setting::Ipv6).dynamicCast<NetworkManager::Ipv6Setting>();
|
||||||
|
ipv6SettingInit(ipv6Setting, connectInfo);
|
||||||
|
|
||||||
|
NetworkManager::WiredSetting::Ptr wiredSetting = connectionSettings->setting(NetworkManager::Setting::Wired).dynamicCast<NetworkManager::WiredSetting>();
|
||||||
|
wiredSetting->setInitialized(true);
|
||||||
|
|
||||||
|
qDebug()<<"add wired connect"<<connectInfo.m_connectName;
|
||||||
|
|
||||||
|
QDBusPendingCallWatcher * watcher;
|
||||||
|
watcher = new QDBusPendingCallWatcher{NetworkManager::addConnection(connectionSettings->toMap()), this};
|
||||||
|
connect(watcher, &QDBusPendingCallWatcher::finished, [](QDBusPendingCallWatcher * watcher) {
|
||||||
|
if (watcher->isError() || !watcher->isValid()) {
|
||||||
|
//TODO: in what form should we output the warning messages
|
||||||
|
qWarning() << "create connection failed: " << watcher->error().message();
|
||||||
|
} else {
|
||||||
|
qWarning()<<"success"<<watcher->reply().errorName() <<"error msg"<<watcher->reply().errorMessage();
|
||||||
|
qWarning()<<"error type"<<watcher->error().type();
|
||||||
|
}
|
||||||
|
watcher->deleteLater();
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KyNetworkConnect::createConnect(KyConnectType connectType, const KyConnectInfo &connectInfo)
|
||||||
|
{
|
||||||
|
switch (connectType) {
|
||||||
|
case WIRED_CONNECT:
|
||||||
|
qDebug()<<"create wired connect";
|
||||||
|
createWiredConnect(connectInfo);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
qWarning()<<"the connect type undefined"<<connectType;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KyNetworkConnect::updateConnect(const QString &connectUuid, const KyConnectInfo &connectInfo)
|
||||||
|
{
|
||||||
|
qDebug()<<"update connect"<<connectUuid;
|
||||||
|
NetworkManager::Connection::Ptr connectPtr =
|
||||||
|
NetworkManager::findConnectionByUuid(connectUuid);
|
||||||
|
|
||||||
|
NetworkManager::ConnectionSettings::Ptr connectionSettings = connectPtr->settings();
|
||||||
|
connectSettingInit(connectionSettings, connectInfo);
|
||||||
|
|
||||||
|
NetworkManager::Ipv4Setting::Ptr ipv4Setting = connectionSettings->setting(NetworkManager::Setting::Ipv4).dynamicCast<NetworkManager::Ipv4Setting>();
|
||||||
|
ipv4SettingInit(ipv4Setting, connectInfo);
|
||||||
|
|
||||||
|
NetworkManager::Ipv6Setting::Ptr ipv6Setting = connectionSettings->setting(NetworkManager::Setting::Ipv6).dynamicCast<NetworkManager::Ipv6Setting>();
|
||||||
|
ipv6SettingInit(ipv6Setting, connectInfo);
|
||||||
|
|
||||||
|
NetworkManager::WiredSetting::Ptr wiredSetting = connectionSettings->setting(NetworkManager::Setting::Wired).dynamicCast<NetworkManager::WiredSetting>();
|
||||||
|
wiredSetting->setInitialized(true);
|
||||||
|
|
||||||
|
connectPtr->update(connectionSettings->toMap());
|
||||||
|
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KyNetworkConnect::deleteConnect(const QString &connectUuid)
|
||||||
|
{
|
||||||
|
|
||||||
|
qWarning()<<"TODO:delete connect ";
|
||||||
|
|
||||||
|
NetworkManager::Connection::Ptr connectPtr =
|
||||||
|
NetworkManager::findConnectionByUuid(connectUuid);
|
||||||
|
|
||||||
|
connectPtr->remove();
|
||||||
|
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
int KyNetworkConnect::activateConnection(const QString connectUuid)
|
int KyNetworkConnect::activateConnection(const QString connectUuid)
|
||||||
{
|
{
|
||||||
QString conn_uni;
|
QString conn_uni;
|
||||||
|
@ -105,9 +271,12 @@ int KyNetworkConnect::activateConnection(const QString connectUuid)
|
||||||
connect(watcher, &QDBusPendingCallWatcher::finished, [conn_name, dev_name] (QDBusPendingCallWatcher * watcher) {
|
connect(watcher, &QDBusPendingCallWatcher::finished, [conn_name, dev_name] (QDBusPendingCallWatcher * watcher) {
|
||||||
if (watcher->isError() || !watcher->isValid()) {
|
if (watcher->isError() || !watcher->isValid()) {
|
||||||
//TODO: in what form should we output the warning messages
|
//TODO: in what form should we output the warning messages
|
||||||
qWarning() << QStringLiteral("activation of connection '%1' on interface '%2' failed: %3").arg(conn_name)
|
qWarning() << "activate connection failed: " << watcher->error().message();
|
||||||
.arg(dev_name).arg(watcher->error().message());
|
} else {
|
||||||
|
qWarning()<<"success"<<watcher->reply().errorName() <<"error msg"<<watcher->reply().errorMessage();
|
||||||
|
qWarning()<<"error type"<<watcher->error().type();
|
||||||
}
|
}
|
||||||
|
|
||||||
watcher->deleteLater();
|
watcher->deleteLater();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef KYLINNETWORKCONNECT_H
|
#ifndef KYLINNETWORKCONNECT_H
|
||||||
#define KYLINNETWORKCONNECT_H
|
#define KYLINNETWORKCONNECT_H
|
||||||
|
|
||||||
#include "kylinnetworkresourcemanager.h"
|
#include "kylinnetworkresourcemanager.h"
|
||||||
|
#include "kylinconnectinfo.h"
|
||||||
|
|
||||||
|
typedef enum{
|
||||||
|
WIRED_CONNECT,
|
||||||
|
WIFI_CONNECT,
|
||||||
|
}KyConnectType;
|
||||||
|
|
||||||
class KyNetworkConnect : public QObject
|
class KyNetworkConnect : public QObject
|
||||||
{
|
{
|
||||||
|
@ -11,6 +35,9 @@ public:
|
||||||
~KyNetworkConnect();
|
~KyNetworkConnect();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
void createConnect(KyConnectType connectType, const KyConnectInfo &connectInfo);
|
||||||
|
void updateConnect(const QString &connectUuid, const KyConnectInfo &connectInfo);
|
||||||
|
void deleteConnect(const QString &connectUuid);
|
||||||
int addAndActivateConnect(const QString );
|
int addAndActivateConnect(const QString );
|
||||||
int activateConnection(const QString connectUuid);
|
int activateConnection(const QString connectUuid);
|
||||||
void activateWirelessConnection(NetworkManager::WirelessNetwork::Ptr wirelessNet);
|
void activateWirelessConnection(NetworkManager::WirelessNetwork::Ptr wirelessNet);
|
||||||
|
@ -19,9 +46,20 @@ public:
|
||||||
void requestScan(const QString ifaceName);
|
void requestScan(const QString ifaceName);
|
||||||
void requestAllWifiScan();
|
void requestAllWifiScan();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void connectSettingInit(
|
||||||
|
NetworkManager::ConnectionSettings::Ptr connectionSettings,
|
||||||
|
const KyConnectInfo &connectInfo);
|
||||||
|
void ipv4SettingInit(NetworkManager::Ipv4Setting::Ptr &ipv4Setting,
|
||||||
|
const KyConnectInfo &connectInfo);
|
||||||
|
void ipv6SettingInit(NetworkManager::Ipv6Setting::Ptr &ipv6Setting,
|
||||||
|
const KyConnectInfo &connectInfo);
|
||||||
|
|
||||||
|
void createWiredConnect(const KyConnectInfo &connectInfo);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void activateConnectionFinished(NetworkManager::Connection::Ptr conn);
|
void activateConnectionFinished(NetworkManager::Connection::Ptr &conn);
|
||||||
void deactivateConnectionFinished(NetworkManager::Connection::Ptr conn);
|
void deactivateConnectionFinished(NetworkManager::Connection::Ptr &conn);
|
||||||
|
|
||||||
void noConnection();
|
void noConnection();
|
||||||
void notSavedConnection();
|
void notSavedConnection();
|
||||||
|
|
|
@ -1,3 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#include "kylinnetworkresourcemanager.h"
|
#include "kylinnetworkresourcemanager.h"
|
||||||
|
|
||||||
KyNetworkResourceManager* KyNetworkResourceManager::m_pInstance = nullptr;
|
KyNetworkResourceManager* KyNetworkResourceManager::m_pInstance = nullptr;
|
||||||
|
@ -72,6 +90,7 @@ void KyNetworkResourceManager::addActiveConnection(NetworkManager::ActiveConnect
|
||||||
connect(conn.data(), &NetworkManager::ActiveConnection::typeChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
connect(conn.data(), &NetworkManager::ActiveConnection::typeChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||||
connect(conn.data(), &NetworkManager::ActiveConnection::masterChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
connect(conn.data(), &NetworkManager::ActiveConnection::masterChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||||
connect(conn.data(), &NetworkManager::ActiveConnection::specificObjectChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
connect(conn.data(), &NetworkManager::ActiveConnection::specificObjectChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||||
|
connect(conn.data(), &NetworkManager::ActiveConnection::stateChangedReason, this, &KyNetworkResourceManager::onActiveConnectionChangedReason);
|
||||||
connect(conn.data(), &NetworkManager::ActiveConnection::stateChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
connect(conn.data(), &NetworkManager::ActiveConnection::stateChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||||
connect(conn.data(), &NetworkManager::ActiveConnection::vpnChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
connect(conn.data(), &NetworkManager::ActiveConnection::vpnChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||||
connect(conn.data(), &NetworkManager::ActiveConnection::uuidChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
connect(conn.data(), &NetworkManager::ActiveConnection::uuidChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||||
|
@ -133,7 +152,7 @@ void KyNetworkResourceManager::addDevice(NetworkManager::Device::Ptr device)
|
||||||
{
|
{
|
||||||
m_devices.push_back(device);
|
m_devices.push_back(device);
|
||||||
//device signals
|
//device signals
|
||||||
connect(device.data(), &NetworkManager::Device::stateChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
//connect(device.data(), &NetworkManager::Device::stateChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||||
connect(device.data(), &NetworkManager::Device::activeConnectionChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
connect(device.data(), &NetworkManager::Device::activeConnectionChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||||
connect(device.data(), &NetworkManager::Device::autoconnectChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
connect(device.data(), &NetworkManager::Device::autoconnectChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||||
connect(device.data(), &NetworkManager::Device::availableConnectionChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
connect(device.data(), &NetworkManager::Device::availableConnectionChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||||
|
@ -158,6 +177,7 @@ void KyNetworkResourceManager::addDevice(NetworkManager::Device::Ptr device)
|
||||||
connect(device.data(), &NetworkManager::Device::meteredChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
connect(device.data(), &NetworkManager::Device::meteredChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||||
connect(device.data(), &NetworkManager::Device::connectionStateChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
connect(device.data(), &NetworkManager::Device::connectionStateChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||||
connect(device.data(), &NetworkManager::Device::stateReasonChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
connect(device.data(), &NetworkManager::Device::stateReasonChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||||
|
connect(device.data(), &NetworkManager::Device::stateChanged, this, &KyNetworkResourceManager::onDeviceStateChanged);
|
||||||
connect(device.data(), &NetworkManager::Device::udiChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
connect(device.data(), &NetworkManager::Device::udiChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||||
switch (device->type())
|
switch (device->type())
|
||||||
{
|
{
|
||||||
|
@ -348,11 +368,34 @@ void KyNetworkResourceManager::onActiveConnectionUpdated()
|
||||||
emit activeConnectionUpdate(qobject_cast<NetworkManager::ActiveConnection *>(sender()));
|
emit activeConnectionUpdate(qobject_cast<NetworkManager::ActiveConnection *>(sender()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KyNetworkResourceManager::onActiveConnectionChangedReason(NetworkManager::ActiveConnection::State state,
|
||||||
|
NetworkManager::ActiveConnection::Reason reason)
|
||||||
|
{
|
||||||
|
qWarning()<<"the active connect state"<<state;
|
||||||
|
qWarning()<<"the active connect state chanager reason:"<<reason;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
void KyNetworkResourceManager::onDeviceUpdated()
|
void KyNetworkResourceManager::onDeviceUpdated()
|
||||||
{
|
{
|
||||||
emit deviceUpdate(qobject_cast<NetworkManager::Device *>(sender()));
|
emit deviceUpdate(qobject_cast<NetworkManager::Device *>(sender()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KyNetworkResourceManager::onDeviceStateChanged(
|
||||||
|
NetworkManager::Device::State newstate,
|
||||||
|
NetworkManager::Device::State oldstate,
|
||||||
|
NetworkManager::Device::StateChangeReason reason)
|
||||||
|
{
|
||||||
|
NetworkManager::WiredDevice *wiredDevice = qobject_cast<NetworkManager::WiredDevice *>(sender());
|
||||||
|
if (wiredDevice->carrier()) {
|
||||||
|
qWarning()<<"the device carrier true";
|
||||||
|
} else {
|
||||||
|
qWarning()<<"the device carrier false";
|
||||||
|
}
|
||||||
|
|
||||||
|
qWarning()<<"the device state "<<oldstate << "to" <<newstate << "reason"<< reason;
|
||||||
|
}
|
||||||
|
|
||||||
void KyNetworkResourceManager::onWifiNetworkAppeared(QString const & ssid)
|
void KyNetworkResourceManager::onWifiNetworkAppeared(QString const & ssid)
|
||||||
{
|
{
|
||||||
NetworkManager::Device * dev = qobject_cast<NetworkManager::Device *>(sender());
|
NetworkManager::Device * dev = qobject_cast<NetworkManager::Device *>(sender());
|
||||||
|
|
|
@ -1,3 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef KYLINNETWORKRESOURCEMANAGER_H
|
#ifndef KYLINNETWORKRESOURCEMANAGER_H
|
||||||
#define KYLINNETWORKRESOURCEMANAGER_H
|
#define KYLINNETWORKRESOURCEMANAGER_H
|
||||||
|
|
||||||
|
@ -97,9 +115,14 @@ private slots:
|
||||||
|
|
||||||
//active connection
|
//active connection
|
||||||
void onActiveConnectionUpdated();
|
void onActiveConnectionUpdated();
|
||||||
|
void onActiveConnectionChangedReason(NetworkManager::ActiveConnection::State state,
|
||||||
|
NetworkManager::ActiveConnection::Reason reason);
|
||||||
|
|
||||||
//device
|
//device
|
||||||
void onDeviceUpdated();
|
void onDeviceUpdated();
|
||||||
|
void onDeviceStateChanged(NetworkManager::Device::State newstate,
|
||||||
|
NetworkManager::Device::State oldstate,
|
||||||
|
NetworkManager::Device::StateChangeReason reason);
|
||||||
void onWifiNetworkAppeared(QString const & ssid);
|
void onWifiNetworkAppeared(QString const & ssid);
|
||||||
void onWifiNetworkDisappeared(QString const & ssid);
|
void onWifiNetworkDisappeared(QString const & ssid);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue