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