diff --git a/.gitignore b/.gitignore index ba715fa..197f6bc 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,4 @@ .*.swp .editix __pycache__/ -test.py +*.sqlite3 diff --git a/app/__init__.py b/app/__init__.py index e69de29..bb82e84 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -0,0 +1,8 @@ +from flask import Flask +from . import db + +app = Flask(__name__, instance_relative_config = True) + +from app import views + +app.config.from_object('config') diff --git a/app/db.py b/app/db.py new file mode 100644 index 0000000..9fd3e31 --- /dev/null +++ b/app/db.py @@ -0,0 +1,23 @@ +import os +import sqlite3 + +db_path = '/usr/local/lib/bootbox/local.sqlite3' + +class LocalDB(object): + def __init__(self, db_path = db_path): + self.db_path = db_path + self.conn = sqlite3.connect(self.db_path) + self.conn.row_factory = sqlite3.Row + self.cur = self.conn.cursor() + + def getMenu(self, menu): + result = [] + self.cur.execute('SELECT * FROM {0}'.format(menu)) + for row in self.cur.fetchall(): + result.append(dict(row)) + return(result) + + def close(self): + self.cur.close() + self.conn.close() + return() diff --git a/app/templates/formatting.ipxe.j2 b/app/templates/formatting.ipxe.j2 new file mode 100644 index 0000000..88f452a --- /dev/null +++ b/app/templates/formatting.ipxe.j2 @@ -0,0 +1,6 @@ +#!ipxe + +console --picture {{ request.url_root }}ipxe/bg.png --left 32 --right 32 --top 32 --bottom 48 + +{% block menu %} +{% endblock %} diff --git a/app/templates/main.ipxe.j2 b/app/templates/main.ipxe.j2 new file mode 100644 index 0000000..44066a7 --- /dev/null +++ b/app/templates/main.ipxe.j2 @@ -0,0 +1,21 @@ +{% extends 'formatting.ipxe.j2' %} +{% block menu%} +dhcp +echo MAIN MENU + +cpuid --ext 29 && set bits 64 || set bits 32 +cpuid --ext 29 && set arch x86_64 || set arch x86 + +:main +menu BootBox @ {{ request.url_root }} +{% for mt in ('install', 'utilities') %} +item --gap -- == {{ mt.upper() }} == + {% for os in db.getMenu(mt) %} +item --key {{ os['shortcut'] }} {{ os['name'] }} ({{ os['shortcut'] }}) {{ os['desc'] }} + {%- endfor %} +{% endfor %} + + + +shell +{% endblock %} diff --git a/app/views.py b/app/views.py index e69de29..4abcc8e 100644 --- a/app/views.py +++ b/app/views.py @@ -0,0 +1,35 @@ +import os +import pprint +import re +## +from flask import render_template, make_response, request, Response +from flask_autoindex import AutoIndex +## +from app import db +from app import app + +ua_re = re.compile(r'^iPXE/v[0-9.]+') + + +def getReqInfo(): + d = {} + for a in dir(request): + if a.startswith('_'): + continue + d[a] = getattr(request, a) + return(d) + + +@app.route('/', methods = ['GET']) +def index(): + DB = db.LocalDB() + result = render_template('main.ipxe.j2', + db = DB) + DB.close() + return(result) + + +@app.route('/foo', methods = ['GET']) +def foo(): + pprint.pprint(getReqInfo()) + return(Response())