events: add ASN Database reader (#7793)
* events: add ASN Database reader Signed-off-by: Jens Langhammer <jens@goauthentik.io> * add tests Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix test config generator Signed-off-by: Jens Langhammer <jens@goauthentik.io> * de-duplicate code Signed-off-by: Jens Langhammer <jens@goauthentik.io> * add enrich_context Signed-off-by: Jens Langhammer <jens@goauthentik.io> * rename to context processors? Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix cache Signed-off-by: Jens Langhammer <jens@goauthentik.io> * use config deprecation system, update docs Signed-off-by: Jens Langhammer <jens@goauthentik.io> * update more docs and tests Signed-off-by: Jens Langhammer <jens@goauthentik.io> * add test asn db Signed-off-by: Jens Langhammer <jens@goauthentik.io> * re-build schema with latest versions Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
		@ -26,7 +26,7 @@ from authentik.core.middleware import (
 | 
			
		||||
    SESSION_KEY_IMPERSONATE_USER,
 | 
			
		||||
)
 | 
			
		||||
from authentik.core.models import ExpiringModel, Group, PropertyMapping, User
 | 
			
		||||
from authentik.events.geo import GEOIP_READER
 | 
			
		||||
from authentik.events.context_processors.base import get_context_processors
 | 
			
		||||
from authentik.events.utils import (
 | 
			
		||||
    cleanse_dict,
 | 
			
		||||
    get_user,
 | 
			
		||||
@ -246,21 +246,15 @@ class Event(SerializerModel, ExpiringModel):
 | 
			
		||||
                self.user["on_behalf_of"] = get_user(request.session[SESSION_KEY_IMPERSONATE_USER])
 | 
			
		||||
        # User 255.255.255.255 as fallback if IP cannot be determined
 | 
			
		||||
        self.client_ip = ClientIPMiddleware.get_client_ip(request)
 | 
			
		||||
        # Apply GeoIP Data, when enabled
 | 
			
		||||
        self.with_geoip()
 | 
			
		||||
        # Enrich event data
 | 
			
		||||
        for processor in get_context_processors():
 | 
			
		||||
            processor.enrich_event(self)
 | 
			
		||||
        # If there's no app set, we get it from the requests too
 | 
			
		||||
        if not self.app:
 | 
			
		||||
            self.app = Event._get_app_from_request(request)
 | 
			
		||||
        self.save()
 | 
			
		||||
        return self
 | 
			
		||||
 | 
			
		||||
    def with_geoip(self):  # pragma: no cover
 | 
			
		||||
        """Apply GeoIP Data, when enabled"""
 | 
			
		||||
        city = GEOIP_READER.city_dict(self.client_ip)
 | 
			
		||||
        if not city:
 | 
			
		||||
            return
 | 
			
		||||
        self.context["geo"] = city
 | 
			
		||||
 | 
			
		||||
    def save(self, *args, **kwargs):
 | 
			
		||||
        if self._state.adding:
 | 
			
		||||
            LOGGER.info(
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user