Skip to content

Commit 24e0430

Browse files
committed
Add machine's IP in the email
1 parent b93ea6b commit 24e0430

File tree

3 files changed

+110
-1
lines changed

3 files changed

+110
-1
lines changed

Cargo.lock

Lines changed: 82 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

util/panic_hook/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,5 @@ authors = ["Parity Technologies <[email protected]>", "CodeChain Team <hi@codechai
99
[dependencies]
1010
backtrace = "0.3.2"
1111
codechain-logger = { path = "../logger" }
12+
my_internet_ip = "0.1.1"
13+
get_if_addrs = "0.5.3"

util/panic_hook/src/lib.rs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
1919
extern crate backtrace;
2020
extern crate codechain_logger as clogger;
21+
extern crate get_if_addrs;
22+
extern crate my_internet_ip;
2123

2224
use backtrace::Backtrace;
2325
use clogger::EmailAlarm;
@@ -48,8 +50,10 @@ fn panic_hook(info: &PanicInfo) {
4850
fn panic_hook_with_email_alarm(email_alarm: &EmailAlarm, info: &PanicInfo) {
4951
let message = panic_message(info);
5052
eprintln!("{}", message);
53+
let ip_addresses = get_ip_addresses();
54+
5155
let message_for_email = message.replace("\n", "<br>");
52-
email_alarm.send(&message_for_email);
56+
email_alarm.send(&format!("IP: {}<br>{}", ip_addresses, message_for_email));
5357
exit_on_debug_mode();
5458
}
5559

@@ -91,3 +95,24 @@ fn exit_on_debug_mode() {
9195

9296
#[cfg(not(debug_assertions))]
9397
fn exit_on_debug_mode() {}
98+
99+
fn get_ip_addresses() -> String {
100+
match my_internet_ip::get() {
101+
Ok(ip) => return ip.to_string(),
102+
Err(e) => {
103+
eprintln!("Failed get internet IP: {:?}", e);
104+
}
105+
};
106+
107+
match get_if_addrs::get_if_addrs() {
108+
Ok(interfaces) => {
109+
let ip_addresses: Vec<String> =
110+
interfaces.iter().map(|interface| format!("{:?}", interface.ip())).collect();
111+
return ip_addresses.join(", ")
112+
}
113+
Err(err) => {
114+
eprintln!("Failed to get local IPs: {}", err);
115+
}
116+
}
117+
"Unknown".to_string()
118+
}

0 commit comments

Comments
 (0)