From 479797361e7fbda3f69927368a0d35a76e314828 Mon Sep 17 00:00:00 2001
From: Matt Hill
Date: Tue, 21 Jan 2025 20:46:36 -0700
Subject: [PATCH] add clearnet functionality to frontend (#2814)
* add clearnet functionality to frontend
* add pattern and add sync db on rpcs
* add domain pattern
* show acme name instead of url if known
* dont blow up if domain not present after delete
* use common name for letsencrypt
* normalize urls
* refactor start-os ui net service
* backend migration and rpcs for serverInfo.host
* fix cors
* implement clearnet for main startos ui
* ability to add and remove tor addresses, including vanity
* add guard to prevent duplicate addresses
* misc bugfixes
* better heuristics for launching UIs
* fix ipv6 mocks
* fix ipv6 display bug
* rewrite url selection for launch ui
---------
Co-authored-by: Aiden McClelland
---
.../Systems/SystemForEmbassy/MainLoop.ts | 1 -
.../Systems/SystemForEmbassy/index.ts | 1 +
core/Cargo.lock | 327 ++++++-------
core/helpers/Cargo.toml | 2 +-
core/models/Cargo.toml | 2 +-
core/models/src/data_url.rs | 2 +-
core/models/src/errors.rs | 6 +-
core/models/src/id/invalid_id.rs | 6 +-
core/models/src/id/mod.rs | 6 +-
core/startos/Cargo.toml | 6 +-
core/startos/src/account.rs | 34 +-
core/startos/src/backup/os.rs | 10 +-
core/startos/src/backup/restore.rs | 6 +-
core/startos/src/bins/start_init.rs | 6 +-
core/startos/src/context/config.rs | 3 -
core/startos/src/context/rpc.rs | 57 ++-
core/startos/src/context/setup.rs | 8 +-
core/startos/src/db/model/public.rs | 54 ++-
core/startos/src/init.rs | 80 ++--
core/startos/src/lib.rs | 5 +-
core/startos/src/middleware/cors.rs | 10 +-
core/startos/src/net/acme.rs | 69 ++-
core/startos/src/net/dns.rs | 57 ++-
core/startos/src/net/host/address.rs | 158 +++----
core/startos/src/net/host/binding.rs | 59 +--
core/startos/src/net/host/mod.rs | 136 ++++--
core/startos/src/net/keys.rs | 4 +-
core/startos/src/net/net_controller.rs | 428 ++++++++++--------
core/startos/src/net/network_interface.rs | 58 ++-
core/startos/src/net/vhost.rs | 29 +-
core/startos/src/net/wifi.rs | 3 +-
core/startos/src/service/effects/net/bind.rs | 19 +-
core/startos/src/service/effects/net/info.rs | 3 +-
core/startos/src/service/mod.rs | 21 +-
.../src/service/persistent_container.rs | 4 +-
core/startos/src/service/service_actor.rs | 32 --
core/startos/src/service/service_map.rs | 11 +-
core/startos/src/setup.rs | 15 +-
core/startos/src/util/sync.rs | 8 +
core/startos/src/version/mod.rs | 6 +-
core/startos/src/version/v0_3_6_alpha_0.rs | 4 +-
core/startos/src/version/v0_3_6_alpha_12.rs | 68 +++
package-lock.json | 6 -
patch-db | 2 +-
sdk/base/lib/interfaces/Host.ts | 31 +-
sdk/base/lib/interfaces/Origin.ts | 6 +-
sdk/base/lib/osBindings/BindParams.ts | 2 -
sdk/base/lib/osBindings/Host.ts | 2 -
sdk/base/lib/osBindings/HostKind.ts | 3 -
sdk/base/lib/osBindings/ServerInfo.ts | 8 +-
sdk/base/lib/osBindings/SetupResult.ts | 2 +-
sdk/base/lib/osBindings/index.ts | 31 +-
sdk/base/lib/util/patterns.ts | 29 +-
sdk/base/lib/util/regexes.ts | 73 ++-
system-images/compat/Cargo.toml | 2 +-
web/package-lock.json | 6 +-
web/package.json | 2 +-
.../download-doc/download-doc.component.html | 2 +-
.../src/app/pages/success/success.page.ts | 8 +-
.../src/app/services/api/mock-api.service.ts | 4 +-
.../shared/src/types/workspace-config.ts | 2 +-
.../app/app/preloader/preloader.component.ts | 2 +-
.../form-select/form-select.component.html | 2 +-
.../interface-info.component.html | 62 +++
.../interface-info.component.scss | 3 +
.../interface-info.component.ts | 393 ++++++++++++++++
.../interface-info/interface-info.module.ts | 11 +
.../app-interfaces-item.component.html | 44 --
.../app-interfaces/app-interfaces.module.ts | 10 +-
.../app-interfaces/app-interfaces.page.html | 15 +-
.../app-interfaces/app-interfaces.page.scss | 3 -
.../app-interfaces/app-interfaces.page.ts | 145 +-----
.../pages/server-routes/acme/acme.module.ts | 18 +
.../pages/server-routes/acme/acme.page.html | 56 +++
.../pages/server-routes/acme/acme.page.scss | 0
.../app/pages/server-routes/acme/acme.page.ts | 117 +++++
.../server-routes/server-routing.module.ts | 5 +
.../server-show/server-show.page.ts | 9 +
.../server-specs/server-specs.module.ts | 2 +
.../server-specs/server-specs.page.html | 71 +--
.../server-specs/server-specs.page.ts | 50 +-
.../ui/src/app/services/api/api.fixures.ts | 51 ++-
.../ui/src/app/services/api/api.types.ts | 74 +++
.../app/services/api/embassy-api.service.ts | 44 ++
.../services/api/embassy-live-api.service.ts | 112 +++++
.../services/api/embassy-mock-api.service.ts | 289 +++++++++++-
.../ui/src/app/services/api/mock-patch.ts | 171 ++++++-
.../ui/src/app/services/config.service.ts | 210 +++++++--
.../ui/src/app/services/form.service.ts | 2 +-
web/projects/ui/src/app/util/acme.ts | 21 +
90 files changed, 2836 insertions(+), 1201 deletions(-)
create mode 100644 core/startos/src/version/v0_3_6_alpha_12.rs
delete mode 100644 package-lock.json
delete mode 100644 sdk/base/lib/osBindings/HostKind.ts
create mode 100644 web/projects/ui/src/app/components/interface-info/interface-info.component.html
create mode 100644 web/projects/ui/src/app/components/interface-info/interface-info.component.scss
create mode 100644 web/projects/ui/src/app/components/interface-info/interface-info.component.ts
create mode 100644 web/projects/ui/src/app/components/interface-info/interface-info.module.ts
delete mode 100644 web/projects/ui/src/app/pages/apps-routes/app-interfaces/app-interfaces-item.component.html
create mode 100644 web/projects/ui/src/app/pages/server-routes/acme/acme.module.ts
create mode 100644 web/projects/ui/src/app/pages/server-routes/acme/acme.page.html
create mode 100644 web/projects/ui/src/app/pages/server-routes/acme/acme.page.scss
create mode 100644 web/projects/ui/src/app/pages/server-routes/acme/acme.page.ts
create mode 100644 web/projects/ui/src/app/util/acme.ts
diff --git a/container-runtime/src/Adapters/Systems/SystemForEmbassy/MainLoop.ts b/container-runtime/src/Adapters/Systems/SystemForEmbassy/MainLoop.ts
index b6fe39854..fa76a1f84 100644
--- a/container-runtime/src/Adapters/Systems/SystemForEmbassy/MainLoop.ts
+++ b/container-runtime/src/Adapters/Systems/SystemForEmbassy/MainLoop.ts
@@ -113,7 +113,6 @@ export class MainLoop {
}))
.find((conf) => conf.internal == internalPort)
await effects.bind({
- kind: "multi",
id: interfaceId,
internalPort,
preferredExternalPort: torConf?.external || internalPort,
diff --git a/container-runtime/src/Adapters/Systems/SystemForEmbassy/index.ts b/container-runtime/src/Adapters/Systems/SystemForEmbassy/index.ts
index e74ef317d..bc2da8871 100644
--- a/container-runtime/src/Adapters/Systems/SystemForEmbassy/index.ts
+++ b/container-runtime/src/Adapters/Systems/SystemForEmbassy/index.ts
@@ -401,6 +401,7 @@ export class SystemForEmbassy implements System {
return [
port,
{
+ protocol: null,
secure: null,
preferredExternalPort: Number.parseInt(
torPort || lanPort || String(port),
diff --git a/core/Cargo.lock b/core/Cargo.lock
index bc489c481..3810d0d8d 100644
--- a/core/Cargo.lock
+++ b/core/Cargo.lock
@@ -163,11 +163,12 @@ dependencies = [
[[package]]
name = "anstyle-wincon"
-version = "3.0.6"
+version = "3.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125"
+checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e"
dependencies = [
"anstyle",
+ "once_cell",
"windows-sys 0.59.0",
]
@@ -237,7 +238,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
"synstructure",
]
@@ -249,7 +250,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -265,7 +266,7 @@ dependencies = [
"pem",
"rcgen",
"ring 0.17.8",
- "rustls 0.23.20",
+ "rustls 0.23.21",
"rustls-pemfile 2.2.0",
"serde",
"serde_json",
@@ -404,7 +405,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -444,7 +445,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -461,7 +462,7 @@ checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -487,9 +488,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "aws-lc-rs"
-version = "1.12.0"
+version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f409eb70b561706bf8abba8ca9c112729c481595893fd06a2dd9af8ed8441148"
+checksum = "1ea835662a0af02443aa1396d39be523bbf8f11ee6fad20329607c480bea48c3"
dependencies = [
"aws-lc-sys",
"paste",
@@ -498,9 +499,9 @@ dependencies = [
[[package]]
name = "aws-lc-sys"
-version = "0.24.1"
+version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "923ded50f602b3007e5e63e3f094c479d9c8a9b42d7f4034e4afe456aa48bfd2"
+checksum = "71b2ddd3ada61a305e1d8bb6c005d1eaa7d14d903681edfc400406d523a9b491"
dependencies = [
"bindgen",
"cc",
@@ -717,7 +718,7 @@ version = "0.69.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"cexpr",
"clang-sys",
"itertools 0.12.1",
@@ -730,7 +731,7 @@ dependencies = [
"regex",
"rustc-hash",
"shlex",
- "syn 2.0.95",
+ "syn 2.0.96",
"which",
]
@@ -772,9 +773,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.6.0"
+version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
dependencies = [
"serde",
]
@@ -946,9 +947,9 @@ checksum = "981520c98f422fcc584dc1a95c334e6953900b9106bc47a9839b81790009eb21"
[[package]]
name = "cc"
-version = "1.2.7"
+version = "1.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7"
+checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229"
dependencies = [
"jobserver",
"libc",
@@ -1088,7 +1089,7 @@ dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -1382,7 +1383,7 @@ version = "0.28.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"crossterm_winapi",
"futures-core",
"mio",
@@ -1497,7 +1498,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -1521,7 +1522,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim 0.11.1",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -1532,14 +1533,14 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [
"darling_core",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
name = "data-encoding"
-version = "2.6.0"
+version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
+checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f"
[[package]]
name = "deflate64"
@@ -1569,7 +1570,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -1606,7 +1607,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -1627,7 +1628,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -1640,7 +1641,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustc_version",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -1693,7 +1694,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -1882,14 +1883,14 @@ dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
name = "enumflags2"
-version = "0.7.10"
+version = "0.7.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d"
+checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147"
dependencies = [
"enumflags2_derive",
"serde",
@@ -1897,13 +1898,13 @@ dependencies = [
[[package]]
name = "enumflags2_derive"
-version = "0.7.10"
+version = "0.7.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
+checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -2065,7 +2066,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c"
dependencies = [
"crc32fast",
- "miniz_oxide 0.8.2",
+ "miniz_oxide 0.8.3",
]
[[package]]
@@ -2197,9 +2198,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
[[package]]
name = "futures-lite"
-version = "2.5.0"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1"
+checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
dependencies = [
"fastrand",
"futures-core",
@@ -2216,7 +2217,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -2340,7 +2341,7 @@ version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8283e7331b8c93b9756e0cfdbcfb90312852f953c6faf9bf741e684cc3b6ad69"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"crc",
"log",
"uuid",
@@ -2738,7 +2739,7 @@ dependencies = [
"http 1.2.0",
"hyper 1.5.2",
"hyper-util",
- "rustls 0.23.20",
+ "rustls 0.23.21",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.1",
@@ -2930,7 +2931,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -3017,6 +3018,18 @@ dependencies = [
name = "imbl-value"
version = "0.1.1"
source = "git+https://github.com/Start9Labs/imbl-value.git#1900943e17116def03bf00bff05cf12e54d810bc"
+dependencies = [
+ "imbl",
+ "serde",
+ "serde_json",
+ "yasi",
+]
+
+[[package]]
+name = "imbl-value"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b3431be119ebf79f4bd0ce420dfa66aaeffbc4688f79c796237dc1f3b2d6d71"
dependencies = [
"imbl",
"serde",
@@ -3281,9 +3294,9 @@ dependencies = [
[[package]]
name = "js-sys"
-version = "0.3.76"
+version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
dependencies = [
"once_cell",
"wasm-bindgen",
@@ -3293,7 +3306,7 @@ dependencies = [
name = "json-patch"
version = "0.2.7-alpha.0"
dependencies = [
- "imbl-value",
+ "imbl-value 0.1.2",
"json-ptr",
"serde",
"treediff",
@@ -3304,7 +3317,7 @@ name = "json-ptr"
version = "0.1.0"
dependencies = [
"imbl",
- "imbl-value",
+ "imbl-value 0.1.2",
"serde",
"thiserror 1.0.69",
]
@@ -3314,7 +3327,7 @@ name = "jsonpath_lib"
version = "0.3.0"
source = "git+https://github.com/Start9Labs/jsonpath.git#1cacbd64afa2e1941a21fef06bad14317ba92f30"
dependencies = [
- "imbl-value",
+ "imbl-value 0.1.1",
"log",
"serde",
"serde_json",
@@ -3432,7 +3445,7 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"libc",
"redox_syscall 0.5.8",
]
@@ -3496,9 +3509,9 @@ checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e"
[[package]]
name = "log"
-version = "0.4.22"
+version = "0.4.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f"
[[package]]
name = "lru-cache"
@@ -3580,7 +3593,7 @@ dependencies = [
"mail-builder",
"md5",
"rand 0.8.5",
- "rustls 0.23.20",
+ "rustls 0.23.21",
"rustls-pki-types",
"smtp-proto",
"tokio",
@@ -3703,9 +3716,9 @@ dependencies = [
[[package]]
name = "miniz_oxide"
-version = "0.8.2"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394"
+checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924"
dependencies = [
"adler2",
]
@@ -3741,7 +3754,7 @@ dependencies = [
"regex",
"reqwest",
"rpc-toolkit",
- "rustls 0.23.20",
+ "rustls 0.23.21",
"serde",
"serde_json",
"sqlx",
@@ -3819,7 +3832,7 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"cfg-if",
"cfg_aliases",
"libc",
@@ -3993,7 +4006,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -4051,7 +4064,7 @@ version = "0.10.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"cfg-if",
"foreign-types",
"libc",
@@ -4068,7 +4081,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -4202,7 +4215,7 @@ dependencies = [
"fd-lock-rs",
"futures",
"imbl",
- "imbl-value",
+ "imbl-value 0.1.2",
"json-patch",
"json-ptr",
"lazy_static",
@@ -4277,7 +4290,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc"
dependencies = [
"memchr",
- "thiserror 2.0.10",
+ "thiserror 2.0.11",
"ucd-trie",
]
@@ -4301,7 +4314,7 @@ dependencies = [
"pest_meta",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -4357,7 +4370,7 @@ checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -4454,12 +4467,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
[[package]]
name = "prettyplease"
-version = "0.2.27"
+version = "0.2.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "483f8c21f64f3ea09fe0f30f5d48c3e8eefe5dac9129f0075f76593b4c1da705"
+checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac"
dependencies = [
"proc-macro2",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -4496,9 +4509,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.92"
+version = "1.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
+checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
dependencies = [
"unicode-ident",
]
@@ -4509,7 +4522,7 @@ version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "731e0d9356b0c25f16f33b5be79b1c57b562f141ebfcdb0ad8ac2c13a24293b4"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"chrono",
"flate2",
"hex",
@@ -4524,7 +4537,7 @@ version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"chrono",
"hex",
]
@@ -4537,7 +4550,7 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50"
dependencies = [
"bit-set 0.8.0",
"bit-vec 0.8.0",
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"lazy_static",
"num-traits",
"rand 0.8.5",
@@ -4557,7 +4570,7 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -4580,7 +4593,7 @@ dependencies = [
"itertools 0.12.1",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -4785,7 +4798,7 @@ version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
]
[[package]]
@@ -4967,8 +4980,8 @@ dependencies = [
[[package]]
name = "rpc-toolkit"
-version = "0.2.3"
-source = "git+https://github.com/Start9Labs/rpc-toolkit.git?branch=refactor%2Fno-dyn-ctx#21e35d85fb8f5de0e046c7ab5266236c2b639a4b"
+version = "0.3.0"
+source = "git+https://github.com/Start9Labs/rpc-toolkit.git?branch=master#0747acc54b3dafa8689db1365fba5b28a03806b1"
dependencies = [
"async-stream",
"async-trait",
@@ -4977,7 +4990,7 @@ dependencies = [
"futures",
"http 1.2.0",
"http-body-util",
- "imbl-value",
+ "imbl-value 0.1.2",
"itertools 0.12.1",
"lazy_format",
"lazy_static",
@@ -5071,7 +5084,7 @@ version = "0.38.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"errno 0.3.10",
"libc",
"linux-raw-sys",
@@ -5106,9 +5119,9 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.23.20"
+version = "0.23.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b"
+checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8"
dependencies = [
"aws-lc-rs",
"log",
@@ -5194,7 +5207,7 @@ dependencies = [
"futures-util",
"pin-project",
"thingbuf",
- "thiserror 2.0.10",
+ "thiserror 2.0.11",
"unicode-segmentation",
"unicode-width 0.2.0",
]
@@ -5259,7 +5272,7 @@ version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"core-foundation",
"core-foundation-sys",
"libc",
@@ -5319,7 +5332,7 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -5364,7 +5377,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -5415,7 +5428,7 @@ dependencies = [
"darling",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -5745,7 +5758,7 @@ checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418"
dependencies = [
"atoi",
"base64 0.21.7",
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"byteorder",
"bytes",
"chrono",
@@ -5788,7 +5801,7 @@ checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e"
dependencies = [
"atoi",
"base64 0.21.7",
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"byteorder",
"chrono",
"crc",
@@ -5866,7 +5879,7 @@ dependencies = [
"quote",
"regex-syntax 0.6.29",
"strsim 0.10.0",
- "syn 2.0.95",
+ "syn 2.0.96",
"unicode-width 0.1.14",
]
@@ -5920,7 +5933,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
[[package]]
name = "start-os"
-version = "0.3.6-alpha.11"
+version = "0.3.6-alpha.12"
dependencies = [
"aes 0.7.5",
"async-acme",
@@ -5965,7 +5978,7 @@ dependencies = [
"hyper-util",
"id-pool",
"imbl",
- "imbl-value",
+ "imbl-value 0.1.2",
"include_dir",
"indexmap 2.7.0",
"indicatif",
@@ -6013,7 +6026,7 @@ dependencies = [
"rpassword",
"rpc-toolkit",
"rust-argon2",
- "rustls 0.23.20",
+ "rustls 0.23.21",
"rustls-pki-types",
"rustyline-async",
"semver",
@@ -6121,9 +6134,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.95"
+version = "2.0.96"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a"
+checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80"
dependencies = [
"proc-macro2",
"quote",
@@ -6153,7 +6166,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -6162,7 +6175,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
dependencies = [
- "bitflags 2.6.0",
+ "bitflags 2.8.0",
"core-foundation",
"system-configuration-sys",
]
@@ -6260,11 +6273,11 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "2.0.10"
+version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3ac7f54ca534db81081ef1c1e7f6ea8a3ef428d2fc069097c079443d24124d3"
+checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc"
dependencies = [
- "thiserror-impl 2.0.10",
+ "thiserror-impl 2.0.11",
]
[[package]]
@@ -6275,18 +6288,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
name = "thiserror-impl"
-version = "2.0.10"
+version = "2.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e9465d30713b56a37ede7185763c3492a91be2f5fa68d958c44e41ab9248beb"
+checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -6412,7 +6425,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -6452,7 +6465,7 @@ version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37"
dependencies = [
- "rustls 0.23.20",
+ "rustls 0.23.21",
"tokio",
]
@@ -6589,7 +6602,7 @@ dependencies = [
"serde",
"serde_spanned",
"toml_datetime",
- "winnow 0.6.22",
+ "winnow 0.6.24",
]
[[package]]
@@ -6706,7 +6719,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -6858,7 +6871,7 @@ dependencies = [
"Inflector",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
"termcolor",
]
@@ -6928,7 +6941,7 @@ checksum = "1f718dfaf347dcb5b983bfc87608144b0bad87970aebcbea5ce44d2a30c08e63"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -7095,18 +7108,18 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "uuid"
-version = "1.11.0"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a"
+checksum = "744018581f9a3454a9e15beb8a33b017183f1e7c0cd170232a2d1453b23a51c4"
dependencies = [
"getrandom 0.2.15",
]
[[package]]
name = "valuable"
-version = "0.1.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
[[package]]
name = "vcpkg"
@@ -7168,34 +7181,35 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
[[package]]
name = "wasm-bindgen"
-version = "0.2.99"
+version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
dependencies = [
"cfg-if",
"once_cell",
+ "rustversion",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.99"
+version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
dependencies = [
"bumpalo",
"log",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.49"
+version = "0.4.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2"
+checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
dependencies = [
"cfg-if",
"js-sys",
@@ -7206,9 +7220,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.99"
+version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -7216,22 +7230,25 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.99"
+version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.99"
+version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
[[package]]
name = "wasm-streams"
@@ -7248,9 +7265,9 @@ dependencies = [
[[package]]
name = "web-sys"
-version = "0.3.76"
+version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -7538,9 +7555,9 @@ dependencies = [
[[package]]
name = "winnow"
-version = "0.6.22"
+version = "0.6.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980"
+checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a"
dependencies = [
"memchr",
]
@@ -7691,15 +7708,15 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
"synstructure",
]
[[package]]
name = "zbus"
-version = "5.2.0"
+version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb67eadba43784b6fb14857eba0d8fc518686d3ee537066eb6086dc318e2c8a1"
+checksum = "192a0d989036cd60a1e91a54c9851fb9ad5bd96125d41803eed79d2e2ef74bd7"
dependencies = [
"async-broadcast",
"async-executor",
@@ -7724,7 +7741,7 @@ dependencies = [
"tracing",
"uds_windows",
"windows-sys 0.59.0",
- "winnow 0.6.22",
+ "winnow 0.6.24",
"xdg-home",
"zbus_macros",
"zbus_names",
@@ -7733,14 +7750,14 @@ dependencies = [
[[package]]
name = "zbus_macros"
-version = "5.2.0"
+version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c9d49ebc960ceb660f2abe40a5904da975de6986f2af0d7884b39eec6528c57"
+checksum = "3685b5c81fce630efc3e143a4ded235b107f1b1cdf186c3f115529e5e5ae4265"
dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
"zbus_names",
"zvariant",
"zvariant_utils",
@@ -7748,13 +7765,13 @@ dependencies = [
[[package]]
name = "zbus_names"
-version = "4.1.0"
+version = "4.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "856b7a38811f71846fd47856ceee8bccaec8399ff53fb370247e66081ace647b"
+checksum = "519629a3f80976d89c575895b05677cbc45eaf9f70d62a364d819ba646409cc8"
dependencies = [
"serde",
"static_assertions",
- "winnow 0.6.22",
+ "winnow 0.6.24",
"zvariant",
]
@@ -7776,7 +7793,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -7796,7 +7813,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
"synstructure",
]
@@ -7817,7 +7834,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -7839,7 +7856,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
]
[[package]]
@@ -7864,7 +7881,7 @@ dependencies = [
"pbkdf2",
"rand 0.8.5",
"sha1",
- "thiserror 2.0.10",
+ "thiserror 2.0.11",
"time",
"zeroize",
"zopfli",
@@ -7915,42 +7932,42 @@ dependencies = [
[[package]]
name = "zvariant"
-version = "5.1.0"
+version = "5.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1200ee6ac32f1e5a312e455a949a4794855515d34f9909f4a3e082d14e1a56f"
+checksum = "55e6b9b5f1361de2d5e7d9fd1ee5f6f7fcb6060618a1f82f3472f58f2b8d4be9"
dependencies = [
"endi",
"enumflags2",
"serde",
"static_assertions",
- "winnow 0.6.22",
+ "winnow 0.6.24",
"zvariant_derive",
"zvariant_utils",
]
[[package]]
name = "zvariant_derive"
-version = "5.1.0"
+version = "5.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "687e3b97fae6c9104fbbd36c73d27d149abf04fb874e2efbd84838763daa8916"
+checksum = "573a8dd76961957108b10f7a45bac6ab1ea3e9b7fe01aff88325dc57bb8f5c8b"
dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.95",
+ "syn 2.0.96",
"zvariant_utils",
]
[[package]]
name = "zvariant_utils"
-version = "3.0.2"
+version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20d1d011a38f12360e5fcccceeff5e2c42a8eb7f27f0dcba97a0862ede05c9c6"
+checksum = "ddd46446ea2a1f353bfda53e35f17633afa79f4fe290a611c94645c69fe96a50"
dependencies = [
"proc-macro2",
"quote",
"serde",
"static_assertions",
- "syn 2.0.95",
- "winnow 0.6.22",
+ "syn 2.0.96",
+ "winnow 0.6.24",
]
diff --git a/core/helpers/Cargo.toml b/core/helpers/Cargo.toml
index 9af19018e..caf4b3eef 100644
--- a/core/helpers/Cargo.toml
+++ b/core/helpers/Cargo.toml
@@ -11,7 +11,7 @@ futures = "0.3.28"
lazy_async_pool = "0.3.3"
models = { path = "../models" }
pin-project = "1.1.3"
-rpc-toolkit = { git = "https://github.com/Start9Labs/rpc-toolkit.git", branch = "refactor/no-dyn-ctx" }
+rpc-toolkit = { git = "https://github.com/Start9Labs/rpc-toolkit.git", branch = "master" }
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
tokio = { version = "1", features = ["full"] }
diff --git a/core/models/Cargo.toml b/core/models/Cargo.toml
index 5defd1986..9e216bc60 100644
--- a/core/models/Cargo.toml
+++ b/core/models/Cargo.toml
@@ -24,7 +24,7 @@ patch-db = { version = "*", path = "../../patch-db/patch-db", features = [
rand = "0.8.5"
regex = "1.10.2"
reqwest = "0.12"
-rpc-toolkit = { git = "https://github.com/Start9Labs/rpc-toolkit.git", branch = "refactor/no-dyn-ctx" }
+rpc-toolkit = { git = "https://github.com/Start9Labs/rpc-toolkit.git", branch = "master" }
rustls = "0.23"
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
diff --git a/core/models/src/data_url.rs b/core/models/src/data_url.rs
index 9757d7f6a..8a95c993e 100644
--- a/core/models/src/data_url.rs
+++ b/core/models/src/data_url.rs
@@ -168,6 +168,6 @@ fn doesnt_reallocate() {
mime: InternedString::intern("png"),
data: Cow::Borrowed(&random[..i]),
};
- assert_eq!(dbg!(icon.to_string()).capacity(), icon.data_url_len());
+ assert_eq!(icon.to_string().capacity(), icon.data_url_len());
}
}
diff --git a/core/models/src/errors.rs b/core/models/src/errors.rs
index e7b73b0ec..21ff5072b 100644
--- a/core/models/src/errors.rs
+++ b/core/models/src/errors.rs
@@ -45,7 +45,7 @@ pub enum ErrorKind {
ConfigGen = 27,
ParseNumber = 28,
Database = 29,
- InvalidPackageId = 30,
+ InvalidId = 30,
InvalidSignature = 31,
Backup = 32,
Restore = 33,
@@ -125,7 +125,7 @@ impl ErrorKind {
ConfigGen => "Config Generation Error",
ParseNumber => "Number Parsing Error",
Database => "Database Error",
- InvalidPackageId => "Invalid Package ID",
+ InvalidId => "Invalid ID",
InvalidSignature => "Invalid Signature",
Backup => "Backup Error",
Restore => "Restore Error",
@@ -226,7 +226,7 @@ impl From for Error {
}
impl From for Error {
fn from(err: InvalidId) -> Self {
- Error::new(err, ErrorKind::InvalidPackageId)
+ Error::new(err, ErrorKind::InvalidId)
}
}
impl From for Error {
diff --git a/core/models/src/id/invalid_id.rs b/core/models/src/id/invalid_id.rs
index d2cc82bd5..4a6f0f2e7 100644
--- a/core/models/src/id/invalid_id.rs
+++ b/core/models/src/id/invalid_id.rs
@@ -1,3 +1,5 @@
+use yasi::InternedString;
+
#[derive(Debug, thiserror::Error)]
-#[error("Invalid ID")]
-pub struct InvalidId;
+#[error("Invalid ID: {0}")]
+pub struct InvalidId(pub(super) InternedString);
diff --git a/core/models/src/id/mod.rs b/core/models/src/id/mod.rs
index 90dbc978c..0c313973f 100644
--- a/core/models/src/id/mod.rs
+++ b/core/models/src/id/mod.rs
@@ -43,7 +43,7 @@ impl TryFrom for Id {
if ID_REGEX.is_match(&value) {
Ok(Id(value))
} else {
- Err(InvalidId)
+ Err(InvalidId(value))
}
}
}
@@ -53,7 +53,7 @@ impl TryFrom for Id {
if ID_REGEX.is_match(&value) {
Ok(Id(InternedString::intern(value)))
} else {
- Err(InvalidId)
+ Err(InvalidId(InternedString::intern(value)))
}
}
}
@@ -63,7 +63,7 @@ impl TryFrom<&str> for Id {
if ID_REGEX.is_match(value) {
Ok(Id(InternedString::intern(value)))
} else {
- Err(InvalidId)
+ Err(InvalidId(InternedString::intern(value)))
}
}
}
diff --git a/core/startos/Cargo.toml b/core/startos/Cargo.toml
index 62453460a..909389c12 100644
--- a/core/startos/Cargo.toml
+++ b/core/startos/Cargo.toml
@@ -14,7 +14,7 @@ keywords = [
name = "start-os"
readme = "README.md"
repository = "https://github.com/Start9Labs/start-os"
-version = "0.3.6-alpha.11"
+version = "0.3.6-alpha.12"
license = "MIT"
[lib]
@@ -117,7 +117,7 @@ id-pool = { version = "0.2.2", default-features = false, features = [
"u16",
] }
imbl = "2.0.3"
-imbl-value = { git = "https://github.com/Start9Labs/imbl-value.git" }
+imbl-value = "0.1.2"
include_dir = { version = "0.7.3", features = ["metadata"] }
indexmap = { version = "2.0.2", features = ["serde"] }
indicatif = { version = "0.17.7", features = ["tokio"] }
@@ -172,7 +172,7 @@ regex = "1.10.2"
reqwest = { version = "0.12.4", features = ["stream", "json", "socks"] }
reqwest_cookie_store = "0.8.0"
rpassword = "7.2.0"
-rpc-toolkit = { git = "https://github.com/Start9Labs/rpc-toolkit.git", branch = "refactor/no-dyn-ctx" }
+rpc-toolkit = { git = "https://github.com/Start9Labs/rpc-toolkit.git", branch = "master" }
rust-argon2 = "2.0.0"
rustyline-async = "0.4.1"
semver = { version = "1.0.20", features = ["serde"] }
diff --git a/core/startos/src/account.rs b/core/startos/src/account.rs
index 9e755342f..389589667 100644
--- a/core/startos/src/account.rs
+++ b/core/startos/src/account.rs
@@ -24,7 +24,7 @@ pub struct AccountInfo {
pub server_id: String,
pub hostname: Hostname,
pub password: String,
- pub tor_key: TorSecretKeyV3,
+ pub tor_keys: Vec,
pub root_ca_key: PKey,
pub root_ca_cert: X509,
pub ssh_key: ssh_key::PrivateKey,
@@ -34,7 +34,7 @@ impl AccountInfo {
pub fn new(password: &str, start_time: SystemTime) -> Result {
let server_id = generate_id();
let hostname = generate_hostname();
- let tor_key = TorSecretKeyV3::generate();
+ let tor_key = vec![TorSecretKeyV3::generate()];
let root_ca_key = generate_key()?;
let root_ca_cert = make_root_cert(&root_ca_key, &hostname, start_time)?;
let ssh_key = ssh_key::PrivateKey::from(ssh_key::private::Ed25519Keypair::random(
@@ -45,7 +45,7 @@ impl AccountInfo {
server_id,
hostname,
password: hash_password(password)?,
- tor_key,
+ tor_keys: tor_key,
root_ca_key,
root_ca_cert,
ssh_key,
@@ -58,8 +58,11 @@ impl AccountInfo {
let hostname = Hostname(db.as_public().as_server_info().as_hostname().de()?);
let password = db.as_private().as_password().de()?;
let key_store = db.as_private().as_key_store();
- let tor_addr = db.as_public().as_server_info().as_onion_address().de()?;
- let tor_key = key_store.as_onion().get_key(&tor_addr)?;
+ let tor_addrs = db.as_public().as_server_info().as_host().as_onions().de()?;
+ let tor_keys = tor_addrs
+ .into_iter()
+ .map(|tor_addr| key_store.as_onion().get_key(&tor_addr))
+ .collect::>()?;
let cert_store = key_store.as_local_certs();
let root_ca_key = cert_store.as_root_key().de()?.0;
let root_ca_cert = cert_store.as_root_cert().de()?.0;
@@ -70,7 +73,7 @@ impl AccountInfo {
server_id,
hostname,
password,
- tor_key,
+ tor_keys,
root_ca_key,
root_ca_cert,
ssh_key,
@@ -82,17 +85,16 @@ impl AccountInfo {
let server_info = db.as_public_mut().as_server_info_mut();
server_info.as_id_mut().ser(&self.server_id)?;
server_info.as_hostname_mut().ser(&self.hostname.0)?;
- server_info
- .as_lan_address_mut()
- .ser(&self.hostname.lan_address().parse()?)?;
server_info
.as_pubkey_mut()
.ser(&self.ssh_key.public_key().to_openssh()?)?;
- let onion_address = self.tor_key.public().get_onion_address();
- server_info.as_onion_address_mut().ser(&onion_address)?;
- server_info
- .as_tor_address_mut()
- .ser(&format!("https://{onion_address}").parse()?)?;
+ server_info.as_host_mut().as_onions_mut().ser(
+ &self
+ .tor_keys
+ .iter()
+ .map(|tor_key| tor_key.public().get_onion_address())
+ .collect(),
+ )?;
db.as_private_mut().as_password_mut().ser(&self.password)?;
db.as_private_mut()
.as_ssh_privkey_mut()
@@ -101,7 +103,9 @@ impl AccountInfo {
.as_compat_s9pk_key_mut()
.ser(Pem::new_ref(&self.compat_s9pk_key))?;
let key_store = db.as_private_mut().as_key_store_mut();
- key_store.as_onion_mut().insert_key(&self.tor_key)?;
+ for tor_key in &self.tor_keys {
+ key_store.as_onion_mut().insert_key(tor_key)?;
+ }
let cert_store = key_store.as_local_certs_mut();
cert_store
.as_root_key_mut()
diff --git a/core/startos/src/backup/os.rs b/core/startos/src/backup/os.rs
index 6f08c5f43..324543fb8 100644
--- a/core/startos/src/backup/os.rs
+++ b/core/startos/src/backup/os.rs
@@ -85,7 +85,7 @@ impl OsBackupV0 {
&mut rand::thread_rng(),
ssh_key::Algorithm::Ed25519,
)?,
- tor_key: TorSecretKeyV3::from(self.tor_key.0),
+ tor_keys: vec![TorSecretKeyV3::from(self.tor_key.0)],
compat_s9pk_key: ed25519_dalek::SigningKey::generate(&mut rand::thread_rng()),
},
ui: self.ui,
@@ -114,7 +114,7 @@ impl OsBackupV1 {
root_ca_key: self.root_ca_key.0,
root_ca_cert: self.root_ca_cert.0,
ssh_key: ssh_key::PrivateKey::from(Ed25519Keypair::from_seed(&self.net_key.0)),
- tor_key: TorSecretKeyV3::from(ed25519_expand_key(&self.net_key.0)),
+ tor_keys: vec![TorSecretKeyV3::from(ed25519_expand_key(&self.net_key.0))],
compat_s9pk_key: ed25519_dalek::SigningKey::from_bytes(&self.net_key),
},
ui: self.ui,
@@ -132,7 +132,7 @@ struct OsBackupV2 {
root_ca_key: Pem>, // PEM Encoded OpenSSL Key
root_ca_cert: Pem, // PEM Encoded OpenSSL X509 Certificate
ssh_key: Pem, // PEM Encoded OpenSSH Key
- tor_key: TorSecretKeyV3, // Base64 Encoded Ed25519 Expanded Secret Key
+ tor_keys: Vec, // Base64 Encoded Ed25519 Expanded Secret Key
compat_s9pk_key: Pem, // PEM Encoded ED25519 Key
ui: Value, // JSON Value
}
@@ -146,7 +146,7 @@ impl OsBackupV2 {
root_ca_key: self.root_ca_key.0,
root_ca_cert: self.root_ca_cert.0,
ssh_key: self.ssh_key.0,
- tor_key: self.tor_key,
+ tor_keys: self.tor_keys,
compat_s9pk_key: self.compat_s9pk_key.0,
},
ui: self.ui,
@@ -159,7 +159,7 @@ impl OsBackupV2 {
root_ca_key: Pem(backup.account.root_ca_key.clone()),
root_ca_cert: Pem(backup.account.root_ca_cert.clone()),
ssh_key: Pem(backup.account.ssh_key.clone()),
- tor_key: backup.account.tor_key.clone(),
+ tor_keys: backup.account.tor_keys.clone(),
compat_s9pk_key: Pem(backup.account.compat_s9pk_key.clone()),
ui: backup.ui.clone(),
}
diff --git a/core/startos/src/backup/restore.rs b/core/startos/src/backup/restore.rs
index e2e9e2158..21f154b60 100644
--- a/core/startos/src/backup/restore.rs
+++ b/core/startos/src/backup/restore.rs
@@ -18,7 +18,7 @@ use crate::db::model::Database;
use crate::disk::mount::backup::BackupMountGuard;
use crate::disk::mount::filesystem::ReadWrite;
use crate::disk::mount::guard::{GenericMountGuard, TmpMountGuard};
-use crate::init::{init, InitResult};
+use crate::init::init;
use crate::prelude::*;
use crate::s9pk::S9pk;
use crate::service::service_map::DownloadInstallFuture;
@@ -109,13 +109,13 @@ pub async fn recover_full_embassy(
db.put(&ROOT, &Database::init(&os_backup.account)?).await?;
drop(db);
- let InitResult { net_ctrl } = init(&ctx.webserver, &ctx.config, init_phases).await?;
+ let init_result = init(&ctx.webserver, &ctx.config, init_phases).await?;
let rpc_ctx = RpcContext::init(
&ctx.webserver,
&ctx.config,
disk_guid.clone(),
- Some(net_ctrl),
+ Some(init_result),
rpc_ctx_phases,
)
.await?;
diff --git a/core/startos/src/bins/start_init.rs b/core/startos/src/bins/start_init.rs
index 7ff903090..fdd0e075d 100644
--- a/core/startos/src/bins/start_init.rs
+++ b/core/startos/src/bins/start_init.rs
@@ -11,7 +11,7 @@ use crate::disk::fsck::RepairStrategy;
use crate::disk::main::DEFAULT_PASSWORD;
use crate::disk::REPAIR_DISK_PATH;
use crate::firmware::{check_for_firmware_update, update_firmware};
-use crate::init::{InitPhases, InitResult, STANDBY_MODE_PATH};
+use crate::init::{InitPhases, STANDBY_MODE_PATH};
use crate::net::web_server::{UpgradableListener, WebServer};
use crate::prelude::*;
use crate::progress::FullProgressTracker;
@@ -188,14 +188,14 @@ async fn setup_or_init(
}));
}
- let InitResult { net_ctrl } =
+ let init_result =
crate::init::init(&server.acceptor_setter(), config, init_phases).await?;
let rpc_ctx = RpcContext::init(
&server.acceptor_setter(),
config,
disk_guid,
- Some(net_ctrl),
+ Some(init_result),
rpc_ctx_phases,
)
.await?;
diff --git a/core/startos/src/context/config.rs b/core/startos/src/context/config.rs
index 3f631c1e4..4a0925d81 100644
--- a/core/startos/src/context/config.rs
+++ b/core/startos/src/context/config.rs
@@ -108,8 +108,6 @@ pub struct ServerConfig {
#[arg(long)]
pub tor_socks: Option,
#[arg(long)]
- pub dns_bind: Option>,
- #[arg(long)]
pub revision_cache_size: Option,
#[arg(long)]
pub disable_encryption: Option,
@@ -125,7 +123,6 @@ impl ContextConfig for ServerConfig {
self.os_partitions = self.os_partitions.take().or(other.os_partitions);
self.tor_control = self.tor_control.take().or(other.tor_control);
self.tor_socks = self.tor_socks.take().or(other.tor_socks);
- self.dns_bind = self.dns_bind.take().or(other.dns_bind);
self.revision_cache_size = self
.revision_cache_size
.take()
diff --git a/core/startos/src/context/rpc.rs b/core/startos/src/context/rpc.rs
index a00b9d681..1eca857f4 100644
--- a/core/startos/src/context/rpc.rs
+++ b/core/startos/src/context/rpc.rs
@@ -26,9 +26,9 @@ use crate::auth::Sessions;
use crate::context::config::ServerConfig;
use crate::db::model::Database;
use crate::disk::OsPartitionInfo;
-use crate::init::check_time_is_synchronized;
+use crate::init::{check_time_is_synchronized, InitResult};
use crate::lxc::{ContainerId, LxcContainer, LxcManager};
-use crate::net::net_controller::{NetController, PreInitNetController};
+use crate::net::net_controller::{NetController, NetService};
use crate::net::utils::{find_eth_iface, find_wifi_iface};
use crate::net::web_server::{UpgradableListener, WebServerAcceptorSetter};
use crate::net::wifi::WpaCli;
@@ -53,6 +53,7 @@ pub struct RpcContextSeed {
pub sync_db: watch::Sender,
pub account: RwLock,
pub net_controller: Arc,
+ pub os_net_service: NetService,
pub s9pk_arch: Option<&'static str>,
pub services: ServiceMap,
pub metrics_cache: RwLock
diff --git a/web/projects/setup-wizard/src/app/pages/success/success.page.ts b/web/projects/setup-wizard/src/app/pages/success/success.page.ts
index aa0c7fc90..198ec3387 100644
--- a/web/projects/setup-wizard/src/app/pages/success/success.page.ts
+++ b/web/projects/setup-wizard/src/app/pages/success/success.page.ts
@@ -15,7 +15,7 @@ export class SuccessPage {
{} as ElementRef
private ctx: CanvasRenderingContext2D = {} as CanvasRenderingContext2D
- torAddress?: string
+ torAddresses?: string[]
lanAddress?: string
cert?: string
@@ -52,7 +52,7 @@ export class SuccessPage {
const torAddress = this.document.getElementById('tor-addr')
const lanAddress = this.document.getElementById('lan-addr')
- if (torAddress) torAddress.innerHTML = this.torAddress!
+ if (torAddress) torAddress.innerHTML = this.torAddresses!.join('\n')
if (lanAddress) lanAddress.innerHTML = this.lanAddress!
this.document
@@ -76,7 +76,9 @@ export class SuccessPage {
try {
const ret = await this.api.complete()
if (!this.isKiosk) {
- this.torAddress = ret.torAddress.replace(/^https:/, 'http:')
+ this.torAddresses = ret.torAddresses.map(a =>
+ a.replace(/^https:/, 'http:'),
+ )
this.lanAddress = ret.lanAddress.replace(/^https:/, 'http:')
this.cert = ret.rootCa
diff --git a/web/projects/setup-wizard/src/app/services/api/mock-api.service.ts b/web/projects/setup-wizard/src/app/services/api/mock-api.service.ts
index a17f56a0c..e84ef5335 100644
--- a/web/projects/setup-wizard/src/app/services/api/mock-api.service.ts
+++ b/web/projects/setup-wizard/src/app/services/api/mock-api.service.ts
@@ -136,7 +136,7 @@ export class MockApiService extends ApiService {
case 3:
return {
status: 'complete',
- torAddress: 'https://asdafsadasdasasdasdfasdfasdf.onion',
+ torAddresses: ['https://asdafsadasdasasdasdfasdfasdf.onion'],
hostname: 'adjective-noun',
lanAddress: 'https://adjective-noun.local',
rootCa: encodeBase64(rootCA),
@@ -283,7 +283,7 @@ export class MockApiService extends ApiService {
async complete(): Promise {
await pauseFor(1000)
return {
- torAddress: 'https://asdafsadasdasasdasdfasdfasdf.onion',
+ torAddresses: ['https://asdafsadasdasasdasdfasdfasdf.onion'],
hostname: 'adjective-noun',
lanAddress: 'https://adjective-noun.local',
rootCa: encodeBase64(rootCA),
diff --git a/web/projects/shared/src/types/workspace-config.ts b/web/projects/shared/src/types/workspace-config.ts
index d10c4b07e..0586b3560 100644
--- a/web/projects/shared/src/types/workspace-config.ts
+++ b/web/projects/shared/src/types/workspace-config.ts
@@ -13,7 +13,7 @@ export type WorkspaceConfig = {
community: 'https://community-registry.start9.com/'
}
mocks: {
- maskAs: 'tor' | 'local' | 'ip' | 'localhost'
+ maskAs: 'tor' | 'local' | 'localhost' | 'ipv4' | 'ipv6' | 'clearnet'
// enables local development in secure mode
maskAsHttps: boolean
skipStartupAlerts: boolean
diff --git a/web/projects/ui/src/app/app/preloader/preloader.component.ts b/web/projects/ui/src/app/app/preloader/preloader.component.ts
index 70c5e2995..772c5c40b 100644
--- a/web/projects/ui/src/app/app/preloader/preloader.component.ts
+++ b/web/projects/ui/src/app/app/preloader/preloader.component.ts
@@ -45,7 +45,7 @@ const ICONS = [
'eye-off-outline',
'eye-outline',
'file-tray-stacked-outline',
- 'finger-print-outline',
+ 'finger-print',
'flash-outline',
'folder-open-outline',
'globe-outline',
diff --git a/web/projects/ui/src/app/components/form/form-select/form-select.component.html b/web/projects/ui/src/app/components/form/form-select/form-select.component.html
index 9149e8844..b8e79351a 100644
--- a/web/projects/ui/src/app/components/form/form-select/form-select.component.html
+++ b/web/projects/ui/src/app/components/form/form-select/form-select.component.html
@@ -7,7 +7,7 @@
[(ngModel)]="selected"
(focusedChange)="onFocus($event)"
>
- {{ spec.name }}*
+ {{ spec.name }} *