]> git.proxmox.com Git - pmg-api.git/blob - src/bin/pmgbanner
pmgbanner: check return value from open
[pmg-api.git] / src / bin / pmgbanner
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use PVE::Network;
7 use Time::HiRes qw(usleep);
8
9 my $xline = '-' x 78;
10
11 my $banner = <<__EOBANNER;
12
13 $xline
14
15 Welcome to the Proxmox Mail Gateway. Please use your web browser to
16 configure this server - connect to:
17
18 __EOBANNER
19
20 my $addr;
21 for (my $try = 1; $try <= 15; $try ++) {
22 # TODO, pass `all => 1` and print them? May be seen as "leak" for some users of unprotected setups?!
23 $addr = PVE::Network::get_local_ip();
24 last if defined($addr);
25
26 usleep($try * 150_000); # gradually increase poll, ensure's we're ready faster in average
27 }
28
29 $addr //= '<unknown>'; # useless but we must _not_ fail here
30
31 $banner .= " https://${addr}:8006/\n";
32
33 $banner .= "\n$xline\n\n";
34
35 open(my $issue_fh, '>', '/etc/issue') or die "cannot open '/etc/issue' for writing - $!";
36
37 print $issue_fh $banner;
38
39 close($issue_fh);
40
41 exit (0);