Esempio n. 1
0
def log_exceptions_to_messages(request, backend, err):
    """Log exception messages to messages app if it's installed."""
    print err
    if 'django.contrib.messages' in setting('INSTALLED_APPS'):
        from django.contrib.messages.api import error
        name = backend.AUTH_BACKEND.name
        error(request, unicode(err), extra_tags='social-auth %s' % name)
Esempio n. 2
0
        def wrapper(request, backend, *args, **kwargs):
            if redirect_name:
                redirect = reverse(redirect_name, args=(backend,))
            else:
                redirect = request.path
            backend = get_backend(backend, request, redirect)

            if not backend:
                return HttpResponseServerError("Incorrect authentication " + "service")

            try:
                return func(request, backend, *args, **kwargs)
            except Exception, e:  # some error ocurred
                backend_name = backend.AUTH_BACKEND.name

                logger.error(unicode(e), exc_info=True, extra=dict(request=request))

                # Why!?
                msg = str(e)

                if "django.contrib.messages" in settings.INSTALLED_APPS:
                    from django.contrib.messages.api import error

                    error(request, msg, extra_tags=backend_name)
                else:
                    logger.warn("Messages framework not in place, some " + "errors have not been shown to the user.")
                return HttpResponseRedirect(BACKEND_ERROR_REDIRECT)
Esempio n. 3
0
        def wrapper(request, backend, *args, **kwargs):
            if redirect_name:
                redirect = reverse(redirect_name, args=(backend, ))
            else:
                redirect = request.path
            backend = get_backend(backend, request, redirect)

            if not backend:
                return HttpResponseServerError('Incorrect authentication ' + \
                                               'service')

            try:
                return func(request, backend, *args, **kwargs)
            except Exception, e:  # some error ocurred
                backend_name = backend.AUTH_BACKEND.name

                logger.error(unicode(e),
                             exc_info=True,
                             extra=dict(request=request))

                if 'django.contrib.messages' in settings.INSTALLED_APPS:
                    from django.contrib.messages.api import error
                    error(request, unicode(e), extra_tags=backend_name)
                else:
                    logger.warn('Messages framework not in place, some ' +
                                'errors have not been shown to the user.')
                return HttpResponseRedirect(BACKEND_ERROR_REDIRECT)
Esempio n. 4
0
    def get(self, request, *args, **kwargs):
        filename = self.kwargs.get("filename")

        parser = ParserDHCPDLease("/tmp/", filename)

        leases = parser.parse()

        if len(leases) == 0:
            api.error(request, _(u"Erro ao carregar o arquivo %s" % (filename)))
            return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

        try:
            out_file_name = "/tmp/out_leases"
            out_file = open(out_file_name, "w")
        except:
            api.error(request, _(u"Erro ao abrir o arquivo %s" % (out_file_name)))
            return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

        try:
            self.__migrate_leases(request, out_file, parser, leases)
        finally:
            out_file.close()

        # Da um redirect para o mac_list, vai mostrar as mensagens de erro lá usando a api de mensagens do django
        return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))
Esempio n. 5
0
        def wrapper(request, backend, *args, **kwargs):
            if redirect_name:
                redirect = reverse(redirect_name, args=(backend,))
            else:
                redirect = request.path
            backend = get_backend(backend, request, redirect)

            if not backend:
                return HttpResponseServerError('Incorrect authentication ' + \
                                               'service')

            try:
                return func(request, backend, *args, **kwargs)
            except Exception, e:  # some error ocurred
                if setting('DEBUG'):
                    raise
                backend_name = backend.AUTH_BACKEND.name

                log('error', unicode(e), exc_info=True,
                    extra=dict(request=request))

                if 'django.contrib.messages' in setting('INSTALLED_APPS'):
                    from django.contrib.messages.api import error
                    error(request, unicode(e), extra_tags=backend_name)
                else:
                    log('warn', 'Messages framework not in place, some '+
                                'errors have not been shown to the user.')

                url = setting('SOCIAL_AUTH_BACKEND_ERROR_URL', LOGIN_ERROR_URL)
                return HttpResponseRedirect(url)
Esempio n. 6
0
        def wrapper(request, backend, *args, **kwargs):
            if redirect_name:
                redirect = reverse(redirect_name, args=(backend,))
            else:
                redirect = request.path
            backend = get_backend(backend, request, redirect)

            if not backend:
                return HttpResponseServerError('Incorrect authentication ' + \
                                               'service')

            try:
                return func(request, backend, *args, **kwargs)
            except Exception, e:  # some error ocurred
                backend_name = backend.AUTH_BACKEND.name
                msg = str(e)

                if 'django.contrib.messages' in settings.INSTALLED_APPS:
                    from django.contrib.messages.api import error
                    error(request, msg, extra_tags=backend_name)
                else:
                    if ERROR_KEY:  # store error in session
                        request.session[ERROR_KEY] = msg
                    if NAME_KEY:  # store the backend name for convenience
                        request.session[NAME_KEY] = backend_name
                return HttpResponseRedirect(BACKEND_ERROR_REDIRECT)
