Skip to content

Commit

Permalink
feat: add keylist cronjob
Browse files Browse the repository at this point in the history
  • Loading branch information
DhananjayPurohit committed May 23, 2024
1 parent 7275089 commit bc8973b
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 3 deletions.
14 changes: 11 additions & 3 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,26 +25,34 @@ jobs:
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Build and push
name: Build and push for mercury-server
uses: docker/build-push-action@v5
with:
context: .
file: ./server/Dockerfile
push: true
tags: commerceblockx/mercury-server:latest
-
name: Build and push
name: Build and push for token-server
uses: docker/build-push-action@v5
with:
context: .
file: ./token-server/Dockerfile
push: true
tags: commerceblockx/token-server:latest
-
name: Build and push
name: Build and pushh for mercury-explorer
uses: docker/build-push-action@v5
with:
context: .
file: ./explorer/Dockerfile
push: true
tags: commerceblockx/mercury-explorer:latest
-
name: Build and push for keylist-cronjob
uses: docker/build-push-action@v5
with:
context: .
file: ./keylistCron/Dockerfile
push: true
tags: commerceblockx/keylist-cronjob:latest
11 changes: 11 additions & 0 deletions keylistCron/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
FROM alpine:latest

RUN apk update && apk add --no-cache curl postgresql-client jq
WORKDIR /app

COPY ../keylistCron/send_commitment.sh .

RUN chmod +x /app/send_commitment.sh

# CMD to run cron and keep container running
CMD ["sh", "send_commitment.sh"]
1 change: 1 addition & 0 deletions keylistCron/crontab.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0 0 * * * /app/send_commitment.sh
45 changes: 45 additions & 0 deletions keylistCron/send_commitment.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/bin/bash

# Fetch keylist JSON from the provided URL
KEYLIST_JSON=$(curl -sSL "$KEYLIST_URL" | jq -r '.list_keyinfo' | sed 's/"/\\"/g')

# Check if the GET request was successful
if [[ $? -ne 0 ]]; then
echo "Error: Failed to retrieve keylist JSON from $KEYLIST_URL"
exit 1
fi

# Calculate SHA256 hash of the keylist JSON
KEYLIST_HASH=$(echo "$KEYLIST_JSON" | sha256sum | awk '{print $1}')

# Construct the POST request body
PAYLOAD="{
\"position\": \"$POSITION\",
\"token\": \"$TOKEN\",
\"commitment\": \"$KEYLIST_HASH\"
}"

# Send POST request to mainstay slot
curl --header "Content-Type: application/json" --request POST --data "$PAYLOAD" "$MAINSTAY_URL"

# Check if the POST request was successful
if [[ $? -ne 0 ]]; then
echo "Error: Failed to send attestation data to $MAINSTAY_URL"
exit 1
fi

echo "Keylist $KEYLIST_HASH attestation completed successfully!"

# Connect to the database and save the keylist JSON
PG_COMMAND="PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -d $DB_NAME -U $DB_USER -c \"CREATE TABLE IF NOT EXISTS keylist_info ( json_data TEXT NOT NULL, keylist_hash TEXT NOT NULL ); INSERT INTO keylist_info (json_data, keylist_hash) VALUES ('$KEYLIST_JSON', '$KEYLIST_HASH');\""

# Execute the PostgreSQL command
eval "$PG_COMMAND"

# Check if the command was successful
if [[ $? -ne 0 ]]; then
echo "Error: Failed to save keylist JSON to the database"
exit 1
fi

echo "Keylist JSON saved to the database successfully!"

0 comments on commit bc8973b

Please sign in to comment.