mirror of
https://github.com/aljazceru/CTFd.git
synced 2025-12-18 14:34:21 +01:00
Closes #73
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
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.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 werkzeug.utils import secure_filename
|
||||
from socket import inet_aton, inet_ntoa
|
||||
@@ -410,10 +410,16 @@ def unban(teamid):
|
||||
@admin.route('/admin/team/<teamid>/delete', methods=['POST'])
|
||||
@admins_only
|
||||
def delete_team(teamid):
|
||||
user = Teams.query.filter_by(id=teamid).first()
|
||||
db.session.delete(user)
|
||||
db.session.commit()
|
||||
return '1'
|
||||
try:
|
||||
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()
|
||||
except DatabaseError:
|
||||
return '0'
|
||||
else:
|
||||
return '1'
|
||||
|
||||
|
||||
@admin.route('/admin/graphs/<graph_type>')
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from flask.ext.sqlalchemy import SQLAlchemy
|
||||
from sqlalchemy.exc import DatabaseError
|
||||
|
||||
from socket import inet_aton, inet_ntoa
|
||||
from struct import unpack, pack
|
||||
@@ -8,12 +9,15 @@ import datetime
|
||||
import hashlib
|
||||
import json
|
||||
|
||||
|
||||
def sha512(string):
|
||||
return hashlib.sha512(string).hexdigest()
|
||||
|
||||
|
||||
def ip2long(ip):
|
||||
return unpack('!I', inet_aton(ip))[0]
|
||||
|
||||
|
||||
def long2ip(ip_int):
|
||||
return inet_ntoa(pack('!I', ip_int))
|
||||
|
||||
@@ -32,6 +36,7 @@ class Pages(db.Model):
|
||||
def __repr__(self):
|
||||
return "<Tag {0} for challenge {1}>".format(self.tag, self.chal)
|
||||
|
||||
|
||||
class Challenges(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(80))
|
||||
@@ -51,6 +56,7 @@ class Challenges(db.Model):
|
||||
def __repr__(self):
|
||||
return '<chal %r>' % self.name
|
||||
|
||||
|
||||
class Tags(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
chal = db.Column(db.Integer, db.ForeignKey('challenges.id'))
|
||||
@@ -63,6 +69,7 @@ class Tags(db.Model):
|
||||
def __repr__(self):
|
||||
return "<Tag {0} for challenge {1}>".format(self.tag, self.chal)
|
||||
|
||||
|
||||
class Files(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
chal = db.Column(db.Integer, db.ForeignKey('challenges.id'))
|
||||
@@ -75,6 +82,7 @@ class Files(db.Model):
|
||||
def __repr__(self):
|
||||
return "<File {0} for challenge {1}>".format(self.location, self.chal)
|
||||
|
||||
|
||||
class Keys(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
chal = db.Column(db.Integer, db.ForeignKey('challenges.id'))
|
||||
@@ -130,6 +138,7 @@ class Teams(db.Model):
|
||||
except ValueError:
|
||||
return 0
|
||||
|
||||
|
||||
class Solves(db.Model):
|
||||
__table_args__ = (db.UniqueConstraint('chalid', 'teamid'), {})
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
|
||||
Reference in New Issue
Block a user