bokeh.server.util¶
Provide some utility functions useful for implementing different
components in bokeh.server
.
- bind_sockets(address: str | None, port: int) Tuple[List[socket], int] [source]¶
Bind a socket to a port on an address.
- Parameters
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)
- check_allowlist(host: str, allowlist: Sequence[str]) bool [source]¶
Check a given request host against a allowlist.
- create_hosts_allowlist(host_list: Sequence[str] | None, port: int) List[str] [source]¶
This allowlist 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 allowlist.
If no port is specified in a host string, then
":80"
is implicitly assumed.port (int) –
If
host_list
is empty orNone
, then the allowlist 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.
- match_host(host: str, pattern: str) bool [source]¶
Match a host string against a pattern
- Parameters
This function will return
True
if the hostname matches the pattern, including any wildcards. 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