def __init__(self, request_handler, server_address, base_uri, reference_point, require_auth, etsi_version_v2, etsi_compatibility, uri_base="/m2m", pretty_print=None, prefer_xml=False, *args, **kw): self.request_handler = request_handler self.uri_base = uri_base self.reference_point = reference_point self.require_auth = require_auth self.etsi_version_v2 = etsi_version_v2 self.etsi_compatibility_needed = etsi_compatibility self.base_uri = base_uri self.prefer_xml = prefer_xml self.__cache = set() self.pretty_print = pretty_print if server_address == "::": self.__addresses = self._get_addresses(AF_INET6) | \ self._get_addresses(AF_INET) self._resolve_host = self._resolve_host_ipv6 elif server_address in ("", "0.0.0.0"): self.__addresses = self._get_addresses(AF_INET) else: self.__addresses = get_iterable(server_address) self.logger.debug("All listening addresses: %s", self.__addresses)
def __init__(self, request_handler, server_address, default_content_type, pretty=False, require_cert=True): super(OpenMTCWSGIApplication, self).__init__() self.request_handler = request_handler self.__cache = set() if server_address == "::": self.__addresses = self._get_addresses(AF_INET6) | \ self._get_addresses(AF_INET) self._resolve_host = self._resolve_host_ipv6 elif server_address in ("", "0.0.0.0"): self.__addresses = self._get_addresses(AF_INET) else: self.__addresses = get_iterable(server_address) self.logger.debug("All listening addresses: %s", self.__addresses) self.default_content_type = default_content_type self.pretty = pretty self.require_cert = require_cert
def __init__(self, request_handler, connector, address="0.0.0.0", server_port=5682, ssl_args=None, *args, **kw): """Initializes the CoAP server. :param request_handler: Handler called with generated RequestIndications :param connector: Base uri used to reach this server (coap://IP:PORT or coaps://IP:PORT) :param address: IP listening to :param server_port: Port listening to :param ssl_args: contains two keywords: "keyfile" and "certfile" containing paths to respective files, None for regular CoAP """ self.server_port = server_port self.connector = connector self.request_handler = request_handler self.subs = {} self.address = address if address == "::": self.__addresses = self._get_addresses(AF_INET6) | \ self._get_addresses(AF_INET) self._resolve_host = self._resolve_host_ipv6 elif address in ("", "0.0.0.0"): self.__addresses = self._get_addresses(AF_INET) else: self.__addresses = get_iterable(address) do_patch() self.logger.debug("Starting Coap Server on %s:%s" % (self.address, self.server_port)) if ssl_args: self.server = DtlsServer((address, self.server_port), self.handle_request, **ssl_args) else: self.server = DatagramServer((address, self.server_port), self.handle_request) self.block1_pending_payload = {} self.block2_pending_payload = {} self.actual_requests = [] self.req_queue = Queue.Queue() start_new_thread(self.request_runner, ())
def create_type(self, name, base=(), dict={}, metaclass=type): try: existing = getattr(self, name) if not isinstance(existing, type): raise ValueError(name) return existing except AttributeError: pass base = get_iterable(base) self.logger.debug("Creating %s %s(%s) with %s", metaclass.__name__, name, base, dict) dict["__module__"] = self.modulename type = metaclass(name, base, dict) setattr(self, name, type) return type
def sanitize_dict(d, keys=("password", ), replacement="*", inplace=False): keys = get_iterable(keys) if not inplace: d = dict(d) if replacement is None: for k in keys: d.pop(k, None) else: for k in keys: v = d[k] if isinstance(v, basestring): d[k] = replacement * len(v) else: d[k] = replacement return d
def __init__(self, request_handler, server_address, connector, require_auth, *args, **kw): super(OpenMTCWSGIApplication, self).__init__(*args, **kw) self.request_handler = request_handler self.require_auth = require_auth self.__cache = set() self.connector = connector if server_address == "::": self.__addresses = self._get_addresses(AF_INET6) | \ self._get_addresses(AF_INET) self._resolve_host = self._resolve_host_ipv6 elif server_address in ("", "0.0.0.0"): self.__addresses = self._get_addresses(AF_INET) else: self.__addresses = get_iterable(server_address) self.__valid_hostnames = [c.hostname for c in connector.infos] self.logger.debug("All listening addresses: %s", self.__addresses)
def register_client(self, schemes, get_client): """Registers a specific client for the given schemes.""" schemes = set(map(str.lower, get_iterable(schemes))) for scheme in schemes: self._get_clients[scheme] = get_client
def register_client(self, schemes, client): """Register a generic client for the given schemes""" schemes = set(map(str.lower, get_iterable(schemes))) for scheme in schemes: self.__generic_clients[scheme] = client
def contentType(resource, value): try: return any(map(resource.contentType.__contains__, get_iterable(value))) except AttributeError: pass
def searchString(resource, value): try: return all( map(resource.searchStrings.__contains__, get_iterable(value))) except AttributeError: pass