%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/imunify360/venv/lib64/python3.8/site-packages/defence360agent/internals/
Upload File :
Create Path :
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))

Zerion Mini Shell 1.0