diff --git a/barbican.py b/barbican.py index 689977cb4..16318eee0 100644 --- a/barbican.py +++ b/barbican.py @@ -44,6 +44,10 @@ login_manager.login_view = 'login' def hello(): return render_template("index.html") +@app.route("/events") +def events(): + return render_template("events.html") + # # Login forms @@ -87,4 +91,4 @@ if __name__ == '__main__': if not os.path.exists('/tmp/barbican.db'): app.logger.info('No database detected at /tmp/barbican.db. Creating one and the admin user.') init_db() - app.run(debug=True) \ No newline at end of file + app.run(debug=True) diff --git a/barbican_api.py b/barbican_api.py index cf0bcb9b7..02661cc68 100644 --- a/barbican_api.py +++ b/barbican_api.py @@ -116,10 +116,37 @@ def logs(tenant_id): events_dicts = map(Event.as_dict, events.all()) return Response(json.dumps(events_dicts, cls=DateTimeJsonEncoder), mimetype='application/json') +@api.route('/alllogs/', methods=['GET']) +def alllogs(timestamp=None): + events = Event.query.order_by(Event.received_on) + helper = Helper() + json_str = '''{ + "aaData":[ + ''' + for event in events.all(): + json_str += '''["%s","%s","%s","%s","%s","%s", "%s" + ],''' % (event.id,event.received_on, event.tenant_id, event.key_id, event.agent_id, event.severity, helper.html_escape(event.message)) + json_str = json_str[:-1] + json_str += '''] + }''' + return Response(json_str, mimetype='application/json') class DateTimeJsonEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime.datetime): return obj.isoformat() else: - return super(DateTimeJsonEncoder, self).default(obj) \ No newline at end of file + return super(DateTimeJsonEncoder, self).default(obj) + +class Helper: + def __init__(self): + self.html_escape_table = { + "&": "&", + '"': """, + "'": "'", + ">": ">", + "<": "<", + } + + def html_escape(self,text): + return "".join(self.html_escape_table.get(c,c) for c in text) diff --git a/barbican_api_test.py b/barbican_api_test.py index b3dc6d8a2..974193efb 100644 --- a/barbican_api_test.py +++ b/barbican_api_test.py @@ -83,16 +83,16 @@ class BarbicanAPITesting: response = requests.get(the_url) print response.json - def add_log(self, tenant_id): + def add_log(self, tenant_id=123, severity="INFO", message="Key accessed by user 'apache'." ): payload = ''' { "agent_id": "%s", "received_on": "%s", - "severity": "INFO", + "severity": "%s", "key_id": "%s", - "message": "Key accessed by user 'apache'." + "message": "%s" } - ''' % (self.agent_id, datetime.datetime.isoformat(datetime.datetime.now()), self.key_id) + ''' % (self.agent_id, datetime.datetime.isoformat(datetime.datetime.now()), severity, self.key_id, message) the_url = self.url + str(tenant_id) + "/logs/" headers = {'content-type': 'application/json'} response = requests.post(the_url,data=payload, headers=headers) @@ -103,6 +103,11 @@ class BarbicanAPITesting: response = requests.get(the_url) return response.text + def get_alllogs(self): + the_url = self.url + "alllogs/" + response = requests.get(the_url) + return response.text + def get_tenant(self, tenant_id): the_url = self.url + str(tenant_id) + "/" response = requests.get(the_url) @@ -125,5 +130,11 @@ test1.get_agents(1234) print test1.add_policy("Before start up", 1234) print test1.get_policy(1234) +for k in range(1,50): + test1.create_tenant(k) + #test1.add_log(k, severity="INFO", message="Access from agent") + print test1.add_log(k, severity="INFO", message='Error while trying to +