fix approve mode judgement
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
6f390759f3
commit
617e64d01f
@ -13,6 +13,13 @@ enum VerificationMethod {
|
|||||||
UseBothPasswords,
|
UseBothPasswords,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub enum ApproveMode {
|
||||||
|
Both,
|
||||||
|
Password,
|
||||||
|
Click,
|
||||||
|
}
|
||||||
|
|
||||||
// Should only be called in server
|
// Should only be called in server
|
||||||
pub fn update_temporary_password() {
|
pub fn update_temporary_password() {
|
||||||
*TEMPORARY_PASSWORD.write().unwrap() = Config::get_auto_password(temporary_password_length());
|
*TEMPORARY_PASSWORD.write().unwrap() = Config::get_auto_password(temporary_password_length());
|
||||||
@ -58,6 +65,17 @@ pub fn has_valid_password() -> bool {
|
|||||||
|| permanent_enabled() && !Config::get_permanent_password().is_empty()
|
|| permanent_enabled() && !Config::get_permanent_password().is_empty()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn approve_mode() -> ApproveMode {
|
||||||
|
let mode = Config::get_option("approve-mode");
|
||||||
|
if mode == "password" {
|
||||||
|
ApproveMode::Password
|
||||||
|
} else if mode == "click" {
|
||||||
|
ApproveMode::Click
|
||||||
|
} else {
|
||||||
|
ApproveMode::Both
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const VERSION_LEN: usize = 2;
|
const VERSION_LEN: usize = 2;
|
||||||
|
|
||||||
pub fn encrypt_str_or_original(s: &str, version: &str) -> String {
|
pub fn encrypt_str_or_original(s: &str, version: &str) -> String {
|
||||||
|
@ -14,7 +14,8 @@ use hbb_common::{
|
|||||||
futures::{SinkExt, StreamExt},
|
futures::{SinkExt, StreamExt},
|
||||||
get_time, get_version_number,
|
get_time, get_version_number,
|
||||||
message_proto::{option_message::BoolOption, permission_info::Permission},
|
message_proto::{option_message::BoolOption, permission_info::Permission},
|
||||||
password_security as password, sleep, timeout,
|
password_security::{self as password, ApproveMode},
|
||||||
|
sleep, timeout,
|
||||||
tokio::{
|
tokio::{
|
||||||
net::TcpStream,
|
net::TcpStream,
|
||||||
sync::mpsc,
|
sync::mpsc,
|
||||||
@ -1046,7 +1047,9 @@ impl Connection {
|
|||||||
}
|
}
|
||||||
if !crate::is_ip(&lr.username) && lr.username != Config::get_id() {
|
if !crate::is_ip(&lr.username) && lr.username != Config::get_id() {
|
||||||
self.send_login_error("Offline").await;
|
self.send_login_error("Offline").await;
|
||||||
} else if Config::get_option("approve-mode") == "click" {
|
} else if password::approve_mode() == ApproveMode::Click
|
||||||
|
|| password::approve_mode() == ApproveMode::Both && !password::has_valid_password()
|
||||||
|
{
|
||||||
self.try_start_cm(lr.my_id, lr.my_name, false);
|
self.try_start_cm(lr.my_id, lr.my_name, false);
|
||||||
if hbb_common::get_version_number(&lr.version)
|
if hbb_common::get_version_number(&lr.version)
|
||||||
>= hbb_common::get_version_number("1.2.0")
|
>= hbb_common::get_version_number("1.2.0")
|
||||||
@ -1054,6 +1057,11 @@ impl Connection {
|
|||||||
self.send_login_error("No Password Access").await;
|
self.send_login_error("No Password Access").await;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
} else if password::approve_mode() == ApproveMode::Password
|
||||||
|
&& !password::has_valid_password()
|
||||||
|
{
|
||||||
|
self.send_login_error("Connection not allowed").await;
|
||||||
|
return false;
|
||||||
} else if self.is_of_recent_session() {
|
} else if self.is_of_recent_session() {
|
||||||
self.try_start_cm(lr.my_id, lr.my_name, true);
|
self.try_start_cm(lr.my_id, lr.my_name, true);
|
||||||
self.send_logon_response().await;
|
self.send_logon_response().await;
|
||||||
@ -1063,10 +1071,6 @@ impl Connection {
|
|||||||
} else if lr.password.is_empty() {
|
} else if lr.password.is_empty() {
|
||||||
self.try_start_cm(lr.my_id, lr.my_name, false);
|
self.try_start_cm(lr.my_id, lr.my_name, false);
|
||||||
} else {
|
} else {
|
||||||
if !password::has_valid_password() {
|
|
||||||
self.send_login_error("Connection not allowed").await;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
let mut failure = LOGIN_FAILURES
|
let mut failure = LOGIN_FAILURES
|
||||||
.lock()
|
.lock()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user