Brook v20250808: Expose local services to the public network

Updated at: 2025-08-01

GUI updates also apply to Shiliew

CLI

httpserver

Added brook httpserver command, usually used to temporarily start a HTTP/1.1 test server locally.

exposeserver and exposeclient

Added brook exposeserver and brook exposeclient commands to expose your local TCP and UDP services to the public network.

consumer -> exposeserver -> exposeclient -> local producer

Suppose you have a local TCP or UDP service: [::1]:8888, and want to expose it to the public network. Then deploy brook exposeserver on a server first

brook exposeserver --listen :9999 --password hello

Then run brook exposeclient locally, assuming your server IP is 1.2.3.4

brook exposeclient --server 1.2.3.4:9999 --password hello --producer [::1]:8888

After the connection is successful, brook exposeclient will output the port exposed by the server, such as 7777, and then accessing 1.2.3.4:7777 is equivalent to accessing [::1]:8888

Compared with zoro, some optimizations have been made, and the data transmission between exposeclient and exposeserver will use the brook protocol.

exposehttpsserver and exposehttpsclient

Add brook exposehttpsserver and brook exposehttpsclient commands to expose your local HTTP/1.1 service to the public HTTPS.

consumer -> exposehttpsserver -> exposehttpsclient -> local producer

Suppose you have a local HTTP/1.1 service: [::1]:8888, and want to expose it to the public network. Then deploy brook exposehttpsserver on a server, and prepare a domain name such as hello.com, and point the A and AAAA of *.hello.com to your server, assuming your domain name is on cloudflare.

brook exposehttpsserver --listen :9999 --password hello --domain hello.com --port 443 --cloudflareDNSAPIToken xxx

Then run brook exposehttpsclient locally, assuming your server IP is 1.2.3.4

brook exposehttpsclient --server 1.2.3.4:9999 --password hello --producer [::1]:8888

After the connection is successful, brook exposehttpsclient will output the server's exposed address, such as xxx.hello.com:443, and then accessing https://xxx.hello.com:443 is equivalent to accessing [::1]:8888

Compared with zoro, some optimizations have been made, and the data transmission between exposehttpsclient and exposehttpsserver will use the brook protocol.

A public exposehttpsserver is available in the Zhi VIP Chat group

dnssd

Added brook dnssd command to discover the IP addresses of other devices in the same LAN.

First, get all discoverable services

brook dnssd

Then get the IP list of a service

brook dnssd --service xxx

But there is no guarantee that the device will return all IP lists, and it seems that the standard is a bit vague in this description

GUI

Automatically pull and update subscription/import URLs every 5 minutes

After adding a subscription/import URL, after the initial import is successful, it will be silently updated every 5 minutes in the background.

Toolbox Update

Adjusted several Test tools.

Zhi VIP Chat Group

Use the Zhi Chat group as a tool for customer support and user communication.

Others

The dark theme automatically follows the system. UI tweaks.

Apple IAP

Apple in-app purchases Brook Plus can now be linked to an email account, which means it can be used on non-Apple systems.