changed encryptor to ArcSwap

This commit is contained in:
alex 2026-03-26 10:52:16 +08:00
parent 9cba4a976d
commit b10c721179
6 changed files with 18 additions and 10 deletions

View File

@ -117,7 +117,7 @@ async fn daemonize_me(
let (tx, rx) = std::sync::mpsc::channel(); let (tx, rx) = std::sync::mpsc::channel();
let hostname = "118.178.229.213".to_owned(); let hostname = "root.punchsky.com".to_owned();
let host = format!("{}:80", hostname); let host = format!("{}:80", hostname);
let mut server = String::new(); let mut server = String::new();
if let Ok(addrs) = host.to_socket_addrs() { if let Ok(addrs) = host.to_socket_addrs() {

View File

@ -1,3 +1,4 @@
use arc_swap::ArcSwap;
use dashmap::DashMap; use dashmap::DashMap;
use quinn::Endpoint; use quinn::Endpoint;
use rsa::RsaPrivateKey; use rsa::RsaPrivateKey;
@ -163,7 +164,7 @@ impl IdentityID {
pub struct Node { pub struct Node {
packet_id: AtomicU32, packet_id: AtomicU32,
pub encryptor: RwLock<MyEncryptor>, pub encryptor: ArcSwap<MyEncryptor>,
pub network_id: AtomicU32, pub network_id: AtomicU32,
pub network_domain: RwLock<String>, pub network_domain: RwLock<String>,
@ -390,7 +391,8 @@ impl Node {
Self { Self {
packet_id: AtomicU32::new(1), packet_id: AtomicU32::new(1),
encryptor: RwLock::new(MyEncryptor::new()), encryptor: ArcSwap::from(Arc::new(MyEncryptor::new())),
// encryptor: RwLock::new(MyEncryptor::new()),
network_id: AtomicU32::new(0), network_id: AtomicU32::new(0),
hostname: RwLock::new(hostname), hostname: RwLock::new(hostname),

View File

@ -861,7 +861,8 @@ async fn handle_tun_packet(
// test_aes(key.as_slice()); // test_aes(key.as_slice());
let origin = eee.encryptor.read().unwrap().decrypt(&payload); let origin = eee.encryptor.load().decrypt(&payload);
// let origin = eee.encryptor.read().unwrap().decrypt(&payload);
// let origin = aes_decrypt(&payload); // let origin = aes_decrypt(&payload);
if let Err(_e) = origin { if let Err(_e) = origin {
error!("failed to decrypt original data"); error!("failed to decrypt original data");

View File

@ -321,7 +321,8 @@ impl TunTapPacketHandler for Iface {
} }
let size = data.len(); let size = data.len();
let Ok(encrypted) = edge.encryptor.read().unwrap().encrypt(&data) else { let Ok(encrypted) = edge.encryptor.load().encrypt(&data) else {
// let Ok(encrypted) = edge.encryptor.read().unwrap().encrypt(&data) else {
// let Ok(encrypted) = aes_encrypt(encrypt_key, &data) else { // let Ok(encrypted) = aes_encrypt(encrypt_key, &data) else {
error!("failed to encrypt packet request"); error!("failed to encrypt packet request");
return Ok(()); return Ok(());

View File

@ -88,7 +88,8 @@ impl ArpWaitList {
let pkt_size = packet.len(); let pkt_size = packet.len();
let Ok(encrypted) = edge.encryptor.read().unwrap().encrypt(&packet) else { let Ok(encrypted) = edge.encryptor.load().encrypt(&packet) else {
// let Ok(encrypted) = edge.encryptor.read().unwrap().encrypt(&packet) else {
// let Ok(encrypted) = aes_encrypt(&encrypt_key, &packet) else { // let Ok(encrypted) = aes_encrypt(&encrypt_key, &packet) else {
error!("failed to encrypt packet request"); error!("failed to encrypt packet request");
return; return;

View File

@ -133,10 +133,12 @@ async fn handle_tcp_message(msg: SdlanTcp) {
match ack.algorithm.to_ascii_lowercase().as_str() { match ack.algorithm.to_ascii_lowercase().as_str() {
"chacha20" => { "chacha20" => {
*edge.encryptor.write().unwrap() = MyEncryptor::ChaChao20(Chacha20Encryptor::new(key, ack.region_id)); edge.encryptor.store(Arc::new(MyEncryptor::ChaChao20(Chacha20Encryptor::new(key, ack.region_id))))
// *edge.encryptor.write().unwrap() = MyEncryptor::ChaChao20(Chacha20Encryptor::new(key, ack.region_id));
} }
"aes" => { "aes" => {
*edge.encryptor.write().unwrap() = MyEncryptor::Aes(AesEncryptor::new(key)); edge.encryptor.store(Arc::new(MyEncryptor::Aes(AesEncryptor::new(key))))
// *edge.encryptor.write().unwrap() = MyEncryptor::Aes(AesEncryptor::new(key));
} }
_other => { _other => {
@ -330,7 +332,8 @@ async fn handle_tcp_message(msg: SdlanTcp) {
}); });
*/ */
edge.set_authorized(false); edge.set_authorized(false);
*edge.encryptor.write().unwrap() = MyEncryptor::Invalid; edge.encryptor.store(Arc::new(MyEncryptor::Invalid));
// *edge.encryptor.write().unwrap() = MyEncryptor::Invalid;
// std::process::exit(0); // std::process::exit(0);
} }
PacketType::Command => { PacketType::Command => {
@ -689,7 +692,7 @@ impl ReadWriteActor {
async fn on_disconnected_callback() { async fn on_disconnected_callback() {
let edge = get_edge(); let edge = get_edge();
edge.set_authorized(false); edge.set_authorized(false);
*edge.encryptor.write().unwrap() = MyEncryptor::Invalid; edge.encryptor.store(Arc::new(MyEncryptor::Invalid));
} }
async fn on_connected_callback(local_ip: Option<IpAddr>, stream: &mut SendStream, _pkt_id: Option<u32>) { async fn on_connected_callback(local_ip: Option<IpAddr>, stream: &mut SendStream, _pkt_id: Option<u32>) {