def certificate_mail_creation(self, store, expiration_date):
        for user_desc in db_get_admin_users(store):
            lang = user_desc['language']

            template_vars = {
                'type': 'https_certificate_expiration',
                'expiration_date': expiration_date,
                'node': db_admin_serialize_node(store, lang),
                'notification': db_get_notification(store, lang)
            }

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

            # encrypt the notification if the admin has configured the issue.
            pub_key = user_desc['pgp_key_public']
            if len(pub_key) > 0:
                body = encrypt_pgp_message(pub_key,
                                           user_desc['pgp_key_fingerprint'],
                                           body)

            store.add(
                models.Mail({
                    'address': user_desc['mail_address'],
                    'subject': subject,
                    'body': body
                }))
Esempio n. 2
0
def signup(session, state, tid, request, language):
    node = config.ConfigFactory(session, 1, 'node')

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

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

    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_admin_users(session, 1):
        template_vars = {
            'type': 'admin_signup_alert',
            'signup': serialize_signup(signup),
            '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)
Esempio n. 3
0
    def certificate_mail_creation(self, store, expiration_date):
        for user_desc in db_get_admin_users(store):
            lang = user_desc['language']

            template_vars = {
                'type': 'https_certificate_expiration',
                'expiration_date': expiration_date,
                'node': db_admin_serialize_node(store, lang),
                'notification': db_get_notification(store, lang)
            }

            format_and_send(store, user_desc, template_vars)
Esempio n. 4
0
        def _generate_admin_alert_mail(store, alert):
            for user_desc in db_get_admin_users(store):
                user_language = user_desc['language']

                data = {
                    'address': user_desc['mail_address'],
                    'type': u'admin_anomaly',
                    'node': db_admin_serialize_node(store, user_language),
                    'notification': db_get_notification(store, user_language),
                    'alert': alert
                }

                Templating().db_prepare_mail(store, data)
Esempio n. 5
0
    def prepare_admin_pgp_alerts(self, store, expired_or_expiring):
        for user_desc in db_get_admin_users(store):
            user_language = user_desc['language']

            data = {
                'address': user_desc['mail_address'],
                'type': u'admin_pgp_alert',
                'node': db_admin_serialize_node(store, user_language),
                'notification': db_get_notification(store, user_language),
                'users': expired_or_expiring
            }

            Templating().db_prepare_mail(store, data)
Esempio n. 6
0
    def certificate_mail_creation(self, session, mail_type, tid, expiration_date):
        for user_desc in db_get_admin_users(session, tid):
            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)
Esempio n. 7
0
        def _generate_admin_alert_mail(store, alert):
            for user_desc in db_get_admin_users(store):
                user_language = user_desc['language']

                data = {
                    'address': user_desc['mail_address'],
                    'type': u'admin_anomaly',
                    'node': db_admin_serialize_node(store, user_language),
                    'notification': db_get_notification(store, user_language),
                    'alert': alert
                }

                Templating().db_prepare_mail(store, data)
    def prepare_admin_pgp_alerts(self, store, expired_or_expiring):
        for user_desc in db_get_admin_users(store):
            user_language = user_desc['language']

            data = {
                'address': user_desc['mail_address'],
                'type': u'admin_pgp_alert',
                'node': db_admin_serialize_node(store, user_language),
                'notification': db_get_notification(store, user_language),
                'users': expired_or_expiring
            }

            Templating().db_prepare_mail(store, data)
Esempio n. 9
0
def generate_admin_alert_mail(store, alert):
    for user_desc in db_get_admin_users(store):
        user_language = user_desc['language']

        data = {
            'type': u'admin_anomaly',
            'node': db_admin_serialize_node(store, user_language),
            'notification': db_get_notification(store, user_language),
            'alert': alert
        }

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

        db_schedule_email(store, user_desc['mail_address'], subject, body)
Esempio n. 10
0
    def prepare_admin_pgp_alerts(self, store, expired_or_expiring):
        for user_desc in db_get_admin_users(store):
            user_language = user_desc['language']

            data = {
                'type': u'admin_pgp_alert',
                'node': db_admin_serialize_node(store, user_language),
                'notification': db_get_notification(store, user_language),
                'users': expired_or_expiring
            }

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

            db_schedule_email(store, user_desc['mail_address'], subject, body)
