Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions container_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,11 @@ def wrapper_run_command(self, *args, **kwargs):

@run_command
def kill_expired_containers(self, app: Flask):
# Handle both scheduled and manual calls
if not isinstance(app, Flask):
from CTFd import create_app
app = create_app()

with app.app_context():
containers: "list[ContainerInfoModel]" = ContainerInfoModel.query.all()

Expand Down
2 changes: 1 addition & 1 deletion models.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class ContainerFlagModel(db.Model):
)
container_id = db.Column(
db.String(512),
db.ForeignKey("container_info_model.container_id"),
db.ForeignKey("container_info_model.container_id", ondelete="CASCADE"),
nullable=True,
)
flag = db.Column(db.Text)
Expand Down
2 changes: 1 addition & 1 deletion user_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def route_stop_container():
user_id=None if is_team_mode() else xid
).first()

if running_container:
if running_container and running_container.container_id:
return kill_container(container_manager, running_container.container_id)
return {"error": "No container found"}, 400
except ValueError as err:
Expand Down