# The proxy's OWN settings - not the printers (that is printers.toml, which # holds per-site secrets and is never shipped on a pendrive). See # src/config.rs for how this file layers with CONTINUUM_* environment # variables: this file is the base, an env var overrides the same key. # # PC / server: copy to continuum.toml next to the proxy and edit it. Nothing # else is needed; removable media is never read. # Proxy Box: this file is NOT written by hand. Continuum Cloud's # configurator produces continuum-config.zip: config.toml, # config.toml.sha256 and config.toml.sig (an Ed25519 signature # naming this box and a config_version), every entry # AES-256-encrypted under the box's own key. A Box refuses # plaintext, unsigned, other-box and older-version bundles. # See the module docs of src/config_import.rs for the exact # format the cloud must produce. # # Unknown keys are rejected on purpose, so a typo cannot silently fall back to # a default. On a Proxy Box the file must be complete by itself. gateway_id = "REPLACE_ME" farm_id = "REPLACE_ME" gateway_token = "REPLACE_ME" # uplink_url = "wss://api.continuum.local/ws/edge/v1" # go2rtc_bin = "go2rtc" # go2rtc_config = "./go2rtc.yaml" # go2rtc_api_listen = ":1984" # stream_base_url = "https://proxy.example/" # printers_path = "/var/lib/continuum/printers.toml" # absolute on a box # Proxy Box only. PARSED AND VALIDATED, NOT APPLIED - this build never # touches the OS network configuration. # [network] # mode = "static" # or "dhcp" # ip = "192.168.1.60" # prefix_len = 24 # gateway = "192.168.1.1" # dns = ["1.1.1.1"] # [network.wifi] # ssid = "farm" # psk = "REPLACE_ME" # Printer discovery: look for printers nobody has configured and report them # to the cloud, so adding one in the web console does not start with walking # to a machine to read its IP address off the screen. # # OFF by default, and the whole block is commented out here for that reason. # A sweep is unsolicited traffic on someone else's network - 254 TLS # handshakes and up to three HTTP requests per host, which nothing watching # can distinguish from a port scan. Switch it on only for a network you are # responsible for. # # Discovery never supplies a credential, because nothing can: a Bambu access # code is displayed on the printer and a PrusaLink API key is in its web UI. # It supplies the address, the serial and the vendor - the parts you would # otherwise have to look up. # # `subnets` is explicit and never derived from this host's interfaces, so a # second NIC, a VPN or a container bridge cannot widen what gets swept. # Anything wider than a /24 is refused. # # `serial` reads USB descriptors from sysfs and opens nothing. It will never # send an `M115` handshake: opening a serial port toggles DTR, which reboots # an Arduino-based board, and on a printer mid-job that ruins the print. Use # `cargo run --example discover_printers -- serial-probe ` when you want # the handshake and are standing in front of the machine. # # `ssdp` listens passively for Bambu announcements. It sends nothing, but # multicast does not cross a router, so on a real farm network a sweep is # what actually works. # # [discovery] # enabled = true # subnets = ["192.168.0.0/24"] # ssdp = false # serial = false # interval_minutes = 30