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 }))
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)
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)
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)
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)
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)
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)
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)
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)
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)
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 }))
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)
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)
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)
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)
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)
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