Esempio n. 1
0
def initial_data():
    pdns_proto = os.environ['PDNS_PROTO']
    pdns_host = os.environ['PDNS_HOST']
    pdns_port = os.environ['PDNS_PORT']
    pdns_api_url = '{0}://{1}:{2}'.format(pdns_proto, pdns_host, pdns_port)

    api_url_setting = Setting('pdns_api_url', pdns_api_url)
    api_key_setting = Setting('pdns_api_key', os.environ['PDNS_API_KEY'])
    allow_create_domain_setting = Setting('allow_user_create_domain', True)

    try:
        flask_migrate.upgrade()

        db.session.add(api_url_setting)
        db.session.add(api_key_setting)
        db.session.add(allow_create_domain_setting)

        test_user = app.config.get('TEST_USER')
        test_user_pass = app.config.get('TEST_USER_PASSWORD')
        test_admin_user = app.config.get('TEST_ADMIN_USER')
        test_admin_pass = app.config.get('TEST_ADMIN_PASSWORD')

        admin_user = User(username=test_admin_user,
                          plain_text_password=test_admin_pass,
                          email="*****@*****.**")
        msg = admin_user.create_local_user()

        if not msg:
            raise Exception("Error occurred creating user {0}".format(msg))

        ordinary_user = User(username=test_user,
                             plain_text_password=test_user_pass,
                             email="*****@*****.**")
        msg = ordinary_user.create_local_user()

        if not msg:
            raise Exception("Error occurred creating user {0}".format(msg))

    except Exception as e:
        print("Unexpected ERROR: {0}".format(e))
        raise e

    yield

    db.session.close()
    os.unlink(app.config['TEST_DB_LOCATION'])
Esempio n. 2
0
def initial_apikey_data():
    pdns_proto = os.environ['PDNS_PROTO']
    pdns_host = os.environ['PDNS_HOST']
    pdns_port = os.environ['PDNS_PORT']
    pdns_api_url = '{0}://{1}:{2}'.format(pdns_proto, pdns_host, pdns_port)

    api_url_setting = Setting('pdns_api_url', pdns_api_url)
    api_key_setting = Setting('pdns_api_key', os.environ['PDNS_API_KEY'])
    allow_create_domain_setting = Setting('allow_user_create_domain', True)

    try:
        flask_migrate.upgrade()

        db.session.add(api_url_setting)
        db.session.add(api_key_setting)
        db.session.add(allow_create_domain_setting)

        test_user_apikey = app.config.get('TEST_USER_APIKEY')
        test_admin_apikey = app.config.get('TEST_ADMIN_APIKEY')

        dummy_apikey = ApiKey(desc="dummy", role_name="Administrator")

        admin_key = dummy_apikey.get_hashed_password(
            plain_text_password=test_admin_apikey).decode('utf-8')

        admin_apikey = ApiKey(key=admin_key,
                              desc="test admin apikey",
                              role_name="Administrator")
        admin_apikey.create()

        user_key = dummy_apikey.get_hashed_password(
            plain_text_password=test_user_apikey).decode('utf-8')

        user_apikey = ApiKey(key=user_key,
                             desc="test user apikey",
                             role_name="User")
        user_apikey.create()

    except Exception as e:
        print("Unexpected ERROR: {0}".format(e))
        raise e

    yield

    db.session.close()
    os.unlink(app.config['TEST_DB_LOCATION'])
Esempio n. 3
0
####################################################################################################################################
# A CLI Script to update list of accounts. Can be useful for people who want to execute updates from a cronjob
#
# Tip:
# When running from a cron, use flock (you might need to install it) to be sure only one process is running a time. eg:
# */5 * * * * flock -xn "/tmp/pdns-update-zones.lock" python /var/www/html/apps/poweradmin/update_accounts.py >/dev/null 2>&1
#
##############################################################

### Imports
import sys
import logging

from powerdnsadmin import create_app
from powerdnsadmin.models.account import Account
from powerdnsadmin.models.setting import Setting

app = create_app()
app.logger.setLevel(logging.INFO)

with app.app_context():
    status = Setting().get('bg_domain_updates')

    ### Check if bg_domain_updates is set to true
    if not status:
        app.logger.error(
            'Please turn on "bg_domain_updates" setting to run this job.')
        sys.exit(1)

    Account().update()
Esempio n. 4
0
#!/usr/bin/env python

import logging
import os

from powerdnsadmin import create_app
from powerdnsadmin.models.setting import Setting
from powerdnsadmin.models.user import User

if __name__ == '__main__':
    app = create_app()
    app.logger.setLevel(logging.INFO)
    with app.app_context():
        Setting().set(
            'pdns_api_url',
            os.environ.get('ADMIN_PDNS_API_URL', 'http://*****:*****@example.org')

        user = User(username='******',
                    plain_text_password=password,
        'GITHUB_OAUTH_AUTHORIZE_URL',
        'GOOGLE_OAUTH_ENABLED',
        'GOOGLE_OAUTH_CLIENT_ID',
        'GOOGLE_OAUTH_CLIENT_SECRET',
        'GOOGLE_TOKEN_URL',
        'GOOGLE_OAUTH_SCOPE',
        'GOOGLE_AUTHORIZE_URL',
        'GOOGLE_BASE_URL',
        'OIDC_OAUTH_ENABLED',
        'OIDC_OAUTH_KEY',
        'OIDC_OAUTH_SECRET',
        'OIDC_OAUTH_SCOPE',
        'OIDC_OAUTH_API_URL',
        'OIDC_OAUTH_TOKEN_URL',
        'OIDC_OAUTH_AUTHORIZE_URL',
        'FORWARD_RECORDS_ALLOW_EDIT',
        'REVERSE_RECORDS_ALLOW_EDIT',
        'TTL_OPTIONS'
    )


    # add every setting from environment variables
    import os
    import sys
    for v in legal_envvars_setting:
        if v in os.environ:
            name = v.lower()
            value = os.environ[v]
            Setting().set(name, value)
            print('Defined Setting: ' + name)
Esempio n. 6
0
#!/usr/bin/env python3
import sys
from powerdnsadmin import create_app
from powerdnsadmin.models.user import User
from powerdnsadmin.models.setting import Setting

app = create_app()

with app.app_context():
    user = User(
        username='******',
        plain_text_password=sys.argv[1],
        firstname='Administrator',
        role_id='Administrator')
    user.create_local_user()
    setting = Setting()
    forward_records_allow_edit = setting.get('forward_records_allow_edit')
    forward_records_allow_edit['LUA'] = True
    setting.set('forward_records_allow_edit', forward_records_allow_edit)
    setting.set('pdns_api_url', 'http://powerdns:8081/')
    setting.set('pdns_api_key', sys.argv[1])