Adding network/address to db
This commit is contained in:
parent
5d408d4a14
commit
b408e161c4
3 changed files with 111 additions and 8 deletions
1
Pipfile
1
Pipfile
|
@ -8,6 +8,7 @@ flask = "*"
|
||||||
flask-jsonpify = "*"
|
flask-jsonpify = "*"
|
||||||
flask-sqlalchemy = "*"
|
flask-sqlalchemy = "*"
|
||||||
flask-restful = "*"
|
flask-restful = "*"
|
||||||
|
psycopg2 = "*"
|
||||||
|
|
||||||
[dev-packages]
|
[dev-packages]
|
||||||
|
|
||||||
|
|
29
Pipfile.lock
generated
29
Pipfile.lock
generated
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"_meta": {
|
"_meta": {
|
||||||
"hash": {
|
"hash": {
|
||||||
"sha256": "7feeea3eb83feed49cc045bdd236bc50b3a190689a269134b97696eacf0b5b1b"
|
"sha256": "e480f6e4921aea429b583cddf2491e5c7b9dd7872be4663dddc917e3fdaf9249"
|
||||||
},
|
},
|
||||||
"pipfile-spec": 6,
|
"pipfile-spec": 6,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -55,11 +55,11 @@
|
||||||
},
|
},
|
||||||
"flask-sqlalchemy": {
|
"flask-sqlalchemy": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:3bc0fac969dd8c0ace01b32060f0c729565293302f0c4269beed154b46bec50b",
|
"sha256:0c9609b0d72871c540a7945ea559c8fdf5455192d2db67219509aed680a3d45a",
|
||||||
"sha256:5971b9852b5888655f11db634e87725a9031e170f37c0ce7851cf83497f56e53"
|
"sha256:8631bbea987bc3eb0f72b1f691d47bd37ceb795e73b59ab48586d76d75a7c605"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==2.3.2"
|
"version": "==2.4.0"
|
||||||
},
|
},
|
||||||
"itsdangerous": {
|
"itsdangerous": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -108,6 +108,23 @@
|
||||||
],
|
],
|
||||||
"version": "==1.1.1"
|
"version": "==1.1.1"
|
||||||
},
|
},
|
||||||
|
"psycopg2": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:00cfecb3f3db6eb76dcc763e71777da56d12b6d61db6a2c6ccbbb0bff5421f8f",
|
||||||
|
"sha256:076501fc24ae13b2609ba2303d88d4db79072562f0b8cc87ec1667dedff99dc1",
|
||||||
|
"sha256:4e2b34e4c0ddfeddf770d7df93e269700b080a4d2ec514fec668d71895f56782",
|
||||||
|
"sha256:5cacf21b6f813c239f100ef78a4132056f93a5940219ec25d2ef833cbeb05588",
|
||||||
|
"sha256:61f58e9ecb9e4dc7e30be56b562f8fc10ae3addcfcef51b588eed10a5a66100d",
|
||||||
|
"sha256:8954ff6e47247bdd134db602fcadfc21662835bd92ce0760f3842eacfeb6e0f3",
|
||||||
|
"sha256:b6e8c854cdc623028e558a409b06ea2f16d13438335941c7765d0a42b5bedd33",
|
||||||
|
"sha256:baca21c0f7344576346e260454d0007313ccca8c170684707a63946b27a56c8f",
|
||||||
|
"sha256:bb1735378770fb95dbe392d29e71405d45c8bdcfa064f916504833a92ab03c55",
|
||||||
|
"sha256:de3d3c46c1ee18f996db42d1eb44cf1565cc9e38fb1dbd9b773ff6b3fa8035d7",
|
||||||
|
"sha256:dee885602bb200bdcb1d30f6da6c7bb207360bc786d0a364fe1540dd14af0bab"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==2.8.2"
|
||||||
|
},
|
||||||
"pytz": {
|
"pytz": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda",
|
"sha256:303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda",
|
||||||
|
@ -124,9 +141,9 @@
|
||||||
},
|
},
|
||||||
"sqlalchemy": {
|
"sqlalchemy": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:d5432832f91d200c3d8b473a266d59442d825f9ea744c467e68c5d9a9479fbce"
|
"sha256:91c54ca8345008fceaec987e10924bf07dcab36c442925357e5a467b36a38319"
|
||||||
],
|
],
|
||||||
"version": "==1.3.2"
|
"version": "==1.3.3"
|
||||||
},
|
},
|
||||||
"werkzeug": {
|
"werkzeug": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
|
|
@ -1,16 +1,75 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
USERLENGTH = 50
|
||||||
|
|
||||||
|
import ipaddress
|
||||||
|
import random
|
||||||
|
import sys
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask_restful import Resource, Api
|
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__)
|
app = Flask(__name__)
|
||||||
api = Api(app)
|
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):
|
class Game(Resource):
|
||||||
def get(self):
|
def get(self):
|
||||||
return {'hello': 'world'}
|
return {'hello': 'list of levels'}
|
||||||
|
|
||||||
|
|
||||||
api.add_resource(Game, '/game')
|
api.add_resource(Game, '/game')
|
||||||
|
@ -21,4 +80,30 @@ def high_score():
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
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')
|
app.run(port='5002')
|
||||||
|
|
Loading…
Reference in a new issue