diff options
author | Daniel Friesel <derf@finalrewind.org> | 2011-01-30 17:38:03 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2011-01-30 17:38:03 +0100 |
commit | 1bbbed85ed426a5612b09b3268dbe7bdac8e7590 (patch) | |
tree | c6900029c90624598b57b456453cbad28b675e96 /bin | |
parent | 432d9d0db70d55a3ad7f5e3deed39e5108679fff (diff) |
Add vnet widget (internal/external IP)
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/vnet | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/bin/vnet b/bin/vnet new file mode 100755 index 0000000..7e78295 --- /dev/null +++ b/bin/vnet @@ -0,0 +1,109 @@ +#!/usr/bin/env perl +## Copyright © 2010 by Daniel Friesel <derf@finalrewind.org> +## License: WTFPL <http://sam.zoy.org/wtfpl> +## 0. You just DO WHAT THE FUCK YOU WANT TO. +use strict; +use warnings; +use 5.010; + +use autodie; + +use GD; +use Getopt::Std; +use Term::ANSIColor; +use LWP::Simple; + +my %opts; +my $alpha; +my $share = "$ENV{HOME}/packages/visual/share"; +my ($ext_ip, $int_ip); + +sub get_ext_ip { + my $ext = get('https://derf.homelinux.org/cgi-bin/clientinfo/ip.cgi'); + chomp $ext; + return $ext; +} + +sub get_int_ip { + my $wlan = qx{ifdata -pa wlan0 2> /dev/null}; + my $lan = qx{ifdata -pa lan 2> /dev/null}; + + chomp $wlan; + chomp $lan; + + if (length($wlan)) { + return $wlan; + } + else { + return $lan; + } +} + +sub show_net_png { + my ($w, $h) = (160, 32); + my $im = GD::Image->new($w, $h); + my $icon = GD::Image->newFromPng("${share}/network.png", 1); + + my $black = $im->colorAllocateAlpha( 0, 0, 0, $alpha); + my $bg = $im->colorAllocateAlpha(255, 255, 255, 127); + + $im->filledRectangle(0, 0, $w - 1, $h - 1, $bg); + + $im->string(gdMediumBoldFont, 36, 0, get_ext_ip(), $black); + $im->string(gdMediumBoldFont, 36, 16, get_int_ip(), $black); + + $im->copy($icon, 0, 0, 0, 0, 32, 32); + + open(my $out_fh, '>', '/tmp/vnet.png'); + binmode $out_fh; + print $out_fh $im->png(); + close($out_fh); +} + +sub show_net_console { + printf( + "int: %s\next: %s\n", + get_int_ip(), + get_ext_ip(), + ); +} + +getopts('a:cfg', \%opts); +$alpha = $opts{'a'} // 0; + +if ($opts{'c'}) { + show_net_console(); +} +elsif ($opts{'g'}) { + show_net_png(); +} + +if ($opts{'f'}) { + exec('feh', '/tmp/vnet.png'); +} + +__END__ + +=head1 NAME + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +=head1 OPTIONS + +=head1 EXIT STATUS + +=head1 CONFIGURATION + +=head1 DEPENDENCIES + +=head1 BUGS AND LIMITATIONS + +=head1 AUTHOR + +Copyright (C) 2010 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt> + +=head1 LICENSE + + 0. You just DO WHAT THE FUCK YOU WANT TO. |