security: add timeouts to HTTP requests and fix temp directory usage
Some checks failed
CLI Tests / test-cli (push) Failing after 2m46s
Documentation Validation / validate-docs (push) Successful in 7s
Documentation Validation / validate-policies-strict (push) Successful in 3s
Integration Tests / test-service-integration (push) Failing after 4s
Package Tests / Python package - aitbc-agent-sdk (push) Successful in 28s
Package Tests / Python package - aitbc-core (push) Failing after 10s
Package Tests / Python package - aitbc-crypto (push) Successful in 18s
Package Tests / Python package - aitbc-sdk (push) Failing after 18s
Package Tests / JavaScript package - aitbc-sdk-js (push) Successful in 7s
Package Tests / JavaScript package - aitbc-token (push) Failing after 15s
Python Tests / test-python (push) Failing after 2m51s
Security Scanning / security-scan (push) Failing after 48s
Smart Contract Tests / test-solidity (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Failing after 11s
Smart Contract Tests / test-solidity (map[name:zk-circuits path:apps/zk-circuits]) (push) Failing after 46s
Smart Contract Tests / lint-solidity (push) Failing after 11s
Some checks failed
CLI Tests / test-cli (push) Failing after 2m46s
Documentation Validation / validate-docs (push) Successful in 7s
Documentation Validation / validate-policies-strict (push) Successful in 3s
Integration Tests / test-service-integration (push) Failing after 4s
Package Tests / Python package - aitbc-agent-sdk (push) Successful in 28s
Package Tests / Python package - aitbc-core (push) Failing after 10s
Package Tests / Python package - aitbc-crypto (push) Successful in 18s
Package Tests / Python package - aitbc-sdk (push) Failing after 18s
Package Tests / JavaScript package - aitbc-sdk-js (push) Successful in 7s
Package Tests / JavaScript package - aitbc-token (push) Failing after 15s
Python Tests / test-python (push) Failing after 2m51s
Security Scanning / security-scan (push) Failing after 48s
Smart Contract Tests / test-solidity (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Failing after 11s
Smart Contract Tests / test-solidity (map[name:zk-circuits path:apps/zk-circuits]) (push) Failing after 46s
Smart Contract Tests / lint-solidity (push) Failing after 11s
- Add 30-second timeouts to all HTTP requests in enterprise_cli.py (5 instances) - Add 30-second timeouts to all HTTP requests in miner_management.py (4 instances) - Replace hardcoded /tmp with tempfile.gettempdir() in extended_features.py - Fix requires-python constraint from ^3.13 to >=3.13 in aitbc-core - Add missing dependencies: pynacl to aitbc-crypto, httpx to aitbc-sdk - Add poetry packages configuration to aitbc-core pyproject.toml - Add type
This commit is contained in:
30
cli/aitbc_cli/utils/__init__.py
Normal file
30
cli/aitbc_cli/utils/__init__.py
Normal file
@@ -0,0 +1,30 @@
|
||||
"""
|
||||
CLI utility functions for output formatting and error handling
|
||||
"""
|
||||
|
||||
from click import echo, secho
|
||||
|
||||
|
||||
def output(message: str, **kwargs):
|
||||
"""Print a regular output message"""
|
||||
echo(message, **kwargs)
|
||||
|
||||
|
||||
def error(message: str, **kwargs):
|
||||
"""Print an error message in red"""
|
||||
secho(message, fg="red", **kwargs)
|
||||
|
||||
|
||||
def success(message: str, **kwargs):
|
||||
"""Print a success message in green"""
|
||||
secho(message, fg="green", **kwargs)
|
||||
|
||||
|
||||
def info(message: str, **kwargs):
|
||||
"""Print an info message in blue"""
|
||||
secho(message, fg="blue", **kwargs)
|
||||
|
||||
|
||||
def warning(message: str, **kwargs):
|
||||
"""Print a warning message in yellow"""
|
||||
secho(message, fg="yellow", **kwargs)
|
||||
@@ -125,7 +125,7 @@ def mining_operations(operation: str, wallet_name: str = None, threads: int = 1,
|
||||
elif operation == "stop":
|
||||
print("Stopping mining...")
|
||||
try:
|
||||
response = requests.post(f"{rpc_url}/rpc/mining/stop")
|
||||
response = requests.post(f"{rpc_url}/rpc/mining/stop", timeout=30)
|
||||
if response.status_code == 200:
|
||||
result = response.json()
|
||||
print(f"✅ Mining stopped")
|
||||
@@ -141,7 +141,7 @@ def mining_operations(operation: str, wallet_name: str = None, threads: int = 1,
|
||||
elif operation == "status":
|
||||
print("Getting mining status...")
|
||||
try:
|
||||
response = requests.get(f"{rpc_url}/rpc/mining/status")
|
||||
response = requests.get(f"{rpc_url}/rpc/mining/status", timeout=30)
|
||||
if response.status_code == 200:
|
||||
status = response.json()
|
||||
print("⛏️ Mining Status:")
|
||||
@@ -165,7 +165,7 @@ def marketplace_operations(operation: str, wallet_name: str = None, item_type: s
|
||||
if operation == "list":
|
||||
print("Getting marketplace listings...")
|
||||
try:
|
||||
response = requests.get(f"{rpc_url}/rpc/marketplace/listings")
|
||||
response = requests.get(f"{rpc_url}/rpc/marketplace/listings", timeout=30)
|
||||
if response.status_code == 200:
|
||||
listings = response.json().get("listings", [])
|
||||
print(f"🏪 Marketplace Listings ({len(listings)} items):")
|
||||
@@ -203,7 +203,7 @@ def marketplace_operations(operation: str, wallet_name: str = None, item_type: s
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(f"{rpc_url}/rpc/marketplace/create", json=listing_data)
|
||||
response = requests.post(f"{rpc_url}/rpc/marketplace/create", json=listing_data, timeout=30)
|
||||
if response.status_code == 200:
|
||||
result = response.json()
|
||||
listing_id = result.get("listing_id")
|
||||
@@ -241,7 +241,7 @@ def ai_operations(operation: str, wallet_name: str = None, job_type: str = None,
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(f"{rpc_url}/rpc/ai/submit", json=job_data)
|
||||
response = requests.post(f"{rpc_url}/rpc/ai/submit", json=job_data, timeout=30)
|
||||
if response.status_code == 200:
|
||||
result = response.json()
|
||||
job_id = result.get("job_id")
|
||||
|
||||
@@ -204,7 +204,8 @@ def handle_extended_command(command, args, kwargs):
|
||||
result["metrics"] = {"tx_rate": 15, "block_time": 30.1}
|
||||
|
||||
elif command == "analytics_export":
|
||||
result["file"] = "/tmp/analytics_export.csv"
|
||||
import tempfile
|
||||
result["file"] = tempfile.gettempdir() + "/analytics_export.csv"
|
||||
|
||||
elif command == "analytics_predict":
|
||||
result["prediction"] = "stable"
|
||||
|
||||
@@ -69,7 +69,8 @@ def register_miner(
|
||||
response = requests.post(
|
||||
f"{coordinator_url}/v1/miners/register",
|
||||
headers=headers,
|
||||
json=payload
|
||||
json=payload,
|
||||
timeout=30
|
||||
)
|
||||
|
||||
if response.status_code == 200:
|
||||
@@ -115,7 +116,8 @@ def get_miner_status(
|
||||
|
||||
response = requests.get(
|
||||
f"{coordinator_url}/v1/admin/miners",
|
||||
headers=headers
|
||||
headers=headers,
|
||||
timeout=30
|
||||
)
|
||||
|
||||
if response.status_code == 200:
|
||||
@@ -188,7 +190,8 @@ def send_heartbeat(
|
||||
response = requests.post(
|
||||
f"{coordinator_url}/v1/miners/heartbeat",
|
||||
headers=headers,
|
||||
json=payload
|
||||
json=payload,
|
||||
timeout=30
|
||||
)
|
||||
|
||||
if response.status_code == 200:
|
||||
@@ -232,7 +235,8 @@ def poll_jobs(
|
||||
response = requests.post(
|
||||
f"{coordinator_url}/v1/miners/poll",
|
||||
headers=headers,
|
||||
json=payload
|
||||
json=payload,
|
||||
timeout=30
|
||||
)
|
||||
|
||||
if response.status_code == 200 and response.content:
|
||||
|
||||
Reference in New Issue
Block a user