Commit graph

137 commits

Author SHA1 Message Date
hinto-janaiyo
aa4f179dc2 helper: add [HumanTime] & [HumanNumber] #[test]s 2022-12-17 20:51:50 -05:00
hinto-janaiyo
83a7dab570 Add #[test]s, fix [State::merge()], fix [quit_twice] 2022-12-17 17:18:06 -05:00
hinto-janaiyo
c18cbd2f4f add [License] to README.md 2022-12-17 14:12:04 -05:00
hinto-janaiyo
49f469a8b1 cargo check/clippy fixes 2022-12-16 16:46:06 -05:00
hinto-janaiyo
6c59ecc759 Update README 2022-12-15 10:13:46 -05:00
hinto-janaiyo
c1a918c730 Update FAQ & Community node list 2022-12-14 21:55:10 -05:00
hinto-janaiyo
aab23e5f4d cargo check/clippy fixes 2022-12-13 23:05:13 -05:00
hinto-janaiyo
f0d335170a helper/main: fix [Arc<Mutex>] deadlocks, add keyboard shortcuts
There was a deadlock happening between the [Helper]'s [gui_api_p2pool]
and the GUI's [gui_api_p2pool], since the locking order was different.
The watchdog loop locking order was fixed as well. This was a pain to
track down, better than a data race... I guess.

Oh and keyboard shortcuts were added in this commit too.

Comment from code:

// The ordering of these locks is _very_ important. They MUST be in sync
// with how the main GUI thread locks stuff or a deadlock will occur
// given enough time. They will eventually both want to lock the [Arc<Mutex>]
// the other thread is already locking. Yes, I figured this out the hard way,
// hence the vast amount of debug!() messages.
//
// Example of different order (BAD!):
//
// GUI Main       -> locks [p2pool] first
// Helper         -> locks [gui_api_p2pool] first
// GUI Status Tab -> trys to lock [gui_api_p2pool] -> CAN'T
// Helper         -> trys to lock [p2pool] -> CAN'T
//
// These two threads are now in a deadlock because both
// are trying to access locks the other one already has.
//
// The locking order here must be in the same chronological
// order as the main GUI thread (top to bottom).
2022-12-13 10:14:26 -05:00
hinto-janaiyo
4021f0aacd v0.9.0 (maybe) 2022-12-12 17:24:05 -05:00
hinto-janaiyo
1535b5744e xmrig/status: implement API hyper/tokio call; add [Gupax] stats 2022-12-11 15:51:07 -05:00
hinto-janaiyo
db6f1fac13 macOS: handle killing XMRig with [sudo]
Even with the parent-child relationship and direct process handle,
Gupax can't kill an XMRig spawned with [sudo] on macOS, even though
it can do it fine on Linux. So, on macOS, get the user's [sudo]
pass on the [Stop] button and summon a [sudo kill] on XMRig's PID.

This also complicates things since now we have to keep [SudoState]
somehow between a [Stop] and a [Start]. So there is macOS specific
code that now handles that.
2022-12-10 21:00:08 -05:00
hinto-janaiyo
ac0c296ba5 windows: handle admin priviledge for xmrig
Please read the [src/README.md]. I hate windows so much.
2022-12-09 21:31:16 -05:00
hinto-janaiyo
3fdf9c8f86 p2pool/xmrig: add address/path check before allowing [Start] 2022-12-08 20:25:41 -05:00
hinto-janaiyo
2a04766abd main: add [zeroize] and implement sudo input/test screen for xmrig 2022-12-07 18:02:08 -05:00
hinto-janaiyo
e171f5fa3f helper: p2pool - stdout payouts/xmr parser, priv -> pub functions 2022-12-05 14:55:50 -05:00
hinto-janaiyo
7764de27f3 helper: p2pool - fix args, basic watchdog loop, add STDOUT/STDERR handle to [Process] struct 2022-12-04 11:24:38 -05:00
hinto-janaiyo
c49b7aa982 helper: add functions for p2pool/xmrig UI -> command arguments 2022-12-03 13:41:14 -05:00
hinto-janaiyo
2de7903d99 helper: map xmrig/p2pool JSON API key/values to structs for serde 2022-12-01 23:13:53 -05:00
hinto-janaiyo
790819c5b8 cargo cleanup 2022-11-26 22:26:32 -05:00
hinto-janaiyo
174139efc5 Cargo update + clippy lint fixes 2022-11-23 23:03:56 -05:00
hinto-janaiyo
539764e0ed v0.5.0 2022-11-22 10:12:16 -05:00
hinto-janaiyo
12c1f67baa cargo/tor/p2pool: clean deps, warn macos arti, fix node overflow
Cargo: Cleanup unused dependencies, enable some build optimizations

