def get_api(config): api = Api.create( django_settings.ACCOUNT_API_URL, config['api_user'], config['api_password'], ) FUNCTIONS_TO_CACHE = [ 'list_plans', 'quota', 'info', 'enterprise_features', 'enterprise_settings', 'list_groups', 'list_shares_for_brand', 'get_user_count', 'list_devices', 'list_shares', 'list_users', ] FUNCTIONS_TO_INVALIDATE_CACHE = { 'update_enterprise_settings': [api.enterprise_settings], 'create_group': [api.list_groups], 'edit_group': [api.list_groups], 'delete_group': [api.list_groups, api.list_users], 'create_user': [api.list_users, api.get_user_count], 'edit_user': [api.list_users], 'delete_user': [api.list_users, api.get_user_count], } def cache_api(fun): def dec(*args, **kwargs): name = fun.__name__ if name in FUNCTIONS_TO_INVALIDATE_CACHE: for f in FUNCTIONS_TO_INVALIDATE_CACHE[name]: update_method_prefix(f) if name in FUNCTIONS_TO_CACHE: key = make_cache_key(fun, *args, **kwargs) value = cache.get(key) if not value: value = fun(*args, **kwargs) cache.set(key, value) return value else: return fun(*args, **kwargs) return dec for attr in dir(api): fun_ = getattr(api, attr) if (callable(fun_) and (attr in FUNCTIONS_TO_CACHE or attr in FUNCTIONS_TO_INVALIDATE_CACHE)): setattr(api, attr, cache_api(fun_)) return api
def authenticate_superuser(self, username, password): log = logging.getLogger('admin_actions.authenticate_superuser') log.info('Attempting to log "%s" in as a superuser' % username) config = read_config_file() if config['api_user'] and (username != config['api_user']): log.info('Username "%s" does not match superuser username' % username) return None initial_auth = False if not config['api_user']: new_pass, api_pass = hash_password(password) api = Api.create( django_settings.ACCOUNT_API_URL, username, api_pass, ) try: api.ping() initial_auth = True except urllib2.HTTPError: log.info('''Failed initial log in for "%s" as a superuser. Password incorrect or unable to contact accounts api''' % username) return None local_pass = config.get('local_password', '') if initial_auth or bcrypt.hashpw(password, local_pass) == local_pass: try: user = User.objects.get(username=username) except ObjectDoesNotExist: user = User(username=username, password='******') user.is_staff = True user.is_superuser = True user.save() user.user_permissions = Permission.objects.filter( content_type__app_label='blue_mgnt', content_type__model='AccountsApi' ) return user else: msg = '''Failed to log in "%s" as a superuser. Password incorrect. ''' % username log.info(msg) return None
from netkes.netkes_agent import config_mgr from netkes.account_mgr.accounts_api import Api config = config_mgr.ConfigManager(config_mgr.default_config()) api = Api.create( 'https://spideroak.com/apis/accounts/v1/', config.config['api_user'], config.config['api_password'], ) groups = api.list_groups() def find_group(group_id): for g in config.config['groups']: if g['group_id'] == group_id: return g for group in groups: if not find_group(group['group_id']): config.config['groups'].append({ 'admin_group': False, 'group_id': group['group_id'], 'ldap_id': '', 'priority': 0, 'type': 'dn', 'user_source': 'local', })
import argparse from netkes import common from netkes.account_mgr.accounts_api import Api config = common.read_config_file() parser = argparse.ArgumentParser(description='Update OMVA URL.') parser.add_argument('url') args = parser.parse_args() api = Api.create(config["api_root"], config["api_user"], config["api_password"]) api.update_enterprise_settings(dict(omva_url=args.url))
import bcrypt import nacl.secret from nacl.exceptions import CryptoError from netkes import common from netkes.account_mgr.accounts_api import Api os.environ['DJANGO_SETTINGS_MODULE'] = 'omva.settings' from openmanage.views import create_secret_box config = common.read_config_file() api = Api.create( config["api_root"], config["api_user"], config["api_password"], ) date = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S') filename = 'openmanage-backup-%s.tar.bz2' % date path = '/opt/openmanage/tmp_backup/%s' % filename backup = api.backup() data = a2b_base64(backup['data']) try: secret_box, nonce = create_secret_box(config['local_password'], config['api_user']) data = secret_box.decrypt(data)
#!/usr/bin/python from netkes.netkes_agent import config_mgr from netkes.account_mgr.accounts_api import Api config = config_mgr.ConfigManager(config_mgr.default_config()) api = Api.create( config.config['api_root'], config.config['api_user'], config.config['api_password'], ) groups = api.list_groups() def find_group(group_id): for g in config.config['groups']: if g['group_id'] == group_id: return g for group in groups: if not find_group(group['group_id']): config.config['groups'].append({ 'admin_group': False, 'group_id': group['group_id'], 'ldap_id': '', 'priority': 0, 'type': 'dn',