Fix key file permissions on Windows (msys2) (#17)

This commit is contained in:
Slava 2024-11-12 21:45:20 +02:00 committed by GitHub
parent 26d5d242b1
commit 1b21a39a73
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 69 additions and 39 deletions

View File

@ -57,38 +57,53 @@ show_start "Generate Ethereum private key..."
# Generate remote
generate_remote() {
message="Generating key using \e[31mremote\e[0m ${URL}"
show_progress "${message}"
response=$(curl -m 5 --fail -s ${URL} || true)
[[ -n "${response}" ]] && show_pass "${message}" || show_fail "${message}" "Failed to connect to ${URL}"
message="Saving private key to file"
show_progress "${message}"
if ! (awk -F ': ' '/private/ {print $2}' <<<"${response}" >"${key_file}") >/dev/null 2>&1; then
show_fail "${message}" "Failed to save address to file"
fi
show_pass "${message}"
message="Saving address to file"
show_progress "${message}"
if ! (awk -F ': ' '/address/ {print $2}' <<<"${response}" >"${address_file}") >/dev/null 2>&1; then
show_fail "${message}" "Failed to save private key to file"
fi
show_pass "${message}"
# Permissions
message="Setting private key file permissions"
message="Generating key using \e[31mremote\e[0m ${URL}"
show_progress "${message}"
if ! (chmod 600 "${key_file}") >/dev/null 2>&1; then
show_fail "${message}" "Failed to set private key file permissions"
response=$(curl -m 5 --fail -s ${URL} || true)
[[ -n "${response}" ]] && show_pass "${message}" || show_fail "${message}" "Failed to connect to ${URL}"
message="Saving private key to file"
show_progress "${message}"
if ! (awk -F ': ' '/private/ {print $2}' <<<"${response}" >"${key_file}") >/dev/null 2>&1; then
show_fail "${message}" "Failed to save address to file"
fi
show_pass "${message}"
# Show
address=$(cat ${address_file})
echo
echo -e " - private key - \e[90m${PWD}/\e[0m\e[94m${key_file}\e[0m"
echo -e " - address - \e[90m${PWD}/\e[0m\e[94m${address_file}\e[0m - \e[94m${address}\e[0m\n"
message="Saving address to file"
show_progress "${message}"
if ! (awk -F ': ' '/address/ {print $2}' <<<"${response}" >"${address_file}") >/dev/null 2>&1; then
show_fail "${message}" "Failed to save private key to file"
fi
show_pass "${message}"
# Permissions
message="Setting private key file permissions"
show_progress "${message}"
case "$(uname -s)" in
Linux*) OS="linux" ;;
Darwin*) OS="darwin" ;;
CYGWIN*|MINGW*|MSYS*) OS="windows" ;;
*) show_fail "${message}" "Unsupported OS: $(uname)" ;;
esac
if [[ $OS == "windows" ]]; then
if ! (icacls "${key_file}" /inheritance:r /grant:r `whoami`:F) >/dev/null 2>&1; then
show_fail "${message}" "Failed to set private key file permissions"
fi
show_pass "Setting private key file permissions"
else
if ! (chmod 600 "${key_file}") >/dev/null 2>&1; then
show_fail "${message}" "Failed to set private key file permissions"
fi
show_pass "${message}"
fi
# Show
address=$(cat ${address_file})
echo
echo -e " - private key file - \e[90m${PWD}/\e[0m\e[94m${key_file}\e[0m"
echo -e " - address file - \e[90m${PWD}/\e[0m\e[94m${address_file}\e[0m"
echo -e " - address - \e[0m\e[94m${address}\e[0m\n"
}
# Generate locally

37
run.sh
View File

@ -11,6 +11,9 @@ PASS_MARK="\033[0;32m\u2714\033[0m"
FAIL_MARK="\033[0;31m\u2718\033[0m"
NETWORK="${NETWORK:-testnet}"
# Disable argument conversion to Windows path
export MSYS_NO_PATHCONV=1
export CODEX_DATA_DIR="${CODEX_DATA_DIR:-./codex-data}"
export CODEX_STORAGE_QUOTA="${CODEX_STORAGE_QUOTA:-10g}"
export CODEX_NAT="${CODEX_NAT:-$(curl -s https://ip.codex.storage)}"
@ -97,21 +100,33 @@ fi
show_pass "${message}"
# Check private key permissions
message="Checking private key permissions"
message="Checking private key file permissions"
show_progress "${message}"
case $(uname) in
Linux) permissions=$(stat -c %a ${CODEX_ETH_PRIVATE_KEY}) ;;
Darwin) permissions=$(stat -f "%OLp" ${CODEX_ETH_PRIVATE_KEY}) ;;
CYGWIN*|MINGW*|MSYS*) permissions=$(stat -c %a ${CODEX_ETH_PRIVATE_KEY}) ;;
*) show_fail "${message}" "Unsupported OS: $(uname)" ;;
case "$(uname -s)" in
Linux*) permissions=$(stat -c %a ${CODEX_ETH_PRIVATE_KEY}) ;;
Darwin*) permissions=$(stat -f "%OLp" ${CODEX_ETH_PRIVATE_KEY}) ;;
CYGWIN*|MINGW*|MSYS*) permissions=$(icacls ${CODEX_ETH_PRIVATE_KEY}); OS="windows" ;;
*) show_fail "${message}" "Unsupported OS: $(uname)" ;;
esac
if [[ ${permissions} != "600" ]]; then
chmod 600 ${CODEX_ETH_PRIVATE_KEY}
show_pass "Setting private key permissions"
if [[ $OS == "windows" ]]; then
if ! grep "`whoami`:(F)" <<<"${permissions}" &> /dev/null; then
if ! (icacls "${CODEX_ETH_PRIVATE_KEY}" /inheritance:r /grant:r `whoami`:F) >/dev/null 2>&1; then
show_fail "${message}" "Failed to set private key file permissions"
fi
show_pass "Setting private key file permissions"
else
show_pass "${message}"
fi
else
show_pass "${message}"
if [[ ${permissions} != "600" ]]; then
if ! (chmod 600 "${CODEX_ETH_PRIVATE_KEY}") >/dev/null 2>&1; then
show_fail "${message}" "Failed to set private key file permissions"
fi
show_pass "Setting private key file permissions"
else
show_pass "${message}"
fi
fi
# Network