Example #1
0
def db_serialize_node(session, tid, language):
    """
    Serialize node info.
    """
    # Contexts and Receivers relationship
    configured = session.query(models.ReceiverContext).filter(models.ReceiverContext.context_id == models.Context.id,
                                                              models.Context.tid == tid).count() > 0

    node = ConfigFactory(session, tid, 'public_node').serialize()

    misc_dict = {
        'languages_enabled': models.EnabledLanguage.list(session, tid) if node['wizard_done'] else list(LANGUAGES_SUPPORTED_CODES),
        'languages_supported': LANGUAGES_SUPPORTED,
        'configured': configured,
        'accept_submissions': State.accept_submissions,
        'logo': db_get_file(session, tid, u'logo'),
        'favicon': db_get_file(session, tid, u'favicon'),
        'css': db_get_file(session, tid, u'css'),
        'homepage': db_get_file(session, tid, u'homepage'),
        'script': db_get_file(session, tid, u'script')
    }

    l10n_dict = NodeL10NFactory(session, tid).localized_dict(language)

    return merge_dicts(node, l10n_dict, misc_dict)
Example #2
0
def db_update_node(store, request, language):
    """
    Update and serialize the node infos

    :param store: the store on which perform queries.
    :param language: the language in which to localize data
    :return: a dictionary representing the serialization of the node
    """
    enable_disable_languages(store, request)

    if language in request['languages_enabled']:
        node_l10n = NodeL10NFactory(store)
        node_l10n.update(request, language)

    node = NodeFactory(store)
    node.update(request)

    if request[
            'basic_auth'] and request['basic_auth_username'] != '' and request[
                'basic_auth_password'] != '':
        node.set_val('basic_auth', True)
        node.set_val('basic_auth_username', request['basic_auth_username'])
        node.set_val('basic_auth_password', request['basic_auth_password'])
    else:
        node.set_val('basic_auth', False)

    db_refresh_memory_variables(store)

    # TODO pass instance of db_update_node into admin_serialize
    return db_admin_serialize_node(store, language)
Example #3
0
def db_serialize_node(store, language):
    """
    Serialize node info.
    """
    # Contexts and Receivers relationship
    configured = store.find(models.ReceiverContext).count() > 0

    ro_node = NodeFactory(store).public_export()

    misc_dict = {
        'languages_enabled': l10n.EnabledLanguage.list(store),
        'languages_supported': LANGUAGES_SUPPORTED,
        'configured': configured,
        'accept_submissions': GLSettings.accept_submissions,
        'logo': db_get_file(store, u'logo'),
        'favicon': db_get_file(store, u'favicon'),
        'css': db_get_file(store, u'css'),
        'homepage': db_get_file(store, u'homepage'),
        'script': db_get_file(store, u'script')
    }

    l10n_dict = NodeL10NFactory(store).localized_dict(language)

    ret = disjoint_union(ro_node, l10n_dict, misc_dict)

    return ret
Example #4
0
    def run_node_mgr(self, store):
        # Initialize the Node manager
        node_l10n = NodeL10NFactory(store)

        # Make a query with the Node manager
        ret = node_l10n.retrieve_rows('en')
        self.assertTrue(len(ret) == 18)
Example #5
0
def db_update_node(session, tid, request, language):
    """
    Update and serialize the node infos

    :param session: the session on which perform queries.
    :param language: the language in which to localize data
    :return: a dictionary representing the serialization of the node
    """
    node = ConfigFactory(session, tid, 'node')

    if tid != 1:
        request['enable_signup'] = False

    node.update(request)

    if request['basic_auth'] and request['basic_auth_username'] and request[
            'basic_auth_password']:
        node.set_val(u'basic_auth', True)
        node.set_val(u'basic_auth_username', request['basic_auth_username'])
        node.set_val(u'basic_auth_password', request['basic_auth_password'])
    else:
        node.set_val(u'basic_auth', False)

    db_update_enabled_languages(session, tid, request['languages_enabled'],
                                request['default_language'])

    if language in request['languages_enabled']:
        node_l10n = NodeL10NFactory(session, tid)
        node_l10n.update(request, language)

    db_refresh_memory_variables(session, [tid])

    # TODO pass instance of db_update_node into admin_serialize
    return db_admin_serialize_node(session, tid, language)
