-
Notifications
You must be signed in to change notification settings - Fork 10
85 lines (73 loc) · 2.83 KB
/
check_bootnodes_enrs.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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 yq
uses: mikefarah/yq@master
- 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: 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 "Processing file: $FILE"
# Parse non empty and non comment lines
if [[ "$FILE" == *".yaml" ]]; then
LINES=$(yq eval '.[]' "$FILE" | grep -v -E '^[[:space:]]*(#|$)')
elif [[ "$FILE" == *".txt" ]]; then
LINES=$(grep -v -E '^[[:space:]]*(#|$)' "$FILE")
else
echo "Unsupported file type: $FILE"
exit 1
fi
# Process lines
while IFS= read -r LINE; do
# Check if the line contains the "enr" prefix
if [[ -z "$LINE" ]]; then
continue
elif [[ "$LINE" != *enr:* ]]; then
echo "Error: Line is not proper enr string: in file: $FILE\nLine: $LINE"
exit 1
fi
# Parse actual "enr" strings after the "enr:" prefix
ENR_STRING=$(echo "$LINE" | grep -o 'enr:[^[:space:]]*' | cut -d ':' -f2- | sed 's/^ *//')
echo "Processing line: $ENR_STRING"
# Use enr-cli read to validate the actual "enr" strings
enr-cli read "$ENR_STRING" 1>/dev/null || {
echo "Error: enr-cli read failed for line: $ENR_STRING in file: $FILE"
exit 1
}
done <<< "$LINES"
done