$VERSION = "2.0"; %IRSSI = ( authors => "Jonas Häggqvist", contact => "rasher@rasher.dk", name => "hsas", description => "HSAS threat level statusbar item", license => "GPL v2 or later", url => "http://rasher.dyndns.org/~rasher/", ); # Just load the script and do a /statusbar window add hsas # Requires HTTP::Request (libwww-perl on Debian) # # Based very loosely on mail.pl by Matti Hiljanen use Irssi::TextUI; use strict; use CGI qw/:standard/; use HTTP::Request; use LWP; my $last_refresh_time; my $last_threat_level; sub entusiastic { my ($level) = @_; if (Irssi::settings_get_bool('hsas_enthusiastic')) { if ($level eq "high") { $level=uc($level)."!!"; } elsif ($level eq "severe") { $level=uc($level)."!!!!"; } } return $level; } sub hsas { # This function mostly unmodified from http://www.cgiexpo.com/files/hsas.html my ($item, $get_size_only) = @_; if (time() - $last_refresh_time > 60*60* Irssi::settings_get_int("hsas_refresh_hours")) { my $url = "http://www.dhs.gov/dhspublic/getAdvisoryCondition"; my $alt_url = "http://www.whitehouse.gov/homeland/"; my $threat_level = ''; my $method="GET"; my $ua = new LWP::UserAgent; $ua->timeout(Irssi::settings_get_int("hsas_ua_timeout")); my $request = new HTTP::Request($method, $url); my $response = $ua->request($request); my $return = $response->content; my ($threat_level) = ($return =~ /THREAT_ADVISORY CONDITION="(.*?)"/i); $threat_level = lc($threat_level); if ($threat_level eq "") { my $request = new HTTP::Request($method, $alt_url); my $response = $ua->request($request); my $return = $response->content; ($threat_level) = ($return =~ /\/images\/threat\/([a-z]+)\.jpg/i); } $item->default_handler($get_size_only, undef, entusiastic($threat_level), 1); $last_refresh_time = time(); $last_threat_level = $threat_level; } else { $item->default_handler($get_size_only, undef, entusiastic($last_threat_level), 1); } } Irssi::settings_add_bool("misc", "hsas_enthusiastic", 0); Irssi::settings_add_int("misc", "hsas_refresh_hours", 4); Irssi::settings_add_int("misc", "hsas_ua_timeout", 5); # Your irssi session will lock up for this period of time if the server is unavailable Irssi::statusbar_item_register('hsas', '{sb Threat: $0-}', 'hsas');