Skip to content

Commit 9118aa7

Browse files
authored
Merge pull request #91 from SockYeh/master
Bug Fixes
2 parents b73aea9 + f981bca commit 9118aa7

File tree

9 files changed

+23
-30
lines changed

9 files changed

+23
-30
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ WORKDIR /app/src
2121
EXPOSE 8000
2222
EXPOSE 8081
2323
# Run both main app and admin app
24-
CMD ["sh", "-c", "gunicorn -w 4 -k uvicorn.workers.UvicornWorker pwncore:app --bind 0.0.0.0:8000 --log-level debug & uvicorn pwncore.admin_app:admin_app --host 0.0.0.0 --port 8081 & wait"]
24+
CMD ["sh", "-c", "gunicorn -w 4 -k uvicorn.workers.UvicornWorker pwncore:app --bind 0.0.0.0:8000 --log-level debug"]

docker-compose.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ services:
55
dockerfile: Dockerfile
66
ports:
77
- ${PORT}:8000
8-
- ${PORT_ADMIN}:8081
98
environment:
109
- DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
1110
- WORKERS=${WORKERS}

poetry.lock

Lines changed: 1 addition & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ gunicorn = "^23.0.0"
2929
bcrypt = ">3.1.0,<4.0"
3030
pydantic-core = "2.20.1"
3131
psutil = "^5.9.0"
32-
types-psutil = "^7.0.0.20251001"
3332

3433
[tool.poetry.group.dev.dependencies]
3534
mypy = "^1.6.1"

src/pwncore/models/container.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ class Container(Model):
1818
problem: fields.ForeignKeyRelation[Problem] = fields.ForeignKeyField(
1919
"models.Problem", on_delete=fields.OnDelete.NO_ACTION
2020
)
21-
problem_id = fields.IntField()
2221
team: fields.ForeignKeyRelation[Team] = fields.ForeignKeyField("models.Team")
23-
team_id = fields.IntField()
2422
flag = fields.TextField()
2523

2624
token = fields.TextField(null=True)

src/pwncore/models/ctf.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ class BaseProblem(Model):
2929

3030

3131
class Problem(BaseProblem):
32-
id = fields.IntField(pk=True)
3332
image_name = fields.TextField()
3433

3534
# commenting it for now, may be used later

src/pwncore/routes/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
router.include_router(ctf.router)
1313
router.include_router(team.router)
1414
router.include_router(leaderboard.router)
15-
router.include_router(admin.router) # Admin routes moved to separate app on port 8081
15+
router.include_router(admin.router)

src/pwncore/routes/admin.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -281,9 +281,15 @@ async def get_resource_usage(response: Response, req: Request):
281281
container_info = {
282282
"container_id": db_container.docker_id[:12],
283283
"team_id": db_container.team_id,
284-
"team_name": (await db_container.team).name,
284+
"team_name": (
285+
(await db_container.team).name if db_container.team else "Unknown"
286+
),
285287
"problem_id": db_container.problem_id,
286-
"problem_name": (await db_container.problem).name,
288+
"problem_name": (
289+
(await db_container.problem).name
290+
if db_container.problem
291+
else "Unknown"
292+
),
287293
"ports": ports,
288294
"cpu_percent": round(cpu_usage, 2),
289295
"memory": {
@@ -314,10 +320,14 @@ async def get_resource_usage(response: Response, req: Request):
314320
"team_id": db_container.team_id,
315321
"team_name": (
316322
(await db_container.team).name
323+
if db_container.team
324+
else "Unknown"
317325
),
318326
"problem_id": db_container.problem_id,
319327
"problem_name": (
320328
(await db_container.problem).name
329+
if db_container.problem
330+
else "Unknown"
321331
),
322332
"ports": ports,
323333
"status": "error",
@@ -348,9 +358,9 @@ async def list_docker_containers(response: Response, req: Request):
348358
container_info = {
349359
"docker_id": container.docker_id,
350360
"team_id": container.team_id,
351-
"team_name": container.team.name,
361+
"team_name": container.team.name if container.team else "Unknown",
352362
"problem_id": container.problem_id,
353-
"problem_name": container.problem.name,
363+
"problem_name": container.problem.name if container.problem else "Unknown",
354364
"ports": ports,
355365
}
356366
container_list.append(container_info)
@@ -434,7 +444,7 @@ async def stop_docker_container(docker_id: str, response: Response, req: Request
434444
try:
435445
await Container.filter(docker_id=docker_id).delete()
436446
ctf = await container.problem
437-
if ctf.static_files:
447+
if ctf and ctf.static_files:
438448
static_path = f"{config.staticfs_data_dir}/{container.team_id}/{docker_id}"
439449
if os.path.exists(static_path):
440450
shutil.rmtree(static_path)
@@ -453,7 +463,7 @@ async def stop_docker_container(docker_id: str, response: Response, req: Request
453463
@router.get("/ban/list")
454464
async def get_ban_list(request: Request, response: Response) -> JSONResponse:
455465
"""Get banned tags list."""
456-
return JSONResponse({"banned": config.blacklist})
466+
return {"banned": config.blacklist}
457467

458468

459469
@router.post("/ban/{team_id}", status_code=status.HTTP_204_NO_CONTENT)

src/pwncore/routes/team.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,9 @@ async def get_team_containers(response: Response, jwt: RequireJwt):
110110

111111
result = {}
112112
for container in containers:
113-
if container.problem is not None:
114-
result[container.problem.id] = await container.ports.all().values_list(
115-
"port", flat=True
116-
)
113+
# mypy complains id doesnt exist in Problem
114+
result[container.problem.id] = await container.ports.all().values_list( # type: ignore[attr-defined]
115+
"port", flat=True
116+
)
117117

118118
return result

0 commit comments

Comments
 (0)