Esempio n. 7
0
        def wrapper(request, backend, *args, **kwargs):
            if redirect_name:
                redirect = reverse(redirect_name, args=(backend,))
            else:
                redirect = request.path
            backend = get_backend(backend, request, redirect)

            if not backend:
                return HttpResponseServerError(
                    "Incorrect authentication " + "service or service API settings not available!"
                )

            try:
                return func(request, backend, *args, **kwargs)
            except Exception, e:  # some error ocurred
                if RAISE_EXCEPTIONS:
                    raise
                backend_name = backend.AUTH_BACKEND.name

                log("error", unicode(e), exc_info=True, extra=dict(request=request))

                if "django.contrib.messages" in setting("INSTALLED_APPS"):
                    from django.contrib.messages.api import error

                    error(request, unicode(e), extra_tags=backend_name)
                else:
                    log("warn", "Messages framework not in place, some " + "errors have not been shown to the user.")

                url = backend_setting(backend, "SOCIAL_AUTH_BACKEND_ERROR_URL", LOGIN_ERROR_URL)
                return HttpResponseRedirect(url)
Esempio n. 8
0
    def log_errors_and_redirect(self, error_s):
        """ Pass errors via django message queue

        Args:
            error_s: (list) Error list (every object in list is a distinct row)

        Returns:
            HttpRequestRedirect to the same page

        """
        for err in error_s:
            error(self.request, err)
        return redirect(self.request.META['HTTP_REFERER'])
Esempio n. 9
0
    def get(self, request, *args, **kwargs):
        try:
            out_file_name = "/tmp/out_leases"
            out_file = open(out_file_name, "w")
        except:
            api.error(request, _(u"Erro ao abrir o arquivo %s" % (out_file_name)))
            return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

        try:
            self.__generate_leases_file(request, out_file)
        finally:
            out_file.close()

        return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))
Esempio n. 10
0
    def get(self, request, *args, **kwargs):
        filename = self.kwargs.get("filename")

        parser = ParserPools("/tmp/", filename)

        pools = parser.parse()

        if len(pools) == 0:
            api.error(request, _(u"Erro ao carregar o arquivo %s" % (filename)))
            return shortcuts.redirect(urlresolvers.reverse("webradius:pool_list"))

        for pool in pools:
            result = models.Poolinfo.objects.filter(pool_name=pool.name)

            if len(result) >= 1:
                api.error(request, _(u"Um pool com o mesmo nome já está cadastrado: %s" % (pool.name)))
                return shortcuts.redirect(urlresolvers.reverse("webradius:pool_list"))

            new_pool = Poolinfo()
            new_pool.pool_name = pool.name
            new_pool.description = pool.desc
            new_pool.mask = pool.mask
            new_pool.router_address = pool.router
            new_pool.domain_name = pool.domain
            new_pool.rev_domain_name = pool.rev_domain
            new_pool.dns_server = pool.dns
            new_pool.dns_server2 = pool.dns2
            new_pool.ntp_server = pool.ntp
            new_pool.root_path = pool.root_path
            new_pool.boot_filename = pool.filename
            new_pool.next_server = pool.next_server
            new_pool.init_address = pool.start
            new_pool.end_address = pool.end
            new_pool.netbios_name_server = pool.wins
            new_pool.netbios_name_server2 = pool.wins2
            new_pool.netbios_node_type = pool.node_type
            new_pool.lease_time = 60 * 60 * 24 * 3

            result, name = new_pool.validate()

            if not result:
                api.error(request, _(u"Erro ao validar pool: %s" % (name)))
                return shortcuts.redirect(urlresolvers.reverse("webradius:pool_list"))

            result, name, pool_collide = new_pool.is_range_avaiable()

            if not result:
                api.error(
                    request,
                    _(u"Erro ao validar pool, IP já usado em outro Pool: %s - %s" % (name, pool_collide.pool_name)),
                )
                return shortcuts.redirect(urlresolvers.reverse("webradius:pool_list"))

            new_pool.save()

        api.success(request, _(u"Sucesso ao importar POOLs"))

        # Da um redirect para o mac_list, vai mostrar as mensagens de erro lá usando a api de mensagens do django
        return shortcuts.redirect(urlresolvers.reverse("webradius:pool_list"))
