Esempio n. 1
0
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
Esempio n. 2
0
    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
Esempio n. 3
0
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',
        })

Esempio n. 4
0
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))
Esempio n. 5
0
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)
Esempio n. 6
0
#!/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',