From fa37d2832d8f4b3afe9f0c02c653cc4ea6618db5 Mon Sep 17 00:00:00 2001 From: alexgithublab Date: Wed, 24 Jul 2024 14:09:40 +0200 Subject: [PATCH 1/3] change system time feature --- initrd/bin/change-time | 60 ++++++++++++++++++++++++++++++++++++++++++ initrd/bin/gui-init | 4 +++ 2 files changed, 64 insertions(+) create mode 100644 initrd/bin/change-time diff --git a/initrd/bin/change-time b/initrd/bin/change-time new file mode 100644 index 000000000..af8f6de7f --- /dev/null +++ b/initrd/bin/change-time @@ -0,0 +1,60 @@ +#!/bin/bash +#change time using hwclock and date -s + +clear + +echo -e -n "Please enter the date and time you wish to set\n" + +get_date () { + echo -e -n "enter the $1 please ($2-$3) (enter for $2)\n" + read -n $4 value + echo -e "\n" + #if enter + if [[ $value = "" ]]; then + value=$2 + fi + + #must be a $4 digits number between $2 and $3 + while [[ ! $value =~ ^[0-9]{$4} ]] || [[ ${value#0} -lt $2 ]] || [[ ${value#0} -gt $3 ]]; + do + echo -e -n "wrong $1, you enter "$value" please enter it again, must be a $4 digits number between $2 and $3 (press enter for $2) \n" + read -n $4 value + echo -e "\n" + if [[ $value = "" ]]; then + value=$2 + fi + done +} + +get_date "year" "2024" "2200" "4" +year=$value +get_date "month" "01" "12" "2" +month=$value +get_date "day" "01" "31" "2" +day=$value +get_date "hour" "00" "23" "2" +hour=$value +get_date "min" "00" "59" "2" +min=$value +get_date "sec" "00" "59" "2" +sec=$value + +##getting the output of date -s +OUTPUT=$(date -s "$year-$month-$day $hour:$min:$sec" 2>&1) + +##if output is starting with the letter d which is the beginning of the error message then we do the script again +if [[ ${OUTPUT} == d* ]]; then + echo "The date is not correct, press any key to set it again" + echo -e "\n" + read -n 1 noting + clear + change-time +else + hwclock -w + echo -e "the date has been sucessfully set to $year-$month-$day $hour:$min:$sec" + echo -e "\n" + + echo -e "press any key to return to the menu" + echo -e "\n" + read -n 1 nothing +fi \ No newline at end of file diff --git a/initrd/bin/gui-init b/initrd/bin/gui-init index dc9ec20da..8173fae6c 100755 --- a/initrd/bin/gui-init +++ b/initrd/bin/gui-init @@ -438,6 +438,7 @@ show_options_menu() 'C' ' Reencrypt LUKS container -->' \ 'P' ' Change LUKS Disk Recovery Key passphrase ->' \ 'R' ' Check/Update file hashes on root disk -->' \ + 'h' ' Change system time' \ 'x' ' Exit to recovery shell' \ 'r' ' <-- Return to main menu' \ 2>/tmp/whiptail || recovery "GUI menu failed" @@ -476,6 +477,9 @@ show_options_menu() R ) root-hashes-gui.sh ;; + h ) + change-time + ;; x ) recovery "User requested recovery shell" ;; From 01ba6ba83f056f408464d513b1e7efc55301282c Mon Sep 17 00:00:00 2001 From: alexgithublab Date: Thu, 25 Jul 2024 10:06:40 +0200 Subject: [PATCH 2/3] chmod --- initrd/bin/change-time | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 initrd/bin/change-time diff --git a/initrd/bin/change-time b/initrd/bin/change-time old mode 100644 new mode 100755 From 6acbd49b4ec8f92adaf4656b0a7339bd36807b5c Mon Sep 17 00:00:00 2001 From: alexgithublab Date: Thu, 25 Jul 2024 12:21:54 +0200 Subject: [PATCH 3/3] UTC statment + menu order --- initrd/bin/change-time | 2 ++ initrd/bin/gui-init | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/initrd/bin/change-time b/initrd/bin/change-time index af8f6de7f..d7719b7e8 100755 --- a/initrd/bin/change-time +++ b/initrd/bin/change-time @@ -4,6 +4,8 @@ clear echo -e -n "Please enter the date and time you wish to set\n" +echo -e -n "You need to set the time according to the UTC/GMT timezone please check https://time.is/UTC\n" + get_date () { echo -e -n "enter the $1 please ($2-$3) (enter for $2)\n" diff --git a/initrd/bin/gui-init b/initrd/bin/gui-init index 8173fae6c..75de07113 100755 --- a/initrd/bin/gui-init +++ b/initrd/bin/gui-init @@ -221,6 +221,7 @@ update_totp() If you have not just reflashed your BIOS, THIS COULD INDICATE TAMPERING!\n How would you like to proceed?" 0 80 4 \ 'g' ' Generate new HOTP/TOTP secret' \ + 'h' ' Change system time' \ 'i' ' Ignore error and continue to main menu' \ 'p' ' Reset the TPM' \ 'x' ' Exit to recovery shell' \ @@ -234,6 +235,9 @@ update_totp() generate_totp_hotp && update_totp && BG_COLOR_MAIN_MENU="normal" && reseal_tpm_disk_decryption_key fi ;; + h ) + change-time + ;; i ) skip_to_menu="true" return 1 @@ -430,6 +434,7 @@ show_options_menu() --menu "" 0 80 10 \ 'b' ' Boot Options -->' \ 't' ' TPM/TOTP/HOTP Options -->' \ + 'h' ' Change system time' \ 'u' ' Update checksums and sign all files in /boot' \ 'c' ' Change configuration settings -->' \ 'f' ' Flash/Update the BIOS -->' \ @@ -438,7 +443,6 @@ show_options_menu() 'C' ' Reencrypt LUKS container -->' \ 'P' ' Change LUKS Disk Recovery Key passphrase ->' \ 'R' ' Check/Update file hashes on root disk -->' \ - 'h' ' Change system time' \ 'x' ' Exit to recovery shell' \ 'r' ' <-- Return to main menu' \ 2>/tmp/whiptail || recovery "GUI menu failed" @@ -451,6 +455,9 @@ show_options_menu() t ) show_tpm_totp_hotp_options_menu ;; + h ) + change-time + ;; u ) prompt_update_checksums ;; @@ -477,9 +484,6 @@ show_options_menu() R ) root-hashes-gui.sh ;; - h ) - change-time - ;; x ) recovery "User requested recovery shell" ;;