Esempio n. 11
0
    def get(self, request, *args, **kwargs):
        submission = get_object_or_404(Submission, pk=self.kwargs['pk'])
        if not submission.contest.is_printing_available or \
           submission.author != self.request.user:
            error(request, _("Printing not available."))
        else:
            print_request = PrintRequest(
                source=submission.source,
                language=submission.language,
                contest=submission.contest,
                author=submission.author,
                problem=submission.problem)
            print_request.save()
            success(request, _("Print request added to print queue."))

        return redirect('submission', int(self.kwargs['pk']))
Esempio n. 12
0
 def get(self, request, *args, **kwargs):
     pool = shortcuts.get_object_or_404(self.model, pk=self.kwargs.get('pk'))
     
     if pool.pool_name.startswith(models.Poolinfo.get_static_prefix()):
         return shortcuts.redirect(urlresolvers.reverse('handler403'))
     
     if pool.count_machines_on_pool() >= 1:
         api.error(self.request, _(u"O Pool %s não pode ser deletado pois ele contem máquinas associadas" % pool.pool_name))
         return shortcuts.redirect(urlresolvers.reverse('webradius:pool_detail', args=(pool.id,)))
     name = pool.pool_name
     pool.delete()
     
     api.success(self.request, _(u"Pool '%s' removido com sucesso" % name))
     models.Log(user=self.request.user, msg=_(u"Pool '%s' removido" % pool.pool_name)).save()
     
     return shortcuts.redirect(urlresolvers.reverse('webradius:pool_list'))
Esempio n. 13
0
    def process_exception(self, request, exception):
        self.backend = self.get_backend(request, exception)
        if self.raise_exception(request, exception):
            return

        if isinstance(exception, SocialAuthBaseException):
            backend_name = get_backend_name(self.backend)
            message = self.get_message(request, exception)
            url = self.get_redirect_uri(request, exception)
            tags = ['social-auth']
            if backend_name:
                tags.append(backend_name)

            try:
                error(request, message, extra_tags=' '.join(tags))
            except MessageFailure:  # messages app is not installed
                url += ('?' in url and '&' or '?') + 'message=' + message
                if backend_name:
                    url += '&backend=' + backend_name
            return redirect(url)
Esempio n. 14
0
    def process_exception(self, request, exception):
        self.backend = self.get_backend(request, exception)
        if self.raise_exception(request, exception):
            return

        if isinstance(exception, SocialAuthBaseException):
            backend_name = get_backend_name(self.backend)
            message = self.get_message(request, exception)
            url = self.get_redirect_uri(request, exception)
            tags = ['social-auth']
            if backend_name:
                tags.append(backend_name)

            try:
                error(request, message, extra_tags=' '.join(tags))
            except MessageFailure:  # messages app is not installed
                url += ('?' in url and '&' or '?') + 'message=' + message
                if backend_name:
                    url += '&backend=' + backend_name
            return redirect(url)
Esempio n. 15
0
    def get(self, request, *args, **kwargs):
        filename = self.kwargs.get("filename")

        parser = ParserStaticOverlappedIps("/tmp/", filename)

        static_macs = parser.parse()

        if len(static_macs) == 0:
            api.error(request, _(u"Erro ao carregar o arquivo %s" % (filename)))
            return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

        for smac in static_macs:
            result = models.Macinfo.objects.filter(mac=smac.mac)

            if len(result) >= 1:
                api.error(request, _(u"O seguinte MAC já está cadastrado: %s" % (smac.mac)))
                return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

            machine = models.Macinfo()

            # Checa se o Pool associado a máquina existe
            try:
                machine.pool = models.Poolinfo.objects.get(pool_name=smac.pool_name)
            except:
                api.error(request, _(u"O Pool associado a máquina não existe: %s -> %s" % (smac.pool_name, smac.mac)))
                return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

            if not machine.pool.is_in_range(smac.ip):
                api.error(request, _(u"O IP não está contido no Pool: %s -> %s" % (smac.ip, smac.pool_name)))
                return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

            machine.mac = smac.mac
            machine.description = smac.name
            machine.static = True
            machine.static_standalone = False
            machine.static_ip = smac.ip
            machine.vland_id = 0
            if smac.full_access == "true":
                machine.full_access = True
            else:
                machine.full_access = False

            machine.reserve_overlapped_static_ip()

            machine.save()

        api.success(request, _(u"Sucesso ao importar MACs"))

        # Da um redirect para o mac_list, vai mostrar as mensagens de erro lá usando a api de mensagens do django
        return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))
