1+ #! /bin/bash
2+ # Usage:
3+ #
4+ # Check package v3.0.0 availability for all platforms, no auth required:
5+ # > ./package_check.sh 3.0.0
6+ #
7+ # Check pkgs and download if present, with authentication:
8+ # > CERT=<cert-path> KEY=<key-path> DL=1 ./package_check.sh 3.0.0
9+ #
10+ # Required parameters:
11+ #
12+ # version: the version of agent you wish to search for i.e 3.0.0
13+ #
14+ # Optional parameters:
15+ #
16+ # PKG_REPO: The root url for the repository you wish to check, defaults to packages.nginx.org
17+ # CERT: Path to your cert file
18+ # KEY: Path to your key file
19+ # DL: Switch to download the package if it is present, set to 1 if download required, defaults to 0
20+ #
21+ # Packages are downloaded to the local directory with the path of its corresponding repo url + uri i.e
22+ #
23+ # packages.nginx.org/nginx-agent/debian/pool/agent/n/nginx-agent/nginx-agent_3.0.0~bullseye_arm64.deb
24+ #
25+
26+
27+ RED=' \033[0;31m'
28+ GREEN=' \033[0;32m'
29+ NC=' \033[0m' # No Color
30+
31+ CURL_OPTS=" "
32+ if [[ ! -z ${CERT} ]] && [[ ! -z ${KEY} ]]; then
33+ CURL_OPTS=" -E ${CERT} --key ${KEY} "
34+ fi
35+
36+ if [[ -z ${PKG_REPO} ]]; then
37+ echo " defaulting to packages.nginx.com"
38+ PKG_REPO=" packages.nginx.org"
39+ fi
40+
41+ PKG_NAME=" nginx-agent"
42+ VERSION=" ${1} "
43+ if [[ -z $VERSION ]]; then
44+ echo " no version provided"
45+ exit 1
46+ fi
47+
48+ PKG_DIR=" ${PKG_REPO} /${PKG_NAME} "
49+ PKG_REPO_URL=" https://${PKG_DIR} "
50+
51+ APK=(
52+ alpine/v3.21/main/aarch64/nginx-agent-$VERSION .apk
53+ alpine/v3.21/main/x86_64/nginx-agent-$VERSION .apk
54+ alpine/v3.20/main/aarch64/nginx-agent-$VERSION .apk
55+ alpine/v3.20/main/x86_64/nginx-agent-$VERSION .apk
56+ alpine/v3.18/main/aarch64/nginx-agent-$VERSION .apk
57+ alpine/v3.18/main/x86_64/nginx-agent-$VERSION .apk
58+ alpine/v3.19/main/aarch64/nginx-agent-$VERSION .apk
59+ alpine/v3.19/main/x86_64/nginx-agent-$VERSION .apk
60+ )
61+ UBUNTU=(
62+ ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~focal_arm64.deb
63+ ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~jammy_amd64.deb
64+ ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~noble_arm64.deb
65+ ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~jammy_arm64.deb
66+ ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~noble_amd64.deb
67+ ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~focal_amd64.deb
68+ )
69+ DEBIAN=(
70+ debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~bullseye_arm64.deb
71+ debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~bookworm_amd64.deb
72+ debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~bookworm_arm64.deb
73+ debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~bullseye_amd64.deb
74+ )
75+ AMZN=(
76+ amzn/2023/aarch64/RPMS/nginx-agent-$VERSION .amzn2023.ngx.aarch64.rpm
77+ amzn/2023/x86_64/RPMS/nginx-agent-$VERSION .amzn2023.ngx.x86_64.rpm
78+
79+ amzn2/2/aarch64/RPMS/nginx-agent-$VERSION .amzn2.ngx.aarch64.rpm
80+ amzn2/2/x86_64/RPMS/nginx-agent-$VERSION .amzn2.ngx.x86_64.rpm
81+ )
82+ SUSE=(
83+ sles/15/x86_64/RPMS/nginx-agent-$VERSION .sles15.ngx.x86_64.rpm
84+ sles/12/x86_64/RPMS/nginx-agent-$VERSION .sles12.ngx.x86_64.rpm
85+ )
86+ CENTOS=(
87+ centos/9/aarch64/RPMS/nginx-agent-$VERSION .el9.ngx.aarch64.rpm
88+ centos/9/x86_64/RPMS/nginx-agent-$VERSION .el9.ngx.x86_64.rpm
89+ centos/8/aarch64/RPMS/nginx-agent-$VERSION .el8.ngx.aarch64.rpm
90+ centos/8/x86_64/RPMS/nginx-agent-$VERSION .el8.ngx.x86_64.rpm
91+ )
92+
93+ uris=(
94+ ${DEBIAN[@]}
95+ ${UBUNTU[@]}
96+ ${CENTOS[@]}
97+ ${APK[@]}
98+ ${AMZN[@]}
99+ ${SUSE[@]}
100+ )
101+
102+ # # Check and download if nginx-agent packages are present in the repository
103+ check_pkgs () {
104+ for pkg in ${uris[@]} ; do
105+ echo -n " CHECK: ${PKG_REPO_URL} /${pkg} -> "
106+ local ret=$( curl -I -s ${CURL_OPTS} " https://${PKG_DIR} /${pkg} " | head -n1 | awk ' { print $2 }' )
107+ if [[ ${ret} != 200 ]]; then
108+ echo -e " ${RED}${ret}${NC} "
109+ continue
110+ fi
111+ echo -e " ${GREEN}${ret}${NC} "
112+
113+ if [[ ${DL} == 1 ]]; then
114+ dl_pkg " ${PKG_REPO_URL} /${pkg} "
115+ fi
116+
117+ done
118+ }
119+
120+ # # Download a package
121+ dl_pkg () {
122+ local url=${1}
123+ echo -n " GET: ${url} ... "
124+ mkdir -p " ${PKG_DIR} /$( dirname ${pkg} ) "
125+ local ret=$( curl -s ${CURL_OPTS} " ${url} " --output " ${PKG_DIR} /${pkg} " )
126+ if [[ $? != 0 ]]; then
127+ echo -e " ${RED} Download failed!${NC} "
128+ return
129+ fi
130+ echo -e " ${GREEN} Done${NC} "
131+ echo " SAVED: ${PKG_DIR} /${pkg} "
132+ }
133+
134+ # # Check for the presence of an nginx-agent version matching $VERSION
135+ check_repo () {
136+ echo -n " Checking package repository ${PKG_REPO_URL} ... "
137+ curl -s -I ${CURL_OPTS} " ${PKG_REPO_URL} /index.xml" > /dev/null
138+ if [[ $? != 0 ]]; then
139+ echo -e " ${RED} index.xml not found in ${PKG_REPO_URL} repository${NC} "
140+ exit 1
141+ else
142+ echo -e " ${GREEN} Found!${NC} "
143+ fi
144+
145+ mkdir -p ${PKG_DIR}
146+ curl -s ${CURL_OPTS} " ${PKG_REPO_URL} /index.xml" --output " ${PKG_DIR} /index.xml" || exit 1
147+
148+ echo -n " Checking for nginx-agent version ${VERSION} ... "
149+ grep -qnF " ver=\" ${VERSION} \" " " ${PKG_DIR} /index.xml"
150+ if [[ $? != 0 ]]; then
151+ echo -e " ${RED} not found${NC} "
152+ exit 1
153+ else
154+ echo -e " ${GREEN} Found!${NC} "
155+ fi
156+ }
157+
158+ check_repo
159+ check_pkgs
0 commit comments