Esempio n. 11
0
    def prepare_admin_pgp_alerts(self, session, tid, expired_or_expiring):
        for user_desc in db_get_admin_users(session, tid):
            user_language = user_desc['language']

            data = {
                'type': u'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)
Esempio n. 12
0
def generate_admin_alert_mail(session, tid, alert):
    for user_desc in db_get_admin_users(session, tid):
        user_language = user_desc['language']

        data = {
            'type': u'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)
Esempio n. 13
0
def signup(session, state, tid, request, language):
    config = ConfigFactory(session, 1)

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

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

    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_admin_users(session, 1):
        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)
Esempio n. 14
0
        def _generate_admin_alert_mail(store, alert):
            for user_desc in db_get_admin_users(store):
                user_language = user_desc['language']

                data = {
                    'type': u'admin_anomaly',
                    'node': db_admin_serialize_node(store, user_language),
                    'notification': db_get_notification(store, user_language),
                    'alert': alert
                }

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

                store.add(models.Mail({
                    'address': user_desc['mail_address'],
                    'subject': subject,
                    'body': body
                }))
Esempio n. 15
0
def evaluate_update_notification(store, latest_version):
    priv_fact = PrivateFactory(store)
    stored_latest = priv_fact.get_val(u'latest_version')

    if V(stored_latest) < V(latest_version):
        priv_fact.set_val(u'latest_version', latest_version)

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

            format_and_send(store, user_desc, template_vars)
Esempio n. 16
0
def evaluate_update_notification(session, state, latest_version):
    priv_fact = ConfigFactory(session, 1, 'node')

    stored_latest = priv_fact.get_val(u'latest_version')

    if V(stored_latest) < V(latest_version):
        priv_fact.set_val(u'latest_version', latest_version)

        if V(__version__) == V(latest_version):
            return

        for user_desc in db_get_admin_users(session, 1):
            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)
Esempio n. 17
0
def evaluate_update_notification(session, state, latest_version):
    priv_fact = ConfigFactory(session, 1)

    stored_latest = priv_fact.get_val(u'latest_version')

    if V(stored_latest) < V(latest_version):
        priv_fact.set_val(u'latest_version', latest_version)

        if V(__version__) == V(latest_version):
            return

        for user_desc in db_get_admin_users(session, 1):
            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)
Esempio n. 18
0
def schedule_email_for_all_admins(store, subject, body):
    from globaleaks.handlers.admin.user import db_get_admin_users
    for user_desc in db_get_admin_users(store):
        db_schedule_email(store, user_desc['mail_address'], subject, body)
Esempio n. 19
0
def signup(session, state, tid, request, language):
    config = ConfigFactory(session, 1)

    if not config.get_val(u'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'],
        models.Signup.activation_token != '',
        models.Tenant.id == models.Signup.tid,
        models.Tenant.subdomain == models.Signup.subdomain)
    session.query(models.Tenant).filter(
        models.Tenant.id.in_(subquery)).delete(synchronize_session='fetch')

    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_admin_users(session, 1):
        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)
Esempio n. 20
0
def signup(session, state, tid, request, language):
    node = config.ConfigFactory(session, 1, 'node')

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

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

    signup = models.Signup(request)

    session.add(signup)

    session.flush()

    ret = {
        'signup':
        serialize_signup(signup),
        'activation_url':
        'https://%s/#/activation?token=%s' %
        (node.get_val(u'rootdomain'), signup.activation_token),
        'expiration_date':
        datetime_to_ISO8601(signup.registration_date + timedelta(days=30))
    }

    # 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.

    # Email 1 - Activation Link
    template_vars = copy.deepcopy(ret)
    template_vars.update({
        'type':
        'signup',
        'node':
        db_admin_serialize_node(session, 1, language),
        'notification':
        db_get_notification(session, 1, language),
    })

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

    # Email 2 - Admin Notification
    for user_desc in db_get_admin_users(session, 1):
        template_vars = copy.deepcopy(ret)
        template_vars.update({
            'type':
            'admin_signup_alert',
            'signup':
            serialize_signup(signup),
            'node':
            db_admin_serialize_node(session, 1, user_desc['language']),
            'notification':
            db_get_notification(session, 1, user_desc['language']),
            'user':
            user_desc
        })

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

    return ret