Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package jeos-firstboot for openSUSE:Factory checked in at 2024-01-19 23:00:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/jeos-firstboot (Old) and /work/SRC/openSUSE:Factory/.jeos-firstboot.new.16006 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jeos-firstboot" Fri Jan 19 23:00:12 2024 rev:51 rq:1139754 version:1.3.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/jeos-firstboot/jeos-firstboot.changes 2023-12-01 21:24:49.052664431 +0100 +++ /work/SRC/openSUSE:Factory/.jeos-firstboot.new.16006/jeos-firstboot.changes 2024-01-19 23:00:15.773787005 +0100 @@ -1,0 +2,10 @@ +Thu Jan 18 15:32:28 UTC 2024 - Fabian Vogt <[email protected]> + +- Update to version 1.3.0.0: + * Add status_mail module for systemd-status-mail configuration + (jsc#PED-6989) + * Apply automatic shellcheck fixes + * Add annotations for shellcheck + * Load files based on jeos-firstboot/jeos-config location + +------------------------------------------------------------------- Old: ---- jeos-firstboot-1.2.0.9.obscpio New: ---- jeos-firstboot-1.3.0.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ jeos-firstboot.spec ++++++ --- /var/tmp/diff_new_pack.AG6L69/_old 2024-01-19 23:00:16.333807477 +0100 +++ /var/tmp/diff_new_pack.AG6L69/_new 2024-01-19 23:00:16.333807477 +0100 @@ -1,7 +1,7 @@ # # spec file for package jeos-firstboot # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -23,7 +23,7 @@ %endif Name: jeos-firstboot -Version: 1.2.0.9 +Version: 1.3.0.0 Release: 0 Summary: Simple text based JeOS first boot wizard License: MIT @@ -91,6 +91,7 @@ %dir %{_datadir}/jeos-firstboot/modules/network-modules/ %{_datadir}/jeos-firstboot/modules/network-modules/NetworkManager %{_datadir}/jeos-firstboot/modules/network-modules/wicked +%{_datadir}/jeos-firstboot/modules/status_mail %{_sbindir}/jeos-config %{_sbindir}/jeos-firstboot %{_sbindir}/jeos-firstboot-snapshot ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.AG6L69/_old 2024-01-19 23:00:16.381809232 +0100 +++ /var/tmp/diff_new_pack.AG6L69/_new 2024-01-19 23:00:16.385809378 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/jeos-firstboot.git</param> - <param name="changesrevision">7fbff4911e3c13a9d83716629992fb0b4f8e76fd</param></service></servicedata> + <param name="changesrevision">861be94e4b78fc1ca98c6a723808c241dd1436a8</param></service></servicedata> (No newline at EOF) ++++++ jeos-firstboot-1.2.0.9.obscpio -> jeos-firstboot-1.3.0.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jeos-firstboot-1.2.0.9/files/usr/sbin/jeos-config new/jeos-firstboot-1.3.0.0/files/usr/sbin/jeos-config --- old/jeos-firstboot-1.2.0.9/files/usr/sbin/jeos-config 2023-11-30 13:49:59.000000000 +0100 +++ new/jeos-firstboot-1.3.0.0/files/usr/sbin/jeos-config 2024-01-18 16:27:16.000000000 +0100 @@ -2,8 +2,12 @@ # SPDX-License-Identifier: MIT # SPDX-FileCopyrightText: Copyright 2015-2022 SUSE LLC -. "/usr/share/jeos-firstboot/jeos-firstboot-functions" -. "/usr/share/jeos-firstboot/jeos-firstboot-dialogs" +jeos_prefix="$(realpath "$(dirname "${BASH_SOURCE[0]}")/../")" + +# shellcheck source-path=SCRIPTDIR/../ +. "${jeos_prefix}/share/jeos-firstboot/jeos-firstboot-functions" +# shellcheck source-path=SCRIPTDIR/../ +. "${jeos_prefix}/share/jeos-firstboot/jeos-firstboot-dialogs" # for testing we may run as non root if [ -w /run ]; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jeos-firstboot-1.2.0.9/files/usr/sbin/jeos-firstboot new/jeos-firstboot-1.3.0.0/files/usr/sbin/jeos-firstboot --- old/jeos-firstboot-1.2.0.9/files/usr/sbin/jeos-firstboot 2023-11-30 13:49:59.000000000 +0100 +++ new/jeos-firstboot-1.3.0.0/files/usr/sbin/jeos-firstboot 2024-01-18 16:27:16.000000000 +0100 @@ -4,14 +4,21 @@ set -e +jeos_prefix="$(realpath "$(dirname "${BASH_SOURCE[0]}")/../")" + TEXTDOMAIN='jeos-firstboot' -. "/usr/share/jeos-firstboot/jeos-firstboot-functions" -. "/usr/share/jeos-firstboot/jeos-firstboot-dialogs" -. "/usr/share/jeos-firstboot/welcome-screen" +# shellcheck source-path=SCRIPTDIR/../ +. "${jeos_prefix}/share/jeos-firstboot/jeos-firstboot-functions" +# shellcheck source-path=SCRIPTDIR/../ +. "${jeos_prefix}/share/jeos-firstboot/jeos-firstboot-dialogs" +# shellcheck source-path=SCRIPTDIR/../ +. "${jeos_prefix}/share/jeos-firstboot/welcome-screen" # Read the optional configuration file -[ -f /usr/share/defaults/jeos-firstboot.conf ] && . /usr/share/defaults/jeos-firstboot.conf +# shellcheck source-path=SCRIPTDIR/../ +[ -f "${jeos_prefix}/share/defaults/jeos-firstboot.conf" ] && . "${jeos_prefix}/share/defaults/jeos-firstboot.conf" +# shellcheck source=/dev/null [ -f /etc/jeos-firstboot.conf ] && . /etc/jeos-firstboot.conf # for testing we may run as non root diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/jeos-firstboot-dialogs new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/jeos-firstboot-dialogs --- old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/jeos-firstboot-dialogs 2023-11-30 13:49:59.000000000 +0100 +++ new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/jeos-firstboot-dialogs 2024-01-18 16:27:16.000000000 +0100 @@ -1,5 +1,6 @@ # SPDX-License-Identifier: MIT # SPDX-FileCopyrightText: Copyright 2015-2022 SUSE LLC +# shellcheck shell=bash menulist() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/jeos-firstboot-functions new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/jeos-firstboot-functions --- old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/jeos-firstboot-functions 2023-11-30 13:49:59.000000000 +0100 +++ new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/jeos-firstboot-functions 2024-01-18 16:27:16.000000000 +0100 @@ -1,5 +1,6 @@ # SPDX-License-Identifier: MIT # SPDX-FileCopyrightText: Copyright 2015-2022 SUSE LLC +# shellcheck shell=bash if [ -e /etc/os-release ]; then . /etc/os-release @@ -8,7 +9,7 @@ fi stty_size() { - set -- `stty size`; LINES=$1; COLUMNS=$2 + set -- $(stty size); LINES=$1; COLUMNS=$2 # stty size can return zero when not ready or # its a serial console if [ "$COLUMNS" = "0" -o "$LINES" = "0" ]; then @@ -26,13 +27,14 @@ password='' modules=() -if pushd "/usr/share/jeos-firstboot/modules" &>/dev/null; then +if pushd "${jeos_prefix?}/share/jeos-firstboot/modules" &>/dev/null; then for module in *; do + # shellcheck source=/dev/null if [ -f "${module}" ] && source "${module}"; then modules+=("${module}") fi done - popd &>/dev/null + popd &>/dev/null || exit fi module_has_hook() { @@ -55,7 +57,7 @@ call_module_hook() { local hook="$1" for module in "${modules[@]}"; do - call_module ${module} ${hook} || continue + call_module "${module}" "${hook}" || continue done return 0 } @@ -120,15 +122,15 @@ get_current_locale() { - cur_locale=`awk -F= '$1 == "LANG" { print $2; exit }' /etc/locale.conf` + cur_locale=$(awk -F= '$1 == "LANG" { print $2; exit }' /etc/locale.conf) [ -z "$cur_locale" ] && cur_locale="en_US" - echo ${cur_locale} + echo "${cur_locale}" } apply_locale() { if [ ! -z "$JEOS_LOCALE" ]; then - run langset.sh $JEOS_LOCALE || warn $"Setting the locale failed" + run langset.sh "$JEOS_LOCALE" || warn $"Setting the locale failed" fi } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/modules/network new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/modules/network --- old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/modules/network 2023-11-30 13:49:59.000000000 +0100 +++ new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/modules/network 2024-01-18 16:27:16.000000000 +0100 @@ -1,5 +1,6 @@ # SPDX-License-Identifier: MIT # SPDX-FileCopyrightText: Copyright 2015-2022 SUSE LLC +# shellcheck shell=bash # Returns the basename of the target of network.service, # e.g. "wicked" or "NetworkManager" @@ -9,8 +10,9 @@ } network_service="$(current_network_service)" -if [ -e "/usr/share/jeos-firstboot/modules/network-modules/${network_service}" ]; then - . "/usr/share/jeos-firstboot/modules/network-modules/${network_service}" +if [ -e "${jeos_prefix?}/share/jeos-firstboot/modules/network-modules/${network_service}" ]; then + # shellcheck source=SCRIPTDIR/network-modules/NetworkManager + . "${jeos_prefix?}/share/jeos-firstboot/modules/network-modules/${network_service}" else echo "No network configuration module for ${network_service} found" >&2 fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/modules/network-modules/NetworkManager new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/modules/network-modules/NetworkManager --- old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/modules/network-modules/NetworkManager 2023-11-30 13:49:59.000000000 +0100 +++ new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/modules/network-modules/NetworkManager 2024-01-18 16:27:16.000000000 +0100 @@ -1,5 +1,6 @@ # SPDX-License-Identifier: MIT # SPDX-FileCopyrightText: Copyright 2015-2022 SUSE LLC +# shellcheck shell=bash network_jeos_config() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/modules/network-modules/wicked new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/modules/network-modules/wicked --- old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/modules/network-modules/wicked 2023-11-30 13:49:59.000000000 +0100 +++ new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/modules/network-modules/wicked 2024-01-18 16:27:16.000000000 +0100 @@ -1,5 +1,6 @@ # SPDX-License-Identifier: MIT # SPDX-FileCopyrightText: Copyright 2015-2022 SUSE LLC +# shellcheck shell=bash do_wicked_autoconfig() { @@ -21,7 +22,7 @@ udevadm info -q property -p "$net_path" | grep -qs "DEVTYPE=wlan" && continue unset IPADDR - eval `wicked test dhcp4 "$net_device" 2>/dev/null | grep -E "^IPADDR="` + eval $(wicked test dhcp4 "$net_device" 2>/dev/null | grep -E "^IPADDR=") ip link set down "$net_device" # set link down after probe once done # Create a configuration file for each interface that provides diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/modules/raspberrywifi new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/modules/raspberrywifi --- old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/modules/raspberrywifi 2023-11-30 13:49:59.000000000 +0100 +++ new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/modules/raspberrywifi 2024-01-18 16:27:16.000000000 +0100 @@ -1,5 +1,6 @@ # SPDX-License-Identifier: MIT # SPDX-FileCopyrightText: Copyright 2015-2022 SUSE LLC +# shellcheck shell=bash config_wireless=false @@ -22,7 +23,7 @@ if [ -n "${line}" ]; then list+=("SSID=${line}" "${line}") fi - done < <(ip link set $wlan_device up && iwlist $wlan_device scan|grep ESSID|cut -d':' -f2|cut -d'"' -f2|sort -u) + done < <(ip link set "$wlan_device" up && iwlist "$wlan_device" scan|grep ESSID|cut -d':' -f2|cut -d'"' -f2|sort -u) list+=("manual" "Enter SSID manually") [ -n "${list[*]}" ] } @@ -71,7 +72,7 @@ d --inputbox $"SSID of hidden network" 0 0 wlan_network="$result" else - wlan_network="$(cut -d "=" -f2- <<< $wlan_network)" + wlan_network="$(cut -d "=" -f2- <<< "$wlan_network")" fi list=($"WPA-PSK" '' $"WPA-EAP" '' $"Open" '') d --menu $"Select authentication mode" 0 0 "$(menuheight ${#list[@]})" "${list[@]}" @@ -95,9 +96,9 @@ wlan_password="$result" fi - config_file=`mktemp -qt 'firstboot-XXXXXX'` + config_file=$(mktemp -qt 'firstboot-XXXXXX') - cat << EOF > $config_file + cat << EOF > "$config_file" BOOTPROTO='dhcp' STARTMODE='auto' WIRELESS_AP_SCANMODE='1' @@ -105,21 +106,21 @@ WIRELESS_ESSID='$wlan_network' WIRELESS_MODE='Managed' EOF - if [ $wlan_auth_mode = "WPA-PSK" ]; then - echo "WIRELESS_WPA_PSK='$wlan_password'" >> $config_file + if [ "$wlan_auth_mode" = "WPA-PSK" ]; then + echo "WIRELESS_WPA_PSK='$wlan_password'" >> "$config_file" fi - if [ $wlan_auth_mode = "WPA-EAP" ]; then - echo "WIRELESS_WPA_IDENTITY='$wlan_username'" >> $config_file - echo "WIRELESS_WPA_PASSWORD='$wlan_password'" >> $config_file - echo "WIRELESS_EAP_AUTH='mschapv2'" >> $config_file + if [ "$wlan_auth_mode" = "WPA-EAP" ]; then + echo "WIRELESS_WPA_IDENTITY='$wlan_username'" >> "$config_file" + echo "WIRELESS_WPA_PASSWORD='$wlan_password'" >> "$config_file" + echo "WIRELESS_EAP_AUTH='mschapv2'" >> "$config_file" fi - run mv -f $config_file /etc/sysconfig/network/ifcfg-$wlan_device + run mv -f "$config_file" /etc/sysconfig/network/ifcfg-"$wlan_device" d --infobox $"Connecting to wireless network ..." 3 38 || true - run ifdown $wlan_device &>/dev/null || true - if ! run ifup $wlan_device &>/dev/null; then + run ifdown "$wlan_device" &>/dev/null || true + if ! run ifup "$wlan_device" &>/dev/null; then if dialog --backtitle "$PRETTY_NAME" --yesno $"Connection failed, do you wish to retry?" 0 0; then continue fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/modules/status_mail new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/modules/status_mail --- old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/modules/status_mail 1970-01-01 01:00:00.000000000 +0100 +++ new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/modules/status_mail 2024-01-18 16:27:16.000000000 +0100 @@ -0,0 +1,97 @@ +# SPDX-License-Identifier: MIT +# SPDX-FileCopyrightText: Copyright 2024 SUSE LLC +# shellcheck shell=bash + +# This also gets the password as value, so make sure not to leak that in the process list +status_mail_set_config_option() +{ + key="$1" + value="$2" + + # Create the config file in /etc if necessary + [ -e /etc/default/systemd-status-mail ] || touch /etc/default/systemd-status-mail + + # Ensure the permissions are correct + chown systemd-status-mail:systemd-journal /etc/default/systemd-status-mail + chmod 600 /etc/default/systemd-status-mail + + # Escape string for the file itself + value="${value@Q}" + # awk only supports " quoting, so \ and " need to be escaped + # Escape backslash for awk + value="${value//\\/\\\\}" + # Escape double quotes for awk + value="${value//\"/\\\"}" + + # Replace existing assignment(s) or append at the end + awk -i inplace -F= -f - /etc/default/systemd-status-mail <<EOF + \$1 == "${key}" { \$0="${key}=${value}"; replaced=1 } + 1 { print } + ENDFILE { if (!replaced) { print "${key}=${value}" } } +EOF +} + +status_mail_do_config() +{ + if [ -e /usr/etc/default/systemd-status-mail ]; then + . /usr/etc/default/systemd-status-mail + fi + if [ -e /etc/default/systemd-status-mail ]; then + . /etc/default/systemd-status-mail + fi + + # Add a (fake) placeholder to demonstrate the smtps:// syntax + if [ -z "${RELAY_HOST}" ]; then + RELAY_HOST="smtps://server:port" + fi + + # If a password is set, don't pass it to dialog as default value + # to not leak it to ps + pw_placeholder="${MAILX_AUTH_PASSWORD}" + if [ -n "${pw_placeholder}" ]; then + pw_placeholder="^^^" + fi + + d --title $"E-Mail Notifications" \ + --insecure \ + --mixedform $"If desired, enter a mail address to receive system status notifications:" 8 0 8 \ + $"Destination" 1 0 "$ADDRESS" 1 18 35 0 0 \ + $"Sender address" 2 0 "$FROM" 2 18 35 0 0 \ + $"SMTP configuration (optional):" 4 0 "" 4 35 0 0 2 \ + $"Server" 5 0 "$RELAY_HOST" 5 18 35 0 0 \ + $"Authentication (if needed):" 6 0 "" 6 35 0 0 2 \ + $"Username" 7 0 "$MAILX_AUTH_USER" 7 18 35 0 0 \ + $"Password" 8 0 "$pw_placeholder" 8 18 35 0 1 + readarray -t input <<<"$result" + + # Undo the placeholder + if [ "${input[3]}" = "smtps://server:port" ]; then + input[3]= + fi + + if [ "${input[0]}" != "${ADDRESS}" ]; then + status_mail_set_config_option ADDRESS "${input[0]}" + fi + if [ "${input[1]}" != "${FROM}" ]; then + status_mail_set_config_option FROM "${input[1]}" + fi + if [ "${input[2]}" != "${RELAY_HOST}" ]; then + status_mail_set_config_option RELAY_HOST "${input[2]}" + fi + if [ "${input[3]}" != "${MAILX_AUTH_USER}" ]; then + status_mail_set_config_option MAILX_AUTH_USER "${input[3]}" + fi + if [ "${input[4]}" != "${pw_placeholder}" ] && [ "${input[4]}" != "${MAILX_AUTH_PASSWORD}" ]; then + status_mail_set_config_option MAILX_AUTH_PASSWORD "${input[4]}" + fi + + return 0 +} + +# Only show the configuration if the package is installed +if [ -e /usr/lib/systemd/system/[email protected] ]; then + status_mail_jeos_config() + { + status_mail_do_config + } +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/welcome-screen new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/welcome-screen --- old/jeos-firstboot-1.2.0.9/files/usr/share/jeos-firstboot/welcome-screen 2023-11-30 13:49:59.000000000 +0100 +++ new/jeos-firstboot-1.3.0.0/files/usr/share/jeos-firstboot/welcome-screen 2024-01-18 16:27:16.000000000 +0100 @@ -1,5 +1,6 @@ # SPDX-License-Identifier: MIT # SPDX-FileCopyrightText: Copyright 2015-2022 SUSE LLC +# shellcheck shell=bash # Function to allow showing dialogs (or other stuff) on all consoles. # At its core, it works by spawning processes with the given command on each @@ -76,8 +77,8 @@ local finished=0 while read status console < "${fifodir}/fifo"; do ((finished++)) || : - [ $finished -eq ${#pids[@]} ] && break - [ $status -eq 254 ] || break + [ "$finished" -eq ${#pids[@]} ] && break + [ "$status" -eq 254 ] || break done # All done, kill remaining processes @@ -87,7 +88,7 @@ rm -r "$fifodir" fifodir= - return $status + return "$status" } # If JEOS_ASK_CONSOLE is not 0, show the "welcome" screen and switch to the ++++++ jeos-firstboot.obsinfo ++++++ --- /var/tmp/diff_new_pack.AG6L69/_old 2024-01-19 23:00:16.497813472 +0100 +++ /var/tmp/diff_new_pack.AG6L69/_new 2024-01-19 23:00:16.497813472 +0100 @@ -1,5 +1,5 @@ name: jeos-firstboot -version: 1.2.0.9 -mtime: 1701348599 -commit: 7fbff4911e3c13a9d83716629992fb0b4f8e76fd +version: 1.3.0.0 +mtime: 1705591636 +commit: 861be94e4b78fc1ca98c6a723808c241dd1436a8
