Ejemplo n.º 1
0
def user_activation_notify(user):
    current_site = Site.objects.get_current()
    peers = user.userprofile.peers.all()

    # Email subject *must not* contain newlines
    # TechCs will be notified about new users.
    # Platform admins will activate the users.
    subject = render_to_string(
        'registration/activation_email_subject.txt',
        {
            'site': current_site
        }
    )
    subject = ''.join(subject.splitlines())
    registration_profile = RegistrationProfile.objects.create_profile(user)
    message = render_to_string(
        'registration/activation_email.txt',
        {
            'activation_key': registration_profile.activation_key,
            'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
            'site': current_site,
            'user': user
        }
    )
    if settings.NOTIFY_ADMIN_MAILS:
        admin_mails = settings.NOTIFY_ADMIN_MAILS
        send_new_mail(
            settings.EMAIL_SUBJECT_PREFIX + subject,
            message,
            settings.SERVER_EMAIL,
            admin_mails,
            []
        )
    for peer in peers:
        try:
            PeerNotify.objects.get(peer=peer, user=user)
        except:
            peer_notification = PeerNotify(peer=peer, user=user)
            peer_notification.save()
            # Mail to domain techCs plus platform admins (no activation hash sent)
            subject = render_to_string(
                'registration/activation_email_peer_notify_subject.txt',
                {
                    'site': current_site,
                    'peer': peer
                }
            )
            subject = ''.join(subject.splitlines())
            message = render_to_string(
                'registration/activation_email_peer_notify.txt',
                {
                    'user': user,
                    'peer': peer
                }
            )
            send_new_mail(
                settings.EMAIL_SUBJECT_PREFIX + subject,
                message,
                settings.SERVER_EMAIL,
                get_peer_techc_mails(user, peer), [])
Ejemplo n.º 2
0
 def commit_edit(self, *args, **kwargs):
     peers = self.applier.get_profile().peers.all()
     username = None
     for peer in peers:
         if username:
             break
         for network in peer.networks.all():
             net = IPNetwork(network)
             if IPNetwork(self.destination) in net:
                 username = peer
                 break
     if username:
         peer = username.peer_tag
     else:
         peer = None
     send_message(
         '[%s] Editing rule %s. Please wait...' %
         (
             self.applier.username,
             self.name
         ), peer
     )
     response = edit.delay(self)
     logger.info('Got edit job id: %s' % response)
     fqdn = Site.objects.get_current().domain
     admin_url = 'https://%s%s' % (
         fqdn,
         reverse(
             'edit-route',
             kwargs={'route_slug': self.name}
         )
     )
     mail_body = render_to_string(
         'rule_action.txt',
         {
             'route': self,
             'address': self.requesters_address,
             'action': 'edit',
             'url': admin_url,
             'peer': username
         }
     )
     user_mail = '%s' % self.applier.email
     user_mail = user_mail.split(';')
     send_new_mail(
         settings.EMAIL_SUBJECT_PREFIX + 'Rule %s edit request submitted by %s' % (self.name, self.applier.username),
         mail_body, settings.SERVER_EMAIL, user_mail,
         get_peer_techc_mails(self.applier, username)
     )
     d = {
         'clientip': self.requesters_address,
         'user': self.applier.username
     }
     logger.info(mail_body, extra=d)
Ejemplo n.º 3
0
 def commit_delete(self, *args, **kwargs):
     username = None
     reason_text = ''
     reason = ''
     if "reason" in kwargs:
         reason = kwargs['reason']
         reason_text = 'Reason: %s.' % reason
     peers = self.applier.get_profile().peers.all()
     for peer in peers:
         if username:
             break
         for network in peer.networks.all():
             net = IPNetwork(network)
             if IPNetwork(self.destination) in net:
                 username = peer
                 break
     if username:
         peer = username.peer_tag
     else:
         peer = None
     send_message(
         '[%s] Suspending rule %s. %sPlease wait...' %
         (self.applier.username, self.name, reason_text), peer)
     response = delete.delay(self, reason=reason)
     logger.info('Got delete job id: %s' % response)
     fqdn = Site.objects.get_current().domain
     admin_url = 'https://%s%s' % (
         fqdn, reverse('edit-route', kwargs={'route_slug': self.name}))
     mail_body = render_to_string(
         'rule_action.txt', {
             'route': self,
             'address': self.requesters_address,
             'action': 'removal',
             'url': admin_url,
             'peer': username
         })
     user_mail = '%s' % self.applier.email
     user_mail = user_mail.split(';')
     send_new_mail(
         settings.EMAIL_SUBJECT_PREFIX +
         'Rule %s removal request submitted by %s' %
         (self.name, self.applier.username), mail_body,
         settings.SERVER_EMAIL, user_mail,
         get_peer_techc_mails(self.applier, username))
     d = {
         'clientip': self.requesters_address,
         'user': self.applier.username
     }
     logger.info(mail_body, extra=d)