This commit is contained in:
CodeKevin
2016-01-08 20:55:03 -05:00
parent 841b206d36
commit 23d9a57809
2 changed files with 20 additions and 5 deletions

View File

@@ -1,6 +1,6 @@
from flask import render_template, request, redirect, abort, jsonify, url_for, session, Blueprint from flask import render_template, request, redirect, abort, jsonify, url_for, session, Blueprint
from CTFd.utils import sha512, is_safe_url, authed, admins_only, is_admin, unix_time, unix_time_millis, get_config, set_config, sendmail, rmdir from CTFd.utils import sha512, is_safe_url, authed, admins_only, is_admin, unix_time, unix_time_millis, get_config, set_config, sendmail, rmdir
from CTFd.models import db, Teams, Solves, Challenges, WrongKeys, Keys, Tags, Files, Tracking, Pages, Config from CTFd.models import db, Teams, Solves, Challenges, WrongKeys, Keys, Tags, Files, Tracking, Pages, Config, DatabaseError
from itsdangerous import TimedSerializer, BadTimeSignature from itsdangerous import TimedSerializer, BadTimeSignature
from werkzeug.utils import secure_filename from werkzeug.utils import secure_filename
from socket import inet_aton, inet_ntoa from socket import inet_aton, inet_ntoa
@@ -410,9 +410,15 @@ def unban(teamid):
@admin.route('/admin/team/<teamid>/delete', methods=['POST']) @admin.route('/admin/team/<teamid>/delete', methods=['POST'])
@admins_only @admins_only
def delete_team(teamid): def delete_team(teamid):
user = Teams.query.filter_by(id=teamid).first() try:
db.session.delete(user) WrongKeys.query.filter_by(team=teamid).delete()
Solves.query.filter_by(teamid=teamid).delete()
Tracking.query.filter_by(team=teamid).delete()
Teams.query.filter_by(id=teamid).delete()
db.session.commit() db.session.commit()
except DatabaseError:
return '0'
else:
return '1' return '1'

View File

@@ -1,4 +1,5 @@
from flask.ext.sqlalchemy import SQLAlchemy from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy.exc import DatabaseError
from socket import inet_aton, inet_ntoa from socket import inet_aton, inet_ntoa
from struct import unpack, pack from struct import unpack, pack
@@ -8,12 +9,15 @@ import datetime
import hashlib import hashlib
import json import json
def sha512(string): def sha512(string):
return hashlib.sha512(string).hexdigest() return hashlib.sha512(string).hexdigest()
def ip2long(ip): def ip2long(ip):
return unpack('!I', inet_aton(ip))[0] return unpack('!I', inet_aton(ip))[0]
def long2ip(ip_int): def long2ip(ip_int):
return inet_ntoa(pack('!I', ip_int)) return inet_ntoa(pack('!I', ip_int))
@@ -32,6 +36,7 @@ class Pages(db.Model):
def __repr__(self): def __repr__(self):
return "<Tag {0} for challenge {1}>".format(self.tag, self.chal) return "<Tag {0} for challenge {1}>".format(self.tag, self.chal)
class Challenges(db.Model): class Challenges(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80)) name = db.Column(db.String(80))
@@ -51,6 +56,7 @@ class Challenges(db.Model):
def __repr__(self): def __repr__(self):
return '<chal %r>' % self.name return '<chal %r>' % self.name
class Tags(db.Model): class Tags(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
chal = db.Column(db.Integer, db.ForeignKey('challenges.id')) chal = db.Column(db.Integer, db.ForeignKey('challenges.id'))
@@ -63,6 +69,7 @@ class Tags(db.Model):
def __repr__(self): def __repr__(self):
return "<Tag {0} for challenge {1}>".format(self.tag, self.chal) return "<Tag {0} for challenge {1}>".format(self.tag, self.chal)
class Files(db.Model): class Files(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
chal = db.Column(db.Integer, db.ForeignKey('challenges.id')) chal = db.Column(db.Integer, db.ForeignKey('challenges.id'))
@@ -75,6 +82,7 @@ class Files(db.Model):
def __repr__(self): def __repr__(self):
return "<File {0} for challenge {1}>".format(self.location, self.chal) return "<File {0} for challenge {1}>".format(self.location, self.chal)
class Keys(db.Model): class Keys(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
chal = db.Column(db.Integer, db.ForeignKey('challenges.id')) chal = db.Column(db.Integer, db.ForeignKey('challenges.id'))
@@ -130,6 +138,7 @@ class Teams(db.Model):
except ValueError: except ValueError:
return 0 return 0
class Solves(db.Model): class Solves(db.Model):
__table_args__ = (db.UniqueConstraint('chalid', 'teamid'), {}) __table_args__ = (db.UniqueConstraint('chalid', 'teamid'), {})
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)