feat: redirect xmrig to p2pool if proxy is dead
Some checks are pending
CI / ci (macos-latest) (push) Waiting to run
CI / ci (ubuntu-latest) (push) Waiting to run
Rust / fmt (push) Waiting to run
Rust / test (macos-latest) (push) Waiting to run
Rust / test (ubuntu-latest) (push) Waiting to run
Rust / typo (push) Waiting to run
Rust / clippy (macos-latest) (push) Waiting to run
Rust / clippy (ubuntu-latest) (push) Waiting to run
Rust / check (macos-latest) (push) Waiting to run
Rust / check (ubuntu-latest) (push) Waiting to run
Rust / doc (macos-latest) (push) Waiting to run
Rust / doc (ubuntu-latest) (push) Waiting to run
Typo / typo (push) Waiting to run

This commit is contained in:
Cyrix126 2024-06-29 10:06:49 +02:00
parent 96bbe3bbb5
commit f98ede91b9
2 changed files with 34 additions and 3 deletions

View file

@ -1,6 +1,8 @@
use crate::helper::xrig::update_xmrig_config;
use crate::helper::{check_died, check_user_input, sleep_end_loop, Process}; use crate::helper::{check_died, check_user_input, sleep_end_loop, Process};
use crate::helper::{Helper, ProcessName, ProcessSignal, ProcessState}; use crate::helper::{Helper, ProcessName, ProcessSignal, ProcessState};
use crate::helper::{PubXvbApi, XvbNode}; use crate::helper::{PubXvbApi, XvbNode};
use crate::miscs::output_console;
use crate::regex::{contains_error, contains_usepool, detect_new_node_xmrig, XMRIG_REGEX}; use crate::regex::{contains_error, contains_usepool, detect_new_node_xmrig, XMRIG_REGEX};
use crate::utils::human::HumanNumber; use crate::utils::human::HumanNumber;
use crate::utils::sudo::SudoState; use crate::utils::sudo::SudoState;
@ -400,7 +402,7 @@ impl Helper {
let reader = pair.master.try_clone_reader().unwrap(); // Get STDOUT/STDERR before moving the PTY let reader = pair.master.try_clone_reader().unwrap(); // Get STDOUT/STDERR before moving the PTY
let output_parse = Arc::clone(&lock!(process).output_parse); let output_parse = Arc::clone(&lock!(process).output_parse);
let output_pub = Arc::clone(&lock!(process).output_pub); let output_pub = Arc::clone(&lock!(process).output_pub);
spawn(enclose!((pub_api_xvb) async move { spawn(enclose!((pub_api_xvb, process_xp) async move {
Self::read_pty_xmrig(output_parse, output_pub, reader, process_xvb, process_xp, &pub_api_xvb).await; Self::read_pty_xmrig(output_parse, output_pub, reader, process_xvb, process_xp, &pub_api_xvb).await;
})); }));
// 1b. Create command // 1b. Create command
@ -536,7 +538,36 @@ impl Helper {
); );
} }
} }
// if mining on proxy and proxy is not alive, switch back to p2pool node
if lock!(gui_api).node == XvbNode::XmrigProxy.to_string()
&& !lock!(process_xp).is_alive()
{
info!("XMRig Process | redirect xmrig to p2pool since XMRig-Proxy is not alive anymore");
if let Err(err) = update_xmrig_config(
&client,
XMRIG_CONFIG_URL,
token,
&XvbNode::P2pool,
"",
GUPAX_VERSION_UNDERSCORE,
)
.await
{
// show to console error about updating xmrig config
warn!("XMRig Process | Failed request HTTP API Xmrig");
output_console(
&mut lock!(gui_api).output,
&format!(
"Failure to update xmrig config with HTTP API.\nError: {}",
err
),
ProcessName::Xmrig,
);
} else {
lock!(gui_api).node = XvbNode::P2pool.to_string();
debug!("XMRig Process | mining on P2Pool pool");
}
}
// Sleep (only if 900ms hasn't passed) // Sleep (only if 900ms hasn't passed)
sleep_end_loop(now, ProcessName::Xmrig).await; sleep_end_loop(now, ProcessName::Xmrig).await;
} }

View file

@ -430,7 +430,7 @@ impl Helper {
"Failure to update xmrig config with HTTP API.\nError: {}", "Failure to update xmrig config with HTTP API.\nError: {}",
err err
), ),
ProcessName::Xvb, ProcessName::XmrigProxy,
); );
} else { } else {
lock!(gui_api_xmrig).node = XvbNode::XmrigProxy.to_string(); lock!(gui_api_xmrig).node = XvbNode::XmrigProxy.to_string();