from enum import Enum


class LogType(str, Enum):
    AWS_ALB = "AWS.ALB"
    AWS_AURORA_MYSQL_AUDIT = "AWS.AuroraMySQLAudit"
    AWS_CLOUDTRAIL = "AWS.CloudTrail"
    AWS_CLOUDTRAIL_DIGEST = "AWS.CloudTrailDigest"
    AWS_CLOUDTRAIL_INSIGHT = "AWS.CloudTrailInsight"
    AWS_CLOUDWATCH_EVENTS = "AWS.CloudWatchEvents"
    AWS_CONFIG = "AWS.Config"
    AWS_GUARDDUTY = "AWS.GuardDuty"
    AWS_S3_SERVER_ACCESS = "AWS.S3ServerAccess"
    AWS_SECURITY_FINDING_FORMAT = "AWS.SecurityFindingFormat"
    AWS_TRANSIT_GATEWAY_FLOW = "AWS.TransitGatewayFlow"
    AWS_VPC_DNS = "AWS.VPCDns"
    AWS_VPC_FLOW = "AWS.VPCFlow"
    AWS_WAF_WEB_ACL = "AWS.WAFWebACL"
    ALPHASOC_ALERT = "AlphaSOC.Alert"
    AMAZON_EKS_AUDIT = "Amazon.EKS.Audit"
    AMAZON_EKS_AUTHENTICATOR = "Amazon.EKS.Authenticator"
    ANOMALI_INDICATOR = "Anomali.Indicator"
    APACHE_ACCESS_COMBINED = "Apache.AccessCombined"
    APACHE_ACCESS_COMMON = "Apache.AccessCommon"
    APPOMNI_ALERTS = "AppOmni.Alerts"
    APPOMNI_EVENTS = "AppOmni.Events"
    APPOMNI_POLICY = "AppOmni.Policy"
    ASANA_AUDIT = "Asana.Audit"
    ATLASSIAN_AUDIT = "Atlassian.Audit"
    AUTH0_EVENTS = "Auth0.Events"
    AZURE_AUDIT = "Azure.Audit"
    AZURE_DEFENDER_ALERTS = "Azure.DefenderAlerts"
    AZURE_MONITOR_ACTIVITY = "Azure.MonitorActivity"
    BITWARDEN_EVENTS = "Bitwarden.Events"
    BOX_EVENT = "Box.Event"
    CARBON_BLACK_ALERT_V2 = "CarbonBlack.AlertV2"
    CARBON_BLACK_AUDIT = "CarbonBlack.Audit"
    CARBON_BLACK_ENDPOINT_EVENT = "CarbonBlack.EndpointEvent"
    CARBON_BLACK_WATCH_LIST_HIT = "CarbonBlack.WatchlistHit"
    CISCO_UMBRELLA_CLOUD_FIREWALL = "CiscoUmbrella.CloudFirewall"
    CISCO_UMBRELLA_DNS = "CiscoUmbrella.DNS"
    CISCO_UMBRELLA_IP = "CiscoUmbrella.IP"
    CISCO_UMBRELLA_PROXY = "CiscoUmbrella.Proxy"
    CLOUDFLARE_AUDIT = "Cloudflare.Audit"
    CLOUDFLARE_FIREWALL = "Cloudflare.Firewall"
    CLOUDFLARE_HTTP_REQUEST = "Cloudflare.HttpRequest"
    CLOUDFLARE_SPECTRUM = "Cloudflare.Spectrum"
    CLOUDFLARE_ZERO_TRUST_RDATA = "Cloudflare.ZeroTrust.RData"
    CROWDSTRIKE_AID_MASTER = "Crowdstrike.AIDMaster"
    CROWDSTRIKE_ACTIVITY_AUDIT = "Crowdstrike.ActivityAudit"
    CROWDSTRIKE_APP_INFO = "Crowdstrike.AppInfo"
    CROWDSTRIKE_CRITICAL_FILE = "Crowdstrike.CriticalFile"
    CROWDSTRIKE_DNS_REQUEST = "Crowdstrike.DNSRequest"
    CROWDSTRIKE_DETECTION_SUMMARY = "Crowdstrike.DetectionSummary"
    CROWDSTRIKE_EVENT_STREAMS = "Crowdstrike.EventStreams"
    CROWDSTRIKE_FDR_EVENT = "Crowdstrike.FDREvent"
    CROWDSTRIKE_GROUP_IDENTITY = "Crowdstrike.GroupIdentity"
    CROWDSTRIKE_MANAGED_ASSETS = "Crowdstrike.ManagedAssets"
    CROWDSTRIKE_NETWORK_CONNECT = "Crowdstrike.NetworkConnect"
    CROWDSTRIKE_NETWORK_LISTEN = "Crowdstrike.NetworkListen"
    CROWDSTRIKE_NOT_MANAGED_ASSETS = "Crowdstrike.NotManagedAssets"
    CROWDSTRIKE_PROCESS_ROLLUP_2 = "Crowdstrike.ProcessRollup2"
    CROWDSTRIKE_PROCESS_ROLLUP_2_STATS = "Crowdstrike.ProcessRollup2Stats"
    CROWDSTRIKE_SYNTHETIC_PROCESS_ROLLUP_2 = "Crowdstrike.SyntheticProcessRollup2"
    CROWDSTRIKE_UNKNOWN = "Crowdstrike.Unknown"
    CROWDSTRIKE_USER_IDENTITY = "Crowdstrike.UserIdentity"
    CROWDSTRIKE_USER_INFO = "Crowdstrike.UserInfo"
    CROWDSTRIKE_USER_LOGON_LOGOFF = "Crowdstrike.UserLogonLogoff"
    DOCKER_EVENTS = "Docker.Events"
    DROPBOX_TEAM_EVENT = "Dropbox.TeamEvent"
    DUO_ADMINISTRATOR = "Duo.Administrator"
    DUO_AUTHENTICATION = "Duo.Authentication"
    DUO_OFFLINE_ENROLLMENT = "Duo.OfflineEnrollment"
    DUO_TELEPHONY = "Duo.Telephony"
    ENVOY_ACCESS = "Envoy.Access"
    FASTLY_ACCESS = "Fastly.Access"
    FLUENTD_SYSLOG3164 = "Fluentd.Syslog3164"
    FLUENTD_SYSLOG5424 = "Fluentd.Syslog5424"
    GCP_AUDIT_LOG = "GCP.AuditLog"
    GCP_HTTP_LOAD_BALANCER = "GCP.HTTPLoadBalancer"
    GSUITE_ACTIVITY_EVENT = "GSuite.ActivityEvent"
    GSUITE_DIRECTORY_USERS = "GSuite.DirectoryUsers"
    GSUITE_REPORTS = "GSuite.Reports"
    GITHUB_AUDIT = "GitHub.Audit"
    GITHUB_WEBHOOK = "GitHub.Webhook"
    GITLAB_API = "GitLab.API"
    GITLAB_AUDIT = "GitLab.Audit"
    GITLAB_EXCEPTIONS = "GitLab.Exceptions"
    GITLAB_GIT = "GitLab.Git"
    GITLAB_INTEGRATIONS = "GitLab.Integrations"
    GITLAB_PRODUCTION = "GitLab.Production"
    GRAVITATIONAL_TELEPORT_AUDIT = "Gravitational.TeleportAudit"
    GREYNOISE_NOISE = "GreyNoise.Noise"
    GREYNOISE_RIOT = "GreyNoise.RIOT"
    HEROKU_RUNTIME = "Heroku.Runtime"
    IPINFO_ASN_CIDR = "IPInfo.ASNCIDR"
    IPINFO_ASN_RANGES = "IPInfo.ASNRanges"
    IPINFO_LOCATION_CIDR = "IPInfo.LocationCIDR"
    IPINFO_LOCATION_RANGES = "IPInfo.LocationRanges"
    IPINFO_PRIVACY_CIDR = "IPInfo.PrivacyCIDR"
    IPINFO_PRIVACY_RANGES = "IPInfo.PrivacyRanges"
    JAMF_PRO_COMPLIANCE_REPORTER = "Jamfpro.ComplianceReporter"
    JAMF_PRO_LOGIN = "Jamfpro.Login"
    JUNIPER_ACCESS = "Juniper.Access"
    JUNIPER_AUDIT = "Juniper.Audit"
    JUNIPER_FIREWALL = "Juniper.Firewall"
    JUNIPER_MWS = "Juniper.MWS"
    JUNIPER_POSTGRES = "Juniper.Postgres"
    JUNIPER_SECURITY = "Juniper.Security"
    LACEWORK_AGENT_MANAGEMENT = "Lacework.AgentManagement"
    LACEWORK_ALERT_DETAILS = "Lacework.AlertDetails"
    LACEWORK_ALL_FILES = "Lacework.AllFiles"
    LACEWORK_APPLICATIONS = "Lacework.Applications"
    LACEWORK_CHANGE_FILES = "Lacework.ChangeFiles"
    LACEWORK_CLOUD_COMPLIANCE = "Lacework.CloudCompliance"
    LACEWORK_CLOUD_CONFIGURATION = "Lacework.CloudConfiguration"
    LACEWORK_CMD_LINE = "Lacework.Cmdline"
    LACEWORK_CONNECTIONS = "Lacework.Connections"
    LACEWORK_CONTAINER_SUMMARY = "Lacework.ContainerSummary"
    LACEWORK_CONTAINER_VULN_DETAILS = "Lacework.ContainerVulnDetails"
    LACEWORK_DNS_QUERY = "Lacework.DNSQuery"
    LACEWORK_EVENTS = "Lacework.Events"
    LACEWORK_HOST_VULN_DETAILS = "Lacework.HostVulnDetails"
    LACEWORK_IMAGE = "Lacework.Image"
    LACEWORK_INTERFACES = "Lacework.Interfaces"
    LACEWORK_INTERNAL_IPA = "Lacework.InternalIPA"
    LACEWORK_MACHINE_DETAILS = "Lacework.MachineDetails"
    LACEWORK_MACHINE_SUMMARY = "Lacework.MachineSummary"
    LACEWORK_NEW_HASHES = "Lacework.NewHashes"
    LACEWORK_PACKAGE = "Lacework.Package"
    LACEWORK_POD_SUMMARY = "Lacework.PodSummary"
    LACEWORK_PROCESS_SUMMARY = "Lacework.ProcessSummary"
    LACEWORK_USER_DETAILS = "Lacework.UserDetails"
    LACEWORK_USER_LOGIN = "Lacework.UserLogin"
    LINUX_AUDITD = "Linux.Auditd"
    MICROSOFT365_AUDIT_AZURE_ACTIVE_DIRECTORY = "Microsoft365.Audit.AzureActiveDirectory"
    MICROSOFT365_AUDIT_EXCHANGE = "Microsoft365.Audit.Exchange"
    MICROSOFT365_AUDIT_GENERAL = "Microsoft365.Audit.General"
    MICROSOFT365_AUDIT_SHAREPOINT = "Microsoft365.Audit.SharePoint"
    MICROSOFT365_DLP_ALL = "Microsoft365.DLP.All"
    MICROSOFT_GRAPH_SECURITY_ALERT = "MicrosoftGraph.SecurityAlert"
    MONGODB_ORGANIZATION_EVENT = "MongoDB.OrganizationEvent"
    MONGODB_PROJECT_EVENT = "MongoDB.ProjectEvent"
    NETSKOPE_AUDIT = "Netskope.Audit"
    NGINX_ACCESS = "Nginx.Access"
    NGINX_ERROR = "Nginx.Error"
    NOTION_AUDIT_LOGS = "Notion.AuditLogs"
    OCSF_ACCOUNT_CHANGE = "OCSF.AccountChange"
    OCSF_API_ACTIVITY = "OCSF.ApiActivity"
    OCSF_APPLICATION_LIFECYCLE = "OCSF.ApplicationLifecycle"
    OCSF_AUTHENTICATION = "OCSF.Authentication"
    OCSF_AUTHORIZE_SESSION = "OCSF.AuthorizeSession"
    OCSF_BASE_EVENT = "OCSF.BaseEvent"
    OCSF_COMPLIANCE_FINDING = "OCSF.ComplianceFinding"
    OCSF_CONFIG_STATE = "OCSF.ConfigState"
    OCSF_DATASTORE_ACTIVITY = "OCSF.DatastoreActivity"
    OCSF_DETECTION_FINDING = "OCSF.DetectionFinding"
    OCSF_DEVICE_CONFIG_STATE_CHANGE = "OCSF.DeviceConfigStateChange"
    OCSF_DHCP_ACTIVITY = "OCSF.DhcpActivity"
    OCSF_DNS_ACTIVITY = "OCSF.DnsActivity"
    OCSF_EMAIL_ACTIVITY = "OCSF.EmailActivity"
    OCSF_EMAIL_FILE_ACTIVITY = "OCSF.EmailFileActivity"
    OCSF_EMAIL_URL_ACTIVITY = "OCSF.EmailUrlActivity"
    OCSF_ENTITY_MANAGEMENT = "OCSF.EntityManagement"
    OCSF_FILE_ACTIVITY = "OCSF.FileActivity"
    OCSF_FILE_HOSTING = "OCSF.FileHosting"
    OCSF_FTP_ACTIVITY = "OCSF.FtpActivity"
    OCSF_GROUP_MANAGEMENT = "OCSF.GroupManagement"
    OCSF_HTTP_ACTIVITY = "OCSF.HttpActivity"
    OCSF_INCIDENT_FINDING = "OCSF.IncidentFinding"
    OCSF_INVENTORY_INFO = "OCSF.InventoryInfo"
    OCSF_KERNEL_ACTIVITY = "OCSF.KernelActivity"
    OCSF_KERNEL_EXTENSION = "OCSF.KernelExtension"
    OCSF_MEMORY_ACTIVITY = "OCSF.MemoryActivity"
    OCSF_MODULE_ACTIVITY = "OCSF.ModuleActivity"
    OCSF_NETWORK_ACTIVITY = "OCSF.NetworkActivity"
    OCSF_NETWORK_FILE_ACTIVITY = "OCSF.NetworkFileActivity"
    OCSF_NTP_ACTIVITY = "OCSF.NtpActivity"
    OCSF_PATCH_STATE = "OCSF.PatchState"
    OCSF_PROCESS_ACTIVITY = "OCSF.ProcessActivity"
    OCSF_RDP_ACTIVITY = "OCSF.RdpActivity"
    OCSF_SCAN_ACTIVITY = "OCSF.ScanActivity"
    OCSF_SCHEDULED_JOB_ACTIVITY = "OCSF.ScheduledJobActivity"
    OCSF_SECURITY_FINDING = "OCSF.SecurityFinding"
    OCSF_SMB_ACTIVITY = "OCSF.SmbActivity"
    OCSF_SSH_ACTIVITY = "OCSF.SshActivity"
    OCSF_USER_ACCESS = "OCSF.UserAccess"
    OCSF_USER_INVENTORY = "OCSF.UserInventory"
    OCSF_VULNERABILITY_FINDING = "OCSF.VulnerabilityFinding"
    OCSF_WEB_RESOURCE_ACCESS_ACTIVITY = "OCSF.WebResourceAccessActivity"
    OCSF_WEB_RESOURCES_ACTIVITY = "OCSF.WebResourcesActivity"
    OCSF_WIN_PREFETCH_INFO = "OCSF.WinPrefetchInfo"
    OCSF_WIN_REGISTRY_KEY_ACTIVITY = "OCSF.WinRegistryKeyActivity"
    OCSF_WIN_REGISTRY_KEY_INFO = "OCSF.WinRegistryKeyInfo"
    OCSF_WIN_REGISTRY_VALUE_ACTIVITY = "OCSF.WinRegistryValueActivity"
    OCSF_WIN_REGISTRY_VALUE_INFO = "OCSF.WinRegistryValueInfo"
    OCSF_WIN_RESOURCE_ACTIVITY = "OCSF.WinResourceActivity"
    OCSF_WINPREFETCH_INFO = "OCSF.WinprefetchInfo"
    OCSF_WINREGISTRY_KEY_ACTIVITY = "OCSF.WinregistryKeyActivity"
    OCSF_WINREGISTRY_KEY_INFO = "OCSF.WinregistryKeyInfo"
    OCSF_WINREGISTRY_VALUE_ACTIVITY = "OCSF.WinregistryValueActivity"
    OCSF_WINREGISTRY_VALUE_INFO = "OCSF.WinregistryValueInfo"
    OCSF_WINRESOURCE_ACTIVITY = "OCSF.WinresourceActivity"
    OSSEC_EVENT_INFO = "OSSEC.EventInfo"
    OKTA_DEVICES = "Okta.Devices"
    OKTA_SYSTEM_LOG = "Okta.SystemLog"
    OKTA_USERS = "Okta.Users"
    ONELOGIN_EVENTS = "OneLogin.Events"
    ONEPASSWORD_AUDIT_EVENT = "OnePassword.AuditEvent"
    ONEPASSWORD_ITEM_USAGE = "OnePassword.ItemUsage"
    ONEPASSWORD_SIGNIN_ATTEMPT = "OnePassword.SignInAttempt"
    OSQUERY_BATCH = "Osquery.Batch"
    OSQUERY_DIFFERENTIAL = "Osquery.Differential"
    OSQUERY_SNAPSHOT = "Osquery.Snapshot"
    OSQUERY_STATUS = "Osquery.Status"
    PANTHER_AUDIT = "Panther.Audit"
    PROOFPOINT_EVENT = "Proofpoint.Event"
    PUSH_SECURITY_ACTIVITY = "PushSecurity.Activity"
    PUSH_SECURITY_ATTACK_DETECTION = "PushSecurity.AttackDetection"
    PUSH_SECURITY_CONTROLS = "PushSecurity.Controls"
    PUSH_SECURITY_ENTITIES = "PushSecurity.Entities"
    SALESFORCE_LOGIN = "Salesforce.Login"
    SALESFORCE_LOGIN_AS = "Salesforce.LoginAs"
    SALESFORCE_LOGOUT = "Salesforce.Logout"
    SALESFORCE_URI = "Salesforce.URI"
    SENTINELONE_ACTIVITY = "SentinelOne.Activity"
    SENTINELONE_DEEP_VISIBILITY = "SentinelOne.DeepVisibility"
    SENTINELONE_DEEP_VISIBILITY_V2 = "SentinelOne.DeepVisibilityV2"
    SLACK_ACCESS_LOGS = "Slack.AccessLogs"
    SLACK_AUDIT_LOGS = "Slack.AuditLogs"
    SLACK_INTEGRATION_LOGS = "Slack.IntegrationLogs"
    SNYK_GROUP_AUDIT = "Snyk.GroupAudit"
    SNYK_ORG_AUDIT = "Snyk.OrgAudit"
    SOPHOS_CENTRAL = "Sophos.Central"
    SURICATA_ALERT = "Suricata.Alert"
    SURICATA_ANOMALY = "Suricata.Anomaly"
    SURICATA_DHCP = "Suricata.DHCP"
    SURICATA_DNS = "Suricata.DNS"
    SURICATA_FILE_INFO = "Suricata.FileInfo"
    SURICATA_FLOW = "Suricata.Flow"
    SURICATA_HTTP = "Suricata.HTTP"
    SURICATA_SSH = "Suricata.SSH"
    SURICATA_TLS = "Suricata.TLS"
    SYSDIG_AUDIT = "Sysdig.Audit"
    SYSLOG_RFC3164 = "Syslog.RFC3164"
    SYSLOG_RFC5424 = "Syslog.RFC5424"
    TAILSCALE_AUDIT = "Tailscale.Audit"
    TAILSCALE_NETWORK = "Tailscale.Network"
    TENABLE_VULNERABILITY = "Tenable.Vulnerability"
    TINES_AUDIT = "Tines.Audit"
    TOR_EXIT_NODE = "Tor.ExitNode"
    TRAILDISCOVER_CLOUDTRAIL = "TrailDiscover.CloudTrail"
    WINDOWS_EVENT_LOGS = "Windows.EventLogs"
    WIZ_ISSUES = "Wiz.Issues"
    WORKDAY_ACTIVITY = "Workday.Activity"
    WORKDAY_SIGN_ON_ATTEMPT = "Workday.SignOnAttempt"
    ZEEK_CAPTURE_LOSS = "Zeek.CaptureLoss"
    ZEEK_CONN = "Zeek.Conn"
    ZEEK_DHCP = "Zeek.DHCP"
    ZEEK_DNS = "Zeek.DNS"
    ZEEK_DPD = "Zeek.DPD"
    ZEEK_FILES = "Zeek.Files"
    ZEEK_HTTP = "Zeek.HTTP"
    ZEEK_NTP = "Zeek.NTP"
    ZEEK_NOTICE = "Zeek.Notice"
    ZEEK_OCSP = "Zeek.OCSP"
    ZEEK_REPORTER = "Zeek.Reporter"
    ZEEK_SIP = "Zeek.SIP"
    ZEEK_SOFTWARE = "Zeek.Software"
    ZEEK_SSH = "Zeek.Ssh"
    ZEEK_SSL = "Zeek.Ssl"
    ZEEK_STATS = "Zeek.Stats"
    ZEEK_TUNNEL = "Zeek.Tunnel"
    ZEEK_WEIRD = "Zeek.Weird"
    ZEEK_X509 = "Zeek.X509"
    ZENDESK_AUDIT = "Zendesk.Audit"
    ZOOM_ACTIVITY = "Zoom.Activity"
    ZOOM_OPERATION = "Zoom.Operation"

    def __str__(self) -> str:
        """Returns a string representation of the class' value."""
        return self.value

    @staticmethod
    def get_attribute_name(value: str) -> str:
        """Returns the attribute name of the class' value."""
        for name, member in LogType.__members__.items():
            if member.value == value:
                return name
        raise AttributeError(f"LogType has no attribute with value {value}")
