Compare commits
	
		
			1 Commits
		
	
	
		
			b460f145be
			...
			dev
		
	
	| 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