Skip to content

Commit 7b2d749

Browse files
committed
add verifier script
1 parent c58156b commit 7b2d749

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed

scripts/packages/package-check.sh

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
#!/bin/bash
2+
# Script to help check for the presence of nginx-agent packages
3+
4+
RED='\033[0;31m'
5+
GREEN='\033[0;32m'
6+
NC='\033[0m' # No Color
7+
8+
if [[ -z ${CERT} ]] || [[ -z ${KEY} ]]; then
9+
echo "Missing required credential"
10+
exit 1
11+
fi
12+
13+
if [[ -z ${PKG_REPO} ]]; then
14+
echo "defaulting to packages.nginx.com"
15+
PKG_REPO="packages.nginx.org"
16+
fi
17+
18+
PKG_NAME="nginx-agent"
19+
VERSION="${1}"
20+
if [[ -z $VERSION ]]; then
21+
echo "no version provided"
22+
exit 1
23+
fi
24+
25+
PKG_DIR="${PKG_REPO}/${PKG_NAME}"
26+
PKG_REPO_URL="https://${PKG_DIR}"
27+
28+
# parsing xml in bash
29+
#read_dom () {
30+
# local IFS=\>
31+
# read -d \< ENTITY CONTENT
32+
# local ret=$?
33+
# TAG_NAME=${ENTITY%% *}
34+
# ATTRIBUTES=${ENTITY#* }
35+
# return $ret
36+
#}
37+
#
38+
#while read_dom; do
39+
# if
40+
#done < ${PKG_REPO}/index.xml
41+
42+
APK=(
43+
alpine/v3.21/main/aarch64/nginx-agent-$VERSION.apk
44+
alpine/v3.21/main/x86_64/nginx-agent-$VERSION.apk
45+
alpine/v3.20/main/aarch64/nginx-agent-$VERSION.apk
46+
alpine/v3.20/main/x86_64/nginx-agent-$VERSION.apk
47+
alpine/v3.18/main/aarch64/nginx-agent-$VERSION.apk
48+
alpine/v3.18/main/x86_64/nginx-agent-$VERSION.apk
49+
alpine/v3.19/main/aarch64/nginx-agent-$VERSION.apk
50+
alpine/v3.19/main/x86_64/nginx-agent-$VERSION.apk
51+
)
52+
UBUNTU=(
53+
ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~focal_arm64.deb
54+
ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~jammy_amd64.deb
55+
ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~noble_arm64.deb
56+
ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~jammy_arm64.deb
57+
ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~noble_amd64.deb
58+
ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION~focal_amd64.deb
59+
)
60+
DEBIAN=(
61+
debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION~bullseye_arm64.deb
62+
debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION~bookworm_amd64.deb
63+
debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION~bookworm_arm64.deb
64+
debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION~bullseye_amd64.deb
65+
)
66+
AMZN=(
67+
amzn/2023/aarch64/RPMS/nginx-agent-$VERSION.amzn2023.ngx.aarch64.rpm
68+
amzn/2023/x86_64/RPMS/nginx-agent-$VERSION.amzn2023.ngx.x86_64.rpm
69+
70+
amzn2/2/aarch64/RPMS/nginx-agent-$VERSION.amzn2.ngx.aarch64.rpm
71+
amzn2/2/x86_64/RPMS/nginx-agent-$VERSION.amzn2.ngx.x86_64.rpm
72+
)
73+
SUSE=(
74+
sles/15/x86_64/RPMS/nginx-agent-$VERSION.sles15.ngx.x86_64.rpm
75+
sles/12/x86_64/RPMS/nginx-agent-$VERSION.sles12.ngx.x86_64.rpm
76+
)
77+
CENTOS=(
78+
centos/9/aarch64/RPMS/nginx-agent-$VERSION.el9.ngx.aarch64.rpm
79+
centos/9/x86_64/RPMS/nginx-agent-$VERSION.el9.ngx.x86_64.rpm
80+
centos/8/aarch64/RPMS/nginx-agent-$VERSION.el8.ngx.aarch64.rpm
81+
centos/8/x86_64/RPMS/nginx-agent-$VERSION.el8.ngx.x86_64.rpm
82+
)
83+
84+
resources=(
85+
${DEBIAN[@]}
86+
${UBUNTU[@]}
87+
${CENTOS[@]}
88+
${APK[@]}
89+
${AMZN[@]}
90+
${SUSE[@]}
91+
)
92+
93+
## Check if nginx-agent packages are present and report missing or outdated files
94+
check_pkgs () {
95+
for pkg in ${resources[@]}; do
96+
echo -n "CHECK: ${PKG_REPO_URL}/${pkg} -> "
97+
local ret=$(curl -I -s -E "${CERT}" --key "${KEY}" "https://${PKG_DIR}/${pkg}" | head -n1 | awk '{ print $2 }')
98+
if [[ ${ret} != 200 ]]; then
99+
echo -e "${RED}${ret}${NC}"
100+
continue
101+
fi
102+
echo -e "${GREEN}${ret}${NC}"
103+
104+
if [[ ${DL} == 1 ]]; then
105+
dl_pkg "${PKG_REPO_URL}/${pkg}"
106+
fi
107+
108+
done
109+
}
110+
111+
dl_pkg () {
112+
local url=${1}
113+
echo -n "GET: ${url}"
114+
mkdir -p "${PKG_DIR}/$(dirname ${pkg})"
115+
curl -s -E "${CERT}" --key "${KEY}" "https://${PKG_DIR}/${pkg}" --output "${PKG_DIR}/${pkg}" && echo -e " ${GREEN}Done${NC}" || echo -e " ${RED}Download failed!${NC}"
116+
}
117+
118+
check_repo() {
119+
echo -n "Checking package repository ${PKG_REPO_URL}... "
120+
curl -s -I -E "${CERT}" --key "${KEY}" "${PKG_REPO_URL}/index.xml" > /dev/null
121+
if [[ $? != 0 ]]; then
122+
echo -e "${RED}*** Error: index.xml not found in $PKG_REPO repository ***${NC}"
123+
exit 1
124+
else
125+
echo -e "${GREEN}Found!${NC}"
126+
fi
127+
128+
mkdir -p ${PKG_DIR}
129+
curl -s -E "${CERT}" --key "${KEY}" "${PKG_REPO_URL}/index.xml" --output "${PKG_DIR}/index.xml" || exit 2
130+
131+
echo -n "Checking for nginx-agent version ${VERSION}... "
132+
grep -qnF "ver=\"${VERSION}\"" "${PKG_DIR}/index.xml"
133+
if [[ $? != 0 ]]; then
134+
echo -e "${RED}*** Error: ${PKG_NAME} v${VERSION} not found in ${PKG_REPO} ***${NC}"
135+
exit 1
136+
else
137+
echo -e "${GREEN}Found!${NC}"
138+
fi
139+
}
140+
141+
check_repo
142+
check_pkgs

0 commit comments

Comments
 (0)