Exemplo n.º 1
0
    def epilogue(self):
        old_node = self.store_old.find(self.model_from['Node']).one()
        old_notif = self.store_old.find(self.model_from['Notification']).one()

        with open(os.path.join(GLSettings.client_path, 'favicon.ico'),
                  'r') as favicon_file:
            data = favicon_file.read()
            files.db_add_file(self.store_new, data, u'favicon')
            self.entries_count['File'] += 1

        file_path = os.path.join(GLSettings.static_path,
                                 'custom_homepage.html')
        if os.path.exists(file_path):
            if files.db_get_file(self.store_new, u'homepage') == '':
                with open(file_path, 'r') as homepage_file:
                    data = homepage_file.read()
                    files.db_add_file(self.store_new, data, u'homepage')
                    self.entries_count['File'] += 1

            os.remove(file_path)

        #### Create ConfigL10N table and rows ####
        for lang in old_node.languages_enabled:
            self.store_new.add(l10n.EnabledLanguage(lang))

        self._migrate_l10n_static_config(old_node, 'node')
        self._migrate_l10n_static_config(old_notif, 'templates')

        # TODO assert that localized_keys matches exactly what is stored in the DB

        #### Create Config table and rows ####

        # Migrate Config saved in Node
        for var_name, item_def in GLConfig['node'].iteritems():
            old_val = getattr(old_node, var_name)

            # XXX this can throw errors if the validators run
            item = Config('node', var_name, old_val)
            self.store_new.add(item)

        # Migrate Config saved in Notification
        for var_name, item_def in GLConfig['notification'].iteritems():
            old_val = getattr(old_notif, var_name)

            if var_name == 'exception_email_pgp_key_expiration' and old_val is not None:
                old_val = properties.iso_strf_time(old_val)

            # NOTE this will throw errors if the validators run
            item = Config('notification', var_name, old_val)
            self.store_new.add(item)

        # Migrate private fields
        self.store_new.add(
            Config('private', 'receipt_salt', old_node.receipt_salt))
        self.store_new.add(
            Config('private', 'smtp_password', old_notif.password))

        # Set old verions that will be then handled by the version update
        self.store_new.add(Config('private', 'version', 'X.Y.Z'))
        self.store_new.add(Config('private', 'version_db', 0))
Exemplo n.º 2
0
    def epilogue(self):
        old_node = self.store_old.find(self.model_from['Node']).one()
        old_notif = self.store_old.find(self.model_from['Notification']).one()

        with open(os.path.join(GLSettings.client_path, 'favicon.ico'), 'r') as favicon_file:
            data = favicon_file.read()
            files.db_add_file(self.store_new, data, u'favicon')
            self.entries_count['File'] += 1

        file_path = os.path.join(GLSettings.static_path, 'custom_homepage.html')
        if os.path.exists(file_path):
            if files.db_get_file(self.store_new, u'homepage') == '':
                with open(file_path, 'r') as homepage_file:
                    data = homepage_file.read()
                    files.db_add_file(self.store_new, data, u'homepage')
                    self.entries_count['File'] += 1

            os.remove(file_path)

        #### Create ConfigL10N table and rows ####
        for lang in old_node.languages_enabled:
            self.store_new.add(l10n.EnabledLanguage(lang))

        self._migrate_l10n_static_config(old_node, 'node')
        self._migrate_l10n_static_config(old_notif, 'templates')

        # TODO assert that localized_keys matches exactly what is stored in the DB

        #### Create Config table and rows ####

        # Migrate Config saved in Node
        for var_name, item_def in GLConfig['node'].iteritems():
            old_val = getattr(old_node, var_name)

            # XXX this can throw errors if the validators run
            item = Config('node', var_name, old_val)
            self.store_new.add(item)

        # Migrate Config saved in Notification
        for var_name, item_def in GLConfig['notification'].iteritems():
            old_val = getattr(old_notif, var_name)

            if var_name == 'exception_email_pgp_key_expiration' and old_val is not None:
                old_val = properties.iso_strf_time(old_val)

            # NOTE this will throw errors if the validators run
            item = Config('notification', var_name, old_val)
            self.store_new.add(item)

        # Migrate private fields
        self.store_new.add(Config('private', 'receipt_salt', old_node.receipt_salt))
        self.store_new.add(Config('private', 'smtp_password', old_notif.password))

        # Set old verions that will be then handled by the version update
        self.store_new.add(Config('private', 'version', 'X.Y.Z'))
        self.store_new.add(Config('private', 'version_db', 0))
