Support EXTERNAL auth to the client bus with given UID
With the virtgpu channel, the proxy is part of muvm-guest, so it does not do the protocol-aware splicing we do here, so it can't do different auth between the sides like sidebus-agent does. But turns out EXTERNAL auth works fine, as long as we correct for the UID difference.
This commit is contained in:
parent
eedf1f889d
commit
c42eaef554
1 changed files with 9 additions and 2 deletions
|
|
@ -49,6 +49,10 @@ struct BrokerCli {
|
||||||
#[clap(long)]
|
#[clap(long)]
|
||||||
unix_path: Option<PathBuf>,
|
unix_path: Option<PathBuf>,
|
||||||
|
|
||||||
|
/// Use ANONYMOUS auth to connect to the guest bus instead of EXTERNAL with the provided --guest-uid
|
||||||
|
#[clap(long)]
|
||||||
|
guest_bus_anonymous_auth: bool,
|
||||||
|
|
||||||
/// The user ID for the appvm user inside of the guest
|
/// The user ID for the appvm user inside of the guest
|
||||||
#[clap(long, default_value = "1337")]
|
#[clap(long, default_value = "1337")]
|
||||||
guest_uid: u32,
|
guest_uid: u32,
|
||||||
|
|
@ -277,8 +281,11 @@ async fn main() -> eyre::Result<()> {
|
||||||
server_tasks.spawn(enclose!((file_chooser_imp, file_transfer_imp, notification_imp, print_imp, settings_imp) async move {
|
server_tasks.spawn(enclose!((file_chooser_imp, file_transfer_imp, notification_imp, print_imp, settings_imp) async move {
|
||||||
while let Ok((socket, remote_addr)) = vm_unix_listener.accept().await {
|
while let Ok((socket, remote_addr)) = vm_unix_listener.accept().await {
|
||||||
let f = enclose!((file_chooser_imp, file_transfer_imp, notification_imp, print_imp, settings_imp) async move {
|
let f = enclose!((file_chooser_imp, file_transfer_imp, notification_imp, print_imp, settings_imp) async move {
|
||||||
let client_conn = zbus::connection::Builder::unix_stream(socket)
|
let client_conn = if cli.guest_bus_anonymous_auth {
|
||||||
.auth_mechanism(zbus::AuthMechanism::Anonymous)
|
zbus::connection::Builder::unix_stream(socket).auth_mechanism(zbus::AuthMechanism::Anonymous)
|
||||||
|
} else {
|
||||||
|
zbus::connection::Builder::unix_stream(socket).user_id(cli.guest_uid)
|
||||||
|
}
|
||||||
.name("org.freedesktop.portal.Desktop")?
|
.name("org.freedesktop.portal.Desktop")?
|
||||||
.name("org.freedesktop.portal.Documents")?
|
.name("org.freedesktop.portal.Documents")?
|
||||||
.build()
|
.build()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue