fix(auth): correctly handle unlimited users in auth script

This commit is contained in:
Whispering Wind
2025-08-08 01:32:39 +03:30
committed by GitHub
parent 5bcbf0abb3
commit 073c8ed787

View File

@ -13,13 +13,13 @@ MAX_DOWNLOAD_BYTES=$(jq -r --arg user "$USERNAME" '.[$user].max_download_bytes'
EXPIRATION_DAYS=$(jq -r --arg user "$USERNAME" '.[$user].expiration_days' "$USERS_FILE") EXPIRATION_DAYS=$(jq -r --arg user "$USERNAME" '.[$user].expiration_days' "$USERS_FILE")
ACCOUNT_CREATION_DATE=$(jq -r --arg user "$USERNAME" '.[$user].account_creation_date' "$USERS_FILE") ACCOUNT_CREATION_DATE=$(jq -r --arg user "$USERNAME" '.[$user].account_creation_date' "$USERS_FILE")
BLOCKED=$(jq -r --arg user "$USERNAME" '.[$user].blocked' "$USERS_FILE") BLOCKED=$(jq -r --arg user "$USERNAME" '.[$user].blocked' "$USERS_FILE")
CURRENT_DOWNLOAD_BYTES=$(jq -r --arg user "$USERNAME" '.[$user].download_bytes' "$USERS_FILE") CURRENT_DOWNLOAD_BYTES=$(jq -r --arg user "$USERNAME" '.[$user].download_bytes // 0' "$USERS_FILE")
CURRENT_UPLOAD_BYTES=$(jq -r --arg user "$USERNAME" '.[$user].upload_bytes' "$USERS_FILE") CURRENT_UPLOAD_BYTES=$(jq -r --arg user "$USERNAME" '.[$user].upload_bytes // 0' "$USERS_FILE")
TOTAL_BYTES=$((CURRENT_DOWNLOAD_BYTES + CURRENT_UPLOAD_BYTES)) TOTAL_BYTES=$((CURRENT_DOWNLOAD_BYTES + CURRENT_UPLOAD_BYTES))
if [ "$BLOCKED" == "true" ]; then if [ "$BLOCKED" == "true" ]; then
sleep 20 sleep 20
exit 1 exit 1
fi fi
@ -28,22 +28,26 @@ if [ "$STORED_PASSWORD" != "$PASSWORD" ]; then
exit 1 exit 1
fi fi
CURRENT_DATE=$(date +%s) if [ "$EXPIRATION_DAYS" -ne 0 ]; then
EXPIRATION_DATE=$(date -d "$ACCOUNT_CREATION_DATE + $EXPIRATION_DAYS days" +%s) CURRENT_DATE=$(date +%s)
EXPIRATION_DATE=$(date -d "$ACCOUNT_CREATION_DATE + $EXPIRATION_DAYS days" +%s)
if [ "$CURRENT_DATE" -ge "$EXPIRATION_DATE" ]; then if [ "$CURRENT_DATE" -ge "$EXPIRATION_DATE" ]; then
jq --arg user "$USERNAME" '.[$user].blocked = true' "$USERS_FILE" > temp.json && mv temp.json "$USERS_FILE" jq --arg user "$USERNAME" '.[$user].blocked = true' "$USERS_FILE" > temp.json && mv temp.json "$USERS_FILE"
exit 1 exit 1
fi
fi fi
if [ "$TOTAL_BYTES" -ge "$MAX_DOWNLOAD_BYTES" ]; then if [ "$MAX_DOWNLOAD_BYTES" -ne 0 ]; then
SECRET=$(jq -r '.trafficStats.secret' "$CONFIG_FILE") if [ "$TOTAL_BYTES" -ge "$MAX_DOWNLOAD_BYTES" ]; then
KICK_ENDPOINT="http://127.0.0.1:25413/kick" SECRET=$(jq -r '.trafficStats.secret' "$CONFIG_FILE")
curl -s -H "Authorization: $SECRET" -X POST -d "[\"$USERNAME\"]" "$KICK_ENDPOINT" KICK_ENDPOINT="http://127.0.0.1:25413/kick"
curl -s -H "Authorization: $SECRET" -X POST -d "[\"$USERNAME\"]" "$KICK_ENDPOINT"
jq --arg user "$USERNAME" '.[$user].blocked = true' "$USERS_FILE" > temp.json && mv temp.json "$USERS_FILE" jq --arg user "$USERNAME" '.[$user].blocked = true' "$USERS_FILE" > temp.json && mv temp.json "$USERS_FILE"
exit 1 exit 1
fi
fi fi
echo "$USERNAME" echo "$USERNAME"
exit 0 exit 0