SHA256
1
0
forked from cockpit/cockpit

2 Commits

19 changed files with 1439 additions and 3168 deletions

2
.gitignore vendored
View File

@@ -1,3 +1 @@
.osc
node_modules.sums
_build*

View File

@@ -6,14 +6,13 @@ Date: Fri Aug 6 15:11:23 2021 +0200
Index: cockpit/selinux/cockpit.te
===================================================================
diff --git a/selinux/cockpit.te b/selinux/cockpit.te
index 50695ee..55b1226 100644
--- a/selinux/cockpit.te
+++ b/selinux/cockpit.te
@@ -224,6 +224,14 @@ optional_policy(`
--- cockpit.orig/selinux/cockpit.te
+++ cockpit/selinux/cockpit.te
@@ -202,3 +202,11 @@ optional_policy(`
optional_policy(`
gnome_exec_keyringd(cockpit_session_t)
')
+
+# login may read motd file through pam
+optional_policy(`
+ gen_require(`
@@ -21,7 +20,3 @@ index 50695ee..55b1226 100644
+ ')
+ cockpit_read_pid_files(local_login_t)
+')
+
#########################################################
#
# Misc

View File

@@ -1,64 +1,57 @@
From 3f0d624c5af89fc9ebe81d92351d8ac8e7583997 Mon Sep 17 00:00:00 2001
From 730d204ff5a1f0382c3edffe51ce62c890cf86f2 Mon Sep 17 00:00:00 2001
From: Alice Brooks <alice.brooks@suse.com>
Date: Mon, 28 Apr 2025 12:40:31 +0530
Subject: [PATCH] Remove DynamicUser setting as these conflict with real users
Date: Thu, 30 Jan 2025 10:45:46 +0000
Subject: [PATCH 1/1] Remove DynamicUser setting as these conflict with real
users
Real users are having to be created due to Leap15.6's nsswitch not
containing systemd, so dynamic users cannot be resolved inter
service due to this we must manually create the users postinstall
Co-authored-by: Luna D Dragon <luna.dragon@suse.com>
---
src/systemd/cockpit-wsinstance-http.service.in | 4 +++-
src/systemd/cockpit-wsinstance-https@.service.in | 4 +++-
src/systemd/cockpit.service.in | 4 +++-
3 files changed, 9 insertions(+), 3 deletions(-)
src/systemd/cockpit-wsinstance-http.service.in | 2 +-
src/systemd/cockpit-wsinstance-https@.service.in | 2 +-
src/systemd/cockpit.service.in | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/systemd/cockpit-wsinstance-http.service.in b/src/systemd/cockpit-wsinstance-http.service.in
index 539b90345..dfc9f3b1b 100644
index 539b90345..17ab21df1 100644
--- a/src/systemd/cockpit-wsinstance-http.service.in
+++ b/src/systemd/cockpit-wsinstance-http.service.in
@@ -7,7 +7,9 @@ After=cockpit-session.socket
@@ -7,7 +7,7 @@ After=cockpit-session.socket
[Service]
ExecStart=@libexecdir@/cockpit-ws --no-tls --port=0
-DynamicUser=yes
+DynamicUser=no
+PrivateTmp=yes
+ProtectHome=yes
Group=cockpit-session-socket
PrivateDevices=yes
diff --git a/src/systemd/cockpit-wsinstance-https@.service.in b/src/systemd/cockpit-wsinstance-https@.service.in
index f66c9f874..3c07bb9a7 100644
index f66c9f874..db53247c0 100644
--- a/src/systemd/cockpit-wsinstance-https@.service.in
+++ b/src/systemd/cockpit-wsinstance-https@.service.in
@@ -8,7 +8,9 @@ After=cockpit-session.socket
@@ -8,7 +8,7 @@ After=cockpit-session.socket
[Service]
Slice=system-cockpithttps.slice
ExecStart=@libexecdir@/cockpit-ws --for-tls-proxy --port=0
-DynamicUser=yes
+DynamicUser=no
+PrivateTmp=yes
+ProtectHome=yes
Group=cockpit-session-socket
PrivateDevices=yes
diff --git a/src/systemd/cockpit.service.in b/src/systemd/cockpit.service.in
index 97adda221..4b496fd3a 100644
index 97adda221..ec50118aa 100644
--- a/src/systemd/cockpit.service.in
+++ b/src/systemd/cockpit.service.in
@@ -10,7 +10,9 @@ After=cockpit-wsinstance-http.socket cockpit-wsinstance-https-factory.socket
@@ -10,7 +10,7 @@ After=cockpit-wsinstance-http.socket cockpit-wsinstance-https-factory.socket
RuntimeDirectory=cockpit/tls
ExecStartPre=+@libexecdir@/cockpit-certificate-ensure --for-cockpit-tls
ExecStart=@libexecdir@/cockpit-tls
-DynamicUser=yes
+DynamicUser=no
+PrivateTmp=yes
+ProtectHome=yes
# otherwise systemd uses 'cockpit' even if it exists as a normal user account
User=cockpit-systemd-service
Group=cockpit-wsinstance-socket
--
2.49.0
2.48.1

View File

@@ -1,62 +0,0 @@
From 388870cfef754dd6f23d13abad2f10dc05758384 Mon Sep 17 00:00:00 2001
From: Miika Alikirri <miika.alikirri@suse.com>
Date: Wed, 19 Mar 2025 08:50:40 +0200
Subject: pybridge: Stop hard-coding endian flag in DBusChannel
When you issue sd_bus_read() you'll always get the data returned to in
the machines native endianness. Therefore the endianness flag can be set
based on the machines architecture.
This is apparently "undertested" on systemd's end so this may have to
fixed in the future if we run into real world cases where sd_bus_read()
doesn't return data in native endianness.
https://github.com/systemd/systemd/pull/36784#issuecomment-2734771532
---
src/cockpit/channels/dbus.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/cockpit/channels/dbus.py b/src/cockpit/channels/dbus.py
index 5fc52c3a8..3ebc6404a 100644
--- a/src/cockpit/channels/dbus.py
+++ b/src/cockpit/channels/dbus.py
@@ -38,6 +38,7 @@ import asyncio
import errno
import json
import logging
+import sys
import traceback
import xml.etree.ElementTree as ET
@@ -48,6 +49,8 @@ from ..channel import Channel, ChannelError
logger = logging.getLogger(__name__)
+IS_LITTLE_ENDIAN_MACHINE = sys.byteorder == 'little'
+
# The dbusjson3 payload
#
# This channel payload type translates JSON encoded messages on a
@@ -174,6 +177,7 @@ class DBusChannel(Channel):
name = None
bus = None
owner = None
+ endianness = "<" if IS_LITTLE_ENDIAN_MACHINE else ">"
async def setup_name_owner_tracking(self):
def send_owner(owner):
@@ -346,10 +350,9 @@ class DBusChannel(Channel):
# If the method call has kicked off any signals related to
# watch processing, wait for that to be done.
async with self.watch_processing_lock:
- # TODO: stop hard-coding the endian flag here.
self.send_json(
reply=[reply.get_body()], id=cookie,
- flags="<" if flags is not None else None,
+ flags=self.endianness,
type=reply.get_signature(True)) # noqa: FBT003
except BusError as error:
# actually, should send the fields from the message body
--
2.48.1

View File

@@ -1,12 +0,0 @@
diff --git c/src/systemd/cockpit.socket.in w/src/systemd/cockpit.socket.in
index de45b0dc9..a1dccef7f 100644
--- c/src/systemd/cockpit.socket.in
+++ w/src/systemd/cockpit.socket.in
@@ -5,6 +5,7 @@ Wants=cockpit-issue.service
[Socket]
ListenStream=9090
+ExecStartPre=@libexecdir@/check_cockpit_users
ExecStartPost=-@datadir@/@PACKAGE@/issue/update-issue '' localhost
ExecStartPost=-/bin/ln -snf active.issue /run/cockpit/issue
ExecStopPost=-/bin/ln -snf inactive.issue /run/cockpit/issue

View File

@@ -1,35 +0,0 @@
#!/bin/sh
bad_users_groups=("cockpit-wsinstance-socket" "cockpit-session-socket")
failed=false
for gu in "${bad_users_groups[@]}"; do
grep -q "$gu" /etc/passwd
if [ $? -eq 0 ]; then
echo "user ${gu} exists, cockpit will fail to start up if this user exists, please run userdel ${gu} to resolve this"
failed=true
fi
grep -q "$gu" /etc/group
if [ $? -eq 0 ]; then
echo "group ${gu} exists, cockpit will fail to start up if this group exists, please run groupdel ${gu} to resolve this"
failed=true
fi
done
grep -q cockpit-systemd-service /etc/passwd
if [ $? -eq 0 ]; then
echo "user cockpit-systemd-service exists, cockpit will fail to start up if this group exists, please run userdel cockpit-systemd-service to resolve this"
failed=true
fi
if [ -f /etc/nsswitch.conf ]; then
grep -Exq "passwd:.*?compat systemd" /etc/nsswitch.conf
if [ $? -ne 0 ]; then
echo "/etc/nsswitch.conf is out of date, please update it from /usr/etc/nsswitch.conf to use cockpit"
failed=true
fi
fi
if $failed; then
exit 1
fi

BIN
cockpit-332.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

BIN
cockpit-340.tar.gz (Stored with Git LFS)

Binary file not shown.

BIN
cockpit-suse-theme.tar (Stored with Git LFS)

Binary file not shown.

View File

@@ -1,126 +1,9 @@
-------------------------------------------------------------------
Thu Jun 19 08:30:49 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Add kdump-nfs-fixes.patch to fix bsc#1241949
-------------------------------------------------------------------
Mon Jun 16 06:29:04 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Update to 340
* Detect multiple mount points when creating btrfs subvolumes
* Disk Self-Test error warnings on the overview page
* Prevent modifying partitions in unsupported places
* Bug fixes and translation updates
-------------------------------------------------------------------
Fri May 23 07:46:41 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Update branding patch for micro and sle
-------------------------------------------------------------------
Thu May 22 12:42:43 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Bug fixes
- Update theme for patternfly 6
- Update spec from upstream
- Change when selinux policies are installed
-------------------------------------------------------------------
Thu May 8 08:30:23 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- update to 338:
Upstream Changes:
- Translation updates
- Bug fixes
- Add check_cockpit_users and add_preexec_cockpit.patch to ensure manually created
users and groups are removed. Also check systemd support is in nsswitch
-------------------------------------------------------------------
Tue Apr 29 04:23:41 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- Update cockpit to 337
Upstream Changes:
337:
- Upgraded to Patternfly 6
- Support dnf needs-restarting
336.2:
- storage: Revert "Use mdraid metadata version 1.0 when in Anaconda mode"
- Translation updates
336.1:
- storage: Fix passphrase remembering with "Reuse encryption"
- Translation updates
336:
- storage: Implement deletion of multi-device btrfs
- storage: Use mdraid metadata version 1.0 when in Anaconda mode
- Add a channel capabilities system
335:
storage: SMART support
- update various patches to apply on 337
-------------------------------------------------------------------
Mon Apr 28 07:43:52 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- Update 0007-Remove-DynamicUser-setting-as-these-conflict-with-re.patch
Update the patch to set ProtectHome and PrivateTmp to yes as it is implied
when DynamicUser is enabled. The patch is also now only applied on leap 15
where it is relevant
-------------------------------------------------------------------
Wed Apr 16 11:48:12 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Add extra requirements for selinux policies to cockpit-selinux-policies
so it can't be installed before selinux or policycoreutils
-------------------------------------------------------------------
Fri Apr 11 13:27:42 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Add a requires for either sudo or polkit for assuming admin rights
(bsc#1240569)
-------------------------------------------------------------------
Mon Apr 7 10:41:09 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Ensure cockpit-selinux-policies always installs the selinux policy
regardless of selinuxenabled status (bsc#1240787 and bsc#1240421)
-------------------------------------------------------------------
Wed Mar 19 06:56:06 UTC 2025 - Miika Alikirri <miika.alikirri@suse.com>
- Patch python bridge to handle dbus message endianness correctly
- added 0008-pybridge-endian-flag.patch
(bsc#1220477)
-------------------------------------------------------------------
Wed Mar 12 04:23:06 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- move selinux policies to cockpit-selinux-policies bsc#1236057
-------------------------------------------------------------------
Mon Mar 10 11:41:28 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Update to 334.1
- Various bug fixes and improvements
- Translation updates
- npm modules updated, since new version
-------------------------------------------------------------------
Mon Feb 24 17:02:38 UTC 2025 - Adam Majer <adam.majer@suse.de>
- fix build with latest local-npm-registry
-------------------------------------------------------------------
Fri Feb 21 08:03:00 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- Always apply 0007-Remove-DynamicUser-setting-as-these-conflict-with-re.patch
for every build system. Fixes bsc#1237451
-------------------------------------------------------------------
Thu Feb 20 22:22:32 UTC 2025 - Miika Alikirri <miika.alikirri@suse.com>
- Add functionality to cockpit-packagekit that allows selecting what updates
should be applied
- Added packagekit-single-install.patch file that adds this functionality
-------------------------------------------------------------------
Fri Feb 7 09:24:33 UTC 2025 - Alice Brooks <alice.brooks@suse.com>

View File

@@ -50,14 +50,13 @@ Summary: Web Console for Linux servers
License: LGPL-2.1-or-later
URL: https://cockpit-project.org/
Version: 340
Version: 332
Release: 0
Source0: cockpit-%{version}.tar.gz
Source1: cockpit.pam
Source2: cockpit-rpmlintrc
Source3: cockpit-suse-theme.tar
Source4: cockpit-no-pamoath.pam
Source5: check_cockpit_users
Source10: update_version.sh
Source99: README.packaging
Source98: package-lock.json
@@ -68,7 +67,6 @@ Patch2: suse_docs.patch
Patch3: suse-microos-branding.patch
Patch4: css-overrides.patch
Patch5: storage-btrfs.patch
Patch6: kdump-nfs-fixes.patch
# SLE Micro specific patches
Patch101: hide-pcp.patch
Patch102: 0002-selinux-temporary-remove-setroubleshoot-section.patch
@@ -78,9 +76,7 @@ Patch108: 0007-Remove-DynamicUser-setting-as-these-conflict-with-re.patch
Patch103: 0004-leap-gnu18-removal.patch
Patch104: selinux_libdir.patch
Patch105: fix-libexecdir.patch
Patch106: packagekit-single-install.patch
Patch109: 0008-pybridge-endian-flag.patch
Patch110: add_preexec_cockpit.patch
Patch201: remove_rh_links.patch
%define build_all 1
@@ -216,10 +212,7 @@ BuildRequires: python3-pytest-timeout
%patch -P 3 -p1
%patch -P 4 -p1
%patch -P 5 -p1
%patch -P 6 -p1
%patch -P 106 -p1
%patch -P 109 -p1
%patch -P 108 -p1
# SLE Micro specific patches
%if 0%{?is_smo}
@@ -235,15 +228,10 @@ BuildRequires: python3-pytest-timeout
%patch -P 103 -p1
%patch -P 104 -p1
%patch -P 105 -p1
%patch -P 108 -p1
%else
%patch -P 107 -p1
%endif
%if 0%{?suse_version} >= 1600
%patch -P 110 -p1
%endif
%patch -P 201 -p1
%if 0%{?suse_version} > 1500
@@ -253,7 +241,6 @@ cp %SOURCE4 tools/cockpit.pam
%endif
#
local-npm-registry %{_sourcedir} install --include=dev --ignore-scripts
touch package-lock.json
%build
find node_modules -name \*.node -print -delete
@@ -367,7 +354,7 @@ echo '%dir %{_datadir}/cockpit/selinux' > selinux.list
find %{buildroot}%{_datadir}/cockpit/selinux -type f >> selinux.list
echo '%dir %{_datadir}/cockpit/static' > static.list
find %{buildroot}%{_datadir}/cockpit/static/* -type d | while read line; do echo "%dir $line"; done >> static.list
echo '%dir %{_datadir}/cockpit/static/fonts' >> static.list
find %{buildroot}%{_datadir}/cockpit/static -type f >> static.list
# when not building basic packages, remove their files
@@ -452,12 +439,6 @@ rm -f %{buildroot}%{_datadir}/pixmaps/cockpit-sosreport.png
mkdir -p %{buildroot}%{_datadir}/cockpit/devel
cp -a pkg/lib %{buildroot}%{_datadir}/cockpit/devel
# cockpit.socket preexec to ensure users are created as dynamic users
%if 0%{?suse_version} >= 1600
install -D -m 755 %SOURCE5 %{buildroot}%{_libexecdir}/
%endif
# -------------------------------------------------------------------------------
# Sub-packages
@@ -469,7 +450,6 @@ It offers network configuration, log inspection, diagnostic reports, SELinux
troubleshooting, interactive command-line sessions, and more.
%files
%license COPYING
%{_docdir}/cockpit/AUTHORS
%{_docdir}/cockpit/COPYING
%{_docdir}/cockpit/README.md
@@ -483,14 +463,12 @@ troubleshooting, interactive command-line sessions, and more.
%package bridge
Summary: Cockpit bridge server-side component
BuildArch: noarch
%description bridge
The Cockpit bridge component installed server side and runs commands on the
system on behalf of the web based user interface.
%files bridge -f base.list
%license COPYING
%doc %{_mandir}/man1/cockpit-bridge.1.gz
%{_bindir}/cockpit-bridge
%{_libexecdir}/cockpit-askpass
@@ -506,7 +484,6 @@ deploy Cockpit on their machines as well as helps developers who want to
embed or extend Cockpit.
%files doc
%license COPYING
%exclude %{_docdir}/cockpit/AUTHORS
%exclude %{_docdir}/cockpit/COPYING
%exclude %{_docdir}/cockpit/README.md
@@ -523,7 +500,6 @@ Requires: grep
Requires: jeos-firstboot
Requires: /usr/bin/pwscore
Requires: /usr/bin/date
Requires: (sudo or polkit)
Provides: cockpit-shell = %{version}-%{release}
Provides: cockpit-systemd = %{version}-%{release}
Provides: cockpit-tuned = %{version}-%{release}
@@ -553,7 +529,6 @@ Recommends: (reportd if abrt)
This package contains the Cockpit shell and system configuration interfaces.
%files system -f system.list
%license COPYING
%dir %{_datadir}/cockpit/shell/images
%package ws
@@ -562,7 +537,6 @@ Requires: glib-networking
Requires: openssl
Requires: glib2 >= 2.50.0
%if 0%{?with_selinux}
Requires: (%{name}-ws-selinux = %{version}-%{release} if selinux-policy-base)
Requires: (selinux-policy >= %{_selinux_policy_version} if selinux-policy-%{selinuxtype})
Requires(post): (policycoreutils if selinux-policy-%{selinuxtype})
%endif
@@ -581,13 +555,11 @@ Requires: wallpaper-branding
# for cockpit-desktop
Suggests: python3
Obsoletes: cockpit-tests < 331
%if 0%{?suse_version} == 1500
Provides: group(cockpit-wsinstance-socket)
Provides: group(cockpit-session-socket)
Provides: user(cockpit-wsinstance-socket)
Provides: user(cockpit-session-socket)
Provides: user(cockpit-systemd-service)
%endif
# prevent hard python3 dependency for cockpit-desktop, it falls back to other browsers
%global __requires_exclude_from ^%{_libexecdir}/cockpit-client$
@@ -599,7 +571,6 @@ If sssd-dbus is installed, you can enable client certificate/smart card
authentication via sssd/FreeIPA.
%files ws -f static.list
%license COPYING
%doc %{_mandir}/man1/cockpit-desktop.1.gz
%doc %{_mandir}/man5/cockpit.conf.5.gz
%doc %{_mandir}/man8/cockpit-ws.8.gz
@@ -648,16 +619,16 @@ authentication via sssd/FreeIPA.
%{_libexecdir}/cockpit-desktop
%{_libexecdir}/cockpit-certificate-ensure
%{_libexecdir}/cockpit-certificate-helper
%if 0%{?suse_version} == 1500
%{?suse_version:%verify(not mode) }%attr(4750, root, cockpit-wsinstance-socket) %{_libexecdir}/cockpit-session
%else
%{_libexecdir}/check_cockpit_users
%{_libexecdir}/cockpit-session
%endif
%{_datadir}/cockpit/branding
%if 0%{?with_selinux}
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
%{_mandir}/man8/%{name}_session_selinux.8cockpit.*
%{_mandir}/man8/%{name}_ws_selinux.8cockpit.*
%ghost %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}
%endif
%pre ws
%if 0%{?suse_version} == 1500
# HACK: old RPM and even Fedora's current RPM don't properly support sysusers
# https://github.com/rpm-software-management/rpm/issues/3073
getent group cockpit-wsinstance-socket >/dev/null || groupadd -r cockpit-wsinstance-socket
@@ -665,8 +636,10 @@ getent group cockpit-session-socket >/dev/null || groupadd -r cockpit-session-so
getent passwd cockpit-wsinstance-socket >/dev/null || useradd -r -g cockpit-wsinstance-socket -d /nonexisting -s /sbin/nologin -c "User for cockpit-ws instances" cockpit-wsinstance-socket
getent passwd cockpit-session-socket >/dev/null || useradd -r -g cockpit-session-socket -d /nonexisting -s /sbin/nologin -c "User for cockpit-session instances" cockpit-session-socket
getent passwd cockpit-systemd-service >/dev/null || useradd -r -g cockpit-wsinstance-socket -d /nonexisting -s /sbin/nologin -c "User for cockpit.service" cockpit-systemd-service
%endif
if %{_sbindir}/selinuxenabled 2>/dev/null; then
%selinux_relabel_pre -s %{selinuxtype}
fi
%if 0%{?suse_version} > 1500
# Prepare for migration to /usr/lib; save any old .rpmsave
for i in pam.d/cockpit ; do
@@ -675,6 +648,11 @@ done
%endif
%post ws
if [ -x %{_sbindir}/selinuxenabled ]; then
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
%selinux_relabel_post -s %{selinuxtype}
fi
# set up dynamic motd/issue symlinks on first-time install; don't bring them back on upgrades if admin removed them
# disable root login on first-time install; so existing installations aren't changed
if [ "$1" = 1 ]; then
@@ -725,6 +703,10 @@ fi
%systemd_preun cockpit.socket cockpit.service
%postun ws
if [ -x %{_sbindir}/selinuxenabled ]; then
%selinux_modules_uninstall -s %{selinuxtype} %{name}
%selinux_relabel_post -s %{selinuxtype}
fi
%systemd_postun_with_restart cockpit.socket cockpit.service
%if 0%{?suse_version}
@@ -740,36 +722,6 @@ for i in pam.d/cockpit ; do
done
%endif
%if 0%{?with_selinux}
%package ws-selinux
Summary: SELinux security policy for cockpit-ws
# older -ws contained the SELinux policy, now split out
Conflicts: %{name}-ws < 337-1.2025
Requires(post): selinux-policy-%{selinuxtype} >= %{_selinux_policy_version}
Requires(post): libselinux-utils
Requires(post): policycoreutils
Obsoletes: %{name}-selinux-policies < 338
%description ws-selinux
SELinux policy module for the cockpit-ws package.
%files ws-selinux
%license COPYING
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
%{_mandir}/man8/%{name}_session_selinux.8cockpit.*
%{_mandir}/man8/%{name}_ws_selinux.8cockpit.*
%ghost %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}
%posttrans ws-selinux
%selinux_relabel_pre -s %{selinuxtype}
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
%selinux_relabel_post -s %{selinuxtype}
%postun ws-selinux
%selinux_modules_uninstall -s %{selinuxtype} %{name}
%selinux_relabel_post -s %{selinuxtype}
%endif
# -------------------------------------------------------------------------------
# Sub-packages that are part of cockpit-system in RHEL/CentOS, but separate in Fedora
@@ -786,7 +738,6 @@ BuildArch: noarch
The Cockpit component for configuring kernel crash dumping.
%files kdump -f kdump.list
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_kdump.metainfo.xml
%if !0%{?suse_version}
@@ -802,9 +753,8 @@ The Cockpit component for creating diagnostic reports with the
sosreport tool.
%files sosreport -f sosreport.list
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_sosreport.metainfo.xml
%{_datadir}/icons/hicolor/64x64/apps/cockpit-sosreport.png
%{_datadir}/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml
%{_datadir}/pixmaps/cockpit-sosreport.png
%endif
%package networkmanager
@@ -821,7 +771,6 @@ BuildArch: noarch
The Cockpit component for managing networking. This package uses NetworkManager.
%files networkmanager -f networkmanager.list
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_networkmanager.metainfo.xml
%endif
@@ -844,7 +793,6 @@ This package contains the Cockpit user interface integration with the
utility setroubleshoot to diagnose and resolve SELinux issues.
%files selinux -f selinux.list
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_selinux.metainfo.xml
%endif
@@ -875,7 +823,6 @@ BuildArch: noarch
The Cockpit component for managing storage. This package uses udisks.
%files -n cockpit-storaged -f storaged.list
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_storaged.metainfo.xml
%post storaged
@@ -898,7 +845,6 @@ Summary: Cockpit user interface for packages
BuildArch: noarch
Requires: cockpit-bridge >= %{required_base}
Requires: PackageKit
Requires: libzypp-plugin-appdata
Recommends: python3-tracer
# HACK: https://bugzilla.redhat.com/show_bug.cgi?id=1800468
Requires: polkit
@@ -908,7 +854,6 @@ The Cockpit components for installing OS updates and Cockpit add-ons,
via PackageKit.
%files -n cockpit-packagekit -f packagekit.list
%license COPYING
# The changelog is automatically generated and merged
%changelog

View File

@@ -1,6 +1,6 @@
From 60004e16cda0599e5789dc79e95d006f0c0a95b5 Mon Sep 17 00:00:00 2001
From 617d236f005538be4a53b4a4cb88aac0ad6bf14b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= <dgonzalez@suse.de>
Date: Mon, 28 Apr 2025 20:42:49 +0530
Date: Mon, 13 Jun 2022 20:05:21 +0100
Subject: [PATCH] Load custom CSS
In order to override Cockpit's default styling, another CSS file is
@@ -14,40 +14,39 @@ now, it fulfills the requirements of [3].
[2] https://github.com/cockpit-project/cockpit/issues/16359
[3] https://en.opensuse.org/openSUSE:ALP/Workgroups/SysMngmnt
---
pkg/apps/index.html | 1 +
pkg/kdump/index.html | 1 +
pkg/metrics/index.html | 1 +
pkg/networkmanager/firewall.html | 1 +
pkg/networkmanager/index.html | 1 +
pkg/packagekit/index.html | 1 +
pkg/playground/index.html | 1 +
pkg/playground/journal.html | 1 +
pkg/playground/metrics.html | 1 +
pkg/playground/plot.html | 1 +
pkg/playground/react-patterns.html | 1 +
pkg/playground/speed.html | 1 +
pkg/playground/test.html | 1 +
pkg/shell/index.html | 1 +
pkg/shell/shell.html | 1 +
pkg/sosreport/index.html | 1 +
pkg/static/css-overrides.css | 12 ++++++++++++
pkg/systemd/hwinfo.html | 1 +
pkg/systemd/index.html | 1 +
pkg/systemd/logs.html | 1 +
pkg/systemd/services.html | 1 +
pkg/systemd/terminal.html | 1 +
pkg/users/index.html | 1 +
pkg/storaged/index.html | 1 +
pkg/static/login.html | 1 +
pkg/selinux/index.html | 1 +
23 files changed, 34 insertions(+)
create mode 100644 pkg/static/css-overrides.css
pkg/apps/index.html | 1 +
pkg/kdump/index.html | 1 +
pkg/metrics/index.html | 1 +
pkg/networkmanager/firewall.html | 1 +
pkg/networkmanager/index.html | 1 +
pkg/packagekit/index.html | 1 +
pkg/playground/index.html | 1 +
pkg/playground/journal.html | 1 +
pkg/playground/metrics.html | 1 +
pkg/playground/plot.html | 1 +
pkg/playground/react-patterns.html | 1 +
pkg/playground/speed.html | 1 +
pkg/playground/test.html | 1 +
pkg/selinux/setroubleshoot.html | 1 +
pkg/shell/index.html | 1 +
pkg/shell/shell.html | 1 +
pkg/sosreport/index.html | 1 +
pkg/storaged/index.html | 1 +
pkg/systemd/hwinfo.html | 1 +
pkg/systemd/index.html | 1 +
pkg/systemd/logs.html | 1 +
pkg/systemd/services.html | 1 +
pkg/systemd/terminal.html | 1 +
pkg/users/index.html | 1 +
src/branding/default/css-overrides.css | 12 ++++++++++++
25 files changed, 36 insertions(+)
create mode 100644 src/branding/default/css-overrides.css
diff --git a/pkg/apps/index.html b/pkg/apps/index.html
index fd17d5131..9aac50800 100644
--- a/pkg/apps/index.html
+++ b/pkg/apps/index.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
Index: cockpit/pkg/apps/index.html
===================================================================
--- cockpit.orig/pkg/apps/index.html
+++ cockpit/pkg/apps/index.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <http://
<title translate="yes">Applications</title>
<meta charset="utf-8" />
<link href="apps.css" type="text/css" rel="stylesheet" />
@@ -55,11 +54,11 @@ index fd17d5131..9aac50800 100644
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
<script type="text/javascript" src="po.js"></script>
diff --git a/pkg/kdump/index.html b/pkg/kdump/index.html
index 8138f050f..619416dd4 100644
--- a/pkg/kdump/index.html
+++ b/pkg/kdump/index.html
@@ -25,6 +25,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
Index: cockpit/pkg/kdump/index.html
===================================================================
--- cockpit.orig/pkg/kdump/index.html
+++ cockpit/pkg/kdump/index.html
@@ -25,6 +25,7 @@ along with Cockpit; If not, see <http://
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="kdump.css" />
@@ -67,11 +66,11 @@ index 8138f050f..619416dd4 100644
<script type="text/javascript" src="kdump.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
diff --git a/pkg/metrics/index.html b/pkg/metrics/index.html
index cbb82dccc..b17bd1a76 100644
--- a/pkg/metrics/index.html
+++ b/pkg/metrics/index.html
@@ -23,6 +23,7 @@ along with this package; If not, see <https://www.gnu.org/licenses/>.
Index: cockpit/pkg/metrics/index.html
===================================================================
--- cockpit.orig/pkg/metrics/index.html
+++ cockpit/pkg/metrics/index.html
@@ -23,6 +23,7 @@ along with this package; If not, see <ht
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="index.css" />
@@ -79,11 +78,11 @@ index cbb82dccc..b17bd1a76 100644
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../manifests.js"></script>
diff --git a/pkg/networkmanager/firewall.html b/pkg/networkmanager/firewall.html
index e5ea58276..6bc5327f5 100644
--- a/pkg/networkmanager/firewall.html
+++ b/pkg/networkmanager/firewall.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
Index: cockpit/pkg/networkmanager/firewall.html
===================================================================
--- cockpit.orig/pkg/networkmanager/firewall.html
+++ cockpit/pkg/networkmanager/firewall.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <http://
<meta charset="utf-8" />
<link href="firewall.css" type="text/css" rel="stylesheet" />
@@ -91,10 +90,10 @@ index e5ea58276..6bc5327f5 100644
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
diff --git a/pkg/networkmanager/index.html b/pkg/networkmanager/index.html
index fc9cb5aff..3aceef1b2 100644
--- a/pkg/networkmanager/index.html
+++ b/pkg/networkmanager/index.html
Index: cockpit/pkg/networkmanager/index.html
===================================================================
--- cockpit.orig/pkg/networkmanager/index.html
+++ cockpit/pkg/networkmanager/index.html
@@ -24,6 +24,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -103,11 +102,11 @@ index fc9cb5aff..3aceef1b2 100644
<script src="../base1/cockpit.js"></script>
<script src="../manifests.js"></script>
<script src="../base1/po.js"></script>
diff --git a/pkg/packagekit/index.html b/pkg/packagekit/index.html
index c95dfd263..f4f3baab6 100644
--- a/pkg/packagekit/index.html
+++ b/pkg/packagekit/index.html
@@ -24,6 +24,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
Index: cockpit/pkg/packagekit/index.html
===================================================================
--- cockpit.orig/pkg/packagekit/index.html
+++ cockpit/pkg/packagekit/index.html
@@ -24,6 +24,7 @@ along with Cockpit; If not, see <http://
<meta charset="utf-8" />
<link href="updates.css" rel="stylesheet" />
@@ -115,10 +114,10 @@ index c95dfd263..f4f3baab6 100644
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
diff --git a/pkg/playground/index.html b/pkg/playground/index.html
index 4f2bce82d..6f87bc642 100644
--- a/pkg/playground/index.html
+++ b/pkg/playground/index.html
Index: cockpit/pkg/playground/index.html
===================================================================
--- cockpit.orig/pkg/playground/index.html
+++ cockpit/pkg/playground/index.html
@@ -5,6 +5,7 @@
<title>Cockpit Development Playground</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -127,10 +126,10 @@ index 4f2bce82d..6f87bc642 100644
<script src="../base1/cockpit.js"></script>
<script src="../manifests.js"></script>
<script src="index.js"></script>
diff --git a/pkg/playground/journal.html b/pkg/playground/journal.html
index 473537cb8..c1f10201f 100644
--- a/pkg/playground/journal.html
+++ b/pkg/playground/journal.html
Index: cockpit/pkg/playground/journal.html
===================================================================
--- cockpit.orig/pkg/playground/journal.html
+++ cockpit/pkg/playground/journal.html
@@ -5,6 +5,7 @@
<title>Cockpit Journal Box</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -139,10 +138,10 @@ index 473537cb8..c1f10201f 100644
<script src="../base1/cockpit.js"></script>
<script src="journal.js"></script>
</head>
diff --git a/pkg/playground/metrics.html b/pkg/playground/metrics.html
index d3485c344..bab3b4eb1 100644
--- a/pkg/playground/metrics.html
+++ b/pkg/playground/metrics.html
Index: cockpit/pkg/playground/metrics.html
===================================================================
--- cockpit.orig/pkg/playground/metrics.html
+++ cockpit/pkg/playground/metrics.html
@@ -5,6 +5,7 @@
<title>Cockpit Monitoring</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -151,10 +150,10 @@ index d3485c344..bab3b4eb1 100644
<script src="../base1/cockpit.js"></script>
<script src="metrics.js"></script>
</head>
diff --git a/pkg/playground/plot.html b/pkg/playground/plot.html
index dae84c4b7..e1e8fa7dc 100644
--- a/pkg/playground/plot.html
+++ b/pkg/playground/plot.html
Index: cockpit/pkg/playground/plot.html
===================================================================
--- cockpit.orig/pkg/playground/plot.html
+++ cockpit/pkg/playground/plot.html
@@ -5,6 +5,7 @@
<title>Cockpit Plots</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -163,10 +162,10 @@ index dae84c4b7..e1e8fa7dc 100644
<script src="../base1/cockpit.js"></script>
<script src="plot.js"></script>
</head>
diff --git a/pkg/playground/react-patterns.html b/pkg/playground/react-patterns.html
index a220e0a51..437bd2e39 100644
--- a/pkg/playground/react-patterns.html
+++ b/pkg/playground/react-patterns.html
Index: cockpit/pkg/playground/react-patterns.html
===================================================================
--- cockpit.orig/pkg/playground/react-patterns.html
+++ cockpit/pkg/playground/react-patterns.html
@@ -5,6 +5,7 @@
<title>Cockpit React Patterns Usage</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -175,10 +174,10 @@ index a220e0a51..437bd2e39 100644
<script src="../base1/cockpit.js"></script>
<script src="react-patterns.js"></script>
</head>
diff --git a/pkg/playground/speed.html b/pkg/playground/speed.html
index 603c7341a..e89d111de 100644
--- a/pkg/playground/speed.html
+++ b/pkg/playground/speed.html
Index: cockpit/pkg/playground/speed.html
===================================================================
--- cockpit.orig/pkg/playground/speed.html
+++ cockpit/pkg/playground/speed.html
@@ -5,6 +5,7 @@
<title>Cockpit Speed Tests</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -187,10 +186,10 @@ index 603c7341a..e89d111de 100644
<script src="../base1/cockpit.js"></script>
<script src="speed.js"></script>
</head>
diff --git a/pkg/playground/test.html b/pkg/playground/test.html
index 97a74791f..a2519cfd2 100644
--- a/pkg/playground/test.html
+++ b/pkg/playground/test.html
Index: cockpit/pkg/playground/test.html
===================================================================
--- cockpit.orig/pkg/playground/test.html
+++ cockpit/pkg/playground/test.html
@@ -5,6 +5,7 @@
<title>Cockpit playground</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -199,35 +198,35 @@ index 97a74791f..a2519cfd2 100644
<script src="../base1/cockpit.js"></script>
<script src="test.js"></script>
</head>
diff --git a/pkg/shell/index.html b/pkg/shell/index.html
index 6dd5ad1ac..1c6f3512c 100644
Index: cockpit/pkg/shell/index.html
===================================================================
--- a/pkg/shell/index.html
+++ b/pkg/shell/index.html
@@ -7,6 +7,7 @@
<link rel="icon" href="../../static/favicon.ico" />
@@ -6,6 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="shell.css" rel="stylesheet" />
<link href="../../static/branding.css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../manifests-i18n.js"></script>
<script src="po.js"></script>
diff --git a/pkg/shell/shell.html b/pkg/shell/shell.html
index c9adf7ae2..97f088f7c 100644
--- a/pkg/shell/shell.html
+++ b/pkg/shell/shell.html
Index: cockpit/pkg/shell/shell.html
===================================================================
--- cockpit.orig/pkg/shell/shell.html
+++ cockpit/pkg/shell/shell.html
@@ -5,6 +5,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="index.css" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
</head>
<body class="pf-v6-m-tabular-nums">
<body class="pf-v5-m-tabular-nums">
<div class="curtains-ct">
diff --git a/pkg/sosreport/index.html b/pkg/sosreport/index.html
index e673383ad..224b42463 100644
--- a/pkg/sosreport/index.html
+++ b/pkg/sosreport/index.html
@@ -22,6 +22,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
Index: cockpit/pkg/sosreport/index.html
===================================================================
--- cockpit.orig/pkg/sosreport/index.html
+++ cockpit/pkg/sosreport/index.html
@@ -22,6 +22,7 @@ along with Cockpit; If not, see <http://
<title translate="yes">Diagnostic reports</title>
<meta charset="utf-8" />
<link href="sosreport.css" rel="stylesheet" />
@@ -235,11 +234,82 @@ index e673383ad..224b42463 100644
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
<script type="text/javascript" src="po.js"></script>
diff --git a/pkg/static/css-overrides.css b/pkg/static/css-overrides.css
new file mode 100644
index 000000000..7481f7ecf
Index: cockpit/pkg/systemd/hwinfo.html
===================================================================
--- cockpit.orig/pkg/systemd/hwinfo.html
+++ cockpit/pkg/systemd/hwinfo.html
@@ -4,6 +4,7 @@
<title translate="yes">Hardware information</title>
<meta charset="utf-8" />
<link href="hwinfo.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
Index: cockpit/pkg/systemd/index.html
===================================================================
--- cockpit.orig/pkg/systemd/index.html
+++ cockpit/pkg/systemd/index.html
@@ -6,6 +6,7 @@
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="overview.css" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
<script type="text/javascript" src="overview.js"></script>
Index: cockpit/pkg/systemd/logs.html
===================================================================
--- cockpit.orig/pkg/systemd/logs.html
+++ cockpit/pkg/systemd/logs.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <http://
<title translate="yes">Journal</title>
<meta charset="utf-8" />
<link href="logs.css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
Index: cockpit/pkg/systemd/services.html
===================================================================
--- cockpit.orig/pkg/systemd/services.html
+++ cockpit/pkg/systemd/services.html
@@ -5,6 +5,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="services.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="services.js"></script>
Index: cockpit/pkg/systemd/terminal.html
===================================================================
--- cockpit.orig/pkg/systemd/terminal.html
+++ cockpit/pkg/systemd/terminal.html
@@ -5,6 +5,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="terminal.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
Index: cockpit/pkg/users/index.html
===================================================================
--- cockpit.orig/pkg/users/index.html
+++ cockpit/pkg/users/index.html
@@ -24,6 +24,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="users.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
Index: cockpit/pkg/static/css-overrides.css
===================================================================
--- /dev/null
+++ b/pkg/static/css-overrides.css
+++ cockpit/pkg/static/css-overrides.css
@@ -0,0 +1,12 @@
+/**
+ * PLEASE, DO NOT CHANGE THIS FILE.
@@ -253,114 +323,3 @@ index 000000000..7481f7ecf
+ * - https://github.com/cockpit-project/cockpit/pull/17437
+ * - https://github.com/cockpit-project/cockpit/issues/16359
+ */
diff --git a/pkg/systemd/hwinfo.html b/pkg/systemd/hwinfo.html
index a3413faca..549b80298 100644
--- a/pkg/systemd/hwinfo.html
+++ b/pkg/systemd/hwinfo.html
@@ -4,6 +4,7 @@
<title translate="yes">Hardware information</title>
<meta charset="utf-8" />
<link href="hwinfo.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
diff --git a/pkg/systemd/index.html b/pkg/systemd/index.html
index 91a268a4a..ee125fe65 100644
--- a/pkg/systemd/index.html
+++ b/pkg/systemd/index.html
@@ -6,6 +6,7 @@
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="overview.css" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet"/>
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
<script type="text/javascript" src="overview.js"></script>
diff --git a/pkg/systemd/logs.html b/pkg/systemd/logs.html
index f89f1fa47..5086ce1f6 100644
--- a/pkg/systemd/logs.html
+++ b/pkg/systemd/logs.html
@@ -23,6 +23,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
<title translate="yes">Journal</title>
<meta charset="utf-8" />
<link href="logs.css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
diff --git a/pkg/systemd/services.html b/pkg/systemd/services.html
index 74fa456d4..e9c7047ee 100644
--- a/pkg/systemd/services.html
+++ b/pkg/systemd/services.html
@@ -5,6 +5,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="services.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="services.js"></script>
diff --git a/pkg/systemd/terminal.html b/pkg/systemd/terminal.html
index ce7216e4e..63547f9d3 100644
--- a/pkg/systemd/terminal.html
+++ b/pkg/systemd/terminal.html
@@ -5,6 +5,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="terminal.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
diff --git a/pkg/users/index.html b/pkg/users/index.html
index d26cf4781..b0c6ebf87 100644
--- a/pkg/users/index.html
+++ b/pkg/users/index.html
@@ -24,6 +24,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="users.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet" />
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="po.js"></script>
diff --git a/pkg/storaged/index.html b/pkg/storaged/index.html
index 6893e4909..b6677bb56 100644
--- a/pkg/storaged/index.html
+++ b/pkg/storaged/index.html
@@ -24,6 +24,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="storaged.css" type="text/css" rel="stylesheet" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet">
<script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script>
<script src="../manifests.js"></script>
diff --git a/pkg/static/login.html b/pkg/static/login.html
index 6a8fa4f44..9019499a5 100644
--- a/pkg/static/login.html
+++ b/pkg/static/login.html
@@ -11,6 +11,7 @@
<script type="text/javascript" src="cockpit/static/login.js"></script>
<link href="cockpit/static/login.css" type="text/css" rel="stylesheet" />
<link href="cockpit/static/branding.css" type="text/css" rel="stylesheet" />
+ <link href="cockpit/static/css-overrides.css" type="text/css" rel="stylesheet" />
</head>
<body class="login-pf">
diff --git a/pkg/selinux/index.html b/pkg/selinux/index.html
index cc3825a25..e1c814c6d 100644
--- a/pkg/selinux/index.html
+++ b/pkg/selinux/index.html
@@ -25,6 +25,7 @@ along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="selinux.css" />
+ <link href="../../static/css-overrides.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../base1/cockpit.js"></script>
<script type="text/javascript" src="../base1/po.js"></script>
--
2.49.0

View File

@@ -1,153 +0,0 @@
From d1ffed4a006bc9f8aeb0e8f63e8d2a160720b4f6 Mon Sep 17 00:00:00 2001
From: Alice Brooks <alice.brooks@suse.com>
Date: Thu, 12 Jun 2025 08:48:16 +0100
Subject: [PATCH] kdump: Remove nfs directory when using sysconfig
configuration style
This is because the sysconfig style only has the KDUMP_SAVEDIR field
so we can't work with two path fields as it's impossible to extract
them again
---
pkg/kdump/kdump-client.js | 4 ++++
pkg/kdump/kdump-view.jsx | 24 +++++++++++++++---------
pkg/kdump/kdump.js | 6 ++++++
4 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/pkg/kdump/kdump-client.js b/pkg/kdump/kdump-client.js
index d4c3d989a42d..35add2554a39 100644
--- a/pkg/kdump/kdump-client.js
+++ b/pkg/kdump/kdump-client.js
@@ -48,6 +48,7 @@ export class KdumpClient {
state: undefined,
config: undefined,
target: undefined,
+ sysconfig: undefined,
};
cockpit.event_target(this);
@@ -62,6 +63,7 @@ export class KdumpClient {
// watch the config file
this.configClient = new ConfigFile("/etc/kdump.conf", true);
+ this.state.sysconfig = false;
this._watchConfigChanges();
this.configClient.wait().then(() => {
@@ -69,6 +71,8 @@ export class KdumpClient {
if (this.configClient.settings === null) {
this.configClient.close();
this.configClient = new ConfigFileSUSE("/etc/sysconfig/kdump", true);
+ this.state.sysconfig = true;
+ this.dispatchEvent("kdumpSysconfigChanged", true);
this._watchConfigChanges();
}
});
diff --git a/pkg/kdump/kdump-view.jsx b/pkg/kdump/kdump-view.jsx
index c6cc1e0d6bc6..8b5d74707e39 100644
--- a/pkg/kdump/kdump-view.jsx
+++ b/pkg/kdump/kdump-view.jsx
@@ -115,12 +115,15 @@ const exportAnsibleTask = (settings, os_release) => {
return ansible;
};
-function getLocation(target) {
+function getLocation(target, sysconfig) {
let path = target.path || DEFAULT_KDUMP_PATH;
if (target.type === "ssh") {
path = `${target.server}:${path}`;
} else if (target.type == "nfs") {
+ if (sysconfig) {
+ path = '';
+ }
path = path[0] !== '/' ? '/' + path : path;
path = `${target.server}:${target.export + path}`;
}
@@ -128,7 +131,7 @@ function getLocation(target) {
return path;
}
-const KdumpSettingsModal = ({ settings, initialTarget, handleSave }) => {
+const KdumpSettingsModal = ({ settings, initialTarget, handleSave, sysconfig }) => {
const Dialogs = useDialogs();
const compressionAllowed = settings.compression?.allowed;
const [isSaving, setIsSaving] = useState(false);
@@ -276,13 +279,15 @@ const KdumpSettingsModal = ({ settings, initialTarget, handleSave }) => {
placeholder="/export/cores" value={exportPath}
onChange={(_event, value) => setExportPath(value)} isRequired />
</FormGroup>
+ {sysconfig === false &&
<FormGroup fieldId="kdump-settings-nfs-directory" label={_("Directory")} isRequired>
<TextInput id="kdump-settings-nfs-directory" key="directory"
- placeholder={DEFAULT_KDUMP_PATH} value={directory}
- data-stored={directory}
- onChange={(_event, value) => setDirectory(value)}
- isRequired />
+ placeholder={DEFAULT_KDUMP_PATH} value={directory}
+ data-stored={directory}
+ onChange={(_event, value) => setDirectory(value)}
+ isRequired />
</FormGroup>
+ }
</>
}
@@ -353,7 +358,7 @@ export class KdumpPage extends React.Component {
const target = this.props.kdumpStatus.target;
let verifyMessage;
if (!target.multipleTargets) {
- const path = getLocation(target);
+ const path = getLocation(target, this.props.sysconfig);
if (target.type === "local") {
verifyMessage = fmt_to_fragments(
' ' + _("Results of the crash will be stored in $0 as $1, if kdump is properly configured."),
@@ -403,7 +408,8 @@ export class KdumpPage extends React.Component {
const Dialogs = this.context;
Dialogs.show(<KdumpSettingsModal settings={this.props.kdumpStatus.config}
initialTarget={this.props.kdumpStatus.target}
- handleSave={this.props.onSaveSettings} />);
+ handleSave={this.props.onSaveSettings}
+ sysconfig={this.props.sysconfig} />);
}
handleAutomationClick() {
@@ -459,7 +465,7 @@ ${enableCrashKernel}
if (target.multipleTargets) {
kdumpLocation = _("invalid: multiple targets defined");
} else {
- const locationPath = getLocation(target);
+ const locationPath = getLocation(target, this.props.sysconfig);
if (target.type == "local") {
kdumpLocation = cockpit.format(_("Local, $0"), locationPath);
targetCanChange = true;
diff --git a/pkg/kdump/kdump.js b/pkg/kdump/kdump.js
index 1a143defef15..b0f75e88c220 100644
--- a/pkg/kdump/kdump.js
+++ b/pkg/kdump/kdump.js
@@ -41,6 +41,7 @@ const initStore = function(rootElement) {
dataStore.domRootElement = rootElement;
dataStore.kdumpClient = new kdumpClient.KdumpClient();
+ dataStore.sysconfig = dataStore.kdumpClient.state.sysconfig;
dataStore.saveSettings = settings =>
dataStore.kdumpClient.validateSettings(settings)
@@ -74,6 +75,7 @@ const initStore = function(rootElement) {
reservedMemory: dataStore.kdumpMemory,
kdumpStatus: dataStore.kdumpStatus,
kdumpCmdlineEnabled: dataStore.crashkernel || false,
+ sysconfig: dataStore.sysconfig,
onSaveSettings: dataStore.saveSettings,
onCrashKernel: dataStore.kdumpClient.crashKernel,
exportConfig: dataStore.exportConfig,
@@ -117,6 +119,10 @@ const initStore = function(rootElement) {
dataStore.kdumpStatus = status;
render();
});
+ dataStore.kdumpClient.addEventListener('kdumpSysconfigChanged', function(event, sysconfig) {
+ dataStore.sysconfig = sysconfig;
+ render();
+ });
// render once
render();

BIN
node_modules.obscpio (Stored with Git LFS)

Binary file not shown.

File diff suppressed because it is too large Load Diff

2248
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,373 +0,0 @@
From b03b7eaab34890d197d8e3f536f15390dd123064 Mon Sep 17 00:00:00 2001
From: Miika Alikirri <miika.alikirri@suse.com>
Date: Mon, 28 Apr 2025 20:50:17 +0530
Subject: pkg/pacagekit: Update individual packages
Ability to select individual packages allows more control for updates.
The exact behavior is distrobution specific. For example, on tumbleweed
packagekit backend will ignore the list of packages and run "zypper dup"
instead.
The selection of individual packages is implemented by using a context
provider and a reducer to make the UI updates snappy. A more naive
approach that requires rendering the whole list of packages will freeze
up the UI for multiple seconds when there's hundreds of packages. And
tens of seconds when there are thousands of packages.
---
pkg/packagekit/updates.jsx | 239 ++++++++++++++++++++++++++++++++----
pkg/packagekit/updates.scss | 6 +-
2 files changed, 220 insertions(+), 25 deletions(-)
diff --git a/pkg/packagekit/updates.jsx b/pkg/packagekit/updates.jsx
index 80a16dda7..4fe94432a 100644
--- a/pkg/packagekit/updates.jsx
+++ b/pkg/packagekit/updates.jsx
@@ -80,6 +80,7 @@ import { debug } from './utils';
import callTracerScript from './callTracer.py';
import "./updates.scss";
+import { Checkbox } from '@patternfly/react-core';
const _ = cockpit.gettext;
@@ -93,6 +94,7 @@ const UPDATES = {
ALL: 0,
SECURITY: 1,
KPATCHES: 2,
+ SELECTED: 3,
};
function init() {
@@ -117,6 +119,196 @@ function init() {
PK_STATUS_LOG_STRINGS[PK.Enum.STATUS_SIGCHECK] = _("Verified");
}
+/**
+ * @typedef SelecetedState
+ * @type {object}
+ * @property {boolean} allSelected - Are all items selected
+ * @property {Object.<string, boolean>} selected - (Un)selected items.
+ * If allSelected is set, this refers to unselecetd
+ */
+
+/**
+ * @typedef SelecetedAction
+ * @type {object}
+ * @property {"ADD" | "REMOVE" | "ALL" | "NONE"} type - Type of reducer action
+ * @property {string=} id - Added removed item, only used by "ADD" and "REMOVE"
+ */
+
+const SelectedContext = React.createContext({selected: {}, allSelected: true});
+
+const SelectedStore = props => {
+
+ /**
+ * @argument {SelecetedState} state
+ * @argument {SelecetedAction} action
+ */
+ const reducer = (state, action) => {
+ switch (action.type) {
+ case "ADD":
+ if (action.id) {
+ if (state.allSelected)
+ delete state.selected[action.id];
+ else
+ state.selected[action.id] = true;
+ }
+ break;
+ case "REMOVE":
+ if (action.id) {
+ if (state.allSelected)
+ state.selected[action.id] = true;
+ else
+ delete state.selected[action.id];
+ }
+ break;
+ case "ALL":
+ state.allSelected = true;
+ state.selected = {};
+ break;
+ case "NONE":
+ state.allSelected = false;
+ state.selected = {};
+ break;
+ default:
+ break;
+ }
+
+ return {...state};
+ }
+
+ const [state, dispatch] = React.useReducer(reducer, {selected: {}, allSelected: true});
+
+ return <SelectedContext.Provider value={{ state, dispatch }} {...props} />;
+};
+
+/**
+ * @returns {{state: SelecetedState, dispatch: (arg: SelecetedAction) => void}}
+ */
+export const useSelected = () => React.useContext(SelectedContext);
+
+/**
+ * @param {{
+ * onClick: (state: SelecetedState) => void
+ * updates: string[],
+ * num_updates: number
+ * }} props;
+ */
+const SelectedButton = (props) => {
+ const { state, dispatch } = useSelected();
+ const {
+ onClick,
+ updates,
+ num_updates,
+ } = props;
+
+
+ const buttonText = () => {
+ if (state.allSelected && Object.keys(state.selected).length == 0 ||
+ !state.allSelected && Object.keys(state.selected).length == num_updates)
+ return _("Install all updates");
+
+ const selectLen = calculateSelected(updates, state).length;
+ return `${_("Install selected updates")} (${selectLen})`;
+ }
+
+ return (
+ <Button isDisabled={calculateSelected(updates, state).length === 0} id="install-all" variant="primary" onClick={ () => {onClick(state); dispatch({type: "ALL"})} }>
+ {buttonText()}
+ </Button>
+ );
+}
+
+const SelectedAllButton = (props) => {
+ const { state, dispatch } = useSelected();
+
+ const dispatchSelect = () => {
+ if (state.allSelected) {
+ dispatch({type: "NONE"});
+ } else {
+ dispatch({type: "ALL"});
+ }
+ }
+
+ return (
+ <Button id="install-selected" variant="secondary" onClick={ () => dispatchSelect() }>
+ {state.allSelected ? _("Unselect all") : _("Select all") }
+ </Button>
+ );
+}
+
+const SelectedSwitch = (props) => {
+ const { state, dispatch } = useSelected();
+
+ const dispatchChecked = checked => {
+ if (checked) {
+ dispatch({type: "ADD", id: props.id});
+ } else {
+ dispatch({type: "REMOVE", id: props.id});
+ }
+ }
+
+ const isChecked = () => {
+ if (state.allSelected) {
+ return !!!state.selected[props.id];
+ } else {
+ return !!state.selected[props.id];
+ }
+ }
+
+ return (
+ <Checkbox aria-label="select-update-checkbox" isChecked={isChecked()} id={`selectable-${props.id}`} onChange={(_event, checked) => dispatchChecked(checked)} />
+ );
+}
+
+/**
+ * @param {{
+* updates: string[],
+* }} props;
+*/
+const WebConsoleRestartWarn = (props) => {
+ const { state } = useSelected();
+
+ if (calculateSelected(props.updates, state).findIndex((value) => value.includes("cockpit-ws")) === -1)
+ return null;
+
+ return (
+ <Flex flex={{ default: 'inlineFlex' }} className="cockpit-update-warning">
+ <FlexItem>
+ <ExclamationTriangleIcon className="ct-icon-exclamation-triangle cockpit-update-warning-icon" />
+ <strong className="cockpit-update-warning-text">
+ <span className="pf-screen-reader">{_("Danger alert:")}</span>
+ {_("Web Console will restart")}
+ </strong>
+ </FlexItem>
+ <FlexItem>
+ <Popover aria-label="More information popover"
+ bodyContent={_("When the Web Console is restarted, you will no longer see progress information. However, the update process will continue in the background. Reconnect to continue watching the update process.")}>
+ <Button variant="link" isInline>{_("More info...")}</Button>
+ </Popover>
+ </FlexItem>
+ </Flex>
+ );
+}
+
+/**
+ * @param {string[]} allIds
+ * @param {SelecetedState} state
+ * @returns {string[]}
+ */
+function calculateSelected(allIds, state) {
+ const selected = Object.keys(state.selected);
+
+ if (!state.allSelected) {
+ return selected;
+ }
+
+ if (selected.length === 0) {
+ return allIds;
+ }
+
+ return allIds.filter((id) => !!!state.selected[id]);
+}
+
+
// parse CVEs from an arbitrary text (changelog) and return URL array
function parseCVEs(text) {
if (!text)
@@ -401,6 +593,7 @@ function updateItem(remarkable, info, pkgNames, key) {
{ title: <TableText wrapModifier="truncate">{info.version}</TableText>, props: { className: "version" } },
{ title: <TableText wrapModifier="nowrap">{type}</TableText>, props: { className: "type" } },
{ title: descriptionFirstLine, props: { className: "changelog" } },
+ { title: <SelectedSwitch id={ key }/>, props: { className: "select-update" } },
],
props: {
key,
@@ -451,6 +644,7 @@ const UpdatesList = ({ updates }) => {
{ title: _("Version"), props: { width: 15 } },
{ title: _("Severity"), props: { width: 15 } },
{ title: _("Details"), props: { width: 30 } },
+ { title: _("Select update") },
]}
rows={update_ids.map(id => updateItem(remarkable, updates[id], packageNames[id].sort((a, b) => a.name > b.name), id))} />
);
@@ -932,25 +1126,12 @@ class CardsPage extends React.Component {
id: "available-updates",
title: _("Available updates"),
actions: (<div className="pk-updates--header--actions">
- {this.props.cockpitUpdate &&
- <Flex flex={{ default: 'inlineFlex' }} className="cockpit-update-warning">
- <FlexItem>
- <ExclamationTriangleIcon className="ct-icon-exclamation-triangle cockpit-update-warning-icon" />
- <strong className="cockpit-update-warning-text">
- <span className="pf-screen-reader">{_("Danger alert:")}</span>
- {_("Web Console will restart")}
- </strong>
- </FlexItem>
- <FlexItem>
- <Popover aria-label="More information popover"
- bodyContent={_("When the Web Console is restarted, you will no longer see progress information. However, the update process will continue in the background. Reconnect to continue watching the update process.")}>
- <Button variant="link" isInline>{_("More info...")}</Button>
- </Popover>
- </FlexItem>
- </Flex>}
+ <WebConsoleRestartWarn updates={Object.keys(this.props.updates)} />
{this.props.applyKpatches}
{this.props.applySecurity}
{this.props.applyAll}
+ {this.props.applySelected}
+ {this.props.applySelectAll}
</div>),
containsList: true,
body: <UpdatesList updates={this.props.updates} />
@@ -1397,13 +1578,19 @@ class OsUpdates extends React.Component {
});
}
- applyUpdates(type) {
+ /**
+ * @param {SelecetedState=} selected
+ */
+ applyUpdates(type, selected) {
let ids = Object.keys(this.state.updates);
if (type === UPDATES.SECURITY)
ids = ids.filter(id => this.state.updates[id].severity === PK.Enum.INFO_SECURITY);
if (type === UPDATES.KPATCHES) {
ids = ids.filter(id => isKpatchPackage(this.state.updates[id].name));
}
+ if (type === UPDATES.SELECTED && selected) {
+ ids = calculateSelected(ids, selected);
+ }
PK.transaction()
.then(transactionPath => {
@@ -1429,6 +1616,8 @@ class OsUpdates extends React.Component {
let applySecurity;
let applyKpatches;
let applyAll;
+ let applySelected;
+ let applySelectAll;
/* On unregistered RHEL systems we need some heuristics: If the "main" OS repos (which provide coreutils) require
* a subscription, then point this out and don't show available updates, even if there are some auxiliary
@@ -1483,12 +1672,8 @@ class OsUpdates extends React.Component {
const num_kpatches = count_kpatch_updates(this.state.updates);
const highest_severity = find_highest_severity(this.state.updates);
- applyAll = (
- <Button id={num_updates == num_security_updates ? "install-security" : "install-all"} variant="primary" onClick={ () => this.applyUpdates(UPDATES.ALL) }>
- { num_updates == num_security_updates
- ? _("Install security updates")
- : _("Install all updates") }
- </Button>);
+ applySelected = <SelectedButton updates={Object.keys(this.state.updates)} num_updates={num_updates} onClick={ (items) => this.applyUpdates(UPDATES.SELECTED, items) }/>;
+ applySelectAll = <SelectedAllButton />;
if (num_security_updates > 0 && num_updates > num_security_updates) {
applySecurity = (
@@ -1529,6 +1714,8 @@ class OsUpdates extends React.Component {
<CardsPage handleRefresh={this.handleRefresh}
applySecurity={applySecurity}
applyAll={applyAll}
+ applySelected={applySelected}
+ applySelectAll={applySelectAll}
applyKpatches={applyKpatches}
highestSeverity={highest_severity}
onValueChanged={this.onValueChanged}
@@ -1717,5 +1904,9 @@ document.addEventListener("DOMContentLoaded", () => {
document.title = cockpit.gettext(document.title);
init();
const root = createRoot(document.getElementById('app'));
- root.render(<OsUpdates />);
+ root.render(
+ <SelectedStore>
+ <OsUpdates />
+ </SelectedStore>
+ );
});
diff --git a/pkg/packagekit/updates.scss b/pkg/packagekit/updates.scss
index 05494fe85..6b2c80035 100644
--- a/pkg/packagekit/updates.scss
+++ b/pkg/packagekit/updates.scss
@@ -68,7 +68,7 @@
}
&, p {
- max-inline-size: 60vw;
+ max-inline-size: 54vw;
margin-block-end: 0; // counter-act <Markdown>
overflow: hidden;
text-overflow: ellipsis;
@@ -272,3 +272,7 @@ table.header-buttons {
.ct-info-circle {
color: var(--pf-t--global--icon--color--status--info--default);
}
+
+td.select-update {
+ min-width: 8vw;
+}
\ No newline at end of file
--
2.49.0

View File

@@ -1,8 +1,8 @@
diff --git a/pkg/networkmanager/bond.jsx b/pkg/networkmanager/bond.jsx
index b54b1db..062cd1d 100644
index 80956bd7b..de8e667aa 100644
--- a/pkg/networkmanager/bond.jsx
+++ b/pkg/networkmanager/bond.jsx
@@ -151,16 +151,6 @@ export const BondDialog = ({ connection, dev, settings }) => {
@@ -142,16 +142,6 @@ export const BondDialog = ({ connection, dev, settings }) => {
{_("A network bond combines multiple network interfaces into one logical interface with higher throughput or redundancy.")}
</div>
}
@@ -20,10 +20,10 @@ index b54b1db..062cd1d 100644
<Button id="bond-help-popup-button" variant="plain" aria-label="Help">
<HelpIcon />
diff --git a/pkg/systemd/hwinfo.jsx b/pkg/systemd/hwinfo.jsx
index d2d2d9b..af0bedc 100644
index 30196f0dc..d53948374 100644
--- a/pkg/systemd/hwinfo.jsx
+++ b/pkg/systemd/hwinfo.jsx
@@ -205,11 +205,6 @@ const CPUSecurityMitigationsDialog = () => {
@@ -201,11 +201,6 @@ const CPUSecurityMitigationsDialog = () => {
<DataListCell key="primary content">
<span>
<div className='nosmt-heading'>{ _("Disable simultaneous multithreading") } (nosmt)</div>
@@ -36,19 +36,19 @@ index d2d2d9b..af0bedc 100644
</DataListCell>,
]}
diff --git a/pkg/systemd/overview-cards/cryptoPolicies.jsx b/pkg/systemd/overview-cards/cryptoPolicies.jsx
index fa57de9..d4dd3be 100644
index dc8b996ec..2f6fc8ac4 100644
--- a/pkg/systemd/overview-cards/cryptoPolicies.jsx
+++ b/pkg/systemd/overview-cards/cryptoPolicies.jsx
@@ -143,7 +143,7 @@ const CryptoPolicyDialog = ({
@@ -115,7 +115,7 @@ const CryptoPolicyDialog = ({
variant='link'
isInline
icon={<ExternalLinkSquareAltIcon />} iconPosition="right"
- href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening">
- href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/security_hardening/switching-rhel-to-fips-mode_security-hardening">
+ href="https://documentation.suse.com/sle-micro/6.0/html/Micro-selinux/selinux-article.html">
{_("Learn more")}
</Button>
</Flex>),
@@ -184,16 +184,6 @@ const CryptoPolicyDialog = ({
@@ -154,16 +154,6 @@ const CryptoPolicyDialog = ({
{_("Cryptographic Policies is a system component that configures the core cryptographic subsystems, covering the TLS, IPSec, SSH, DNSSec, and Kerberos protocols.")}
</div>
}
@@ -66,10 +66,10 @@ index fa57de9..d4dd3be 100644
<Button variant="plain" aria-label={_("Help")}>
<HelpIcon />
diff --git a/pkg/systemd/overview-cards/tuned-dialog.jsx b/pkg/systemd/overview-cards/tuned-dialog.jsx
index 38420ca..cd7e2a3 100644
index 258f42640..3ec591cb7 100644
--- a/pkg/systemd/overview-cards/tuned-dialog.jsx
+++ b/pkg/systemd/overview-cards/tuned-dialog.jsx
@@ -278,36 +278,10 @@ const TunedDialog = ({
@@ -275,36 +275,10 @@ const TunedDialog = ({
};
}, [tunedService]);

View File

@@ -1,6 +1,6 @@
From 29264680d65a0661d81eb5c973bdef3cd5eccc0b Mon Sep 17 00:00:00 2001
From ecfe5445feb2bdf4ad092b340b72a6b1f78d29e6 Mon Sep 17 00:00:00 2001
From: Jacek Tomasiak <jacek.tomasiak@gmail.com>
Date: Mon, 28 Apr 2025 20:33:01 +0530
Date: Wed, 20 Nov 2024 12:28:39 +0530
Subject: [PATCH] Add branding for SLE Micro
---
@@ -12,17 +12,17 @@ Subject: [PATCH] Add branding for SLE Micro
create mode 100644 src/branding/suse/branding.css
diff --git a/Makefile.am b/Makefile.am
index 83f1ee7a7..1198d191e 100644
index 22fa06617..6dee293ae 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -167,6 +167,7 @@ include src/branding/debian/Makefile.am
@@ -166,6 +166,7 @@ include src/branding/debian/Makefile.am
include src/branding/default/Makefile.am
include src/branding/fedora/Makefile.am
include src/branding/opensuse/Makefile.am
+include src/branding/suse/Makefile.am
include src/branding/rhel/Makefile.am
include src/branding/scientific/Makefile.am
include src/branding/ubuntu/Makefile.am
include src/client/Makefile.am
diff --git a/src/branding/suse/Makefile.am b/src/branding/suse/Makefile.am
new file mode 100644
index 000000000..4a1e7ab72
@@ -46,7 +46,7 @@ new file mode 100644
index 000000000..baea6f560
--- /dev/null
+++ b/src/branding/suse/branding.css
@@ -0,0 +1,82 @@
@@ -0,0 +1,87 @@
+/* Extra overrides */
+:root {
+ --eos-bc-green-500: #30ba78;
@@ -61,6 +61,10 @@ index 000000000..baea6f560
+ content: "${PRETTY_NAME}";
+}
+
+.login-pf .container {
+ background-color: rgba(255, 255, 255);
+}
+
+#option-group svg polygon {
+ fill: var(--eos-bc-text);
+}
@@ -84,12 +88,13 @@ index 000000000..baea6f560
+
+body.login-pf {
+ background-color: var(--eos-bc-pine-500);
+ color: var(--eos-bc-text);
+}
+
+/* Only use background image on desktops */
+@media(min-width: 1024px) {
+ body.login-pf {
+ background-image: url("default-1920x1200.png") !important;
+ background-image: url("default-1920x1200.png");
+ background-repeat: no-repeat;
+ background-position: 100% 0 !important;
+ background-size: cover;
@@ -129,6 +134,7 @@ index 000000000..baea6f560
+#index-brand:before {
+ content: "${PRETTY_NAME}";
+}
\ No newline at end of file
--
2.49.0
2.47.0