diff --git a/archive/fun.py b/archive/fun.py new file mode 100644 index 0000000..2b711d1 --- /dev/null +++ b/archive/fun.py @@ -0,0 +1,22 @@ +from flask import Flask, request +from flask_restful import Resource, Api +from sqlalchemy import create_engine +from json import dumps +from flask.json import jsonify + +db_connect = create_engine('sqlite:///chinook.db') +app = Flask(__name__) +api = Api(app) + +@app.route("/") +def hello(): + return """ +
+
+
+ +""" + +if __name__ == '__main__': + app.run(host="::", + port='5002') diff --git a/challenge.py b/challenge.py new file mode 100644 index 0000000..3e8c48f --- /dev/null +++ b/challenge.py @@ -0,0 +1,37 @@ +def require_args(*args): + parser = reqparse.RequestParser() + for arg in args: + parser.add_argument(arg, required=True) + return parser.parse_args() + + +class Challenge(object): + """ A sample challenge -- inherit this and overwrite accordingly """ + + points = 0 + provides = [] + requires = [] + description = None + dependencies_provided_by = {} + + def __init__(self, wrapper): + self.db = wrapper + + def game(self): + if request.method == 'GET': + return self.describe() + if request.method == 'POST': + return self.solve() + + def describe(self): + return self.description + + def save_points(self, user): + """ should be called when the challenge was solved successfully""" + + key = "points/{}".format(user, type(self).__name__) + self.db.set_user_key(user, key, self.points) + + def solve(self): + """ Needs to be implemented per challenge """ + pass diff --git a/challenges_ipv6.py b/challenges_ipv6.py new file mode 100644 index 0000000..02538a0 --- /dev/null +++ b/challenges_ipv6.py @@ -0,0 +1,9 @@ +import ipaddress +import random + +def get_random_ip(network): + net = ipaddress.IPv6Network(network) + addr_offset = random.randrange(2**64) + addr = net[0] + addr_offset + + return addr diff --git a/server.py b/server.py index b69673a..9683723 100644 --- a/server.py +++ b/server.py @@ -1,63 +1,16 @@ #!/usr/bin/env python3 -USERLENGTH = 50 - -import ipaddress -import random import sys import etcd import json import datetime +import inspect from ungleich_game_db import * from flask import Flask, abort, request, Response from flask_restful import reqparse -def get_random_ip(network): - net = ipaddress.IPv6Network(network) - addr_offset = random.randrange(2**64) - addr = net[0] + addr_offset - - return addr - -def require_args(*args): - parser = reqparse.RequestParser() - for arg in args: - parser.add_argument(arg, required=True) - return parser.parse_args() - - -class Challenge(object): - """ A sample challenge -- inherit this and overwrite accordingly """ - - points = 0 - provides = [] - requires = [] - description = None - dependencies_provided_by = {} - - def __init__(self, wrapper): - self.db = wrapper - - def game(self): - if request.method == 'GET': - return self.describe() - if request.method == 'POST': - return self.solve() - - def describe(self): - return self.description - - def save_points(self, user): - """ should be called when the challenge was solved successfully""" - - key = "points/{}".format(user, type(self).__name__) - self.db.set_user_key(user, key, self.points) - - def solve(self): - """ Needs to be implemented per challenge """ - pass class RegisterNet(Challenge): points = 10