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

@ -79,16 +79,31 @@ show_pass "${message}"
# Permissions # Permissions
message="Setting private key file permissions" message="Setting private key file permissions"
show_progress "${message}" 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 if ! (chmod 600 "${key_file}") >/dev/null 2>&1; then
show_fail "${message}" "Failed to set private key file permissions" show_fail "${message}" "Failed to set private key file permissions"
fi fi
show_pass "${message}" show_pass "${message}"
fi
# Show # Show
address=$(cat ${address_file}) address=$(cat ${address_file})
echo echo
echo -e " - private key - \e[90m${PWD}/\e[0m\e[94m${key_file}\e[0m" echo -e " - private key file - \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" 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 # Generate locally

33
run.sh
View File

@ -11,6 +11,9 @@ PASS_MARK="\033[0;32m\u2714\033[0m"
FAIL_MARK="\033[0;31m\u2718\033[0m" FAIL_MARK="\033[0;31m\u2718\033[0m"
NETWORK="${NETWORK:-testnet}" 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_DATA_DIR="${CODEX_DATA_DIR:-./codex-data}"
export CODEX_STORAGE_QUOTA="${CODEX_STORAGE_QUOTA:-10g}" export CODEX_STORAGE_QUOTA="${CODEX_STORAGE_QUOTA:-10g}"
export CODEX_NAT="${CODEX_NAT:-$(curl -s https://ip.codex.storage)}" export CODEX_NAT="${CODEX_NAT:-$(curl -s https://ip.codex.storage)}"
@ -97,22 +100,34 @@ fi
show_pass "${message}" show_pass "${message}"
# Check private key permissions # Check private key permissions
message="Checking private key permissions" message="Checking private key file permissions"
show_progress "${message}" show_progress "${message}"
case "$(uname -s)" in
case $(uname) in Linux*) permissions=$(stat -c %a ${CODEX_ETH_PRIVATE_KEY}) ;;
Linux) permissions=$(stat -c %a ${CODEX_ETH_PRIVATE_KEY}) ;; Darwin*) permissions=$(stat -f "%OLp" ${CODEX_ETH_PRIVATE_KEY}) ;;
Darwin) permissions=$(stat -f "%OLp" ${CODEX_ETH_PRIVATE_KEY}) ;; CYGWIN*|MINGW*|MSYS*) permissions=$(icacls ${CODEX_ETH_PRIVATE_KEY}); OS="windows" ;;
CYGWIN*|MINGW*|MSYS*) permissions=$(stat -c %a ${CODEX_ETH_PRIVATE_KEY}) ;;
*) show_fail "${message}" "Unsupported OS: $(uname)" ;; *) show_fail "${message}" "Unsupported OS: $(uname)" ;;
esac esac
if [[ ${permissions} != "600" ]]; then if [[ $OS == "windows" ]]; then
chmod 600 ${CODEX_ETH_PRIVATE_KEY} if ! grep "`whoami`:(F)" <<<"${permissions}" &> /dev/null; then
show_pass "Setting private key permissions" 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 else
show_pass "${message}" show_pass "${message}"
fi fi
else
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 # Network
message="Defining network specific settings" message="Defining network specific settings"