commit
d65977bd59
@ -5,6 +5,7 @@ use std::{
|
|||||||
#[cfg(not(windows))]
|
#[cfg(not(windows))]
|
||||||
use std::{fs::File, io::prelude::*};
|
use std::{fs::File, io::prelude::*};
|
||||||
|
|
||||||
|
use crate::privacy_mode::PrivacyModeState;
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use parity_tokio_ipc::{
|
use parity_tokio_ipc::{
|
||||||
Connection as Conn, ConnectionClient as ConnClient, Endpoint, Incoming, SecurityAttributes,
|
Connection as Conn, ConnectionClient as ConnClient, Endpoint, Incoming, SecurityAttributes,
|
||||||
@ -30,14 +31,6 @@ use hbb_common::{
|
|||||||
|
|
||||||
use crate::{common::is_server, privacy_mode, rendezvous_mediator::RendezvousMediator};
|
use crate::{common::is_server, privacy_mode, rendezvous_mediator::RendezvousMediator};
|
||||||
|
|
||||||
// State with timestamp, because std::time::Instant cannot be serialized
|
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
|
||||||
#[serde(tag = "t", content = "c")]
|
|
||||||
pub enum PrivacyModeState {
|
|
||||||
OffSucceeded,
|
|
||||||
OffByPeer,
|
|
||||||
OffUnknown,
|
|
||||||
}
|
|
||||||
// IPC actions here.
|
// IPC actions here.
|
||||||
pub const IPC_ACTION_CLOSE: &str = "close";
|
pub const IPC_ACTION_CLOSE: &str = "close";
|
||||||
pub static EXIT_RECV_CLOSE: AtomicBool = AtomicBool::new(true);
|
pub static EXIT_RECV_CLOSE: AtomicBool = AtomicBool::new(true);
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
#[cfg(all(windows, feature = "virtual_display_driver"))]
|
#[cfg(all(windows, feature = "virtual_display_driver"))]
|
||||||
use crate::platform::is_installed;
|
use crate::platform::is_installed;
|
||||||
|
use crate::ui_interface::get_option;
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
use crate::{
|
use crate::{
|
||||||
display_service,
|
display_service,
|
||||||
ipc::{connect, Data},
|
ipc::{connect, Data},
|
||||||
};
|
};
|
||||||
use crate::{ipc::PrivacyModeState, ui_interface::get_option};
|
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
use hbb_common::tokio;
|
use hbb_common::tokio;
|
||||||
use hbb_common::{anyhow::anyhow, bail, lazy_static, ResultType};
|
use hbb_common::{anyhow::anyhow, bail, lazy_static, ResultType};
|
||||||
|
use serde_derive::{Deserialize, Serialize};
|
||||||
use std::{
|
use std::{
|
||||||
collections::HashMap,
|
collections::HashMap,
|
||||||
sync::{Arc, Mutex},
|
sync::{Arc, Mutex},
|
||||||
@ -37,6 +38,14 @@ pub const PRIVACY_MODE_IMPL_WIN_MAG: &str = win_mag::PRIVACY_MODE_IMPL;
|
|||||||
#[cfg(all(windows, feature = "virtual_display_driver"))]
|
#[cfg(all(windows, feature = "virtual_display_driver"))]
|
||||||
pub const PRIVACY_MODE_IMPL_WIN_VIRTUAL_DISPLAY: &str = win_virtual_display::PRIVACY_MODE_IMPL;
|
pub const PRIVACY_MODE_IMPL_WIN_VIRTUAL_DISPLAY: &str = win_virtual_display::PRIVACY_MODE_IMPL;
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
|
#[serde(tag = "t", content = "c")]
|
||||||
|
pub enum PrivacyModeState {
|
||||||
|
OffSucceeded,
|
||||||
|
OffByPeer,
|
||||||
|
OffUnknown,
|
||||||
|
}
|
||||||
|
|
||||||
pub trait PrivacyMode: Sync + Send {
|
pub trait PrivacyMode: Sync + Send {
|
||||||
fn init(&self) -> ResultType<()>;
|
fn init(&self) -> ResultType<()>;
|
||||||
fn clear(&mut self);
|
fn clear(&mut self);
|
||||||
|
@ -207,7 +207,7 @@ pub extern "system" fn privacy_mode_hook_keyboard(
|
|||||||
// Ctrl + P is pressed, turn off privacy mode
|
// Ctrl + P is pressed, turn off privacy mode
|
||||||
if let Some(Err(e)) = super::turn_off_privacy(
|
if let Some(Err(e)) = super::turn_off_privacy(
|
||||||
super::INVALID_PRIVACY_MODE_CONN_ID,
|
super::INVALID_PRIVACY_MODE_CONN_ID,
|
||||||
Some(crate::ipc::PrivacyModeState::OffByPeer),
|
Some(super::PrivacyModeState::OffByPeer),
|
||||||
) {
|
) {
|
||||||
log::error!("Failed to off_privacy {}", e);
|
log::error!("Failed to off_privacy {}", e);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use super::{PrivacyMode, INVALID_PRIVACY_MODE_CONN_ID};
|
use super::{PrivacyMode, INVALID_PRIVACY_MODE_CONN_ID};
|
||||||
use crate::{ipc::PrivacyModeState, platform::windows::get_user_token};
|
use crate::{platform::windows::get_user_token, privacy_mode::PrivacyModeState};
|
||||||
use hbb_common::{allow_err, bail, log, ResultType};
|
use hbb_common::{allow_err, bail, log, ResultType};
|
||||||
use std::{
|
use std::{
|
||||||
ffi::CString,
|
ffi::CString,
|
||||||
|
@ -507,21 +507,21 @@ impl Connection {
|
|||||||
}
|
}
|
||||||
ipc::Data::PrivacyModeState((_, state, impl_key)) => {
|
ipc::Data::PrivacyModeState((_, state, impl_key)) => {
|
||||||
let msg_out = match state {
|
let msg_out = match state {
|
||||||
ipc::PrivacyModeState::OffSucceeded => {
|
privacy_mode::PrivacyModeState::OffSucceeded => {
|
||||||
video_service::set_privacy_mode_conn_id(0);
|
video_service::set_privacy_mode_conn_id(0);
|
||||||
crate::common::make_privacy_mode_msg(
|
crate::common::make_privacy_mode_msg(
|
||||||
back_notification::PrivacyModeState::PrvOffSucceeded,
|
back_notification::PrivacyModeState::PrvOffSucceeded,
|
||||||
impl_key,
|
impl_key,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
ipc::PrivacyModeState::OffByPeer => {
|
privacy_mode::PrivacyModeState::OffByPeer => {
|
||||||
video_service::set_privacy_mode_conn_id(0);
|
video_service::set_privacy_mode_conn_id(0);
|
||||||
crate::common::make_privacy_mode_msg(
|
crate::common::make_privacy_mode_msg(
|
||||||
back_notification::PrivacyModeState::PrvOffByPeer,
|
back_notification::PrivacyModeState::PrvOffByPeer,
|
||||||
impl_key,
|
impl_key,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
ipc::PrivacyModeState::OffUnknown => {
|
privacy_mode::PrivacyModeState::OffUnknown => {
|
||||||
video_service::set_privacy_mode_conn_id(0);
|
video_service::set_privacy_mode_conn_id(0);
|
||||||
crate::common::make_privacy_mode_msg(
|
crate::common::make_privacy_mode_msg(
|
||||||
back_notification::PrivacyModeState::PrvOffUnknown,
|
back_notification::PrivacyModeState::PrvOffUnknown,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user