update core engine
This commit is contained in:
+50
-1
@@ -11,6 +11,12 @@ from challenges.Sheesh import Sheesh
|
||||
from challenges.Warmup import Warmup
|
||||
|
||||
import os
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
# Setup logging
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
app = FastAPI()
|
||||
security = HTTPBasic()
|
||||
@@ -25,6 +31,50 @@ challenges = {
|
||||
"warmup": Warmup(15000),
|
||||
}
|
||||
|
||||
async def run_challenge_checks():
|
||||
"""Run check function on all challenges at startup"""
|
||||
logger.info("\n" + "="*60)
|
||||
logger.info("Running challenge checks...")
|
||||
logger.info("="*60 + "\n")
|
||||
|
||||
results = {}
|
||||
|
||||
for name, challenge in challenges.items():
|
||||
logger.info(f"\n[{name}] Starting check...")
|
||||
try:
|
||||
# Give service time between checks
|
||||
await asyncio.sleep(2)
|
||||
|
||||
result = challenge.check()
|
||||
results[name] = result
|
||||
|
||||
if result:
|
||||
logger.info(f"[{name}] ✓ Check PASSED")
|
||||
else:
|
||||
logger.warning(f"[{name}] ✗ Check FAILED")
|
||||
except Exception as e:
|
||||
logger.error(f"[{name}] ✗ Check ERROR: {e}")
|
||||
results[name] = False
|
||||
|
||||
# Print summary
|
||||
logger.info("\n" + "="*60)
|
||||
logger.info("Challenge Check Summary:")
|
||||
logger.info("="*60)
|
||||
passed = sum(1 for r in results.values() if r)
|
||||
total = len(results)
|
||||
for name, result in results.items():
|
||||
status = "✓ PASS" if result else "✗ FAIL"
|
||||
logger.info(f" {name:20} {status}")
|
||||
logger.info(f"\nTotal: {passed}/{total} passed")
|
||||
logger.info("="*60 + "\n")
|
||||
|
||||
return results
|
||||
|
||||
@app.on_event("startup")
|
||||
async def startup_event():
|
||||
"""Run challenge checks on application startup"""
|
||||
asyncio.create_task(run_challenge_checks())
|
||||
|
||||
class Flag(BaseModel):
|
||||
flag: str
|
||||
challenge: str
|
||||
@@ -32,7 +82,6 @@ class Flag(BaseModel):
|
||||
class History(BaseModel):
|
||||
log: str
|
||||
|
||||
|
||||
@app.get("/")
|
||||
def read_root():
|
||||
return {"service": "receiver-service"}
|
||||
|
||||
+14
-6
@@ -22,17 +22,25 @@ def main():
|
||||
args = parser.parse_args()
|
||||
|
||||
cwd = os.getcwd()
|
||||
env = generate_env(args.username, args.password)
|
||||
receiver_env = os.path.join(cwd, 'receiver/.env')
|
||||
services_env = os.path.join(cwd, 'services/.env')
|
||||
|
||||
with open(receiver_env, 'w') as f:
|
||||
f.write(env)
|
||||
|
||||
with open(services_env, 'w') as f:
|
||||
f.write(env)
|
||||
# Only generate .env files if they don't already exist
|
||||
if not os.path.exists(receiver_env) or not os.path.exists(services_env):
|
||||
env = generate_env(args.username, args.password)
|
||||
|
||||
with open(receiver_env, 'w') as f:
|
||||
f.write(env)
|
||||
|
||||
with open(services_env, 'w') as f:
|
||||
f.write(env)
|
||||
|
||||
print("Generated new .env files")
|
||||
else:
|
||||
print("Using existing .env files")
|
||||
|
||||
os.chdir(os.path.join(cwd, 'services'))
|
||||
# os.system(f'docker compose -f docker-compose.yml up -d {args.challenges}')
|
||||
os.system(f'docker compose -f docker-compose.yml up --build -d {args.challenges}')
|
||||
|
||||
os.chdir(os.path.join(cwd, 'receiver'))
|
||||
|
||||
Reference in New Issue
Block a user