%PDF- %PDF-
Direktori : /opt/imunify360/venv/lib64/python3.8/site-packages/defence360agent/internals/ |
Current File : //opt/imunify360/venv/lib64/python3.8/site-packages/defence360agent/internals/logging_protocol.py |
""" This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. Copyright © 2019 Cloud Linux Software Inc. This software is also available under ImunifyAV commercial license, see <https://www.imunify360.com/legal/eula> """ import asyncio class LoggingProtocol (asyncio.Protocol): def __init__(self, logger, network_logger, real_protocol): self._logger = logger self._network_logger = network_logger self._real_protocol = real_protocol def connection_made(self, transport): self._network_logger.debug('Connection made.') self._handle(lambda: self._real_protocol.connection_made(transport)) def connection_lost(self, exc): self._network_logger.debug("Connection lost.") self._handle(lambda: self._real_protocol.connection_lost(exc)) def datagram_received(self, data, addr): self._network_logger.debug("datagram_received: {!r}".format(data)) self._handle(lambda: self._real_protocol.datagram_received(data, addr)) def data_received(self, data): self._network_logger.debug("data_received: {!r}".format(data)) self._handle(lambda: self._real_protocol.data_received(data)) def _handle(self, impl): try: impl() except Exception as e: self._logger.exception(str(e))