From d5d13509ce1d4d6042f04c29276acd77b5a4839a Mon Sep 17 00:00:00 2001 From: AK-47 Date: Wed, 31 May 2023 17:49:00 +0000 Subject: [PATCH 1/2] Replaced the old MD5 method with checkmd5. --- Template/COMMON/initrd/bin/checkmd5 | Bin 0 -> 27224 bytes Template/COMMON/initrd/init | 73 +++++++----------- .../initrd/live/locale/xlat/en/init.xlat | 2 + 3 files changed, 31 insertions(+), 44 deletions(-) create mode 100755 Template/COMMON/initrd/bin/checkmd5 diff --git a/Template/COMMON/initrd/bin/checkmd5 b/Template/COMMON/initrd/bin/checkmd5 new file mode 100755 index 0000000000000000000000000000000000000000..b56aeee232d7eb82cbd46b3b9bee05fd9a0a5327 GIT binary patch literal 27224 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%0Dmlx0~3UVmsS3#c8 zOMWGn7tkUKa@bq`A<${+75I%xRo#Y!PB=6L~y|GnjzGTa`; zMQtGD#X2A$`vM5~WS3kK_QiVe51>(%g}hi-1QhECim=qX{hXlEoGs+VJT2gpTu%5e z$_ZEjKCJ-)7wdq4Rb0Ne|C}uS1R08@kQeKafMOjI_Iua=1uj2@D-`RRfMOjad0M-B z%fAX5#YC*bk_8AQ3%mFD{}PBI+TGwv(kf)k@)nE15s;lpiNb)%JTKr+ft%%5k2DGh zDE#GO-Tn*u`d;$l|DzGGpG8O-P}mjJH<2;h7yBRq#riMG_pbjYE-%_on#oIY*q@I_ zA>Z5nmR|C){+|;e-`jp;FZr3XjgkV2^F|>r;wJF@$l#BD*%%_4*!PM52c>s;feUyX zGKxuF;`>5rA!)nX-wf<3F62K4gW@m3)cqZBF27j_awy~k`2sT3cZIyzzli@Ahy6he z_(D!V(GEWY&um|O4}4<*7)ZJ7e)T5g1?&RLEHCz>l6yg>8dl-2c&O Nz#BzD&g_Ls{|U_5g);yE literal 0 HcmV?d00001 diff --git a/Template/COMMON/initrd/init b/Template/COMMON/initrd/init index d591fa3d..10033be1 100755 --- a/Template/COMMON/initrd/init +++ b/Template/COMMON/initrd/init @@ -59,6 +59,7 @@ TORAM_ALL_OTHER_FILES="boot EFI version" LOG_FILE="$LOG_DIR/initrd.log" MY_LOG=/init.log + CHECKMD5_LOG=/checkmd5.log VID_DIR="/etc/live/version" VID_FILE="$VID_DIR/linuxfs.ver" MAKE_OLD="rootfs xtra deb xtra.tgz linuxfs.md5 state" @@ -380,6 +381,9 @@ main_wrapper() { write_log_files $MY_LOG $NEW_ROOT/$LOG_FILE MY_LOG=$NEW_ROOT/$LOG_FILE.color + local new_checkmd5_log=$NEW_ROOT/$LOG_DIR/$(basename $CHECKMD5_LOG) + [ -f "$CHECKMD5_LOG" ] && cp -p "$CHECKMD5_LOG" "$new_checkmd5_log" + CHECKMD5_LOG=$new_checkmd5_log [ "$NO_SAVE_LOGS" ] || copy_live_logs "$NEW_ROOT" "$LOG_DIR" breakpoint b9 "Bash shell right before starting init" @@ -5091,64 +5095,45 @@ check_vid() { #------------------------------------------------------------------------------ check_md5() { - local dir=$1 passed="passed" failed="failed" + local dir=$1 [ ! -d "$dir" ] && dir=$(echo $1 | sed 's|\(.*\)/.*|\1|') dir=$(echo $dir | sed 's|/$||') if ! [ -d "$dir" ]; then msg $tbar err "Directory %s does not exist" "$(fqe $1)" - err "Can't perform %s check" md5 + err "Can't perform %s check" MD5 msg $tbar return 0 fi - local fcnt=0 + local fcnt=$(ls -1dp $dir/*.md5 | grep -v "/$" | wc -l) vmsg 2 $tbar - #. Check of files in directory - tsplash_alert_nc "$_Check_X_of_files_in_Y_directory_Please_be_patient_" md5 "$(fq $dir)" - - local file fname md5_file file_md5 true_md5 error - for fname in $(ls $dir); do - file=$dir/$fname - local size=$(du -sm $file | cut -f1) - md5_file="$file.md5" - [ -f "$md5_file" -a -f "$file" ] || continue - - local size_str="$nc_co($num_co$size$nc_co M)" - # vmsg 1 - vmsg 1 $tbar - vmsg_nc 1 "$_file_X_" "${nc_co}$fname $size_str" - fcnt=$(( fcnt + 1 )) - true_md5="$(head -n 1 $md5_file | cut -d" " -f1)" - - (bogo_meter)& - local pid=$! - file_md5=$(md5sum $file | cut -d" " -f1) - kill -9 $pid - - if [ "$file_md5" == "$true_md5" ]; then - vmsg_nc 1 "$_result_X_" "${ok_co}$passed" - else - vmsg_nc 1 "$_result_X_" "${err_co}$failed" - error=true - fi - - vmsg 6 " wanted: %s" "$num_co$true_md5" - vmsg 6 " got: %s" "$num_co$file_md5" - done + if tsplash_enabled; then + tsplash_alert_nc "$_Check_X_of_files_in_Y_directory_Please_be_patient_" MD5 "$(fq $dir)" + fi - vmsg 1 if [ "$fcnt" = 0 ]; then - #. No checksums were found in . Can't do any checks. - err "$_No_X_checksums_were_found_in_Y_Cant_do_any_Z_checks_" md5 "$(fqe $dir)" md5 - elif [ "$error" ]; then - non_fatal "$_At_least_one_X_checksum_did_not_match_" md5 - elif [ "$fcnt" = 1 ]; then - tsplash_alert "$_Success_The_file_passed_" + err "$_No_X_checksums_were_found_in_Y_Cant_do_any_Z_checks_" MD5 "$(fqe $dir)" MD5 else - #. Success! All file(s) passed - tsplash_alert "$_Success_All_X_files_passed_" $(nq $fcnt) + # openvt does not pass the exit value through. + tsplash_enabled && local back_tty=$(fgconsole) + [ "$back_tty" != "" ] && chvt $MY_TTY + (cd "$dir" && checkmd5 --log=$CHECKMD5_LOG *.md5) + local rc=$? + [ "$back_tty" != "" ] && chvt $back_tty + + if [ "$rc" = 1 ]; then + non_fatal "$_At_least_one_X_checksum_did_not_match_" MD5 + elif [ "$rc" = 2 ]; then + tsplash_alert "$_The_integrity_check_was_aborted_" + elif [ "$rc" != 0 ]; then + non_fatal "$_The_integrity_check_could_not_be_completed_" + elif [ "$fcnt" = 1 ]; then + tsplash_alert "$_Success_The_file_passed_" + else + tsplash_alert "$_Success_All_X_files_passed_" $(nq $fcnt) + fi fi vmsg 2 $tbar } diff --git a/Template/COMMON/initrd/live/locale/xlat/en/init.xlat b/Template/COMMON/initrd/live/locale/xlat/en/init.xlat index f114d5f6..3e2d9833 100644 --- a/Template/COMMON/initrd/live/locale/xlat/en/init.xlat +++ b/Template/COMMON/initrd/live/locale/xlat/en/init.xlat @@ -162,6 +162,8 @@ _The_default_is_="The default is" _The_device_X_already_has_label_Y_="The device %s already has label %s" _The_device_X_has_no_label_="The device %s has no label" _The_entered_passphrase_does_not_match_="The entered passphrase does not match" +_The_integrity_check_could_not_be_completed_="The integrity check could not be completed." +_The_integrity_check_was_aborted_="The integrity check was aborted." _The_limiting_factors_are_highlighted_in_X_="The limiting factors are highlighted in %s" _The_module_directory_X_is_missing_="The module directory %s is missing" _The_number_X_is_out_of_range_="The number <%s> is out of range" From c687f683f4e7d4cb213139828be037ce13676d2b Mon Sep 17 00:00:00 2001 From: AK-47 Date: Sat, 17 Aug 2024 12:09:42 +0000 Subject: [PATCH 2/2] Update checkmd5 for the latest improvements. --- Template/COMMON/initrd/bin/checkmd5 | Bin 27224 -> 23136 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Template/COMMON/initrd/bin/checkmd5 b/Template/COMMON/initrd/bin/checkmd5 index b56aeee232d7eb82cbd46b3b9bee05fd9a0a5327..be7d71ae8415d15f6ad84e9f129394c62d9b3d4e 100755 GIT binary patch literal 23136 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 SH|Owslkk7F6co$>sPbQHP<;yk literal 27224 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%0Dmlx0~3UVmsS3#c8 zOMWGn7tkUKa@bq`A<${+75I%xRo#Y!PB=6L~y|GnjzGTa`; zMQtGD#X2A$`vM5~WS3kK_QiVe51>(%g}hi-1QhECim=qX{hXlEoGs+VJT2gpTu%5e z$_ZEjKCJ-)7wdq4Rb0Ne|C}uS1R08@kQeKafMOjI_Iua=1uj2@D-`RRfMOjad0M-B z%fAX5#YC*bk_8AQ3%mFD{}PBI+TGwv(kf)k@)nE15s;lpiNb)%JTKr+ft%%5k2DGh zDE#GO-Tn*u`d;$l|DzGGpG8O-P}mjJH<2;h7yBRq#riMG_pbjYE-%_on#oIY*q@I_ zA>Z5nmR|C){+|;e-`jp;FZr3XjgkV2^F|>r;wJF@$l#BD*%%_4*!PM52c>s;feUyX zGKxuF;`>5rA!)nX-wf<3F62K4gW@m3)cqZBF27j_awy~k`2sT3cZIyzzli@Ahy6he z_(D!V(GEWY&um|O4}4<*7)ZJ7e)T5g1?&RLEHCz>l6yg>8dl-2c&O Nz#BzD&g_Ls{|U_5g);yE