]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
added holes.pl, lists all open sockets, only meaningful if running in an application...
authorterminaldweller <redacted>
Sat, 30 Dec 2023 15:35:11 +0000 (10:35 -0500)
committerterminaldweller <redacted>
Sat, 30 Dec 2023 15:35:11 +0000 (10:35 -0500)
scripts/holes.pl [new file with mode: 0644]

diff --git a/scripts/holes.pl b/scripts/holes.pl
new file mode 100644 (file)
index 0000000..6f6799f
--- /dev/null
@@ -0,0 +1,53 @@
+use Irssi;
+use strict;
+use warnings;
+
+our $VERSION = "1.0.0";
+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 a 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';
+lsof | grep socket | awk '{print $4}' | awk 'BEGIN{FS=":"}{print $2}' | tr -d [] | uniq
+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;
+    my @lines = uniq(@lines);
+    $holes = '';
+    $result = @lines;
+    foreach my $line (@lines) {
+        if ($result == "") {
+            $result = $line
+        }
+        $result = $result.$sep.$line
+    }
+    # $result =~ s/^\s+//;
+    $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();
git clone https://git.99rst.org/PROJECT