mirror of https://github.com/JohnHammond/CTFd.git
Some styling updates
parent
ad44018a1b
commit
135b714479
|
@ -67,13 +67,13 @@
|
|||
</div>
|
||||
|
||||
<div class="container">
|
||||
{% block content %}
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
<div class="navbar navbar-bottom footer">
|
||||
<p class="text-muted text-center"><a style="text-decoration:none;" href="https://ctfd.io"><sub>Powered by CTFd</sub></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="{{ request.script_root }}/static/admin/js/vendor/jquery.min.js"></script>
|
||||
<script src="{{ request.script_root }}/static/admin/js/vendor/marked.min.js"></script>
|
||||
<script src="{{ request.script_root }}/static/admin/js/vendor/bootstrap.min.js"></script>
|
||||
|
|
|
@ -3,8 +3,9 @@
|
|||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<h2 style="text-align:center;">I don't think you're allowed here</h2>
|
||||
<h2 style="text-align:center;">Not so sorry about that</h2>
|
||||
<h1 class="text-center">403</h1>
|
||||
<h2 class="text-center">An authorization error has occured</h2>
|
||||
<h2 class="text-center">Please try again</h2>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -3,8 +3,9 @@
|
|||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<h2 style="text-align:center;">Whoops, looks like we can't find that.</h2>
|
||||
<h2 style="text-align:center;">Sorry about that</h2>
|
||||
<h1 class="text-center">404</h1>
|
||||
<h2 class="text-center">Whoops, looks like we can't find that.</h2>
|
||||
<h2 class="text-center">Sorry about that</h2>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<h2 style="text-align:center;">Uhh what did you just do?</h2>
|
||||
<h1 class="text-center">500</h1>
|
||||
<h2 class="text-center">An Internal Server Error has occured</h2>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<h2 style="text-align:center;">That action isn't allowed</h2>
|
||||
<h1 class="text-center">502</h1>
|
||||
<h2 class="text-center">That action isn't allowed</h2>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -48,16 +48,11 @@
|
|||
</label>
|
||||
</span>
|
||||
<br/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container main-container" style="margin-bottom:100px;">
|
||||
<div id="login-container" class="col-md-6 col-md-offset-3">
|
||||
<div class="submit-row text-center">
|
||||
<button type="submit" id="submit" tabindex="5" class="btn btn-md btn-theme btn-outlined">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -30,16 +30,16 @@ def upgrade():
|
|||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
|
||||
## Copy over flags data to Keys table
|
||||
print("Getting bind...")
|
||||
# print("Getting bind...")
|
||||
conn = op.get_bind()
|
||||
|
||||
print("Executing: SELECT id, flags from challenges")
|
||||
# print("Executing: SELECT id, flags from challenges")
|
||||
res = conn.execute(text("SELECT id, flags from challenges"))
|
||||
results = res.fetchall()
|
||||
|
||||
print("There are {} results".format(len(results)))
|
||||
# print("There are {} results".format(len(results)))
|
||||
new_keys = []
|
||||
print("Processing existing flags")
|
||||
# print("Processing existing flags")
|
||||
for r in results:
|
||||
if r[1]: ## Check if flags are NULL
|
||||
data = json.loads(r[1])
|
||||
|
@ -48,48 +48,48 @@ def upgrade():
|
|||
if new_keys:
|
||||
## Base CTFd databases actually already insert into Keys but the database does not make use of them
|
||||
## This prevents duplicate entries of keys
|
||||
print("Executing: TRUNCATE keys")
|
||||
# print("Executing: TRUNCATE keys")
|
||||
conn.execute(text("TRUNCATE `keys`"))
|
||||
|
||||
print("Bulk inserting the keys")
|
||||
op.bulk_insert(keys_table, new_keys)
|
||||
|
||||
## Add type column to challenges
|
||||
print("Adding type column to challenges")
|
||||
# print("Adding type column to challenges")
|
||||
op.add_column('challenges', sa.Column('type', sa.Integer(), nullable=True, default=0))
|
||||
|
||||
## Set all NULLs to 0
|
||||
print("Setting all NULLs to 0")
|
||||
# print("Setting all NULLs to 0")
|
||||
conn.execute("UPDATE challenges set type=0 WHERE type IS NULL")
|
||||
|
||||
## Drop flags from challenges
|
||||
print("Dropping flags column from challenges")
|
||||
# print("Dropping flags column from challenges")
|
||||
try:
|
||||
op.drop_column('challenges', 'flags')
|
||||
except sa.exc.OperationalError:
|
||||
print("Failed to drop flags. Likely due to SQLite")
|
||||
|
||||
|
||||
print("Finished")
|
||||
# print("Finished")
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
print("Getting bind...")
|
||||
# print("Getting bind...")
|
||||
conn = op.get_bind()
|
||||
|
||||
print("Adding flags column back to challenges table")
|
||||
# print("Adding flags column back to challenges table")
|
||||
op.add_column('challenges', sa.Column('flags', sa.TEXT(), nullable=True))
|
||||
|
||||
print("Dropping type column from challenges table")
|
||||
# print("Dropping type column from challenges table")
|
||||
op.drop_column('challenges', 'type')
|
||||
|
||||
print("Executing: SELECT id, flags from challenges")
|
||||
# print("Executing: SELECT id, flags from challenges")
|
||||
res = conn.execute("SELECT id, flags from challenges")
|
||||
results = res.fetchall()
|
||||
|
||||
print("There are {} results".format(len(results)))
|
||||
# print("There are {} results".format(len(results)))
|
||||
for chal_id in results:
|
||||
new_keys = Keys.query.filter_by(chal=chal_id[0]).all()
|
||||
old_flags = []
|
||||
|
@ -97,8 +97,8 @@ def downgrade():
|
|||
flag_dict = {'flag': new_key.flag, 'type': new_key.key_type}
|
||||
old_flags.append(flag_dict)
|
||||
old_flags =json.dumps(old_flags)
|
||||
print("Updating challenge {} to insert {}".format(chal_id[0], flag_dict))
|
||||
# print("Updating challenge {} to insert {}".format(chal_id[0], flag_dict))
|
||||
conn.execute(text('UPDATE challenges SET flags=:flags WHERE id=:id'), id=chal_id[0], flags=old_flags)
|
||||
|
||||
print("Finished")
|
||||
# print("Finished")
|
||||
# ### end Alembic commands ###
|
||||
|
|
Loading…
Reference in New Issue