aboutsummaryrefslogtreecommitdiff
path: root/pyenc/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyenc/__init__.py')
-rw-r--r--pyenc/__init__.py48
1 files changed, 38 insertions, 10 deletions
diff --git a/pyenc/__init__.py b/pyenc/__init__.py
index 6400b49..28829a1 100644
--- a/pyenc/__init__.py
+++ b/pyenc/__init__.py
@@ -9,8 +9,14 @@ functionallity is pulled in from other modules.
import logging
import random
import os.path
+import subprocess
-from domonic.html import a
+from domonic.html import (
+ a,
+ div,
+ img,
+ span,
+)
import flask
from flask import (
Flask,
@@ -20,6 +26,9 @@ from flask import (
url_for
)
from sqlalchemy.orm import joinedload
+import werkzeug.datastructures
+import http.client
+import urllib.parse
from .app import model
from .app import cmdline
@@ -60,19 +69,19 @@ def create_app():
return flask.render_template(
'list.html',
title='Hosts',
- items=[a(x.fqdn, _href=f'/host/{x.fqdn}')
+ items=[div(img(_class='distroicon',
+ _height=16,
+ **{'_data-host':x.fqdn}),
+ a(x.fqdn, _href=f'/host/{x.fqdn}'),
+ span(x.summary,_class='summary') if x.summary else [],
+ _class='hostline',
+ )
for x in result])
@app.route('/host/<host>')
def host(host):
host = model.Host.query.where(model.Host.fqdn == host).one()
- return flask.render_template(
- 'host.html',
- title=host.fqdn,
- env=host.environment.name,
- classes=[a(x.name, _href=f'/class/{x.name}')
- for x in host.classes])
-
+ return flask.render_template('host.html', host=host)
@app.route('/environment')
def environments():
@@ -104,7 +113,8 @@ def create_app():
return flask.render_template(
'list.html',
title='Classes',
- items=[a(cls.name, _href=f'/class/{cls.name}')
+ items=[div(a(cls.name, _href=f'/class/{cls.name}'),
+ span(_class="count", **{'_data-cls': cls.name}))
for cls in clss])
@app.route('/class/<name>')
@@ -129,6 +139,24 @@ def create_app():
title=f'{environment}/{path}',
content=content)
+ @app.route('/pdb')
+ def pdb_proxy():
+ h1 = http.client.HTTPConnection('busting.adrift.space:8080')
+ params = urllib.parse.urlencode({
+ 'query': request.args.get('query')
+ })
+ type = request.args.get('type')
+ # h1.request('GET', f'/pdb/query/v4?{params}')
+ h1.request('GET', f'/pdb/query/v4/{type}?{params}')
+ r1 = h1.getresponse()
+ data = r1.read()
+ d = werkzeug.datastructures.Headers()
+ for key, value in r1.headers.items():
+ d.add(key, value)
+ return flask.Response(response=[data],
+ status=r1.status,
+ headers=d)
+
# API?
@app.route('/remove', methods=['POST'])
def remove_classes():