mirror of https://github.com/ghostfolio/ghostfolio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
43 lines
1.1 KiB
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [[ -z "${HOSTINGER_API_KEY:-}" ]]; then
|
|
echo "HOSTINGER_API_KEY is missing"
|
|
exit 1
|
|
fi
|
|
|
|
tmp_file="$(mktemp)"
|
|
status_code="$(curl -sS -o "${tmp_file}" -w "%{http_code}" \
|
|
-H "Authorization: Bearer ${HOSTINGER_API_KEY}" \
|
|
"https://developers.hostinger.com/api/vps/v1/virtual-machines")"
|
|
|
|
if [[ "${status_code}" != "200" ]]; then
|
|
echo "Hostinger API check failed (status ${status_code})"
|
|
cat "${tmp_file}"
|
|
rm -f "${tmp_file}"
|
|
exit 1
|
|
fi
|
|
|
|
node -e '
|
|
const fs = require("fs");
|
|
const filePath = process.argv[1];
|
|
const payload = JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
if (!Array.isArray(payload)) {
|
|
console.log("Hostinger payload is not an array");
|
|
process.exit(1);
|
|
}
|
|
const running = payload.filter((item) => item.state === "running");
|
|
const summary = {
|
|
runningCount: running.length,
|
|
totalCount: payload.length,
|
|
vps: payload.map((item) => ({
|
|
id: item.id,
|
|
plan: item.plan,
|
|
state: item.state,
|
|
hostname: item.hostname
|
|
}))
|
|
};
|
|
console.log(JSON.stringify(summary, null, 2));
|
|
' "${tmp_file}"
|
|
|
|
rm -f "${tmp_file}"
|
|
|