Skip to content

Commit

Permalink
Merge pull request #870 from terminaldweller/holes
Browse files Browse the repository at this point in the history
added holes.pl, lists all open sockets, only meaningful if running in…
  • Loading branch information
ailin-nemui authored Feb 2, 2024
2 parents 3849fa4 + 0c8802b commit 2e9f650
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions scripts/holes.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
use Irssi;
use strict;
use warnings;

our $VERSION = "1.0.1";
our %IRSSI = (
authors => 'terminaldweller',
contact => 'https://terminaldweller.com',
name => 'holes',
description => 'gives a list of of the open sockets as an expando(this makes sense only if irssi is in an application container)',
license => 'GPL3 or newer',
url => 'https://github.com/irssi/scripts.irssi.org',
);

Irssi::settings_add_int('misc', 'holes_frequency', 30000);
Irssi::settings_add_str('misc', 'holes_separator', '');
my $holes = "";
my $timeout;
my $holes_cmd = << 'HOLES_CMD';
netstat -ntap 2>/dev/null | awk '{print $4}' | awk 'BEGIN{FS=":"}{print $2}' | sed '/^$/d'
HOLES_CMD

sub uniq {
my %seen;
grep !$seen{$_}++, @_;
}

sub holes_sub {
my $result;
Irssi::timeout_remove($timeout);
my $output = `$holes_cmd`;
my $sep = Irssi::parse_special(Irssi::settings_get_str('holes_separator'));
my @lines = split /\n/, $output;
@lines = uniq(@lines);
$holes = '';
$result = @lines;
foreach my $line (@lines) {
$result = $result.$sep.$line
}
$holes= $result;
$timeout = Irssi::timeout_add_once(Irssi::settings_get_int('holes_frequency'), 'holes_sub' , undef);
}

Irssi::expando_create('holes', sub {
return $holes;
}, {});

$timeout = Irssi::timeout_add(Irssi::settings_get_int('holes_frequency'), 'holes_sub' , undef);
holes_sub();

0 comments on commit 2e9f650

Please sign in to comment.