Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 101df213dc |
26
models.py
26
models.py
@ -103,3 +103,29 @@ class WhaleContainer(db.Model):
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<WhaleContainer ID:{0} {1} {2} {3} {4}>".format(self.id, self.user_id, self.challenge_id,
|
return "<WhaleContainer ID:{0} {1} {2} {3} {4}>".format(self.id, self.user_id, self.challenge_id,
|
||||||
self.start_time, self.renew_count)
|
self.start_time, self.renew_count)
|
||||||
|
|
||||||
|
class WhaleContainerLog(db.Model):
|
||||||
|
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||||
|
user_id = db.Column(None, db.ForeignKey("users.id"))
|
||||||
|
challenge_id = db.Column(None, db.ForeignKey("challenges.id"))
|
||||||
|
start_time = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
|
||||||
|
uuid = db.Column(db.String(256))
|
||||||
|
flag = db.Column(db.String(128), nullable=False)
|
||||||
|
|
||||||
|
# Relationships
|
||||||
|
user = db.relationship(
|
||||||
|
"Users", foreign_keys="WhaleContainerLog.user_id", lazy="select")
|
||||||
|
challenge = db.relationship(
|
||||||
|
"DynamicDockerChallenge", foreign_keys="WhaleContainerLog.challenge_id", lazy="select"
|
||||||
|
)
|
||||||
|
|
||||||
|
def __init__(self, container):
|
||||||
|
self.user_id = container.user_id
|
||||||
|
self.challenge_id = container.challenge_id
|
||||||
|
self.start_time = container.challenge_id
|
||||||
|
self.uuid = container.uuid
|
||||||
|
self.flag = container.flag
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "<WhaleContainer ID:{0} {1} {2} {3} {4} {5}>".format(self.id, self.user_id, self.challenge_id,
|
||||||
|
self.start_time, self.uuid, self.flag)
|
||||||
|
|||||||
@ -22,6 +22,7 @@ class ControlUtil:
|
|||||||
DockerUtils.remove_container(container)
|
DockerUtils.remove_container(container)
|
||||||
DBContainer.remove_container_record(user_id)
|
DBContainer.remove_container_record(user_id)
|
||||||
return False, msg
|
return False, msg
|
||||||
|
DBContainer.create_container_log(container)
|
||||||
return True, 'Container created'
|
return True, 'Container created'
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import datetime
|
|||||||
|
|
||||||
from CTFd.models import db
|
from CTFd.models import db
|
||||||
from CTFd.utils import get_config
|
from CTFd.utils import get_config
|
||||||
from ..models import WhaleContainer, WhaleRedirectTemplate
|
from ..models import WhaleContainer,WhaleContainerLog, WhaleRedirectTemplate
|
||||||
|
|
||||||
|
|
||||||
class DBContainer:
|
class DBContainer:
|
||||||
@ -14,6 +14,12 @@ class DBContainer:
|
|||||||
|
|
||||||
return container
|
return container
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def create_container_log(container):
|
||||||
|
log = WhaleContainerLog(container=container)
|
||||||
|
db.session.add(log)
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_current_containers(user_id):
|
def get_current_containers(user_id):
|
||||||
q = db.session.query(WhaleContainer)
|
q = db.session.query(WhaleContainer)
|
||||||
|
|||||||
Reference in New Issue
Block a user