Various small fixes (#126)

1.  Fix the deprecation warnings by changing from flask.ext.$name to flask_$name
2.  Be consistent with import style in admin.py
3.  Fix a residual script_root fix
4.  Store IPs in 32 bits again
selenium-screenshot-testing
Robert Blair Mason Jr 2016-07-03 13:53:17 -04:00 committed by Kevin Chung
parent 6b2257236f
commit e31b502729
4 changed files with 17 additions and 12 deletions

View File

@ -1,7 +1,7 @@
from flask import Flask, render_template, request, redirect, abort, session, jsonify, json as json_mod, url_for
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from logging.handlers import RotatingFileHandler
from flask.ext.session import Session
from flask_session import Session
from sqlalchemy_utils import database_exists, create_database
import os
import sqlalchemy

View File

@ -1,6 +1,7 @@
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, create_image, delete_image, run_image, container_status, container_ports, container_stop, container_start
from CTFd.models import db, Teams, Solves, Awards, Containers, Challenges, WrongKeys, Keys, Tags, Files, Tracking, Pages, Config, DatabaseError
from CTFd.scoreboard import get_standings
from itsdangerous import TimedSerializer, BadTimeSignature
from sqlalchemy.sql import and_, or_, not_
from sqlalchemy.sql.expression import union_all
@ -19,8 +20,6 @@ import json
import datetime
import calendar
from scoreboard import get_standings
admin = Blueprint('admin', __name__)
@ -445,9 +444,11 @@ def admin_team(teamid):
solves = Solves.query.filter_by(teamid=teamid).all()
solve_ids = [s.chalid for s in solves]
missing = Challenges.query.filter( not_(Challenges.id.in_(solve_ids) ) ).all()
addrs = db.session.query(Tracking.ip, db.func.max(Tracking.date)) \
last_seen = db.func.max(Tracking.date).label('last_seen')
addrs = db.session.query(Tracking.ip, last_seen) \
.filter_by(team=teamid) \
.group_by(Tracking.ip).all()
.group_by(Tracking.ip) \
.order_by(last_seen.desc()).all()
wrong_keys = WrongKeys.query.filter_by(teamid=teamid).order_by(WrongKeys.date.asc()).all()
awards = Awards.query.filter_by(teamid=teamid).order_by(Awards.date.asc()).all()
score = user.score()

View File

@ -1,9 +1,9 @@
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.exc import DatabaseError
from sqlalchemy.sql import func
from socket import inet_aton, inet_ntoa
from struct import unpack, pack
from struct import unpack, pack, error as struct_error
from passlib.hash import bcrypt_sha256
import datetime
@ -16,11 +16,15 @@ def sha512(string):
def ip2long(ip):
return unpack('!I', inet_aton(ip))[0]
return unpack('!i', inet_aton(ip))[0]
def long2ip(ip_int):
return inet_ntoa(pack('!I', ip_int))
try:
return inet_ntoa(pack('!i', ip_int))
except struct_error:
# Backwards compatibility with old CTFd databases
return inet_ntoa(pack('!I', ip_int))
db = SQLAlchemy()
@ -180,7 +184,7 @@ class Solves(db.Model):
id = db.Column(db.Integer, primary_key=True)
chalid = db.Column(db.Integer, db.ForeignKey('challenges.id'))
teamid = db.Column(db.Integer, db.ForeignKey('teams.id'))
ip = db.Column(db.BigInteger)
ip = db.Column(db.Integer)
flag = db.Column(db.Text)
date = db.Column(db.DateTime, default=datetime.datetime.utcnow)
team = db.relationship('Teams', foreign_keys="Solves.teamid", lazy='joined')

View File

@ -92,7 +92,7 @@ function load_confirm_modal(route){
function save_css(){
var css = editor.getValue();
var nonce = $('#nonce').val();
$.post('/admin/css', {'css':css, 'nonce':nonce}, function(){
$.post(script_root + '/admin/css', {'css':css, 'nonce':nonce}, function(){
console.log('saved');
});
}