update core engine

This commit is contained in:
rafliher
2025-10-25 14:50:40 +07:00
parent 0d216d77eb
commit 7df02812b1
2 changed files with 64 additions and 7 deletions
+50 -1
View File
@@ -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
View File
@@ -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'))