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 hostname = "118.178.229.213".to_owned();
let hostname = "root.punchsky.com".to_owned();
let host = format!("{}:80", hostname);
let mut server = String::new();
if let Ok(addrs) = host.to_socket_addrs() {

View File

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

View File

@ -861,7 +861,8 @@ async fn handle_tun_packet(
// 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);
if let Err(_e) = origin {
error!("failed to decrypt original data");

View File

@ -321,7 +321,8 @@ impl TunTapPacketHandler for Iface {
}
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 {
error!("failed to encrypt packet request");
return Ok(());

View File

@ -88,7 +88,8 @@ impl ArpWaitList {
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 {
error!("failed to encrypt packet request");
return;

View File

@ -133,10 +133,12 @@ async fn handle_tcp_message(msg: SdlanTcp) {
match ack.algorithm.to_ascii_lowercase().as_str() {
"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" => {
*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 => {
@ -330,7 +332,8 @@ async fn handle_tcp_message(msg: SdlanTcp) {
});
*/
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);
}
PacketType::Command => {
@ -689,7 +692,7 @@ impl ReadWriteActor {
async fn on_disconnected_callback() {
let edge = get_edge();
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>) {