PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
| Dir : /opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/internals/ |
| Server: Linux cloud.virginhosting.lk 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64 IP: 128.140.68.198 |
| Dir : //opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/internals/auth_protocol.py |
import asyncio
import socket
import logging
import struct
logger = logging.getLogger(__name__)
class UnixSocketAuthProtocol(asyncio.Protocol):
"""
This protocol uses SO_PEERCRED attribute of unix socket
to get authentication data (pid, uid, gid)
After connect, this values are stored in object's
_pid, _uid, _gid attributes
"""
# ucred struct format (3 integers)
# struct ucred
# {
# pid_t pid; /* PID of sending process. */
# uid_t uid; /* UID of sending process. */
# gid_t gid; /* GID of sending process. */
# };
#
STRUCT_FORMAT = "3i"
def connection_made(self, transport):
self._transport = transport
conn = self._transport.get_extra_info("socket")
creds = conn.getsockopt(
socket.SOL_SOCKET,
socket.SO_PEERCRED,
struct.calcsize(self.STRUCT_FORMAT),
)
self._pid, self._uid, self._gid = struct.unpack(
self.STRUCT_FORMAT, creds
)
logger.debug(
"New socket connection from pid=%s, uid=%s, gid=%s",
self._pid,
self._uid,
self._gid,
)