fix: remove enr padding #37
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Check Bootnodes ENRs | |
on: | |
pull_request: | |
branches: | |
- main | |
jobs: | |
check_enrs: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Install protobuf-compiler | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y protobuf-compiler | |
- name: Install enr-cli | |
run: cargo install enr-cli | |
- name: Install .yaml parser | |
run: wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq && chmod +x /usr/bin/yq | |
- name: Check bootnodes ENRs for padding | |
run: | | |
files_with_padding="" | |
for FILE in $(find . -type f \( -name 'bootnodes.yaml' -o -name 'bootstrap_nodes.txt' \)); do | |
echo "Checking paddings in file: $FILE" | |
while read -r LINE; do | |
if [[ "$LINE" =~ enr: ]]; then | |
BASE64_STRING=${LINE#enr:} | |
if [[ "$BASE64_STRING" =~ = ]]; then | |
if [[ "$files_with_padding" != *"$FILE"* ]]; then | |
echo "Error: ENR in $FILE contains padding: $LINE" | |
files_with_padding="$files_with_padding $FILE" | |
fi | |
fi | |
fi | |
done < "$FILE" | |
done | |
if [ -n "$files_with_padding" ]; then | |
echo "Error: Bootnodes ENR strings contain padding in the following files:" | |
echo "$files_with_padding" | |
exit 1 | |
fi | |
- name: Check ENR Strings with enr-cli | |
run: | | |
for FILE in $(find . -type f \( -name 'bootnodes.yaml' -o -name 'bootstrap_nodes.txt' \)); do | |
echo "Testing decoding in file: $FILE" | |
while IFS= read -r LINE; do | |
if [[ "$LINE" =~ enr: ]]; then | |
if [[ "$FILE" == *".yaml" ]]; then | |
BASE64_STRING=${LINE#enr:} | |
elif [[ "$FILE" == *".txt" ]]; then | |
BASE64_STRING=$(echo "$LINE" | grep -o 'enr:.*') | |
else | |
echo "Unsupported file type: $FILE" | |
exit 1 | |
fi | |
BASE64_STRING=$(echo "$BASE64_STRING" | awk '{gsub(/"/, "", $0); print}') | |
if [[ -n "$BASE64_STRING" ]]; then | |
enr-cli read "$BASE64_STRING" 1>/dev/null | |
if [ $? -ne 0 ]; then | |
echo "Error: ENR could not be decoded in $FILE: enr:$BASE64_STRING" | |
exit 1 | |
fi | |
fi | |
fi | |
done < "$FILE" | |
done |