bokeh.server.util (original) (raw)
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:
- 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)
check_allowlist(host: str, allowlist: Sequence[str]) → bool[source]#
Check a given request host against a allowlist.
Parameters:
- host (str) –
A host string to compare against a allowlist.
If the host does not specify a port, then":80"
is implicitly assumed. - allowlist (seq _[_str]) – A list of host patterns to match against
Returns:
True
, if host
matches any pattern in allowlist
, otherwiseFalse
create_hosts_allowlist(host_list: Sequence[str] | None, port: int | None) → 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 or : values to add to the allowlist.
If no port is specified in a host string, then":80"
is implicitly assumed. - port (int) –
Ifhost_list
is empty orNone
, then the allowlist will be the single item list `` [ ‘localhost:’ ]``
Ifhost_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:
- 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 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