OXIESEC PANEL
- Current Dir:
/
/
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
ssa
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
09/05/2025 09:34:06 AM
rwxr-xr-x
📄
__init__.py
0 bytes
07/02/2025 02:54:48 PM
rw-r--r--
📁
__pycache__
-
09/05/2025 09:32:31 AM
rwxr-xr-x
📄
agent.py
2.16 KB
07/02/2025 02:54:48 PM
rw-r--r--
📁
autotracing
-
09/05/2025 09:31:38 AM
rwxr-xr-x
📄
cloudlinux-autotracing.py
382 bytes
07/02/2025 02:54:48 PM
rwxr-xr-x
📄
cloudlinux-ssa-agent.py
374 bytes
07/02/2025 02:54:48 PM
rwxr-xr-x
📄
cloudlinux-ssa-manager.py
378 bytes
07/02/2025 02:54:48 PM
rwxr-xr-x
📁
configuration
-
09/05/2025 09:31:38 AM
rwxr-xr-x
📄
db.py
5.96 KB
07/02/2025 02:54:48 PM
rw-r--r--
📁
internal
-
09/05/2025 09:31:38 AM
rwxr-xr-x
📄
manager.py
13.5 KB
07/02/2025 02:54:48 PM
rw-r--r--
📁
modules
-
09/05/2025 09:31:38 AM
rwxr-xr-x
📁
ssa_utils
-
09/05/2025 09:31:38 AM
rwxr-xr-x
Editing: agent.py
Close
# -*- coding: utf-8 -*- # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2021 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT """ This module contains contains classes implementing SSA Agent behaviour """ import json import logging from threading import Thread, current_thread from .internal.constants import agent_sock from .internal.exceptions import SSAError from .internal.utils import create_socket from .modules.processor import RequestProcessor class SimpleAgent: """ SSA Simple Agent class """ def __init__(self): self.logger = logging.getLogger('agent') self.request_processor = RequestProcessor() # start serving incoming connections self.listen() def listen(self) -> None: """ Start listening socket """ _socket = create_socket(agent_sock) while True: connection, address = _socket.accept() t = Thread(target=self.handle, args=(connection,)) t.start() self.logger.debug('[%s] Started', t.name) def handle(self, connection: 'socket object') -> None: """ Handle incoming connection :param connection: socket object usable to send and receive data on the connection """ fileobj = connection.makefile(errors='ignore') try: input_data = self.read_input(fileobj) self.request_processor.handle(input_data) except SSAError as e: self.logger.error('Handled exception in [%s]: %s', current_thread().name, str(e)) pass connection.close() def read_input(self, fileio: 'file object') -> dict: """ Read input data and return decoded json :param fileio: a file-like object providing read method """ data = fileio.read() self.logger.info('[%s] I received %i bytes: %s', current_thread().name, len(data.encode()), data) if data: return json.loads(data.strip(), strict=False) else: return {}