diff --git a/kdeconnect-kde-firewalld.xml b/kdeconnect-kde-firewalld.xml
deleted file mode 100644
index fa03324..0000000
--- a/kdeconnect-kde-firewalld.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- KDE Connect
- KDE Connect is a project that aims to communicate all your devices.
-
-
-
diff --git a/kdeconnect-kde.changes b/kdeconnect-kde.changes
index 609264d..8b6b0e4 100644
--- a/kdeconnect-kde.changes
+++ b/kdeconnect-kde.changes
@@ -1,3 +1,17 @@
+-------------------------------------------------------------------
+Fri Mar 17 09:00:05 UTC 2023 - Fabian Vogt
+
+- Fix some potential scriptlet bugs and style issues
+
+-------------------------------------------------------------------
+Wed Mar 8 17:02:56 UTC 2023 - Robert Frohl
+
+- Automatically handle firewalld setup during initial install or final removal
+ of kdeconnect-kde for openSUSE distros. (boo#1175627)
+- Drop kdeconnect-kde-firewalld.xml, service definition now shipped with
+ firewalld package.
+ * the 'kdeconnect-kde' firewalld service is migrated over to 'kdeconnect'
+
-------------------------------------------------------------------
Tue Feb 28 09:45:49 UTC 2023 - Christophe Marin
diff --git a/kdeconnect-kde.spec b/kdeconnect-kde.spec
index ba5d199..ab1b8df 100644
--- a/kdeconnect-kde.spec
+++ b/kdeconnect-kde.spec
@@ -31,13 +31,12 @@ Source1: https://download.kde.org/stable/release-service/%{version}/src/%
Source2: applications.keyring
%endif
Source100: kdeconnect-kde.SuSEfirewall
-Source101: kdeconnect-kde-firewalld.xml
BuildRequires: cmake >= 3.0
BuildRequires: extra-cmake-modules
BuildRequires: kf5-filesystem
+BuildRequires: libQt5Gui-private-headers-devel
BuildRequires: pkgconfig
BuildRequires: update-desktop-files
-BuildRequires: libQt5Gui-private-headers-devel
BuildRequires: cmake(KF5ConfigWidgets)
BuildRequires: cmake(KF5DBusAddons)
BuildRequires: cmake(KF5Declarative)
@@ -60,8 +59,8 @@ BuildRequires: cmake(Qca-qt5)
BuildRequires: cmake(Qt5Multimedia)
BuildRequires: cmake(Qt5Quick)
BuildRequires: cmake(Qt5QuickControls2)
-BuildRequires: cmake(Qt5X11Extras)
BuildRequires: cmake(Qt5WaylandClient)
+BuildRequires: cmake(Qt5X11Extras)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(libfakekey)
BuildRequires: pkgconfig(x11)
@@ -120,15 +119,61 @@ done
install -D -m 0644 %{SOURCE100} \
%{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/%{name}
%endif
-# firewalld config file
-install -D -m 0644 %{SOURCE101} \
- %{buildroot}%{_prefix}/lib/firewalld/services/%{name}.xml
%suse_update_desktop_file %{buildroot}%{_kf5_applicationsdir}/org.kde.kdeconnect.app.desktop Network RemoteAccess
%suse_update_desktop_file %{buildroot}%{_kf5_applicationsdir}/org.kde.kdeconnect.nonplasma.desktop Network RemoteAccess
%suse_update_desktop_file %{buildroot}%{_kf5_applicationsdir}/org.kde.kdeconnect_open.desktop Network RemoteAccess
-%ldconfig_scriptlets
+%pre
+# migrate old kdeconnect-kde service
+# XXX: can be removed after some time, the author would suggest after 2023-06-15 has passed
+if grep -q kdeconnect-kde /etc/firewalld/zones/*.xml 2>/dev/null; then
+ echo "Migrating 'kdeconnect-kde' firewalld service to identical 'kdeconnect' shipped with firewalld."
+ sed -i 's///' /etc/firewalld/zones/*.xml
+ if firewall-cmd -q --state; then
+ firewall-cmd --reload
+ fi
+fi
+true
+# migrate kdeconnect-kde end
+
+%post
+%ldconfig
+%if 0%{?is_opensuse}
+if [ $1 -eq 1 ]; then # inital/first package install
+ if [ -x %{_bindir}/firewall-cmd ]; then
+ echo 'Adding kdeconnect service to default and home firewalld zones'
+ if firewall-cmd -q --state; then
+ firewall-cmd --add-service=kdeconnect
+ firewall-cmd --add-service=kdeconnect --zone=home
+ firewall-cmd --runtime-to-permanent
+ else
+ firewall-offline-cmd --add-service=kdeconnect
+ firewall-offline-cmd --add-service=kdeconnect --zone=home
+ fi
+ fi
+fi
+true
+%endif
+
+%postun
+%ldconfig
+%if 0%{?is_opensuse}
+if [ $1 -eq 0 ]; then # last/final package removal
+ if [ -x %{_bindir}/firewall-cmd ]; then
+ echo 'Removing kdeconnect service from default and home firewalld zones'
+ if firewall-cmd -q --state; then
+ firewall-cmd --remove-service=kdeconnect
+ firewall-cmd --remove-service=kdeconnect --zone=home
+ firewall-cmd --runtime-to-permanent
+ else
+ firewall-offline-cmd --remove-service=kdeconnect
+ firewall-offline-cmd --remove-service-from-zone=kdeconnect --zone=home
+ fi
+ fi
+fi
+true
+%endif
%files zsh-completion
%dir %{_datadir}/zsh
@@ -148,8 +193,6 @@ install -D -m 0644 %{SOURCE101} \
%dir %{_datadir}/deepin/dde-file-manager/oem-menuextensions
%dir %{_datadir}/nautilus-python
%dir %{_kf5_sharedir}/kdeconnect
-%dir %{_prefix}/lib/firewalld
-%dir %{_prefix}/lib/firewalld/services
%{_datadir}/Thunar/sendto/
%{_datadir}/contractor/kdeconnect.contract
%{_datadir}/deepin/dde-file-manager/oem-menuextensions/kdeconnect-dde.desktop
@@ -182,7 +225,6 @@ install -D -m 0644 %{SOURCE101} \
%{_kf5_sharedir}/kdeconnect/kdeconnect_clipboard_config.qml
%{_kf5_sharedir}/plasma/
%{_libexecdir}/kdeconnectd
-%{_prefix}/lib/firewalld/services/%{name}.xml
%files lang -f %{name}.lang