summaryrefslogtreecommitdiffstats
path: root/scripts/isdn.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/isdn.pl')
-rw-r--r--scripts/isdn.pl58
1 files changed, 58 insertions, 0 deletions
diff --git a/scripts/isdn.pl b/scripts/isdn.pl
new file mode 100644
index 0000000..b1ceed8
--- /dev/null
+++ b/scripts/isdn.pl
@@ -0,0 +1,58 @@
+# DESCRIPTION
+# Displays incoming ISDN calls to active window
+# Looks even nicer with entries in
+# /etc/isdn/callerid.conf - see callerid.conf(5)
+#
+# CHANGELOG
+# 17.06.04
+# Script now runs for several days without any
+# problems. Added documentation.
+
+use strict;
+use Irssi;
+use vars qw($VERSION %IRSSI);
+$VERSION = "0.3";
+%IRSSI = (
+ authors => "Uli Baumann",
+ contact => "f-zappa\@irc-muenster.de",
+ name => "isdn",
+ description => "Displays incoming ISDN calls",
+ license => "GPL",
+ changed => "Thu Jun 17 12:49:55 CEST 2004",
+);
+
+my $timer;
+
+sub incoming_call() # triggered by a timer; use of input_add
+ { # caused crash
+ while (my $message = <ISDNLOG>)
+ {
+ chomp($message);
+ if ($message =~ / Call to tei .* RING/) # just incoming calls
+ {
+ my $from = $message; # extract caller
+ $from =~ s/.*Call to tei.*from (.*) on.*RING.*/$1/;
+ my $to = $message; # extract callee
+ $to =~ s/.*Call to tei.*from .* on (.*) RING.*/$1/;
+ my $window = Irssi::active_win(); # write message to active win
+ $window->print("%YISDN:%n call from $from");
+ $window->print(" to $to");
+ }
+ }
+ }
+
+sub isdn_unload() # for a clean unload
+ {
+ close ISDNLOG;
+ Irssi::timeout_remove($timer);
+ }
+
+# when starting, open the isdnlog file and set pointer to eof
+open ISDNLOG, "< /var/log/isdn/isdnlog" or die "Can't open isdnlog";
+seek ISDNLOG,0,2;
+# install timeout for the incoming_call subroutine
+$timer=Irssi::timeout_add(1000, \&incoming_call, \&args);
+
+# disable timer and close file when script gets unloaded
+Irssi::signal_add_first('command script unload','isdn_unload');
+