Anaconda Enterprise: Documentation

# bokeh.server.util

Provide some utility functions useful for implementing different components in `bokeh.server`.

`bokeh.server.util.``bind_sockets`(address, port)

  Bind a socket to a port on an address.

  Parameters: | address (str) – An address to bind a port on, e.g. `"localhost"` port (int) – A port number to bind. Pass 0 to have the OS automatically choose a free port.

  This function returns a 2-tuple with the new socket as the first element, and the port that was bound as the second. (Useful when passing 0 as a port number to bind any free port.)

  Returns: | (socket, port)

`bokeh.server.util.``check_whitelist`(host, whitelist)

  Check a given request host against a whitelist.

  Parameters: | host (str) – A host string to compare against a whitelist. If the host does not specify a port, then `":80"` is implicitly assumed. whitelist (seq[str]) – A list of host patterns to match against
  Returns: | `True`, if `host` matches any pattern in `whitelist`, otherwise `False`

`bokeh.server.util.``create_hosts_whitelist`(host_list, port)

  This whitelist can be used to restrict websocket or other connections to only those explicitly originating from approved hosts.

  Parameters: | host_list (seq[str]) – A list of string <name> or <name>:<port> values to add to the whitelist. If no port is specified in a host string, then `":80"` is implicitly assumed. port (int) – If `host_list` is empty or `None`, then the whitelist will be the single item list `` [ ‘localhost:<port>’ ]`` If `host_list` is not empty, this parameter has no effect.
  Returns: | list[str]
  Raises: | ValueError, if host or port values are invalid

  Note

  If any host in `host_list` contains a wildcard `*` a warning will be logged regarding permissive websocket connections.

`bokeh.server.util.``match_host`(host, pattern)

  Match a host string against a pattern

  Parameters: | host (str) – A hostname to compare to the given pattern pattern (str) – A string representing a hostname pattern, possibly including wildcards for ip address octets or ports.

  This function will return `True` if the hostname matches the pattern, including any widcards. If the pattern contains a port, the host string must also contain a matching port.

  Returns: | bool

  Examples

      >>> match_host('192.168.0.1:80', '192.168.0.1:80')
      True
      >>> match_host('192.168.0.1:80', '192.168.0.1')
      True
      >>> match_host('192.168.0.1:80', '192.168.0.1:8080')
      False
      >>> match_host('192.168.0.1', '192.168.0.2')
      False
      >>> match_host('192.168.0.1', '192.168.*.*')
      True
      >>> match_host('alice', 'alice')
      True
      >>> match_host('alice:80', 'alice')
      True
      >>> match_host('alice', 'bob')
      False
      >>> match_host('foo.example.com', 'foo.example.com.net')
      False
      >>> match_host('alice', '*')
      True
      >>> match_host('alice', '*:*')
      True
      >>> match_host('alice:80', '*')
      True
      >>> match_host('alice:80', '*:80')
      True
      >>> match_host('alice:8080', '*:80')
      False