From 11487b11e17e2f5a6fad4ee27e07e6745eb8a2d0 Mon Sep 17 00:00:00 2001 From: ziirish Date: Thu, 14 Jul 2016 23:03:02 +0200 Subject: [PATCH] add: management scripts to ease database deployement and upgrade --- bui-manage | 3 +++ burpui/manage.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ setup.py | 2 ++ 3 files changed, 71 insertions(+) create mode 100755 bui-manage create mode 100644 burpui/manage.py diff --git a/bui-manage b/bui-manage new file mode 100755 index 00000000..9dbd8f42 --- /dev/null +++ b/bui-manage @@ -0,0 +1,3 @@ +#!/bin/bash + +python ./burpui -m manage $@ diff --git a/burpui/manage.py b/burpui/manage.py new file mode 100644 index 00000000..2367e0a8 --- /dev/null +++ b/burpui/manage.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import os +import sys + +from flask_script import Manager +from flask_migrate import Migrate, MigrateCommand + +# Try to load modules from our current env first +sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), '..')) +from burpui import create_app + +config = os.getenv('BUI_CONFIG') +app = create_app(config) +db = app.db + +migrate = Migrate(app, db) +manager = Manager(app) + +manager.add_command('db', MigrateCommand) + + +@manager.command +def create_user(name, backend='BASIC', password=None): + print('[*] Adding \'{}\' user...'.format(name)) + try: + handler = getattr(app, 'uhandler') + except AttributeError: + handler = None + + if not handler or len(handler.backends) == 0: + print('No authentication backend found') + sys.exit(1) + + back = None + for bck in handler.backends: + if bck.name == backend: + back = bck + + if not back: + print('No authentication backend found') + sys.exit(1) + + if back.add_user is False: + print("The '{}' backend does not support user creation".format(backend)) + sys.exit(2) + + if not password: + import random + + alphabet = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + pw_length = 8 + mypw = "" + + for i in range(pw_length): + next_index = random.randrange(len(alphabet)) + mypw += alphabet[next_index] + password = mypw + print('[+] Generated password: {}'.format(password)) + + success, _, _ = back.add_user(name, password) + print('[+] Success: {}'.format(success)) + + +if __name__ == '__main__': + manager.run() diff --git a/setup.py b/setup.py index fde77d5d..467dcd5b 100755 --- a/setup.py +++ b/setup.py @@ -214,6 +214,7 @@ setup( 'burp-ui=burpui.__main__:server', 'bui-agent=burpui.__main__:agent', 'bui-celery=burpui.__main__:celery', + 'bui-manage=burpui.__main__:manage', ], }, data_files=[ @@ -236,6 +237,7 @@ setup( 'dev': dev_requires, 'debian_wheezy': ['functools32'], 'celery': ['Celery', 'redis'], + 'sql': ['Flask-SQLAlchemy', 'Flask-Migrate'], }, tests_require=test_requires, classifiers=[