#!/usr/bin/env python3 USERLENGTH = 50 import ipaddress import random import sys from flask import Flask from flask_restful import Resource, Api from flask_restful import reqparse # ORM support -- should be in database.py from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine from sqlalchemy.dialects import postgresql from sqlalchemy.orm import scoped_session, sessionmaker engine = create_engine('postgresql://localhost:5432/ungleichgame?host=/var/run/postgresql/') db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine)) Base = declarative_base() Base.query = db_session.query_property() def init_db(): Base.metadata.create_all(bind=engine) class Network(Base): __tablename__ = 'network' username = Column(String(USERLENGTH), primary_key=True) network = Column(postgresql.CIDR) def __init__(self, username, network): self.username = username self.network = network class Address(Base): __tablename__ = 'address' username = Column(String(USERLENGTH), primary_key=True) address = Column(postgresql.INET) def __init__(self, username, address): self.username = username self.address = address app = Flask(__name__) api = Api(app) class Level(Resource): points = 0 def test(self): pass class Ping6(Level): points = 10 def test(self): """ ping6 -c3 """ class Game(Resource): def get(self): return {'hello': 'list of levels'} api.add_resource(Game, '/game') @app.route("/") def high_score(): return "High score!" if __name__ == '__main__': init_db() #net = ipaddress.IPv6Network("2a0a:e5c1:101::/64") # net_base = ipaddress.IPv6Network("2a0a:e5c1::/64") # net_offset = random.randrange(2**80, 2**95) net_base = "2a0a:e5c1:{}::/64" net_offset = random.randrange(0, 9999) net = ipaddress.IPv6Network(net_base.format(net_offset)) print(net) n = Network('nico{}'.format(net_offset), str(net)) print(n) addr_offset = random.randrange(0, 2**64) addr = net[0] + addr_offset a = Address('nico{}'.format(net_offset), str(addr)) print(a) db_session.add(n) db_session.add(a) db_session.commit() sys.exit(0) app.run(port='5002')