Tor: Arti doesn't seem to work on macOS
Even a bare Arti+Hyper request doesn't seem to work, so it's
probably not something to do with Gupax. A lot of issues only
seem to popup in a VM (OpenGL, TLS) even though on bare metal
Gupax runs fine, so Tor might work fine on real macOS but I don't
have real macOS to test it. VM macOS can't create a circuit, so,
disable by default and add a warning that it's unstable.

P2Pool: Let selected_index start at 0, and only +1 when printing
to the user, this makes the overflow math when adding/deleting a
lot more simple because selected_index will match the actual index
of the node vector
2022-11-21 17:25:38 -05:00
hinto-janaiyo
088aa56325 disk: add [ErrorState] handling for disk errors 2022-11-19 22:49:15 -05:00
hinto-janaiyo
27fa10c7ad gupax: add [FileWindow] selector for p2pool/xmrig path 2022-11-17 13:03:45 -05:00
hinto-janaiyo
98ac39c4c3 cleanup cargo warnings 2022-11-16 14:40:25 -05:00
hinto-janaiyo
6c5a8bc42f optimize [.lock()], add index counter to p2pool manual nodes 2022-11-15 21:22:15 -05:00
hinto-janaiyo
4e8dc52350 p2pool: add [Ping] into GUI, add [simple], add address regex check 2022-11-10 21:20:31 -05:00
hinto-janaiyo
0ea5b90647 os: fix platform specific issues 2022-11-02 18:18:41 -04:00
hinto-janaiyo
0f0e032588 update: save [Version] to state, use runtime [og: State]
[og: State] is now completely wrapped in an [Arc<Mutex>] so that
when the update is done, it can [.lock()] the CURRENT runtime
settings of the user and save to [gupax.toml] instead of using an
old copy that was given to it at the beginning of the thread.

In practice, this means users can change settings around during
an update and the update finishing and saving to disk won't be
using their old settings, but the current ones. Wrapping all of
[og: State] within in [Arc<Mutex>] might be overkill compared to
message channels but [State] really is just a few [bool]'s, [u*],
and small [String]'s, so it's not much data.

To bypass a deadlock when comparing [og == state] every frame,
[og]'s struct fields get cloned every frame into separate
variables, then it gets compared. This is also pretty stupid, but
again, the data being cloned is so tiny that it doesn't seem to
slow anything down.
2022-11-02 13:58:44 -04:00
hinto-janaiyo
37f60e7457 icons: custom icon per OS, build.rs, cargo-bundle 2022-10-31 17:03:59 -04:00
hinto-janaiyo
33f6aad156 egui: fix windows VM OpenGL panics, allow [F11] fullscreen 2022-10-29 21:56:17 -04:00
hinto-janaiyo
bf26f77d6d update: implement tor/arti, tls, basic metadata fetch 2022-10-24 22:58:42 -04:00
hinto-janaiyo
8b1d31c775 state.rs: add State::merge() 2022-10-18 15:26:21 -04:00
hinto-janaiyo
a95eda5899 connect functions with [State/state.rs] 2022-10-15 15:15:27 -04:00
hinto-janaiyo
24c8fd066c add [node.rs]: ping community nodes, find fastest 2022-10-14 17:22:25 -04:00
hinto-janaiyo
5a5f294b50 add toml.rs/constants.rs, ask_before_quit screen 2022-10-13 09:17:32 -04:00
hinto-janaiyo
81a3d80aa6 root 2022-10-09 14:08:16 -04:00