Export event via Syslog. Args: event: Event to export Returns: True if successful
(self, event: SIEMEvent)
| 160 | |
| 161 | self._socket.connect((self.host, self.port)) |
| 162 | |
| 163 | return self._socket |
| 164 | |
| 165 | async def export(self, event: SIEMEvent) -> bool: |
| 166 | """Export event via Syslog. |
| 167 | |
| 168 | Args: |
| 169 | event: Event to export |
| 170 | |
| 171 | Returns: |
| 172 | True if successful |
| 173 | """ |
| 174 | message = self._format_message(event) |
| 175 | |
| 176 | # Ensure message ends with newline for TCP |
| 177 | if self.protocol != "udp" and not message.endswith("\n"): |
| 178 | message += "\n" |
| 179 | |
| 180 | message_bytes = message.encode("utf-8") |
| 181 | |
| 182 | try: |
| 183 | # Run blocking socket operations in executor |
| 184 | loop = asyncio.get_event_loop() |
| 185 | |
| 186 | if self.protocol == "udp": |
| 187 | await loop.run_in_executor( |
| 188 | None, |
| 189 | lambda: self._send_udp(message_bytes) |
| 190 | ) |
| 191 | else: |
| 192 | await loop.run_in_executor( |
| 193 | None, |
| 194 | lambda: self._send_tcp(message_bytes) |
| 195 | ) |
| 196 | |
| 197 | self.logger.debug(f"Syslog message sent: {event.event_type}") |
| 198 | return True |
| 199 | |
| 200 | except Exception as e: |
| 201 | self.logger.error(f"Syslog export failed: {e}") |
| 202 | self._socket = None # Reset socket on error |
| 203 | return False |
nothing calls this directly
no test coverage detected