コード例 #1
0
def evaluate_update_notification(session, state, latest_version):
    priv_fact = ConfigFactory(session, 1)

    stored_latest = priv_fact.get_val('latest_version')

    # Check if the running version is lower than the latest version
    if parse_version(stored_latest) >= parse_version(latest_version):
        return

    Cache.invalidate()

    priv_fact.set_val('latest_version', latest_version)

    # Check to reduce number of email notifications of new updates
    if parse_version(__version__) != parse_version(stored_latest):
        return

    for user_desc in db_get_users(session, 1, 'admin'):
        if not user_desc['notification']:
            continue

        lang = user_desc['language']
        template_vars = {
            'type': 'software_update_available',
            'latest_version': latest_version,
            'node': db_admin_serialize_node(session, 1, lang),
            'notification': db_get_notification(session, 1, lang),
            'user': user_desc,
        }

        state.format_and_send_mail(session, 1, user_desc, template_vars)
コード例 #2
0
    def certificate_mail_creation(self, session, mail_type, tid,
                                  expiration_date):
        for user_desc in db_get_users(session, tid, 'admin'):
            lang = user_desc['language']

            template_vars = {
                'type': mail_type,
                'node': db_admin_serialize_node(session, tid, lang),
                'notification': db_get_notification(session, tid, lang),
                'expiration_date': expiration_date,
                'user': user_desc,
            }

            self.state.format_and_send_mail(session, tid, user_desc,
                                            template_vars)
コード例 #3
0
ファイル: anomaly.py プロジェクト: svendber/GlobaLeaks
def generate_admin_alert_mail(session, tid, alert):
    for user_desc in db_get_users(session, tid, 'admin'):
        user_language = user_desc['language']

        data = {
            'type': 'admin_anomaly',
            'node': db_admin_serialize_node(session, tid, user_language),
            'notification': db_get_notification(session, tid, user_language),
            'alert': alert,
            'user': user_desc,
        }

        subject, body = Templating().get_mail_subject_and_body(data)

        db_schedule_email(session, tid, user_desc['mail_address'], subject,
                          body)
コード例 #4
0
    def prepare_admin_pgp_alerts(self, session, tid, expired_or_expiring):
        for user_desc in db_get_users(session, tid, 'admin'):
            user_language = user_desc['language']

            data = {
                'type': 'admin_pgp_alert',
                'node': db_admin_serialize_node(session, tid, user_language),
                'notification': db_get_notification(session, tid,
                                                    user_language),
                'users': expired_or_expiring,
                'user': user_desc,
            }

            subject, body = Templating().get_mail_subject_and_body(data)

            db_schedule_email(session, tid, user_desc['mail_address'], subject,
                              body)
コード例 #5
0
def evaluate_update_notification(session, state, latest_version):
    priv_fact = ConfigFactory(session, 1)

    stored_latest = priv_fact.get_val('latest_version')

    if parse_version(stored_latest) < parse_version(latest_version):
        Cache.invalidate()

        priv_fact.set_val('latest_version', latest_version)

        if parse_version(__version__) != parse_version(stored_latest):
            return

        for user_desc in db_get_users(session, 1, 'admin'):
            lang = user_desc['language']
            template_vars = {
                'type': 'software_update_available',
                'latest_version': latest_version,
                'node': db_admin_serialize_node(session, 1, lang),
                'notification': db_get_notification(session, 1, lang),
                'user': user_desc,
            }

            state.format_and_send_mail(session, 1, user_desc, template_vars)
コード例 #6
0
ファイル: signup.py プロジェクト: pabit/GlobaLeaks
def signup(session, request, language):
    """
    Transact handling the registration of a new signup

    :param session: An ORM session
    :param request: A user request
    :param language: A language of the request
    """
    config = ConfigFactory(session, 1)

    if not config.get_val('enable_signup'):
        raise errors.ForbiddenOperation

    request['activation_token'] = generateRandomKey(32)
    request['language'] = language

    # Delete the tenants created for the same subdomain that have still not been activated
    # Ticket reference: https://github.com/globaleaks/GlobaLeaks/issues/2640
    subquery = session.query(models.Tenant.id) \
                      .filter(models.Signup.subdomain == request['subdomain'],
                              not_(models.Signup.activation_token.is_(None)),
                              models.Tenant.id == models.Signup.tid,
                              models.Tenant.subdomain == models.Signup.subdomain) \
                      .subquery()

    session.query(models.Tenant).filter(
        models.Tenant.id.in_(subquery)).delete(synchronize_session=False)

    tenant_id = db_preallocate_tenant(session, {
        'label': request['subdomain'],
        'subdomain': request['subdomain']
    }).id

    signup = models.Signup(request)

    signup.tid = tenant_id

    session.add(signup)

    # We need to send two emails
    #
    # The first one is sent to the platform owner with the activation email.
    #
    # The second goes to the instance administrators notifying them that a new
    # platform has been added.

    signup_dict = serialize_signup(signup)

    # Email 1 - Activation Link
    template_vars = {
        'type': 'signup',
        'node': db_admin_serialize_node(session, 1, language),
        'notification': db_get_notification(session, 1, language),
        'signup': signup_dict
    }

    State.format_and_send_mail(session, 1, {'mail_address': signup.email},
                               template_vars)

    # Email 2 - Admin Notification
    for user_desc in db_get_users(session, 1, 'admin'):
        template_vars = {
            'type': 'admin_signup_alert',
            'node': db_admin_serialize_node(session, 1, user_desc['language']),
            'notification': db_get_notification(session, 1,
                                                user_desc['language']),
            'user': user_desc,
            'signup': signup_dict
        }

        State.format_and_send_mail(session, 1, user_desc, template_vars)