Warning, /plasma/plasma-firewall/kcm/ui/ConnectionsView.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0002 // SPDX-FileCopyrightText: 2018 Alexis Lopes Zubeta <contact@azubieta.net>
0003 // SPDX-FileCopyrightText: 2020 Tomaz Canabrava <tcanabrava@kde.org>
0004 // SPDX-FileCopyrightText: 2020 Kai Uwe Broulik <kde@broulik.de>
0005 
0006 import QtQuick 2.12
0007 
0008 import org.kde.kirigami 2.14 as Kirigami
0009 
0010 import org.kcm.firewall 1.0
0011 
0012 ViewBase {
0013     id: base
0014     title: i18n("Connections")
0015 
0016     model: netStatClient.connectionsModel
0017     columns: [
0018         {column: ConnectionsModel.ProtocolColumn, width: Kirigami.Units.gridUnit * 4},
0019         {column: ConnectionsModel.LocalAddressColumn, width: Kirigami.Units.gridUnit * 10},
0020         {column: ConnectionsModel.ForeignAddressColumn, width: Kirigami.Units.gridUnit * 10},
0021         {column: ConnectionsModel.StatusColumn, width: Kirigami.Units.gridUnit * 5},
0022         {column: ConnectionsModel.PidColumn, width: Kirigami.Units.gridUnit * 3},
0023         {column: ConnectionsModel.ProgramColumn, width: Kirigami.Units.gridUnit * 7}
0024     ]
0025     sortColumn: ConnectionsModel.ProgramColumn
0026     emptyListText: i18n("There are currently no open connections")
0027 
0028     blacklistRuleFactory: kcm.client.createRuleFromConnection
0029     blacklistColumns: [
0030         ConnectionsModel.ProtocolColumn,
0031         ConnectionsModel.LocalAddressColumn,
0032         ConnectionsModel.ForeignAddressColumn,
0033         ConnectionsModel.StatusColumn
0034     ]
0035     blacklistRuleSuccessMessage: i18n("Created a blacklist rule from this connection.");
0036 
0037     filterColumns: [ConnectionsModel.PidColumn, ConnectionsModel.ProgramColumn]
0038 
0039     NetstatClient {
0040         id: netStatClient
0041         property bool active: base.Kirigami.ColumnView.inViewport
0042         
0043         function updateRunning() {
0044             if (!active) {
0045                 console.log("Stopping Connections data fetch");
0046                 netStatClient.connectionsModel.stop();
0047                 return;
0048             }
0049 
0050             if (!netStatClient.hasSS) {
0051                 console.log("Netstat client without ss");
0052                 base.errorMessage.text = i18n("could not find iproute2 or net-tools packages installed.");
0053                 base.errorMessage.visible = true;
0054                 return;
0055             }
0056 
0057             console.log("Start connections data fetch");
0058             netStatClient.connectionsModel.start();
0059         }
0060         onActiveChanged: updateRunning()
0061 
0062         Component.onCompleted : {
0063             console.log("Netstat client completed.");
0064             if (netStatClient.hasSS) {
0065                 console.log("Starting netstat client");
0066             }
0067             netStatClient.updateRunning();
0068         }
0069     }
0070 }