Source code for dyndnsc.detector.socket_ip

# -*- coding: utf-8 -*-

"""Module containing logic for socket based detectors."""

import logging

from .base import IPDetector, AF_INET6
from ..common.detect_ip import detect_ip, IPV4, IPV6_PUBLIC, GetIpException

LOG = logging.getLogger(__name__)


[docs]class IPDetector_Socket(IPDetector): """Detect IPs used by the system to communicate with outside world.""" configuration_key = "socket"
[docs] def __init__(self, family=None, *args, **kwargs): """ Initialize. :param family: IP address family (default: INET, possible: INET6) """ super(IPDetector_Socket, self).__init__(*args, family=family, **kwargs)
def can_detect_offline(self): """Return False, this detector works offline.""" # unsure about this. detector does not really transmit data to outside, # but unsure if it gives the wanted IPs if system is offline return False def detect(self): """Detect the IP address.""" if self.opts_family == AF_INET6: kind = IPV6_PUBLIC else: # 'INET': kind = IPV4 theip = None try: theip = detect_ip(kind) except GetIpException: LOG.exception("socket detector raised an exception:") self.set_current_value(theip) return theip