Example #6
0
def wizard(store, request, language):
    node = NodeFactory(store)

    if node.get_val('wizard_done'):
        # TODO report as anomaly
        log.err("DANGER: Wizard already initialized!")
        raise errors.ForbiddenOperation

    try:
        node._query_group()

        node.set_val('name', request['node']['name'])
        node.set_val('default_language', language)
        node.set_val('wizard_done', True)

        if GLSettings.onionservice is not None:
            node.set_val('onionservice', GLSettings.onionservice)

        node_l10n = NodeL10NFactory(store)

        node_l10n.set_val('description', language,
                          request['node']['description'])
        node_l10n.set_val('header_title_homepage', language,
                          request['node']['name'])

        context = db_create_context(store, request['context'], language)

        langs_to_drop = EnabledLanguage.list(store)
        langs_to_drop.remove(language)
        if len(langs_to_drop):
            EnabledLanguage.remove_old_langs(store, langs_to_drop)

        request['receiver']['contexts'] = [context.id]
        request['receiver']['language'] = language
        db_create_receiver(store, request['receiver'], language)

        admin_dict = {
            'username': u'admin',
            'password': request['admin']['password'],
            'role': u'admin',
            'state': u'enabled',
            'deletable': False,
            'name': u'Admin',
            'public_name': u'Admin',
            'description': u'',
            'mail_address': request['admin']['mail_address'],
            'language': language,
            'password_change_needed': False,
            'pgp_key_remove': False,
            'pgp_key_fingerprint': '',
            'pgp_key_public': '',
            'pgp_key_expiration': datetime_null()
        }

        db_create_admin_user(store, admin_dict, language)

    except Exception as excep:
        log.err("Failed wizard initialization %s" % excep)
        raise excep
Example #7
0
    def run_node_mgr(self, store):
        # Initialize the Node manager
        node_l10n = NodeL10NFactory(store)
        num_trans = len(NodeL10NFactory.localized_keys)

        # Make a query with the Node manager
        ret = node_l10n.retrieve_rows(u'en')

        self.assertTrue(len(ret) == num_trans)
Example #8
0
def serialize_ahmia(store, language):
    """
    Serialize Ahmia.fi descriptor.
    """
    ret_dict = NodeFactory(store).public_export()

    return {
        'title': ret_dict['name'],
        'description': NodeL10NFactory(store).get_val(language, 'description'),
        'keywords': '%s (GlobaLeaks instance)' % ret_dict['name'],
        'relation': ret_dict['public_site'],
        'language': ret_dict['default_language'],
        'contactInformation': u'',
        'type': 'GlobaLeaks'
    }
Example #9
0
def db_admin_serialize_node(store, language):
    node_dict = NodeFactory(store).admin_export()
    priv_dict = PrivateFactory(store)

    # Contexts and Receivers relationship
    configured = store.find(models.ReceiverContext).count() > 0

    misc_dict = {
        'version': priv_dict.get_val(u'version'),
        'latest_version': priv_dict.get_val(u'latest_version'),
        'languages_supported': LANGUAGES_SUPPORTED,
        'languages_enabled': EnabledLanguage.list(store),
        'configured': configured
    }

    l10n_dict = NodeL10NFactory(store).localized_dict(language)

    return utils.sets.merge_dicts(node_dict, misc_dict, l10n_dict)
Example #10
0
def db_admin_serialize_node(store, language):
    node_dict = NodeFactory(store).admin_export()

    # Contexts and Receivers relationship
    configured  = store.find(models.ReceiverContext).count() > 0
    custom_homepage = os.path.isfile(os.path.join(GLSettings.static_path, "custom_homepage.html"))

    misc_dict = {
        'version': PrivateFactory(store).get_val('version'),
        'languages_supported': LANGUAGES_SUPPORTED,
        'languages_enabled': EnabledLanguage.list(store),
        'configured': configured,
        'custom_homepage': custom_homepage,
    }

    l10n_dict = NodeL10NFactory(store).localized_dict(language)

    return utils.sets.disjoint_union(node_dict, misc_dict, l10n_dict)
Example #11
0
def db_admin_serialize_node(session, tid, language):
    config = ConfigFactory(session, tid, 'admin_node').serialize()

    # Contexts and Receivers relationship
    configured = session.query(models.ReceiverContext).filter(models.ReceiverContext.context_id == models.Context.id,
                                                              models.Context.tid).count() > 0

    misc_dict = {
        'languages_supported': LANGUAGES_SUPPORTED,
        'languages_enabled': models.EnabledLanguage.list(session, tid),
        'configured': configured,
        'root_tenant': tid == 1,
        'https_possible': tid == 1 or State.tenant_cache[1].reachable_via_web,
    }

    l10n_dict = NodeL10NFactory(session, tid).localized_dict(language)

    return utils.sets.merge_dicts(config, misc_dict, l10n_dict)