Exemplo n.º 3
0
def parse_pgp_options(notif, request):
    """
    Used for parsing PGP key infos and fill related notification configurations.

    @param notif: the notif orm object
    @param request: the dictionary containing the pgp infos to be parsed
    @return: None
    """
    pgp_key_public = request['exception_email_pgp_key_public']
    remove_key = request['exception_email_pgp_key_remove']

    k = None
    if not remove_key and pgp_key_public != '':
        k = parse_pgp_key(pgp_key_public)

    if k is not None:
        notif.set_val('exception_email_pgp_key_public', k['public'])
        notif.set_val('exception_email_pgp_key_fingerprint', k['fingerprint'])
        notif.set_val('exception_email_pgp_key_expiration', iso_strf_time(k['expiration']))
    else:
        notif.set_val('exception_email_pgp_key_public', '')
        notif.set_val('exception_email_pgp_key_fingerprint', '')
        notif.set_val('exception_email_pgp_key_expiration', '')
Exemplo n.º 4
0
        'source_name': Unicode(validator=shorttext_v, default=u'GlobaLeaks - CHANGE EMAIL ACCOUNT USED FOR NOTIFICATION'),
        'source_email': Unicode(validator=shorttext_v, default=u'*****@*****.**'),

        'security': Unicode(validator=shorttext_v, default=u'TLS'),
        'disable_admin_notification_emails': Bool(default=False),
        'disable_custodian_notification_emails': Bool(default=False),
        'disable_receiver_notification_emails': Bool(default=False),

        'tip_expiration_threshold': Int(validator=natnum_v, default=72), # Hours
        'notification_threshold_per_hour': Int(validator=natnum_v, default=20),

        'exception_email_address': Unicode(validator=shorttext_v, default=u'*****@*****.**'),
        'exception_email_pgp_key_fingerprint': Unicode(default=u''),
        'exception_email_pgp_key_public': Unicode(default=u''),
        'exception_email_pgp_key_expiration': Unicode(default=iso_strf_time(datetime_null())),
    },
    'node': {
        'name': Unicode(validator=shorttext_v, default=u''),

        'basic_auth': Bool(default=False),
        'basic_auth_username': Unicode(default=u''),
        'basic_auth_password': Unicode(default=u''),

        'public_site': Unicode(validator=shorttext_v, default=u''),
        'hidden_service': Unicode(validator=shorttext_v, default=u''),
        'tb_download_link': Unicode(validator=shorttext_v, default=u'https://www.torproject.org/download/download'),

        'default_language': Unicode(validator=shorttext_v, default=u'en'),
        'default_password': Unicode(validator=longtext_v, default=u'globaleaks'),
Exemplo n.º 5
0
     Bool(default=False),
     'disable_receiver_notification_emails':
     Bool(default=False),
     'tip_expiration_threshold':
     Int(validator=natnum_v, default=72),
     'notification_threshold_per_hour':
     Int(validator=natnum_v, default=20),
     'exception_email_address':
     Unicode(validator=shorttext_v,
             default=u'*****@*****.**'),
     'exception_email_pgp_key_fingerprint':
     Unicode(default=u''),
     'exception_email_pgp_key_public':
     Unicode(default=u''),
     'exception_email_pgp_key_expiration':
     Unicode(default=iso_strf_time(datetime_null())),
 },
 'node': {
     'name':
     Unicode(validator=shorttext_v, default=u''),
     'basic_auth':
     Bool(default=False),
     'basic_auth_username':
     Unicode(default=u''),
     'basic_auth_password':
     Unicode(default=u''),
     'public_site':
     Unicode(validator=shorttext_v, default=u''),
     'hidden_service':
     Unicode(validator=shorttext_v, default=u''),
     'tb_download_link':