feat: signed customization client-side hooks
build-linux / build-linux-x64 (push) Successful in 5m31s
build-macos / build-macos-x64 (push) Successful in 9m12s
build-windows / build-windows-x64 (push) Successful in 10m18s

Companion to the rustdesk-server Customization admin page that
produces signed custom.txt blobs.

- src/common.rs: replaces the hardcoded branding pubkey with a
  build-time RUSTDESK_BRANDING_PUBKEY env (option_env!), falling
  back to the operator's primary pubkey so unattended builds still
  produce a working client. Per-customer keys can be baked in via
  CI without source edits.
- flutter/lib/common.dart: adds getAppIconBytes() (cached, base64
  decoded once) and patches loadLogo / loadIcon to honor the buildin
  app-icon. This covers every existing call-site — desktop home
  page, server page, tabbar, and mobile settings — without touching
  any of them.

OPTION_APP_ICON itself ships in the hbb_common submodule (already
bumped in the previous commit).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-06 18:48:25 +02:00
parent 2e35d8e45b
commit 7eb253b0dd
3 changed files with 166 additions and 92 deletions
Generated
+127 -91
View File
@@ -312,9 +312,12 @@ dependencies = [
[[package]]
name = "arc-swap"
version = "1.7.1"
version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207"
dependencies = [
"rustversion",
]
[[package]]
name = "arrayref"
@@ -357,7 +360,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
"synstructure",
]
@@ -369,7 +372,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -522,7 +525,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -557,7 +560,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -614,7 +617,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -703,7 +706,7 @@ dependencies = [
"log",
"peeking_take_while",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"regex",
"rustc-hash 1.1.0",
"shlex",
@@ -725,7 +728,7 @@ dependencies = [
"peeking_take_while",
"prettyplease",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"regex",
"rustc-hash 1.1.0",
"shlex",
@@ -746,7 +749,7 @@ dependencies = [
"lazy_static",
"lazycell",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"regex",
"rustc-hash 1.1.0",
"shlex",
@@ -764,7 +767,7 @@ dependencies = [
"clang-sys",
"itertools 0.12.1",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"regex",
"rustc-hash 2.1.1",
"shlex",
@@ -798,7 +801,7 @@ version = "2.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "afb15541e888071f64592c0b4364fdff21b7cb0a247f984296699351963a8721"
dependencies = [
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -947,7 +950,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -1046,9 +1049,9 @@ dependencies = [
[[package]]
name = "calloop"
version = "0.14.3"
version = "0.14.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb9f6e1368bd4621d2c86baa7e37de77a938adf5221e5dd3d6133340101b309e"
checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7"
dependencies = [
"bitflags 2.9.1",
"polling 3.7.2",
@@ -1075,7 +1078,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa"
dependencies = [
"calloop 0.14.3",
"calloop 0.14.4",
"rustix 1.1.2",
"wayland-backend",
"wayland-client",
@@ -1523,7 +1526,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"unicode-xid 0.2.4",
]
@@ -1918,7 +1921,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -2079,9 +2082,9 @@ dependencies = [
[[package]]
name = "data-encoding"
version = "2.9.0"
version = "2.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476"
checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8"
[[package]]
name = "dbus"
@@ -2177,7 +2180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
]
@@ -2319,7 +2322,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -2363,7 +2366,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a09ac8bb8c16a282264c379dffba707b9c998afc7506009137f3c6136888078"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
]
@@ -2600,7 +2603,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -2621,15 +2624,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
[[package]]
name = "env_filter"
version = "0.1.3"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0"
checksum = "7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f"
dependencies = [
"log",
"regex",
@@ -2660,14 +2663,14 @@ dependencies = [
[[package]]
name = "env_logger"
version = "0.11.6"
version = "0.11.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0"
checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d"
dependencies = [
"anstream",
"anstyle",
"env_filter",
"humantime",
"jiff",
"log",
]
@@ -2694,7 +2697,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
"windows-sys 0.52.0",
"windows-sys 0.61.2",
]
[[package]]
@@ -2981,7 +2984,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -3148,7 +3151,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -3450,7 +3453,7 @@ dependencies = [
"proc-macro-crate 0.1.5",
"proc-macro-error",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
]
@@ -3464,7 +3467,7 @@ dependencies = [
"proc-macro-crate 2.0.2",
"proc-macro-error",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -3708,7 +3711,7 @@ dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro-error",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -3759,7 +3762,7 @@ dependencies = [
"directories-next",
"dirs-next",
"dlopen",
"env_logger 0.11.6",
"env_logger 0.11.9",
"filetime",
"flexi_logger",
"futures",
@@ -4129,7 +4132,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
]
[[package]]
@@ -4291,6 +4294,30 @@ version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]]
name = "jiff"
version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d"
dependencies = [
"jiff-static",
"log",
"portable-atomic",
"portable-atomic-util",
"serde_core",
]
[[package]]
name = "jiff-static"
version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.45",
"syn 2.0.98",
]
[[package]]
name = "jni"
version = "0.21.1"
@@ -5267,7 +5294,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
]
@@ -5278,7 +5305,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -5356,7 +5383,7 @@ checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799"
dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
]
@@ -5368,7 +5395,7 @@ checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b"
dependencies = [
"proc-macro-crate 2.0.2",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -5778,7 +5805,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -5956,7 +5983,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c94f3b9b97df3c6d4e51a14916639b24e02c7d15d1dba686ce9b1118277cb811"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
]
@@ -6223,7 +6250,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -6362,9 +6389,18 @@ dependencies = [
[[package]]
name = "portable-atomic"
version = "1.11.1"
version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
[[package]]
name = "portable-atomic-util"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
dependencies = [
"portable-atomic",
]
[[package]]
name = "portable-pty"
@@ -6469,7 +6505,7 @@ checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
"version_check",
]
@@ -6481,7 +6517,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"version_check",
]
@@ -6673,7 +6709,7 @@ dependencies = [
"once_cell",
"socket2 0.5.10",
"tracing",
"windows-sys 0.52.0",
"windows-sys 0.60.2",
]
[[package]]
@@ -6687,9 +6723,9 @@ dependencies = [
[[package]]
name = "quote"
version = "1.0.36"
version = "1.0.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
dependencies = [
"proc-macro2 1.0.93",
]
@@ -7457,7 +7493,7 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys 0.11.0",
"windows-sys 0.52.0",
"windows-sys 0.61.2",
]
[[package]]
@@ -7514,7 +7550,7 @@ dependencies = [
"security-framework 3.5.1",
"security-framework-sys",
"webpki-root-certs",
"windows-sys 0.52.0",
"windows-sys 0.61.2",
]
[[package]]
@@ -7743,7 +7779,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -7777,7 +7813,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -8028,7 +8064,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0"
dependencies = [
"bitflags 2.9.1",
"calloop 0.14.3",
"calloop 0.14.4",
"calloop-wayland-source 0.4.1",
"cursor-icon",
"libc",
@@ -8208,7 +8244,7 @@ checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
dependencies = [
"heck 0.3.3",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
]
@@ -8220,7 +8256,7 @@ checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
dependencies = [
"heck 0.4.1",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"rustversion",
"syn 1.0.109",
]
@@ -8304,7 +8340,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"unicode-ident",
]
@@ -8315,7 +8351,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"unicode-ident",
]
@@ -8335,7 +8371,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -8467,7 +8503,7 @@ version = "0.1.2"
source = "git+https://github.com/rustdesk-org/tao?branch=dev#288c219cb0527e509590c2b2d8e7072aa9feb2d3"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
]
@@ -8602,7 +8638,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -8613,7 +8649,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -8770,7 +8806,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -8995,7 +9031,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -9059,7 +9095,7 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebeb235c5847e2f82cfe0f07eb971d1e5f6804b18dac2ae16349cc604380f82f"
dependencies = [
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
]
@@ -9284,9 +9320,9 @@ dependencies = [
[[package]]
name = "unicase"
version = "2.8.1"
version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
[[package]]
name = "unicode-bidi"
@@ -9582,7 +9618,7 @@ dependencies = [
"bumpalo",
"log",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
"wasm-bindgen-shared",
]
@@ -9606,7 +9642,7 @@ version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
dependencies = [
"quote 1.0.36",
"quote 1.0.45",
"wasm-bindgen-macro-support",
]
@@ -9617,7 +9653,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
@@ -9752,7 +9788,7 @@ checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3"
dependencies = [
"proc-macro2 1.0.93",
"quick-xml 0.37.5",
"quote 1.0.36",
"quote 1.0.45",
]
[[package]]
@@ -9805,9 +9841,9 @@ dependencies = [
[[package]]
name = "webpki-root-certs"
version = "1.0.3"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05d651ec480de84b762e7be71e6efa7461699c19d9e2c272c8d93455f567786e"
checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c"
dependencies = [
"rustls-pki-types",
]
@@ -10019,11 +10055,11 @@ dependencies = [
[[package]]
name = "whoami"
version = "1.6.0"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7"
checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d"
dependencies = [
"redox_syscall 0.5.2",
"libredox",
"wasite",
"web-sys",
]
@@ -10266,7 +10302,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -10277,7 +10313,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -10288,7 +10324,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -10299,7 +10335,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -11095,7 +11131,7 @@ checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5"
dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"regex",
"syn 1.0.109",
"zvariant_utils",
@@ -11138,7 +11174,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -11149,7 +11185,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -11164,12 +11200,12 @@ dependencies = [
[[package]]
name = "zeroize_derive"
version = "1.4.2"
version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 2.0.98",
]
@@ -11271,7 +11307,7 @@ checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9"
dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
"zvariant_utils",
]
@@ -11283,6 +11319,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200"
dependencies = [
"proc-macro2 1.0.93",
"quote 1.0.36",
"quote 1.0.45",
"syn 1.0.109",
]
+31
View File
@@ -3702,8 +3702,35 @@ Widget loadPowered(BuildContext context) {
).marginOnly(top: 6);
}
// Cached decoded `app-icon` bytes from the signed custom.txt blob. The blob
// stores the image as standard base64 under the buildin key "app-icon"; we
// decode once on first read and reuse the bytes for every Image.memory call
// below. Empty Uint8List means "no custom icon" and we fall through to the
// bundled assets.
Uint8List? _appIconBytes;
bool _appIconChecked = false;
Uint8List? getAppIconBytes() {
if (_appIconChecked) return _appIconBytes;
_appIconChecked = true;
final b64 = bind.mainGetBuildinOption(key: 'app-icon');
if (b64.isEmpty) return null;
try {
_appIconBytes = base64.decode(b64);
} catch (_) {
_appIconBytes = null;
}
return _appIconBytes;
}
// max 300 x 60
Widget loadLogo() {
final custom = getAppIconBytes();
if (custom != null) {
return Container(
constraints: BoxConstraints(maxWidth: 300, maxHeight: 60),
child: Image.memory(custom, fit: BoxFit.contain),
).marginOnly(left: 12, right: 12, top: 12);
}
return FutureBuilder<ByteData>(
future: rootBundle.load('assets/logo.png'),
builder: (BuildContext context, AsyncSnapshot<ByteData> snapshot) {
@@ -3725,6 +3752,10 @@ Widget loadLogo() {
}
Widget loadIcon(double size) {
final custom = getAppIconBytes();
if (custom != null) {
return Image.memory(custom, width: size, height: size, fit: BoxFit.contain);
}
return Image.asset('assets/icon.png',
width: size,
height: size,
+8 -1
View File
@@ -2184,7 +2184,14 @@ pub fn read_custom_client(config: &str) {
log::error!("Failed to decode custom client config");
return;
};
const KEY: &str = "5Qbwsde3unUcJBtrx9ZkvUmwFNoExHzpryHuPUdqlWM=";
// Bake the branding public key in at build time:
// RUSTDESK_BRANDING_PUBKEY=$(cat branding_ed25519.pub) cargo build --release
// Default falls back to the operator's primary branding pubkey so
// unattended builds still produce a working client.
const KEY: &str = match option_env!("RUSTDESK_BRANDING_PUBKEY") {
Some(k) => k,
None => "o8oOwMOzG/h3x/mDOeBcxQUBTxEQTQSQ/3gTe+K7RME=",
};
let Some(pk) = get_rs_pk(KEY) else {
log::error!("Failed to parse public key of custom client");
return;