-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathalgolia-analyze.sh
More file actions
45 lines (45 loc) Β· 2.01 KB
/
algolia-analyze.sh
File metadata and controls
45 lines (45 loc) Β· 2.01 KB
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
#!/bin/bash
APP_ID=$1
API_KEY=$2
if [[ -z "$APP_ID" || -z "$API_KEY" ]]; then
echo "Usage: $0 <APP_ID> <API_KEY>"
exit 1
fi
echo "π Fetching key details..."
KEY_DETAILS=$(curl -s "https://$APP_ID.algolia.net/1/keys/$API_KEY" \
-H "accept: application/json" \
-H "x-algolia-api-key: $API_KEY" \
-H "x-algolia-application-id: $APP_ID")
if [[ -z "$KEY_DETAILS" ]]; then
echo "β No key details found. Make sure the key is valid."
exit 1
fi
# Parse ACLs
ACL=$(echo "$KEY_DETAILS" | jq -r '.acl[]' | paste -sd "," -)
DESCRIPTION=$(echo "$KEY_DETAILS" | jq -r '.description // "N/A"')
INDEXES=$(echo "$KEY_DETAILS" | jq -r '.indexes[]' 2>/dev/null | paste -sd "," -)
INDEXES=${INDEXES:-"*"}
QUERIES_PER_HOUR=$(echo "$KEY_DETAILS" | jq -r '.maxQueriesPerIPPerHour // "Unlimited"')
HITS_PER_QUERY=$(echo "$KEY_DETAILS" | jq -r '.maxHitsPerQuery // "Unlimited"')
VALIDITY=$(echo "$KEY_DETAILS" | jq -r '.validity')
VALIDITY_READABLE=$([[ "$VALIDITY" == "0" ]] && echo "Never expires" || echo "$VALIDITY seconds")
CREATED_AT=$(echo "$KEY_DETAILS" | jq -r '.createdAt')
# Permission checks
has_acl() {
echo "$ACL" | grep -q "$1"
}
echo -e "\nπ Algolia API Key Access Report"
echo "----------------------------------"
echo "πΈ Description : $DESCRIPTION"
echo "πΈ Index Scope : $INDEXES"
echo "πΈ Created At : $CREATED_AT"
echo "πΈ Validity : $VALIDITY_READABLE"
echo "πΈ Rate Limit : $QUERIES_PER_HOUR QPH/IP | $HITS_PER_QUERY hits/query"
echo ""
echo "π Access Flags:"
printf " - Search Access : %s\n" $(has_acl "search" && echo "β
" || echo "β")
printf " - Write Access : %s\n" $(echo "$ACL" | grep -Eq 'addObject|deleteObject|editSettings|deleteIndex' && echo "β
" || echo "β")
printf " - Admin Access : %s\n" $(has_acl "addIndex" && has_acl "deleteIndex" && echo "$INDEXES" | grep -q "*" && echo "β
" || echo "β")
printf " - Analytics : %s\n" $(has_acl "analytics" && echo "β
" || echo "β")
printf " - Logs Access : %s\n" $(has_acl "logs" && echo "β
" || echo "β")
echo ""