merge
This commit is contained in:
commit
1e971b70f5
5 changed files with 70 additions and 3 deletions
|
@ -1,7 +1,8 @@
|
||||||
#EasyCTF 2016
|
#EasyCTF 2016
|
||||||
The EasyCTF website for the 2016 competition.
|
The EasyCTF website for the 2016 competition.
|
||||||
|
|
||||||
**Back End** : Flask (Python)
|
**Resources** : Flask, MySQL
|
||||||
|
|
||||||
|
|
||||||
Main Pages:
|
Main Pages:
|
||||||
- login.html
|
- login.html
|
||||||
|
@ -20,8 +21,6 @@ Main Pages:
|
||||||
- updates.html
|
- updates.html
|
||||||
- resetpassword.html
|
- resetpassword.html
|
||||||
|
|
||||||
**Front End** : Angular.js (JavaScript)
|
|
||||||
|
|
||||||
Color Scheme: #69D2E7 | #A7DBDB | #E0E4CC | #F38630 | #FA6900
|
Color Scheme: #69D2E7 | #A7DBDB | #E0E4CC | #F38630 | #FA6900
|
||||||
|
|
||||||
Setting Up The Environment
|
Setting Up The Environment
|
||||||
|
|
11
server/api/api.py
Normal file
11
server/api/api.py
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
from flask import Blueprint
|
||||||
|
|
||||||
|
api = Blueprint("api", __name__)
|
||||||
|
|
||||||
|
@api.route("/api/register", methods=["POST"])
|
||||||
|
def register():
|
||||||
|
pass
|
||||||
|
|
||||||
|
@api.route("/api/login", methods=["POST"])
|
||||||
|
def login():
|
||||||
|
pass
|
21
server/api/decorators.py
Normal file
21
server/api/decorators.py
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
from functools import wraps
|
||||||
|
from flask import session
|
||||||
|
|
||||||
|
def login_required(f):
|
||||||
|
@wraps(f)
|
||||||
|
def decorated_function(*args, **kwargs):
|
||||||
|
return f(*args, **kwargs)
|
||||||
|
return decorated_function
|
||||||
|
|
||||||
|
def admins_only(f):
|
||||||
|
@wraps(f)
|
||||||
|
def decorated_function(*args, **kwargs):
|
||||||
|
return f(*args, **kwargs)
|
||||||
|
return decorated_function
|
||||||
|
|
||||||
|
def check_csrf(f):
|
||||||
|
@wraps(f)
|
||||||
|
@login_required
|
||||||
|
def wrapper(*args, **kwds):
|
||||||
|
return f(*args, **kwds)
|
||||||
|
return wrapper
|
33
server/api/utils.py
Normal file
33
server/api/utils.py
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
import datetime
|
||||||
|
import MySQLdb
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
|
||||||
|
from werkzeug.security import generate_password_hash, check_password_hash
|
||||||
|
|
||||||
|
host = "localhost"
|
||||||
|
user = "root"
|
||||||
|
|
||||||
|
conn = MySQLdb.connect()
|
||||||
|
|
||||||
|
def get_connection():
|
||||||
|
global conn
|
||||||
|
if not conn:
|
||||||
|
conn = MySQLdb.connect(host=host, user=user)
|
||||||
|
return conn
|
||||||
|
|
||||||
|
def hash_password(s):
|
||||||
|
return generate_password_hash(s)
|
||||||
|
|
||||||
|
def check_password(hashed_password, try_password):
|
||||||
|
return check_password_hash(hashed_password, try_password)
|
||||||
|
|
||||||
|
def generate_string(length):
|
||||||
|
return "".join([random.choice(string.letters + string.digits) for x in range(length)])
|
||||||
|
|
||||||
|
def unix_time_millis(dt):
|
||||||
|
epoch = datetime.datetime.utcfromtimestamp(0)
|
||||||
|
return (dt - epoch).total_seconds() * 1000.0
|
||||||
|
|
||||||
|
def get_time_since_epoch():
|
||||||
|
return unix_time_millis(datetime.datetime.now())
|
|
@ -5,6 +5,9 @@ import config
|
||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from api.api import api
|
||||||
|
from flask import Flask
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.secret_key = config.SECRET
|
app.secret_key = config.SECRET
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue