mirror of
https://github.com/Cyrix126/gupaxx.git
synced 2025-01-09 15:39:28 +00:00
main/helper: change [Start] button, change [Sudo] input order
This commit is contained in:
parent
3fee0e5690
commit
1b999e3d9b
3 changed files with 30 additions and 26 deletions
|
@ -69,6 +69,7 @@ pub const RED: egui::Color32 = egui::Color32::from_rgb(230, 50, 50);
|
||||||
pub const GREEN: egui::Color32 = egui::Color32::from_rgb(100, 230, 100);
|
pub const GREEN: egui::Color32 = egui::Color32::from_rgb(100, 230, 100);
|
||||||
pub const YELLOW: egui::Color32 = egui::Color32::from_rgb(230, 230, 100);
|
pub const YELLOW: egui::Color32 = egui::Color32::from_rgb(230, 230, 100);
|
||||||
pub const BRIGHT_YELLOW: egui::Color32 = egui::Color32::from_rgb(250, 250, 100);
|
pub const BRIGHT_YELLOW: egui::Color32 = egui::Color32::from_rgb(250, 250, 100);
|
||||||
|
pub const WHITE: egui::Color32 = egui::Color32::WHITE;
|
||||||
pub const GRAY: egui::Color32 = egui::Color32::GRAY;
|
pub const GRAY: egui::Color32 = egui::Color32::GRAY;
|
||||||
pub const LIGHT_GRAY: egui::Color32 = egui::Color32::LIGHT_GRAY;
|
pub const LIGHT_GRAY: egui::Color32 = egui::Color32::LIGHT_GRAY;
|
||||||
pub const BLACK: egui::Color32 = egui::Color32::BLACK;
|
pub const BLACK: egui::Color32 = egui::Color32::BLACK;
|
||||||
|
|
|
@ -632,8 +632,8 @@ impl Helper {
|
||||||
// Before that though, add the ["--prompt"] flag and set it
|
// Before that though, add the ["--prompt"] flag and set it
|
||||||
// to emptyness so that it doesn't show up in the output.
|
// to emptyness so that it doesn't show up in the output.
|
||||||
if cfg!(unix) {
|
if cfg!(unix) {
|
||||||
args.push("--stdin".to_string());
|
|
||||||
args.push(r#"--prompt="#.to_string());
|
args.push(r#"--prompt="#.to_string());
|
||||||
|
args.push("--".to_string());
|
||||||
args.push(path.display().to_string());
|
args.push(path.display().to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -718,7 +718,7 @@ impl Helper {
|
||||||
async fn spawn_xmrig_watchdog(process: Arc<Mutex<Process>>, gui_api: Arc<Mutex<PubXmrigApi>>, pub_api: Arc<Mutex<PubXmrigApi>>, priv_api: Arc<Mutex<PrivXmrigApi>>, args: Vec<String>, mut path: std::path::PathBuf, sudo: Arc<Mutex<SudoState>>) {
|
async fn spawn_xmrig_watchdog(process: Arc<Mutex<Process>>, gui_api: Arc<Mutex<PubXmrigApi>>, pub_api: Arc<Mutex<PubXmrigApi>>, priv_api: Arc<Mutex<PrivXmrigApi>>, args: Vec<String>, mut path: std::path::PathBuf, sudo: Arc<Mutex<SudoState>>) {
|
||||||
// 1a. Create PTY
|
// 1a. Create PTY
|
||||||
let pty = portable_pty::native_pty_system();
|
let pty = portable_pty::native_pty_system();
|
||||||
let pair = pty.openpty(portable_pty::PtySize {
|
let mut pair = pty.openpty(portable_pty::PtySize {
|
||||||
rows: 100,
|
rows: 100,
|
||||||
cols: 1000,
|
cols: 1000,
|
||||||
pixel_width: 0,
|
pixel_width: 0,
|
||||||
|
@ -732,7 +732,16 @@ impl Helper {
|
||||||
// 1c. Create child
|
// 1c. Create child
|
||||||
let child_pty = Arc::new(Mutex::new(pair.slave.spawn_command(cmd).unwrap()));
|
let child_pty = Arc::new(Mutex::new(pair.slave.spawn_command(cmd).unwrap()));
|
||||||
|
|
||||||
// 2. Set process state
|
// 2. Input [sudo] pass, wipe, then drop.
|
||||||
|
if cfg!(unix) {
|
||||||
|
// 1d. Sleep to wait for [sudo]'s non-echo prompt (on Unix).
|
||||||
|
// this prevents users pass from showing up in the STDOUT.
|
||||||
|
std::thread::sleep(std::time::Duration::from_secs(3));
|
||||||
|
writeln!(pair.master, "{}", sudo.lock().unwrap().pass);
|
||||||
|
SudoState::wipe(&sudo);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Set process state
|
||||||
let mut lock = process.lock().unwrap();
|
let mut lock = process.lock().unwrap();
|
||||||
lock.state = ProcessState::Alive;
|
lock.state = ProcessState::Alive;
|
||||||
lock.signal = ProcessSignal::None;
|
lock.signal = ProcessSignal::None;
|
||||||
|
@ -740,15 +749,9 @@ impl Helper {
|
||||||
lock.child = Some(Arc::clone(&child_pty));
|
lock.child = Some(Arc::clone(&child_pty));
|
||||||
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
|
||||||
lock.stdin = Some(pair.master);
|
lock.stdin = Some(pair.master);
|
||||||
|
|
||||||
// 3. Input [sudo] pass, wipe, then drop.
|
|
||||||
if cfg!(unix) {
|
|
||||||
writeln!(lock.stdin.as_mut().unwrap(), "{}", sudo.lock().unwrap().pass);
|
|
||||||
SudoState::wipe(&sudo);
|
|
||||||
}
|
|
||||||
drop(lock);
|
drop(lock);
|
||||||
|
|
||||||
// 3. Spawn PTY read thread
|
// 4. Spawn PTY read thread
|
||||||
let output_full = Arc::clone(&process.lock().unwrap().output_full);
|
let output_full = Arc::clone(&process.lock().unwrap().output_full);
|
||||||
let output_buf = Arc::clone(&process.lock().unwrap().output_buf);
|
let output_buf = Arc::clone(&process.lock().unwrap().output_buf);
|
||||||
thread::spawn(move || {
|
thread::spawn(move || {
|
||||||
|
@ -762,7 +765,7 @@ impl Helper {
|
||||||
// let regex = P2poolRegex::new();
|
// let regex = P2poolRegex::new();
|
||||||
let start = process.lock().unwrap().start;
|
let start = process.lock().unwrap().start;
|
||||||
|
|
||||||
// 4. Loop as watchdog
|
// 5. Loop as watchdog
|
||||||
info!("XMRig | Entering watchdog mode... woof!");
|
info!("XMRig | Entering watchdog mode... woof!");
|
||||||
loop {
|
loop {
|
||||||
// Set timer
|
// Set timer
|
||||||
|
|
30
src/main.rs
30
src/main.rs
|
@ -1152,9 +1152,9 @@ impl eframe::App for App {
|
||||||
let width = (ui.available_width()/3.0)-5.0;
|
let width = (ui.available_width()/3.0)-5.0;
|
||||||
if self.p2pool.lock().unwrap().is_waiting() {
|
if self.p2pool.lock().unwrap().is_waiting() {
|
||||||
ui.add_enabled_ui(false, |ui| {
|
ui.add_enabled_ui(false, |ui| {
|
||||||
ui.add_sized([width, height], Button::new("⟲")).on_hover_text("Restart P2Pool");
|
ui.add_sized([width, height], Button::new("⟲")).on_disabled_hover_text("Restart P2Pool");
|
||||||
ui.add_sized([width, height], Button::new("⏹")).on_hover_text("Stop P2Pool");
|
ui.add_sized([width, height], Button::new("⏹")).on_disabled_hover_text("Stop P2Pool");
|
||||||
ui.add_sized([width, height], Button::new("⏺")).on_hover_text("Start P2Pool");
|
ui.add_sized([width, height], Button::new("▶")).on_disabled_hover_text("Start P2Pool");
|
||||||
});
|
});
|
||||||
} else if self.p2pool.lock().unwrap().is_alive() {
|
} else if self.p2pool.lock().unwrap().is_alive() {
|
||||||
if ui.add_sized([width, height], Button::new("⟲")).on_hover_text("Restart P2Pool").clicked() {
|
if ui.add_sized([width, height], Button::new("⟲")).on_hover_text("Restart P2Pool").clicked() {
|
||||||
|
@ -1164,12 +1164,12 @@ impl eframe::App for App {
|
||||||
Helper::stop_p2pool(&self.helper);
|
Helper::stop_p2pool(&self.helper);
|
||||||
}
|
}
|
||||||
ui.add_enabled_ui(false, |ui| {
|
ui.add_enabled_ui(false, |ui| {
|
||||||
ui.add_sized([width, height], Button::new("⏺")).on_hover_text("Start P2Pool");
|
ui.add_sized([width, height], Button::new("▶")).on_disabled_hover_text("Start P2Pool");
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
ui.add_enabled_ui(false, |ui| {
|
ui.add_enabled_ui(false, |ui| {
|
||||||
ui.add_sized([width, height], Button::new("⟲")).on_hover_text("Restart P2Pool");
|
ui.add_sized([width, height], Button::new("⟲")).on_disabled_hover_text("Restart P2Pool");
|
||||||
ui.add_sized([width, height], Button::new("⏹")).on_hover_text("Stop P2Pool");
|
ui.add_sized([width, height], Button::new("⏹")).on_disabled_hover_text("Stop P2Pool");
|
||||||
});
|
});
|
||||||
// Check if address is okay before allowing to start.
|
// Check if address is okay before allowing to start.
|
||||||
let mut text = String::new();
|
let mut text = String::new();
|
||||||
|
@ -1180,7 +1180,7 @@ impl eframe::App for App {
|
||||||
ui.set_enabled(false);
|
ui.set_enabled(false);
|
||||||
text = P2POOL_PATH_NOT_EXE.to_string();
|
text = P2POOL_PATH_NOT_EXE.to_string();
|
||||||
}
|
}
|
||||||
if ui.add_sized([width, height], Button::new("⏺")).on_hover_text("Start P2Pool").on_disabled_hover_text(text).clicked() {
|
if ui.add_sized([width, height], Button::new("▶")).on_hover_text("Start P2Pool").on_disabled_hover_text(text).clicked() {
|
||||||
Helper::start_p2pool(&self.helper, &self.state.p2pool, &self.state.gupax.absolute_p2pool_path);
|
Helper::start_p2pool(&self.helper, &self.state.p2pool, &self.state.gupax.absolute_p2pool_path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1201,9 +1201,9 @@ impl eframe::App for App {
|
||||||
let width = (ui.available_width()/3.0)-5.0;
|
let width = (ui.available_width()/3.0)-5.0;
|
||||||
if self.xmrig.lock().unwrap().is_waiting() {
|
if self.xmrig.lock().unwrap().is_waiting() {
|
||||||
ui.add_enabled_ui(false, |ui| {
|
ui.add_enabled_ui(false, |ui| {
|
||||||
ui.add_sized([width, height], Button::new("⟲")).on_hover_text("Restart XMRig");
|
ui.add_sized([width, height], Button::new("⟲")).on_disabled_hover_text("Restart XMRig");
|
||||||
ui.add_sized([width, height], Button::new("⏹")).on_hover_text("Stop XMRig");
|
ui.add_sized([width, height], Button::new("⏹")).on_disabled_hover_text("Stop XMRig");
|
||||||
ui.add_sized([width, height], Button::new("⏺")).on_hover_text("Start XMRig");
|
ui.add_sized([width, height], Button::new("▶")).on_disabled_hover_text("Start XMRig");
|
||||||
});
|
});
|
||||||
} else if self.xmrig.lock().unwrap().is_alive() {
|
} else if self.xmrig.lock().unwrap().is_alive() {
|
||||||
if ui.add_sized([width, height], Button::new("⟲")).on_hover_text("Restart XMRig").clicked() {
|
if ui.add_sized([width, height], Button::new("⟲")).on_hover_text("Restart XMRig").clicked() {
|
||||||
|
@ -1226,12 +1226,12 @@ impl eframe::App for App {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ui.add_enabled_ui(false, |ui| {
|
ui.add_enabled_ui(false, |ui| {
|
||||||
ui.add_sized([width, height], Button::new("⏺")).on_hover_text("Start XMRig");
|
ui.add_sized([width, height], Button::new("▶")).on_disabled_hover_text("Start XMRig");
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
ui.add_enabled_ui(false, |ui| {
|
ui.add_enabled_ui(false, |ui| {
|
||||||
ui.add_sized([width, height], Button::new("⟲")).on_hover_text("Restart XMRig");
|
ui.add_sized([width, height], Button::new("⟲")).on_disabled_hover_text("Restart XMRig");
|
||||||
ui.add_sized([width, height], Button::new("⏹")).on_hover_text("Stop XMRig");
|
ui.add_sized([width, height], Button::new("⏹")).on_disabled_hover_text("Stop XMRig");
|
||||||
});
|
});
|
||||||
let mut text = String::new();
|
let mut text = String::new();
|
||||||
if !Gupax::path_is_exe(&self.state.gupax.xmrig_path) {
|
if !Gupax::path_is_exe(&self.state.gupax.xmrig_path) {
|
||||||
|
@ -1239,11 +1239,11 @@ impl eframe::App for App {
|
||||||
text = XMRIG_PATH_NOT_EXE.to_string();
|
text = XMRIG_PATH_NOT_EXE.to_string();
|
||||||
}
|
}
|
||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
if ui.add_sized([width, height], Button::new("⏺")).on_hover_text("Start XMRig").on_disabled_hover_text(text).clicked() {
|
if ui.add_sized([width, height], Button::new("▶")).on_hover_text("Start XMRig").on_disabled_hover_text(text).clicked() {
|
||||||
Helper::start_xmrig(&self.helper, &self.state.xmrig, &self.state.gupax.absolute_xmrig_path, Arc::clone(&self.sudo));
|
Helper::start_xmrig(&self.helper, &self.state.xmrig, &self.state.gupax.absolute_xmrig_path, Arc::clone(&self.sudo));
|
||||||
}
|
}
|
||||||
#[cfg(target_family = "unix")]
|
#[cfg(target_family = "unix")]
|
||||||
if ui.add_sized([width, height], Button::new("⏺")).on_hover_text("Start XMRig").on_disabled_hover_text(text).clicked() {
|
if ui.add_sized([width, height], Button::new("▶")).on_hover_text("Start XMRig").on_disabled_hover_text(text).clicked() {
|
||||||
self.sudo.lock().unwrap().signal = ProcessSignal::Start;
|
self.sudo.lock().unwrap().signal = ProcessSignal::Start;
|
||||||
self.error_state.ask_sudo(&self.sudo);
|
self.error_state.ask_sudo(&self.sudo);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue