Created
September 1, 2015 20:11
-
-
Save Seraf/bedb5d779e846c2a71da to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
import json | |
import os | |
from flask import Flask | |
from ConfigParser import ConfigParser | |
app = Flask(__name__) | |
LOGICAL_DIR = "{{ vault_backend_path}}/logical/" | |
VAULT_URL = "https://{{ vault_default_cert_url }}:{{ vault_default_port }}" | |
def recursive(array): | |
keys_list = '' | |
for key in array: | |
if 'customer' not in key: | |
if key[:1] == "_": | |
keys_list += '<li>%s</li>' % key[1:] | |
else: | |
keys_list += '<li>%s<ul>' % key + recursive(array[key]) + '</ul></li>' | |
return keys_list | |
def explore(rootdir): | |
""" | |
Creates a nested dictionary that represents the folder structure of rootdir | |
""" | |
html = "<html><body><table border=1>" | |
dir = {} | |
rootdir = rootdir.rstrip(os.sep) | |
start = rootdir.rfind(os.sep) + 1 | |
for path, dirs, files in os.walk(rootdir): | |
folders = path[start:].split(os.sep) | |
subdir = dict.fromkeys(files) | |
parent = reduce(dict.get, folders[:-1], dir) | |
parent[folders[-1]] = subdir | |
html += "<tr><td><b>Customer</b></td><td><b>Keys</b></td></tr>" | |
for customer in dir['logical']: | |
keys_list = '' | |
customer_name = "noname" | |
# find customer name | |
for key in dir['logical'][customer]: | |
if 'customer' in key: | |
customer_name = key.split('_customer')[0][1:] | |
keys_list += (recursive(dir['logical'][customer])) | |
html += "<tr><td>" + customer_name + "</td>" | |
html += "<td><ul>" + keys_list + "</ul></td>" | |
html += "</tr>" | |
html += "</table></body></html>" | |
return html | |
@app.route('/') | |
def list_index(): | |
return explore(LOGICAL_DIR) | |
if __name__ == '__main__': | |
app.run(host='0.0.0.0', port=80) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment