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'])
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'])
#################################################################################################################################### # 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()
#!/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)
#!/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])