SHA256
1
0
forked from cockpit/cockpit

15 Commits

Author SHA256 Message Date
f6ce3ad82b Support SUSE_PRETTY_NAME for SLE micro 16.2
This adds 3 patches to support the new SUSE_PRETTY_NAME keys in the os-release.
We can't depend on the NAME/PRETTY_NAME and need to use VARIANT/VARIANT_ID
to determine to os we're on and SUSE_PRETTY_NAME to display the correct pretty name.
0001-cockpit-overview-support-SUSE_SUPPORT_PRODUCT-keys.patch should be dropped
when systemd starts reporting the os name correctly.
2025-07-15 12:30:33 +05:30
1d9add8241 Add missing .changes entry for libzypp-plugin-appdata requirement 2025-07-11 07:51:42 +01:00
124ad7108d Add libzypp-plugin-appdata as /apps depends on swcatalog being generated 2025-07-02 14:09:03 +01:00
b8985dff0b Backport the fix for bsc#1241949 so it's included in the next release 2025-06-23 13:22:16 +01:00
1083c47b5e Upgrade to 340 2025-06-16 07:32:54 +01:00
4041355e9e Update changelog 2025-05-23 09:55:37 +01:00
b4caba8bee Update branding patch 2025-05-23 09:13:07 +01:00
b5475e52b6 Update changelog 2025-05-23 07:32:36 +01:00
93b02fe73c Update theme 2025-05-23 07:32:36 +01:00
d59a8816a4 Move cockpit-ws-selinux to posttrans since it's replacing
cockpit-selinux-policies

This prevents a major issue where cockpit-selinux-policies would have
postun trigger *after* cockpit-ws-selinux was installed, meaning that
the policy would then be removed, breaking cockpit
2025-05-23 07:32:36 +01:00
d02032fdc1 Update css-overrides to include the full list of pkgs 2025-05-23 07:32:36 +01:00
9aaaceb542 Properly update packaging to 338 2025-05-23 07:32:36 +01:00
aad73def6e Fix check_cockpit_users retrieving dynamic users and make nsswitch check
more robust
2025-05-23 07:32:36 +01:00
e24c7f6b3a Fix invalid sh script 2025-05-20 06:53:46 +01:00
6209d29cb1 Fix shebang 2025-05-20 06:53:27 +01:00
16 changed files with 2367 additions and 833 deletions

View File

