コード例 #1
0
ファイル: generator.py プロジェクト: th3architect/DATAGERRY
 def __init__(self, database_manager: DatabaseManagerMongo = None):
     self.key_holder = KeyHolder()
     self.header = {'alg': 'RS512'}
     self.database_manager = database_manager or DatabaseManagerMongo(
         **SystemConfigReader().get_all_values_from_section('Database'))
     self.auth_module = AuthModule(
         SystemSettingsReader(self.database_manager))
コード例 #2
0
    def has_updates(self) -> bool:
        """
        check if updates are available
        Returns: True else raise error

            """
        from cmdb.updater import UpdaterModule
        from cmdb.utils.system_reader import SystemSettingsReader, SectionError

        try:
            ssr = SystemSettingsReader(self.setup_database_manager)
            ssr.get_all_values_from_section('updater')

            upd_module = UpdaterModule(ssr)
            new_version = upd_module.get_last_version()['version']
            current_version = upd_module.settings.version

            if new_version > current_version:
                LOGGER.error(
                    f'Please run an update. There are new updates available.'
                    f'Current Updater Version: {current_version} '
                    f'Newest Update Version: {new_version}'
                )
                return False
        except SectionError as err:
            LOGGER.error(err.message)
            return False
        return True
コード例 #3
0
    def update_db_version(self):
        # update version updater settings
        try:
            updater_settings_values = UpdaterModule.__DEFAULT_SETTINGS__
            ssr = SystemSettingsReader(self.setup_database_manager)
            try:
                updater_settings_values = ssr.get_all_values_from_section(
                    'updater')
                updater_setting_instance = UpdateSettings(
                    **updater_settings_values)
            except Exception:
                # create updater section if not exist
                system_setting_writer: SystemSettingsWriter = SystemSettingsWriter(
                    self.setup_database_manager)
                updater_setting_instance = UpdateSettings(
                    **updater_settings_values)
                system_setting_writer.write(
                    _id='updater', data=updater_setting_instance.__dict__)

            # start running update files
            updater_setting_instance.run_updates(
                updater_settings_values.get('version'), ssr)

        except Exception as err:
            self.status = UpdateRoutine.UpateStatus.ERROR
            raise RuntimeError(
                f'Something went wrong during the generation of the updater module. \n Error: {err}'
            )
コード例 #4
0
def parse_authorization_header(header):
    """
    Parses the HTTP Auth Header to a JWT Token
    Args:
        header: Authorization header of the HTTP Request
    Examples:
        request.headers['Authorization'] or something same
    Returns:
        Valid JWT token
    """
    if not header:
        return None
    value = wsgi_to_bytes(header)
    try:
        auth_type, auth_info = value.split(None, 1)
        auth_type = auth_type.lower()
    except ValueError:
        # Fallback for old versions
        auth_type = b"bearer"
        auth_info = value

    if auth_type == b"basic":
        try:
            username, password = base64.b64decode(auth_info).split(b":", 1)

            with current_app.app_context():
                username = to_unicode(username, "utf-8")
                password = to_unicode(password, "utf-8")

                user_manager: UserManager = UserManager(
                    current_app.database_manager)
                auth_module = AuthModule(
                    SystemSettingsReader(current_app.database_manager))

                try:
                    user_instance = auth_module.login(user_manager, username,
                                                      password)
                except Exception as e:
                    return None
                if user_instance:
                    tg = TokenGenerator(current_app.database_manager)
                    return tg.generate_token(payload={
                        'user': {
                            'public_id': user_instance.get_public_id()
                        }
                    })
                else:
                    return None
        except Exception:
            return None

    if auth_type == b"bearer":
        try:
            tv = TokenValidator()
            decoded_token = tv.decode_token(auth_info)
            tv.validate_token(decoded_token)
            return auth_info
        except Exception:
            return None
    return None
コード例 #5
0
 def __init__(self, database_manager: DatabaseManagerMongo):
     """
     Args:
         key_directory: key based directory
     """
     self.ssr = SystemSettingsReader(database_manager)
     self.rsa_public = self.get_public_key()
     self.rsa_private = self.get_private_key()
コード例 #6
0
 def __init__(self, database_manager: DatabaseManagerMongo = None):
     self.key_holder = KeyHolder(database_manager)
     self.header = {'alg': 'RS512'}
     self.database_manager = database_manager
     self.auth_module = AuthModule(
         SystemSettingsReader(
             self.database_manager).get_all_values_from_section(
                 'auth', default=AuthModule.__DEFAULT_SETTINGS__))
コード例 #7
0
ファイル: updater.py プロジェクト: matthiasritter/DATAGERRY
 def increase_updater_version(self, value: int):
     ssr = SystemSettingsReader(self.database_manager)
     system_setting_writer: SystemSettingsWriter = SystemSettingsWriter(
         self.database_manager)
     updater_settings_values = ssr.get_all_values_from_section('updater')
     updater_setting_instance = UpdateSettings(**updater_settings_values)
     updater_setting_instance.version = value
     system_setting_writer.write(_id='updater',
                                 data=updater_setting_instance.__dict__)
コード例 #8
0
ファイル: holder.py プロジェクト: matthiasritter/DATAGERRY
 def __init__(self, key_directory=None):
     """
     Args:
         key_directory: key based directory
     """
     self.scr = SystemConfigReader()
     self.__dbm = DatabaseManagerMongo(
         **self.scr.get_all_values_from_section('Database'))
     self.ssr = SystemSettingsReader(self.__dbm)
     self.rsa_public = self.get_public_key()
     self.rsa_private = self.get_private_key()
コード例 #9
0
ファイル: security.py プロジェクト: matthiasritter/DATAGERRY
 def __init__(self, database_manager):
     self.ssr = SystemSettingsReader(database_manager)
     self.ssw = SystemSettingsWriter(database_manager)
     self.salt = "cmdb"
コード例 #10
0
LOGGER = logging.getLogger(__name__)
try:
    from cmdb.utils.error import CMDBError
except ImportError:
    CMDBError = Exception

settings_blueprint = RootBlueprint('settings_rest',
                                   __name__,
                                   url_prefix='/settings')

with current_app.app_context():
    from cmdb.interface.rest_api.settings_routes.system_routes import system_blueprint

    settings_blueprint.register_nested_blueprint(system_blueprint)

    system_settings_reader = SystemSettingsReader(
        database_manager=current_app.database_manager)


@settings_blueprint.route('/<string:section>/', methods=['GET'])
@settings_blueprint.route('/<string:section>', methods=['GET'])
@login_required
@insert_request_user
@right_required('base.system.view')
def get_settings_from_section(section: str, request_user: User):
    section_settings = system_settings_reader.get_all_values_from_section(
        section=section)
    if len(section_settings) < 1:
        return make_response([], 204)
    return make_response(section_settings)