]> git.proxmox.com Git - proxmox-backup.git/blob - src/bin/pbsbanner.rs
add login banner service
[proxmox-backup.git] / src / bin / pbsbanner.rs
1 use std::fmt::Write;
2 use std::fs;
3 use std::net::ToSocketAddrs;
4
5 use proxmox::tools;
6
7 fn main() {
8 let nodename = tools::nodename();
9 let addr = format!("{}:8007", nodename);
10
11 let mut banner = format!("
12 {:-<78}
13
14 Welcome to the Proxmox Backup Server. Please use your web browser to
15 configure this server - connect to:
16
17 ",
18 ""
19 );
20
21 if let Ok(saddrs) = addr.to_socket_addrs() {
22 let saddrs: Vec<_> = saddrs
23 .filter_map(|s| match !s.ip().is_loopback() {
24 true => Some(format!(" https://{}/", s)),
25 false => None,
26 })
27 .collect();
28
29 if !saddrs.is_empty() {
30 writeln!(&mut banner, "{}", saddrs.join("\n")).unwrap();
31 } else {
32 writeln!(
33 &mut banner,
34 "hostname '{}' does not resolves to any non-loopback address",
35 nodename
36 )
37 .unwrap();
38 }
39 } else {
40 writeln!(&mut banner, "could not resolve hostname '{}'", nodename).unwrap();
41 }
42
43 // unwrap will never fail for write!:
44 // https://github.com/rust-lang/rust/blob/1.39.0/src/liballoc/string.rs#L2318-L2331
45 write!(&mut banner, "\n{:-<78}\n\n", "").unwrap();
46
47 fs::write("/etc/issue", banner.as_bytes()).expect("Unable to write banner to issue file");
48 }