main/helper: change [Start] button, change [Sudo] input order

This commit is contained in:
hinto-janaiyo 2022-12-10 21:48:25 -05:00
parent 3fee0e5690
commit 1b999e3d9b
No known key found for this signature in database
GPG key ID: B1C5A64B80691E45
3 changed files with 30 additions and 26 deletions

View file

@ -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 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 WHITE: egui::Color32 = egui::Color32::WHITE;
pub const GRAY: egui::Color32 = egui::Color32::GRAY;
pub const LIGHT_GRAY: egui::Color32 = egui::Color32::LIGHT_GRAY;
pub const BLACK: egui::Color32 = egui::Color32::BLACK;

View file

@ -632,8 +632,8 @@ impl Helper {
// Before that though, add the ["--prompt"] flag and set it
// to emptyness so that it doesn't show up in the output.
if cfg!(unix) {
args.push("--stdin".to_string());
args.push(r#"--prompt="#.to_string());
args.push("--".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>>) {
// 1a. Create PTY
let pty = portable_pty::native_pty_system();
let pair = pty.openpty(portable_pty::PtySize {
let mut pair = pty.openpty(portable_pty::PtySize {
rows: 100,
cols: 1000,
pixel_width: 0,
@ -732,7 +732,16 @@ impl Helper {
// 1c. Create child
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();
lock.state = ProcessState::Alive;
lock.signal = ProcessSignal::None;
@ -740,15 +749,9 @@ impl Helper {
lock.child = Some(Arc::clone(&child_pty));
let reader = pair.master.try_clone_reader().unwrap(); // Get STDOUT/STDERR before moving the PTY
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);
// 3. Spawn PTY read thread
// 4. Spawn PTY read thread
let output_full = Arc::clone(&process.lock().unwrap().output_full);
let output_buf = Arc::clone(&process.lock().unwrap().output_buf);
thread::spawn(move || {
@ -762,7 +765,7 @@ impl Helper {
// let regex = P2poolRegex::new();
let start = process.lock().unwrap().start;
// 4. Loop as watchdog
// 5. Loop as watchdog
info!("XMRig | Entering watchdog mode... woof!");
loop {
// Set timer

View file

@ -1152,9 +1152,9 @@ impl eframe::App for App {
let width = (ui.available_width()/3.0)-5.0;
if self.p2pool.lock().unwrap().is_waiting() {
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_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("Restart P2Pool");
ui.add_sized([width, height], Button::new("")).on_disabled_hover_text("Stop P2Pool");
ui.add_sized([width, height], Button::new("")).on_disabled_hover_text("Start P2Pool");
});
} else if self.p2pool.lock().unwrap().is_alive() {
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);
}
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 {
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_hover_text("Stop P2Pool");
ui.add_sized([width, height], Button::new("")).on_disabled_hover_text("Restart P2Pool");
ui.add_sized([width, height], Button::new("")).on_disabled_hover_text("Stop P2Pool");
});
// Check if address is okay before allowing to start.
let mut text = String::new();
@ -1180,7 +1180,7 @@ impl eframe::App for App {
ui.set_enabled(false);
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);
}
}
@ -1201,9 +1201,9 @@ impl eframe::App for App {
let width = (ui.available_width()/3.0)-5.0;
if self.xmrig.lock().unwrap().is_waiting() {
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_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("Restart XMRig");
ui.add_sized([width, height], Button::new("")).on_disabled_hover_text("Stop XMRig");
ui.add_sized([width, height], Button::new("")).on_disabled_hover_text("Start XMRig");
});
} else if self.xmrig.lock().unwrap().is_alive() {
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_sized([width, height], Button::new("")).on_hover_text("Start XMRig");
ui.add_sized([width, height], Button::new("")).on_disabled_hover_text("Start XMRig");
});
} else {
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_hover_text("Stop XMRig");
ui.add_sized([width, height], Button::new("")).on_disabled_hover_text("Restart XMRig");
ui.add_sized([width, height], Button::new("")).on_disabled_hover_text("Stop XMRig");
});
let mut text = String::new();
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();
}
#[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));
}
#[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.error_state.ask_sudo(&self.sudo);
}