From 5e07495d9ba748bc7bb332a1bc2b0bfbf2bb32fd Mon Sep 17 00:00:00 2001 From: Mikhail Tergoev Date: Mon, 30 Jun 2025 19:51:18 +0300 Subject: [PATCH] added check sha256sum for saved files --- winehelper | 111 ++++++++++++++++++++++++++--------------------------- 1 file changed, 55 insertions(+), 56 deletions(-) diff --git a/winehelper b/winehelper index ee04152..17d97c3 100755 --- a/winehelper +++ b/winehelper @@ -294,31 +294,46 @@ read_page () { fi } -try_download () { - local DOWNLOAD_FILE_URL="${1// /%20}" - local OUTPUT_FILE="$2" - local OUTPUT_FILE_NAME="$(basename "$OUTPUT_FILE")" +check_file_sum () { + local sha256sum_ext sha256sum_int check_file_path check_file_name + check_file_path="$1" + check_file_name="$(basename "$check_file_path")" - print_info "Скачивание файла $OUTPUT_FILE_NAME..." - if curl -f --progress-bar -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" \ - -L "$DOWNLOAD_FILE_URL" -o "$OUTPUT_FILE" - then - print_ok "Скачивание файла $OUTPUT_FILE_NAME прошло успешно." - if [[ "$3" == check256sum ]] ; then - SHA256SUM_EXT=$(sha256sum "$OUTPUT_FILE" | awk '{print $1}') - SHA256SUM_INT="$(grep "$OUTPUT_FILE_NAME" "$DATA_PATH/sha256sum.list" | awk '{print $1}')" - if [[ "$SHA256SUM_EXT" == "$SHA256SUM_INT" ]] ; then - print_ok "Хэш-сумма файла $OUTPUT_FILE_NAME успешно проверена." - return 0 - else - fatal "Хэш-сумма файла $OUTPUT_FILE_NAME не совподает!" - return 1 - fi - fi + sha256sum_ext=$(sha256sum "$check_file_path" | awk '{print $1}') + sha256sum_int="$(grep "$check_file_name" "$DATA_PATH/sha256sum.list" | awk '{print $1}')" + + if [[ "$sha256sum_ext" == "$sha256sum_int" ]] ; then + print_ok "Хэш-сумма файла $check_file_name успешно проверена." return 0 else - fatal "Скачивание файла: $OUTPUT_FILE_NAME завершилось с ошибкой!" - return 1 + try_remove_file "$check_file_path" + fatal "Хэш-сумма файла $check_file_name не совподает!" + fi +} + +try_download () { + local download_file_url output_file output_file_name + download_file_url="${1// /%20}" + output_file="$2" + output_file_name="$(basename "$output_file")" + + if [[ -f "$output_file" ]] ; then + print_info "Файл найден: $output_file" + [[ $3 == "check256sum" ]] && check_file_sum "$output_file" + return 0 + else + print_info "Скачивание файла $output_file_name..." + if curl -f --progress-bar -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" \ + -L "$download_file_url" -o "$output_file" + then + print_ok "Скачивание файла $output_file_name прошло успешно." + [[ $3 == "check256sum" ]] && check_file_sum "$output_file" + return 0 + else + try_remove_file "$output_file" + fatal "Скачивание файла: $output_file_name завершилось с ошибкой!" + return 1 + fi fi } @@ -681,11 +696,11 @@ init_wine_ver () { if [[ ! -d "$WINEDIR" ]] ; then WINE_URL="$CLOUD_URL/$WH_WINE_USE.tar.xz" local WINE_PACKAGE="$WH_TMP_DIR/${WH_WINE_USE}.tar.xz" - if try_download "$WINE_URL" "$WINE_PACKAGE" check256sum ; then - if unpack "$WINE_PACKAGE" "$WH_DIST_DIR/" ; then - echo "$WH_WINE_USE" > "$WH_DIST_DIR/$WH_WINE_USE/version" - try_remove_file "$WINE_PACKAGE" - fi + if try_download "$WINE_URL" "$WINE_PACKAGE" check256sum \ + && unpack "$WINE_PACKAGE" "$WH_DIST_DIR/" + then + echo "$WH_WINE_USE" > "$WH_DIST_DIR/$WH_WINE_USE/version" + try_remove_file "$WINE_PACKAGE" fi fi @@ -730,15 +745,8 @@ init_wine_ver () { CPCSP_PROXY_NAME="wine-cpcsp_proxy-$CPCSP_PROXY_VER" CPCSP_PROXY_URL="$CLOUD_URL/$CPCSP_PROXY_NAME.tar.xz" - if [[ ! -f "$WH_TMP_DIR/$CPCSP_PROXY_NAME" ]] ; then - print_info "Загрузка $CPCSP_PROXY_NAME.tar.xz" - if try_download "$CPCSP_PROXY_URL" "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" check256sum - then unpack "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" "$WH_TMP_DIR" - else try_remove_file "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" - fi - else - unpack "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" "$WH_TMP_DIR" - fi + try_download "$CPCSP_PROXY_URL" "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" check256sum + unpack "$WH_TMP_DIR/$CPCSP_PROXY_NAME.tar.xz" "$WH_TMP_DIR" cp -fr "$WH_TMP_DIR/$CPCSP_PROXY_NAME/"i386-* "${WINEDIR}/lib/wine/" if [[ -d "${WINEDIR}/lib64" ]] ; then @@ -873,23 +881,15 @@ wait_wineserver () { } get_base_pfx () { - local FILE_NAME_PFX="$1" - local PFX_URL="$CLOUD_URL/${FILE_NAME_PFX}.tar.xz" - local PFX_TMP="$WH_TMP_DIR/pfx" - create_new_dir "$PFX_TMP" + local pfx_file_name pfx_file_url pfx_tmp_path + pfx_file_name="${1}.tar.xz" + pfx_file_url="$CLOUD_URL/$pfx_file_name" + pfx_tmp_path="$WH_TMP_DIR/pfx" - if [[ ! -f "$PFX_TMP/$FILE_NAME_PFX.tar.xz" ]] ; then - print_info "Загрузка базового префикса: ${FILE_NAME_PFX}" - if try_download "$PFX_URL" "$PFX_TMP/$FILE_NAME_PFX.tar.xz" check256sum - then unpack --skip-xattr "$PFX_TMP/$FILE_NAME_PFX.tar.xz" "$WINEPREFIX/" - else try_remove_file "$PFX_TMP/$FILE_NAME_PFX.tar.xz" - fi - else - if ! unpack --skip-xattr "$PFX_TMP/$FILE_NAME_PFX.tar.xz" "$WINEPREFIX/" ; then - try_remove_file "${PFX_TMP}/${FILE_NAME_PFX}.tar.xz" - get_base_pfx "$FILE_NAME_PFX" - fi - fi + create_new_dir "$pfx_tmp_path" + print_info "Загрузка архива базового префикса: $pfx_file_name" + try_download "$pfx_file_url" "$pfx_tmp_path/$pfx_file_name" check256sum + unpack --skip-xattr "$pfx_tmp_path/$pfx_file_name" "$WINEPREFIX/" } check_prefix_var () { @@ -1080,12 +1080,11 @@ init_wineprefix () { if [[ $WH_USE_EXTRA_FONTS == "1" ]] \ && [[ ! -e "$fonts_dir/${x_fonts_name}.installed" ]] then - print_info "Устанавливаем дополнительные шрифты..." local x_fonts_url="$CLOUD_URL/${x_fonts_name}.tar.xz" local x_fonts_tar="$WH_TMP_DIR/${x_fonts_name}.tar.xz" - if [[ ! -f "$x_fonts_tar" ]] ; then - try_download "$x_fonts_url" "$x_fonts_tar" check256sum - fi + + print_info "Устанавливаем дополнительные шрифты..." + try_download "$x_fonts_url" "$x_fonts_tar" check256sum unpack "$x_fonts_tar" "$fonts_dir/" touch "$fonts_dir/${x_fonts_name}.installed" fi