Esempio n. 16
0
        def wrapper(request, backend, *args, **kwargs):
            if redirect_name:
                redirect = reverse(redirect_name, args=(backend,))
            else:
                redirect = request.path
            backend = get_backend(backend, request, redirect)

            if not backend:
                return HttpResponseServerError('Incorrect authentication ' + \
                                               'service')

            try:
                return func(request, backend, *args, **kwargs)
            except Exception, e:  # some error ocurred
                backend_name = backend.AUTH_BACKEND.name

                logger.error(unicode(e), exc_info=True,
                             extra=dict(request=request))

                # Why!?
                msg = str(e)

                if 'django.contrib.messages' in settings.INSTALLED_APPS:
                    from django.contrib.messages.api import error
                    error(request, msg, extra_tags=backend_name)
                else:
                    logger.warn('Messages framework not in place, some '+
                                'errors have not been shown to the user.')
                # What's the use in this, having not both the messages
                # framework and decent logging in place?
                # Also: do we really want to share all and any errors back
                # to the user, in a security-wise sensitive application?
                #
                # else:
                #     if ERROR_KEY:  # store error in session
                #         request.session[ERROR_KEY] = msg
                #     if NAME_KEY:  # store the backend name for convenience
                #         request.session[NAME_KEY] = backend_name
                return HttpResponseRedirect(BACKEND_ERROR_REDIRECT)
Esempio n. 17
0
def gatekeeper_mark_ok(request, issue_id):
    """Set the reviewed revision on a case to latest.

    This will tell us the issue has been reviewed.

    :param request: HTTP request.
    :param: issue_id: `str` id of the `Issue` to approve
    """
    try:
        try:
            issue = models.Issue.objects.get(id=issue_id)
        except models.Issue.DoesNotExist:
            raise RuntimeError('Issue does not exist!')

        case_id = get_case_id(issue)

        form = GatekeeperApprove(case_id, request.POST)
        if not form.is_valid():
            raise RuntimeError(
                'You need to pass a target_branch parameter when approving a review. '
                'Please do so and try again.')
        target_branch = form.cleaned_data['target_branch']

        mark_issue_approved(request, issue, case_id, target_branch)
        messages_api.success(
            request, 'Revision {issue.latest_reviewed_rev} was sucesssfully approved '
            'on issue {issue.id} '
            'for Fogbugz case <a href="{settings.FOGBUGZ_URL}default.asp?{case_id}" '
            'target="_blank">{case_id}</a>, '
            'target branch: {target_branch}.'
            .format(issue=issue, settings=settings, case_id=case_id, target_branch=target_branch))
    except Exception as exc:
        messages_api.error(
            request,
            unicode(exc))
    finally:
        return HttpResponseRedirect('/{0}/show'.format(issue_id))
Esempio n. 18
0
def log_exceptions_to_messages(request, backend, err):
    """Log exception messages to messages app if it's installed."""
    if 'django.contrib.messages' in setting('INSTALLED_APPS'):
        from django.contrib.messages.api import error
        name = backend.AUTH_BACKEND.name
        error(request, unicode(err), extra_tags='social-auth %s' % name)
Esempio n. 19
0
    def get(self, request, *args, **kwargs):
        filename = self.kwargs.get("filename")

        parser = ParserStaticIps("/tmp/", filename)

        static_macs = parser.parse()

        if len(static_macs) == 0:
            api.error(request, _(u"Erro ao carregar o arquivo %s" % (filename)))
            return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

        for smac in static_macs:
            result = models.Macinfo.objects.filter(mac=smac.mac)

            if len(result) >= 1:
                api.error(request, _(u"O seguinte MAC já está cadastrado: %s" % (smac.mac)))
                return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

            machine = models.Macinfo()
            machine.mac = smac.mac
            machine.description = smac.name
            machine.static = True
            machine.static_standalone = True
            machine.static_ip = smac.ip
            machine.vland_id = 0
            if smac.full_access == "true":
                machine.full_access = True
            else:
                machine.full_access = False

            pool = models.Poolinfo.create_static_pool(
                smac,
                smac.ip,
                smac.router,
                smac.mask,
                smac.dns,
                smac.domain,
                smac.rev_domain,
                None,
                None,
                None,
                None,
                None,
                1,
            )

            result, name = pool.validate()

            if not result:
                api.error(request, _(u"Erro ao validar pool para MAC estático: %s" % (name)))
                return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

            result, name, pool_collide = pool.is_range_avaiable()

            if not result:
                api.error(
                    request,
                    _(u"Erro ao validar pool, IP já usado em outro Pool: %s - %s" % (name, pool_collide.pool_name)),
                )
                return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))

            machine.create_static_pool(
                smac.router, smac.mask, smac.dns, smac.domain, smac.rev_domain, None, None, None, None, None, 1
            )

            machine.save()

        api.success(request, _(u"Sucesso ao importar MACs"))

        # Da um redirect para o mac_list, vai mostrar as mensagens de erro lá usando a api de mensagens do django
        return shortcuts.redirect(urlresolvers.reverse("webradius:mac_list"))
Esempio n. 20
0
	def _fn(req):
		if not req.user.is_authenticated:
			error(req, 'Для доступа к этой странице необходимо авторизоваться')
			return redirect('login')
		else:
			return func(req)