security: remove all hardcoded API keys, require from environment
This commit is contained in:
@@ -5,9 +5,9 @@ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
CLI_PY="$ROOT_DIR/cli/client.py"
|
||||
|
||||
AITBC_URL="${AITBC_URL:-http://127.0.0.1:18000}"
|
||||
CLIENT_KEY="${CLIENT_KEY:-REDACTED_CLIENT_KEY}"
|
||||
ADMIN_KEY="${ADMIN_KEY:-REDACTED_ADMIN_KEY}"
|
||||
MINER_KEY="${MINER_KEY:-REDACTED_MINER_KEY}"
|
||||
CLIENT_KEY="${CLIENT_KEY:?Set CLIENT_KEY env var}"
|
||||
ADMIN_KEY="${ADMIN_KEY:?Set ADMIN_KEY env var}"
|
||||
MINER_KEY="${MINER_KEY:?Set MINER_KEY env var}"
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
@@ -28,9 +28,9 @@ Usage:
|
||||
|
||||
Environment overrides:
|
||||
AITBC_URL (default: http://127.0.0.1:18000)
|
||||
CLIENT_KEY (default: REDACTED_CLIENT_KEY)
|
||||
ADMIN_KEY (default: REDACTED_ADMIN_KEY)
|
||||
MINER_KEY (default: REDACTED_MINER_KEY)
|
||||
CLIENT_KEY (required)
|
||||
ADMIN_KEY (required)
|
||||
MINER_KEY (required)
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import json
|
||||
|
||||
# Configuration
|
||||
COORDINATOR_URL = "http://localhost:8001"
|
||||
MINER_API_KEY = "REDACTED_MINER_KEY"
|
||||
MINER_API_KEY = "${MINER_API_KEY}"
|
||||
MINER_ID = "localhost-gpu-miner"
|
||||
|
||||
def assign_proposer_to_latest_block():
|
||||
|
||||
@@ -217,7 +217,7 @@ ssh $SERVER "systemctl status aitbc-blockchain --no-pager -l | head -10"
|
||||
print_status "Testing endpoints..."
|
||||
ssh $SERVER "curl -s http://127.0.0.1:8000/v1/health | head -c 100"
|
||||
echo ""
|
||||
ssh $SERVER "curl -s http://127.0.0.1:8000/v1/admin/stats -H 'X-Api-Key: REDACTED_ADMIN_KEY' | head -c 100"
|
||||
ssh $SERVER "curl -s http://127.0.0.1:8000/v1/admin/stats -H 'X-Api-Key: ${ADMIN_API_KEY}' | head -c 100"
|
||||
echo ""
|
||||
|
||||
echo ""
|
||||
|
||||
@@ -14,8 +14,8 @@ from datetime import datetime
|
||||
|
||||
# Configuration
|
||||
COORDINATOR_URL = "http://127.0.0.1:18000"
|
||||
MINER_ID = "REDACTED_MINER_KEY"
|
||||
AUTH_TOKEN = "REDACTED_MINER_KEY"
|
||||
MINER_ID = "${MINER_API_KEY}"
|
||||
AUTH_TOKEN = "${MINER_API_KEY}"
|
||||
HEARTBEAT_INTERVAL = 15
|
||||
MAX_RETRIES = 10
|
||||
RETRY_DELAY = 30
|
||||
|
||||
@@ -124,7 +124,7 @@ def test_endpoints():
|
||||
for name, url in endpoints:
|
||||
try:
|
||||
if "admin" in url:
|
||||
response = requests.get(url, headers={"X-Api-Key": "REDACTED_ADMIN_KEY"}, timeout=2)
|
||||
response = requests.get(url, headers={"X-Api-Key": "${ADMIN_API_KEY}"}, timeout=2)
|
||||
else:
|
||||
response = requests.get(url, timeout=2)
|
||||
print(f" {name}: ✅ {response.status_code}")
|
||||
|
||||
@@ -10,7 +10,7 @@ from datetime import datetime
|
||||
|
||||
# Configuration
|
||||
COORDINATOR_URL = "http://localhost:8001"
|
||||
MINER_API_KEY = "REDACTED_MINER_KEY"
|
||||
MINER_API_KEY = "${MINER_API_KEY}"
|
||||
MINER_ID = "localhost-gpu-miner"
|
||||
|
||||
def poll_and_accept_job():
|
||||
|
||||
@@ -52,7 +52,7 @@ echo "API Health:"
|
||||
curl -s http://127.0.0.1:8000/v1/health | head -c 100
|
||||
|
||||
echo -e "\n\nAdmin Stats:"
|
||||
curl -s http://127.0.0.1:8000/v1/admin/stats -H "X-Api-Key: REDACTED_ADMIN_KEY" | head -c 100
|
||||
curl -s http://127.0.0.1:8000/v1/admin/stats -H "X-Api-Key: ${ADMIN_API_KEY}" | head -c 100
|
||||
|
||||
echo -e "\n\nMarketplace Offers:"
|
||||
curl -s http://127.0.0.1:8000/v1/marketplace/offers | head -c 100
|
||||
|
||||
@@ -77,7 +77,7 @@ else
|
||||
fi
|
||||
|
||||
echo -n "Admin API: "
|
||||
if curl -s http://127.0.0.1:8000/v1/admin/stats -H "X-Api-Key: REDACTED_ADMIN_KEY" > /dev/null; then
|
||||
if curl -s http://127.0.0.1:8000/v1/admin/stats -H "X-Api-Key: ${ADMIN_API_KEY}" > /dev/null; then
|
||||
echo "✅ OK"
|
||||
else
|
||||
echo "❌ Failed"
|
||||
|
||||
@@ -56,7 +56,7 @@ def main():
|
||||
print(" • Professional, production-ready interface")
|
||||
|
||||
print("\n💡 Note: Most transactions show:")
|
||||
print(" • From: REDACTED_CLIENT_KEY")
|
||||
print(" • From: ${CLIENT_API_KEY}")
|
||||
print(" • To: null (not assigned to miner yet)")
|
||||
print(" • Value: 0 (cost shown when completed)")
|
||||
print(" • Status: Queued/Running/Expired")
|
||||
|
||||
@@ -8,7 +8,7 @@ import json
|
||||
# Configuration
|
||||
COORDINATOR_URL = "http://127.0.0.1:8000/v1"
|
||||
CLIENT_KEY = "test_client_key_123"
|
||||
MINER_KEY = "REDACTED_MINER_KEY"
|
||||
MINER_KEY = "${MINER_API_KEY}"
|
||||
|
||||
async def register_client():
|
||||
"""Register a test client"""
|
||||
|
||||
@@ -18,7 +18,7 @@ logger = logging.getLogger(__name__)
|
||||
# Configuration
|
||||
COORDINATOR_URL = "https://aitbc.bubuit.net/api"
|
||||
CLIENT_KEY = "test_client_key_123"
|
||||
MINER_KEY = "REDACTED_MINER_KEY"
|
||||
MINER_KEY = "${MINER_API_KEY}"
|
||||
|
||||
class PaymentIntegrationTest:
|
||||
def __init__(self):
|
||||
|
||||
@@ -17,8 +17,8 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
# Configuration - Using localhost as we're testing from the server
|
||||
COORDINATOR_URL = "http://127.0.0.1:8000/v1"
|
||||
CLIENT_KEY = "REDACTED_CLIENT_KEY"
|
||||
MINER_KEY = "REDACTED_MINER_KEY"
|
||||
CLIENT_KEY = "${CLIENT_API_KEY}"
|
||||
MINER_KEY = "${MINER_API_KEY}"
|
||||
|
||||
class PaymentIntegrationTest:
|
||||
def __init__(self):
|
||||
|
||||
Reference in New Issue
Block a user