@@ -0,0 +1,51 @@
From ec3a1efce07770b7641e07d41a73732967c65175 Mon Sep 17 00:00:00 2001
From: Luna D Dragon <luna.dragon@suse.com>
Date: Tue, 8 Jul 2025 14:58:03 +0530
Subject: [PATCH 1/3] cockpit overview: support SUSE_SUPPORT_PRODUCT keys
SLE Micro 6.2(and Framework one components) have custom os-release keys namely in SUSE_SUPPORT_PRODUCT and
SUSE_SUPPORT_PRODUCT_VERSION instead of the standard os prettyname which
results in systemd not being able to determine the os name correctly.
This patch should be dropped when systemd is fixed
---
pkg/systemd/overview.jsx | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/pkg/systemd/overview.jsx b/pkg/systemd/overview.jsx
index 868469d68..186fcf59e 100644
--- a/pkg/systemd/overview.jsx
+++ b/pkg/systemd/overview.jsx
@@ -42,6 +42,7 @@ import { ShutdownModal } from 'cockpit-components-shutdown.jsx';
import { WithDialogs, DialogsContext } from "dialogs.jsx";
import "./overview.scss";
+import { read_os_release } from "os-release.js";
const _ = cockpit.gettext;
@@ -98,6 +99,7 @@ class OverviewPage extends React.Component {
this.hostname_proxy.addEventListener("changed", data => {
this.setState({ hostnameData: data.detail });
});
+ read_os_release().then(os_release => this.setState({ os_release }));
}
render() {
@@ -160,8 +162,12 @@ class OverviewPage extends React.Component {
{this.hostname_text()}
</h1>
{this.state.hostnameData &&
- this.state.hostnameData.OperatingSystemPrettyName &&
- <div className="ct-overview-header-subheading" id="system_information_os_text">{cockpit.format(_("running $0"), this.state.hostnameData.OperatingSystemPrettyName)}</div>}
+ this.state.hostnameData.OperatingSystemPrettyName && (
+ <div className="ct-overview-header-subheading" id="system_information_os_text">
+ {(this.state.os_release && this.state.os_release.SUSE_PRETTY_NAME)
+ ? cockpit.format(_("running $0"), this.state.os_release.SUSE_PRETTY_NAME)
+ : cockpit.format(_("running $0"), this.state.hostnameData.OperatingSystemPrettyName)}
+ </div>)}
</div>
<div className='ct-overview-header-actions'>
{ show_superuser && <SuperuserIndicator proxy={this.superuser} /> }
--
2.50.0

View File

@@ -0,0 +1,37 @@
From 14b86b6d60b009c4294f06589a561e688ba49223 Mon Sep 17 00:00:00 2001
From: Luna D Dragon <luna.dragon@suse.com>
Date: Tue, 8 Jul 2025 14:58:25 +0530
Subject: [PATCH 2/3] cockpit-kdump support SLE micro 6.2
SLE micro 6.2 no longer has MicroOS in the NAME. This updates it to
check if the VARIANT_ID is transactional to use transactional-update
over manually enabling kdump.
---
pkg/kdump/kdump-view.jsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pkg/kdump/kdump-view.jsx b/pkg/kdump/kdump-view.jsx
index eee4d16b1..7d8439f2b 100644
--- a/pkg/kdump/kdump-view.jsx
+++ b/pkg/kdump/kdump-view.jsx
@@ -421,7 +421,7 @@ export class KdumpPage extends React.Component {
kdumpctl reset-crashkernel`;
}
let shell;
- if (this.state.os_release.NAME?.includes('MicroOS')) {
+ if (this.state.os_release.NAME?.includes('MicroOS') || this.state.os_release.VARIANT_ID?.includes("transactional")) {
enableCrashKernel = `
# A reboot will be required if crashkernel was not set before
transactional-update setup-kdump`;
@@ -443,7 +443,7 @@ ${enableCrashKernel}
Dialogs.show(
<ModificationsExportDialog
- ansible={ this.state.os_release.NAME?.includes('MicroOS') ? null : exportAnsibleTask(this.props.kdumpStatus.config, this.state.os_release)}
+ ansible={ (this.state.os_release.NAME?.includes('MicroOS') || this.state.os_release.VARIANT_ID?.includes("transactional")) ? null : exportAnsibleTask(this.props.kdumpStatus.config, this.state.os_release)}
shell={shell}
onClose={Dialogs.close}
/>);
--
2.50.0

View File

@@ -0,0 +1,136 @@
From cfc476e5127ee3f21b70124e77ded9627e9692b5 Mon Sep 17 00:00:00 2001
From: Luna D Dragon <luna.dragon@suse.com>
Date: Tue, 8 Jul 2025 15:09:09 +0530
Subject: [PATCH 3/3] branding: use SUSE_SUPPORT_PRODUCT and
SUSE_SUPPORT_PRODUCT_VERSION
---
Makefile.am | 1 +
src/branding/suse/Makefile.am | 11 +++++
src/branding/suse/branding.css | 82 ++++++++++++++++++++++++++++++++++
3 files changed, 94 insertions(+)
create mode 100644 src/branding/suse/Makefile.am
create mode 100644 src/branding/suse/branding.css
diff --git a/Makefile.am b/Makefile.am
index 83f1ee7a7..1198d191e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -167,6 +167,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/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
--- /dev/null
+++ b/src/branding/suse/Makefile.am
@@ -0,0 +1,11 @@
+slemicrobrandingdir = $(datadir)/cockpit/branding/suse
+
+dist_slemicrobranding_DATA = \
+ src/branding/suse/branding.css \
+ $(NULL)
+
+install-data-hook::
+ ln -sf /usr/share/wallpapers/SLEdefault/contents/images/1920x1200.png $(DESTDIR)$(slemicrobrandingdir)/default-1920x1200.png
+ ln -sf /usr/share/pixmaps/distribution-logos/square-hicolor.svg $(DESTDIR)$(slemicrobrandingdir)/square-hicolor.svg
+ ln -sf /usr/share/pixmaps/distribution-logos/favicon.ico $(DESTDIR)$(slemicrobrandingdir)/favicon.ico
+ ln -sf /usr/share/pixmaps/distribution-logos/apple-touch-icon.png $(DESTDIR)$(slemicrobrandingdir)/apple-touch-icon.png
\ No newline at end of file
diff --git a/src/branding/suse/branding.css b/src/branding/suse/branding.css
new file mode 100644
index 000000000..c1617abc2
--- /dev/null
+++ b/src/branding/suse/branding.css
@@ -0,0 +1,82 @@
+/* Extra overrides */
+:root {
+ --eos-bc-green-500: #30ba78;
+ --eos-bc-pine-500: #0c322c;
+ --eos-bc-gray-50: #F2F2F2;
+ --eos-bc-white: #ffffff;
+ --eos-bc-text: #333;
+}
+
+
+#brand:before {
+ content: "${SUSE_PRETTY_NAME}";
+}
+
+#option-group svg polygon {
+ fill: var(--eos-bc-text);
+}
+
+/* Nav & sidebar overwrites */
+.navbar-pf {
+ background: var(--eos-bc-pine-500);
+}
+
+.navbar-pf-vertical {
+ border-top: none;
+}
+
+
+/* Default overrides */
+
+.login-note {
+ color: transparent;
+ position: relative;
+}
+
+body.login-pf {
+ background-color: var(--eos-bc-pine-500);
+}
+
+/* Only use background image on desktops */
+@media(min-width: 1024px) {
+ body.login-pf {
+ background-image: url("default-1920x1200.png") !important;
+ background-repeat: no-repeat;
+ background-position: 100% 0 !important;
+ background-size: cover;
+ }
+}
+
+/* Hide badge on desktops (already included in background) */
+@media(max-width: 1023px) {
+ #badge {
+ width: 51px;
+ height: 45px;
+ background-image: url("square-hicolor.svg");
+ background-repeat: no-repeat;
+ }
+}
+
+#brand {
+ width: auto;
+ height: auto;
+ background-image: none;
+ background-repeat: no-repeat;
+ font-size: 2em;
+ white-space: nowrap;
+}
+
+/* Switch to small font faster to not clip long name */
+@media(max-width: 560px) {
+ #brand {
+ font-size: inherit;
+ }
+}
+
+#index-brand {
+ font-weight: bold;
+}
+
+#index-brand:before {
+ content: "${PRETTY_NAME}";
+}
\ No newline at end of file
--
2.50.0

View File

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

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

View File

@@ -1,3 +1,44 @@
-------------------------------------------------------------------
Tue Jul 15 07:00:10 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
- add 0001-cockpit-overview-support-SUSE_SUPPORT_PRODUCT-keys.patch
- add 0002-cockpit-kdump-support-SLE-micro-6.2.patch
- add 0003-branding-use-SUSE_SUPPORT_PRODUCT-and-SUSE_SUPPORT_P.patch to fix bsc#1241003
-------------------------------------------------------------------
Fri Jul 11 06:50:17 UTC 2025 - Alice Brooks <alice.brooks@suse.com>
- add libzypp-plugin-appdata dependency to cockpit-packagekit as
this will generate the swcatalog which it depends on for calculating
various cockpit packages
-------------------------------------------------------------------
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> Thu May 8 08:30:23 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
@@ -5,8 +46,8 @@ Thu May 8 08:30:23 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>
Upstream Changes: Upstream Changes:
- Translation updates - Translation updates
- Bug fixes - Bug fixes
- Add pre-exec checks to ensure manually created users and groups have been removed - Add check_cockpit_users and add_preexec_cockpit.patch to ensure manually created
This pre-exec check also ensures systemd support is present in nsswitch 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> Tue Apr 29 04:23:41 UTC 2025 - Luna D Dragon <luna.dragon@suse.com>

View File

@@ -50,7 +50,7 @@ Summary: Web Console for Linux servers
License: LGPL-2.1-or-later License: LGPL-2.1-or-later
URL: https://cockpit-project.org/ URL: https://cockpit-project.org/
Version: 338 Version: 340
Release: 0 Release: 0
Source0: cockpit-%{version}.tar.gz Source0: cockpit-%{version}.tar.gz
Source1: cockpit.pam Source1: cockpit.pam
@@ -68,6 +68,7 @@ Patch2: suse_docs.patch
Patch3: suse-microos-branding.patch Patch3: suse-microos-branding.patch
Patch4: css-overrides.patch Patch4: css-overrides.patch
Patch5: storage-btrfs.patch Patch5: storage-btrfs.patch
Patch6: kdump-nfs-fixes.patch
# SLE Micro specific patches # SLE Micro specific patches
Patch101: hide-pcp.patch Patch101: hide-pcp.patch
Patch102: 0002-selinux-temporary-remove-setroubleshoot-section.patch Patch102: 0002-selinux-temporary-remove-setroubleshoot-section.patch
@@ -80,6 +81,9 @@ Patch105: fix-libexecdir.patch
Patch106: packagekit-single-install.patch Patch106: packagekit-single-install.patch
Patch109: 0008-pybridge-endian-flag.patch Patch109: 0008-pybridge-endian-flag.patch
Patch110: add_preexec_cockpit.patch Patch110: add_preexec_cockpit.patch
Patch111: 0001-cockpit-overview-support-SUSE_SUPPORT_PRODUCT-keys.patch
Patch112: 0002-cockpit-kdump-support-SLE-micro-6.2.patch
Patch113: 0003-branding-use-SUSE_SUPPORT_PRODUCT-and-SUSE_SUPPORT_P.patch
Patch201: remove_rh_links.patch Patch201: remove_rh_links.patch
%define build_all 1 %define build_all 1
@@ -212,9 +216,17 @@ BuildRequires: python3-pytest-timeout
%setup -q -n cockpit-%{version} -a 3 %setup -q -n cockpit-%{version} -a 3
%patch -P 1 -p1 %patch -P 1 -p1
%patch -P 2 -p1 %patch -P 2 -p1
%if 0%{?is_opensuse} || 0%{?suse_version} < 1600
%patch -P 3 -p1 %patch -P 3 -p1
%else
%patch -P 113 -p1
%endif
%patch -P 4 -p1 %patch -P 4 -p1
%patch -P 5 -p1 %patch -P 5 -p1
%patch -P 6 -p1
%patch -P 106 -p1 %patch -P 106 -p1
%patch -P 109 -p1 %patch -P 109 -p1
@@ -239,6 +251,10 @@ BuildRequires: python3-pytest-timeout
%if 0%{?suse_version} >= 1600 %if 0%{?suse_version} >= 1600
%patch -P 110 -p1 %patch -P 110 -p1
%if !0%{?is_opensuse}
%patch -P 111 -p1
%patch -P 112 -p1
%endif
%endif %endif
%patch -P 201 -p1 %patch -P 201 -p1
@@ -364,7 +380,7 @@ echo '%dir %{_datadir}/cockpit/selinux' > selinux.list
find %{buildroot}%{_datadir}/cockpit/selinux -type f >> selinux.list find %{buildroot}%{_datadir}/cockpit/selinux -type f >> selinux.list
echo '%dir %{_datadir}/cockpit/static' > static.list echo '%dir %{_datadir}/cockpit/static' > static.list
echo '%dir %{_datadir}/cockpit/static/fonts' >> static.list find %{buildroot}%{_datadir}/cockpit/static/* -type d | while read line; do echo "%dir $line"; done >> static.list
find %{buildroot}%{_datadir}/cockpit/static -type f >> static.list find %{buildroot}%{_datadir}/cockpit/static -type f >> static.list
# when not building basic packages, remove their files # when not building basic packages, remove their files
@@ -466,6 +482,7 @@ It offers network configuration, log inspection, diagnostic reports, SELinux
troubleshooting, interactive command-line sessions, and more. troubleshooting, interactive command-line sessions, and more.
%files %files
%license COPYING
%{_docdir}/cockpit/AUTHORS %{_docdir}/cockpit/AUTHORS
%{_docdir}/cockpit/COPYING %{_docdir}/cockpit/COPYING
%{_docdir}/cockpit/README.md %{_docdir}/cockpit/README.md
@@ -479,12 +496,14 @@ troubleshooting, interactive command-line sessions, and more.
%package bridge %package bridge
Summary: Cockpit bridge server-side component Summary: Cockpit bridge server-side component
BuildArch: noarch
%description bridge %description bridge
The Cockpit bridge component installed server side and runs commands on the The Cockpit bridge component installed server side and runs commands on the
system on behalf of the web based user interface. system on behalf of the web based user interface.
%files bridge -f base.list %files bridge -f base.list
%license COPYING
%doc %{_mandir}/man1/cockpit-bridge.1.gz %doc %{_mandir}/man1/cockpit-bridge.1.gz
%{_bindir}/cockpit-bridge %{_bindir}/cockpit-bridge
%{_libexecdir}/cockpit-askpass %{_libexecdir}/cockpit-askpass
@@ -500,6 +519,7 @@ deploy Cockpit on their machines as well as helps developers who want to
embed or extend Cockpit. embed or extend Cockpit.
%files doc %files doc
%license COPYING
%exclude %{_docdir}/cockpit/AUTHORS %exclude %{_docdir}/cockpit/AUTHORS
%exclude %{_docdir}/cockpit/COPYING %exclude %{_docdir}/cockpit/COPYING
%exclude %{_docdir}/cockpit/README.md %exclude %{_docdir}/cockpit/README.md
@@ -546,6 +566,7 @@ Recommends: (reportd if abrt)
This package contains the Cockpit shell and system configuration interfaces. This package contains the Cockpit shell and system configuration interfaces.
%files system -f system.list %files system -f system.list
%license COPYING
%dir %{_datadir}/cockpit/shell/images %dir %{_datadir}/cockpit/shell/images
%package ws %package ws
@@ -554,12 +575,13 @@ Requires: glib-networking
Requires: openssl Requires: openssl
Requires: glib2 >= 2.50.0 Requires: glib2 >= 2.50.0
%if 0%{?with_selinux} %if 0%{?with_selinux}
Requires: %{name}-ws-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 %endif
Conflicts: firewalld < 0.6.0-1 Conflicts: firewalld < 0.6.0-1
Recommends: sscg >= 2.3 Recommends: sscg >= 2.3
Recommends: system-logos Recommends: system-logos
Requires: (%{name}-selinux-policies if selinux-policy-base)
Suggests: sssd-dbus Suggests: sssd-dbus
%if 0%{?suse_version} %if 0%{?suse_version}
Requires(pre): permissions Requires(pre): permissions
@@ -590,9 +612,7 @@ If sssd-dbus is installed, you can enable client certificate/smart card
authentication via sssd/FreeIPA. authentication via sssd/FreeIPA.
%files ws -f static.list %files ws -f static.list
%dir %{_datadir}/%{name}/static/fonts/RedHatDisplay %license COPYING
%dir %{_datadir}/%{name}/static/fonts/RedHatMono
%dir %{_datadir}/%{name}/static/fonts/RedHatText
%doc %{_mandir}/man1/cockpit-desktop.1.gz %doc %{_mandir}/man1/cockpit-desktop.1.gz
%doc %{_mandir}/man5/cockpit.conf.5.gz %doc %{_mandir}/man5/cockpit.conf.5.gz
%doc %{_mandir}/man8/cockpit-ws.8.gz %doc %{_mandir}/man8/cockpit-ws.8.gz
@@ -732,6 +752,7 @@ for i in pam.d/cockpit ; do
test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i} ||: test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i} ||:
done done
%endif %endif
%if 0%{?with_selinux} %if 0%{?with_selinux}
%package ws-selinux %package ws-selinux
Summary: SELinux security policy for cockpit-ws Summary: SELinux security policy for cockpit-ws
@@ -752,10 +773,8 @@ SELinux policy module for the cockpit-ws package.
%{_mandir}/man8/%{name}_ws_selinux.8cockpit.* %{_mandir}/man8/%{name}_ws_selinux.8cockpit.*
%ghost %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name} %ghost %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}
%pre ws-selinux %posttrans ws-selinux
%selinux_relabel_pre -s %{selinuxtype} %selinux_relabel_pre -s %{selinuxtype}
%post ws-selinux
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2 %selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
%selinux_relabel_post -s %{selinuxtype} %selinux_relabel_post -s %{selinuxtype}
@@ -764,7 +783,6 @@ SELinux policy module for the cockpit-ws package.
%selinux_relabel_post -s %{selinuxtype} %selinux_relabel_post -s %{selinuxtype}
%endif %endif
# ------------------------------------------------------------------------------- # -------------------------------------------------------------------------------
# Sub-packages that are part of cockpit-system in RHEL/CentOS, but separate in Fedora # Sub-packages that are part of cockpit-system in RHEL/CentOS, but separate in Fedora
@@ -781,6 +799,7 @@ BuildArch: noarch
The Cockpit component for configuring kernel crash dumping. The Cockpit component for configuring kernel crash dumping.
%files kdump -f kdump.list %files kdump -f kdump.list
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_kdump.metainfo.xml %{_datadir}/metainfo/org.cockpit_project.cockpit_kdump.metainfo.xml
%if !0%{?suse_version} %if !0%{?suse_version}
@@ -796,8 +815,9 @@ The Cockpit component for creating diagnostic reports with the
sosreport tool. sosreport tool.
%files sosreport -f sosreport.list %files sosreport -f sosreport.list
%{_datadir}/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml %license COPYING
%{_datadir}/pixmaps/cockpit-sosreport.png %{_datadir}/metainfo/org.cockpit_project.cockpit_sosreport.metainfo.xml
%{_datadir}/icons/hicolor/64x64/apps/cockpit-sosreport.png
%endif %endif
%package networkmanager %package networkmanager
@@ -814,6 +834,7 @@ BuildArch: noarch
The Cockpit component for managing networking. This package uses NetworkManager. The Cockpit component for managing networking. This package uses NetworkManager.
%files networkmanager -f networkmanager.list %files networkmanager -f networkmanager.list
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_networkmanager.metainfo.xml %{_datadir}/metainfo/org.cockpit_project.cockpit_networkmanager.metainfo.xml
%endif %endif
@@ -836,6 +857,7 @@ This package contains the Cockpit user interface integration with the
utility setroubleshoot to diagnose and resolve SELinux issues. utility setroubleshoot to diagnose and resolve SELinux issues.
%files selinux -f selinux.list %files selinux -f selinux.list
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_selinux.metainfo.xml %{_datadir}/metainfo/org.cockpit_project.cockpit_selinux.metainfo.xml
%endif %endif
@@ -866,6 +888,7 @@ BuildArch: noarch
The Cockpit component for managing storage. This package uses udisks. The Cockpit component for managing storage. This package uses udisks.
%files -n cockpit-storaged -f storaged.list %files -n cockpit-storaged -f storaged.list
%license COPYING
%{_datadir}/metainfo/org.cockpit_project.cockpit_storaged.metainfo.xml %{_datadir}/metainfo/org.cockpit_project.cockpit_storaged.metainfo.xml
%post storaged %post storaged
@@ -888,6 +911,7 @@ Summary: Cockpit user interface for packages
BuildArch: noarch BuildArch: noarch
Requires: cockpit-bridge >= %{required_base} Requires: cockpit-bridge >= %{required_base}
Requires: PackageKit Requires: PackageKit
Requires: libzypp-plugin-appdata
Recommends: python3-tracer Recommends: python3-tracer
# HACK: https://bugzilla.redhat.com/show_bug.cgi?id=1800468 # HACK: https://bugzilla.redhat.com/show_bug.cgi?id=1800468
Requires: polkit Requires: polkit
@@ -897,6 +921,7 @@ The Cockpit components for installing OS updates and Cockpit add-ons,
via PackageKit. via PackageKit.
%files -n cockpit-packagekit -f packagekit.list %files -n cockpit-packagekit -f packagekit.list
%license COPYING
# The changelog is automatically generated and merged # The changelog is automatically generated and merged
%changelog %changelog

View File

@@ -37,6 +37,9 @@ now, it fulfills the requirements of [3].
pkg/systemd/services.html | 1 + pkg/systemd/services.html | 1 +
pkg/systemd/terminal.html | 1 + pkg/systemd/terminal.html | 1 +
pkg/users/index.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(+) 23 files changed, 34 insertions(+)
create mode 100644 pkg/static/css-overrides.css create mode 100644 pkg/static/css-overrides.css
@@ -322,6 +325,42 @@ index d26cf4781..b0c6ebf87 100644
<script src="../base1/cockpit.js"></script> <script src="../base1/cockpit.js"></script>
<script src="../base1/po.js"></script> <script src="../base1/po.js"></script>
<script src="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 2.49.0

153
kdump-nfs-fixes.patch Normal file
View File

@@ -0,0 +1,153 @@
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

1627
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -46,7 +46,7 @@ new file mode 100644
index 000000000..baea6f560 index 000000000..baea6f560
--- /dev/null --- /dev/null
+++ b/src/branding/suse/branding.css +++ b/src/branding/suse/branding.css
@@ -0,0 +1,87 @@ @@ -0,0 +1,82 @@
+/* Extra overrides */ +/* Extra overrides */
+:root { +:root {
+ --eos-bc-green-500: #30ba78; + --eos-bc-green-500: #30ba78;
@@ -61,10 +61,6 @@ index 000000000..baea6f560
+ content: "${PRETTY_NAME}"; + content: "${PRETTY_NAME}";
+} +}
+ +
+.login-pf .container {
+ background-color: rgba(255, 255, 255);
+}
+
+#option-group svg polygon { +#option-group svg polygon {
+ fill: var(--eos-bc-text); + fill: var(--eos-bc-text);
+} +}
@@ -88,13 +84,12 @@ index 000000000..baea6f560
+ +
+body.login-pf { +body.login-pf {
+ background-color: var(--eos-bc-pine-500); + background-color: var(--eos-bc-pine-500);
+ color: var(--eos-bc-text);
+} +}
+ +
+/* Only use background image on desktops */ +/* Only use background image on desktops */
+@media(min-width: 1024px) { +@media(min-width: 1024px) {
+ body.login-pf { + body.login-pf {
+ background-image: url("default-1920x1200.png"); + background-image: url("default-1920x1200.png") !important;
+ background-repeat: no-repeat; + background-repeat: no-repeat;
+ background-position: 100% 0 !important; + background-position: 100% 0 !important;
+ background-size: cover; + background-size: cover;
@@ -134,7 +129,6 @@ index 000000000..baea6f560
+#index-brand:before { +#index-brand:before {
+ content: "${PRETTY_NAME}"; + content: "${PRETTY_NAME}";
+} +}
\ No newline at end of file
-- --
2.49.0 2.49.0