From 85f08fc4684b854d973b3ad771bfd03af2b70b87 Mon Sep 17 00:00:00 2001 From: Tom Feist Date: Fri, 2 Dec 2011 11:37:00 +0000 Subject: Another flagrant abuse of version control because I'm too lazy to stash. --- feature-tests/key_sig.pl | 26 ++++++++++++-- fixery/awayproxy.pl | 22 +++++++++--- flood-detect/flood_detect.pl | 8 +++++ growl-notify/growl_notify.pl | 20 +++++++++-- longify/longify-urls.pl | 85 ++++++++++++++++++++++++++++++++++---------- 5 files changed, 134 insertions(+), 27 deletions(-) diff --git a/feature-tests/key_sig.pl b/feature-tests/key_sig.pl index ef69d45..3da50ac 100644 --- a/feature-tests/key_sig.pl +++ b/feature-tests/key_sig.pl @@ -25,12 +25,22 @@ Irssi::signal_add('key created', \&sig_key_created); Irssi::signal_register({'key command' => [qw/string/]}); Irssi::signal_add_first('key command' => \&sig_key_cmd); +Irssi::signal_register({'key key' => [qw/string/]}); +Irssi::signal_add_first('key key' => \&sig_key_key); + Irssi::signal_register({'key nothing' => [qw/string/]}); -Irssi::signal_add_first('key nothing' => \&sig_key_cmd); +Irssi::signal_add_first('key nothing' => \&sig_key_nothing); Irssi::signal_register({'keyboard created' => [qw/Irssi::UI::Keyboard/]}); Irssi::signal_add_first('keyboard created' => \&sig_keyboard); +Irssi::signal_register({'key bacon' => [qw/string int int/]}); +Irssi::signal_add_first('key bacon' => \&sig_key_bacon); + +sub sig_key_bacon { + print "baconkey: " . Dumper(\@_); +} + sub sig_keyboard { my ($data) = @_; print "keyboard: " . Dumper($data); @@ -42,10 +52,22 @@ sub sig_key_cmd { } +sub sig_key_nothing { + my ($data) = @_; + print "key nothing: " . Dumper($data); + +} + +sub sig_key_key { + my ($data) = @_; + print "key key: " . Dumper($data); + +} + sub sig_key_created { my @args = @_; print "Key Created, Args: " . Dumper(\@args); } -Irssi::command("bind meta-q /echo moo"); +Irssi::command("bind meta-q key bacon"); diff --git a/fixery/awayproxy.pl b/fixery/awayproxy.pl index b60eff4..d0b33dd 100644 --- a/fixery/awayproxy.pl +++ b/fixery/awayproxy.pl @@ -9,7 +9,7 @@ ## Other hand if you dont use irssi-proxy you still have a good reason to ## use this if you want to forward messages that come to you while ## you are away to email box. -## This is usefull for forwarding messages to an SMS-gateway ;) +## This is useful for forwarding messages to an SMS-gateway ;) ## ## btw.. if you find any bugs or have any ideas for development of this ## script dont hesitate to send msg to BCOW@IrcNET @@ -311,7 +311,19 @@ sub msg_pri { } } -Irssi::signal_add_last('proxy client connected', \&client_connect); -Irssi::signal_add_last('proxy client disconnected', \&client_disconnect); -Irssi::signal_add_last('message public', \&msg_pub); -Irssi::signal_add_last('message private', \&msg_pri); +sub init { + + Irssi::settings_add_string('awayproxy', 'awayproxy_send_mode', MODE_EMAIL); + + Irssi::signal_add_last('proxy client connected', \&sig_client_connect); + Irssi::signal_add_last('proxy client disconnected', \&sig_client_disconnect); + Irssi::signal_add_last('message public', \&sig_msg_public); + Irssi::signal_add_last('message private', \&sig_msg_private); + Irssi::signal_add('setup changed', \&sig_setup_changed); + + sig_setup_changed(); +} + +sub sig_setup_changed { + # load values from settings. +} diff --git a/flood-detect/flood_detect.pl b/flood-detect/flood_detect.pl index f34c7ae..d2eeb95 100644 --- a/flood-detect/flood_detect.pl +++ b/flood-detect/flood_detect.pl @@ -72,6 +72,8 @@ our %IRSSI = ( my $NAME = $IRSSI{name}; my $DEBUG = 0; +my $activity; + sub DEBUG () { $DEBUG } sub setup_changed { @@ -111,6 +113,12 @@ sub init { init(); +sub update_activity { + my ($nick, $channel, $server) = @_; +} + +sub prune_activity_list { +} sub apply_flood_action { diff --git a/growl-notify/growl_notify.pl b/growl-notify/growl_notify.pl index 47a85bc..604c027 100644 --- a/growl-notify/growl_notify.pl +++ b/growl-notify/growl_notify.pl @@ -50,13 +50,29 @@ THE SOFTWARE. =item * - +Stuff. =back - =cut +# Plan +# Notes +# * Main target is remote screen+irssi, accessed via ssh on local OSX/iTerm2 +# (Because that's what I use :p) +# * Might work on windows (growl has windows port afaik) +# * iterm active feature: "[iterm2-discuss] iTerm2 1.0.0.20111020 canary released" +# "Add support for reporting focus lost/gained. esc[?1004h turns it on; +# then the terminal sends esc[I when focusing, esc[O when de-focusing. +# Send esc[?1004l to disable." + +# Main features are: +# * detect activity from irssi similarly to existing activity (crap, text, hilight) +# * configurable white/blacklists for nicks, masks, activities? +# * use the Growl remote protocol (GNTP) via optional ssh backchannel? +# * easy to configure other parts (ssh tunnel, etc?) + + use strict; use warnings; diff --git a/longify/longify-urls.pl b/longify/longify-urls.pl index cd36503..83adc36 100644 --- a/longify/longify-urls.pl +++ b/longify/longify-urls.pl @@ -104,7 +104,13 @@ my $pending_msg_params = {}; my $lookup_in_progress; my $flushing_message; my $domains; +my $DEBUG; +sub _debug_print($) { + return unless $DEBUG; + my ($msg) = @_; + Irssi::active_win->print($msg, MSGLEVEL_CLIENTCRAP); +} sub sig_public_message { _handle_messages(@_); @@ -116,7 +122,7 @@ sub sig_private_message { sub _handle_messages { - my $msg = $_[1]; + my ($server, $msg) = @_; if ($flushing_message) { # don't interrupt it a second time. delete $pending_msg_params->{$flushing_message}; @@ -139,11 +145,13 @@ sub _handle_messages { $pending_msg_params->{$url} = [@_]; $lookup_in_progress = 1; + expand_url($url); - Irssi::signal_stop; + Irssi::signal_stop if $server; } + sub expand_url { my ($url) = @_; fork_off $url, \&expand_url_request, \&expand_url_callback; @@ -158,16 +166,28 @@ sub expand_url_request { $user_agent->timeout(2); # TODO: make this a setting. $user_agent->max_size(0); my $request = HTTP::Request->new(GET => $url); - my $result = $user_agent->request($request); - - print "$url\n"; - - if ($result->is_error) { + my $result = $user_agent->simple_request($request); + + if ($result->is_redirect) { + my $location = $result->header('Location'); + if ($location) { + print "$location\n"; + } else { + print "ERROR: no Location header\n"; + } + } elsif ($result->is_error) { print "ERROR: " . $result->as_string . "\n"; - return; + } elsif ($result->is_success) { + print "$url\n"; } +#elsif ($result->is_success) { + # print " +# return; +# } + my @redirects = $result->redirects; + #_debug_print(join (" => ", map { $_->header('Location') } @redirects)); if (@redirects) { print $redirects[-1]->header('Location') . "\n"; } @@ -177,26 +197,40 @@ sub expand_url_callback { my ($result) = @_; chomp $result; + my ($orig_url, $long_url) = split /\n/, $result; $long_url = '' unless $long_url; + + # l/rtrim to clean up whitespace $long_url =~ s/\s*(\S*)\s*/$1/; my $pending_message_data = $pending_msg_params->{$orig_url}; my @new_signal = @$pending_message_data; - #Irssi::print("Result: orignal: $orig_url, new: $long_url"); - - if ($long_url && $long_url !~ /^ERROR/ && $long_url ne $orig_url) { - $new_signal[1] =~ s/\Q$orig_url\E/$long_url [was: $orig_url]/; - #print "Printing with: " . Dumper(@new_signal[1..$#new_signal]); - } elsif ($long_url && $long_url =~ /^ERROR/) { - $new_signal[1] =~ s/\Q$orig_url\E/$long_url while expanding "$orig_url"/; + _debug_print("Result: orignal: $orig_url, new: $long_url"); + + if ($long_url) { + if ($long_url !~ /^ERROR/ && $long_url ne $orig_url) { + $new_signal[1] + =~ s/\Q$orig_url\E/$long_url [was: $orig_url]/; + _debug_print("Printing with: " + . Dumper(@new_signal[1..$#new_signal])); + } elsif ($long_url =~ /^ERROR/) { + $new_signal[1] + =~ s/\Q$orig_url\E/$long_url while expanding "$orig_url"/; + } } - $flushing_message = $orig_url; - Irssi::signal_emit 'message public', @new_signal; + if (defined $new_signal[0]) { + $flushing_message = $orig_url; + Irssi::signal_emit 'message public', @new_signal; + } else { + delete $pending_msg_params->{$orig_url}; + Irssi::print("URL: $orig_url expands to $new_signal[1]"); + } + $lookup_in_progress = 0; } sub match_uri { @@ -244,7 +278,7 @@ sub match_uri { } sub cmd_reload { - my $filename = shift + my $filename = shift || File::Spec->catfile(Irssi::get_irssi_dir, 'longify-urls.list'); $domains = {}; open my $fh, '<', $filename @@ -257,16 +291,31 @@ sub cmd_reload { Irssi::active_win->print('%_Longify:%_ List of domains has been reloaded.'); } +sub cmd_longify { + my ($args, $server, $witem) = @_; + + # _handle_messages expects $_[1] to contain message content. + _handle_messages(undef, $args); +} + sub init { + Irssi::settings_add_bool 'longify', 'longify-debug', 0; + Irssi::signal_add_first 'message public', \&sig_public_message; Irssi::signal_add_first 'message private', \&sig_private_message; Irssi::signal_add 'setup changed', \&sig_setup_changed; Irssi::command_bind 'longify-reload', \&cmd_reload; + Irssi::command_bind 'longify', \&cmd_longify; cmd_reload(); + sig_setup_changed(); } sub sig_setup_changed { + + $DEBUG = Irssi::settings_get_bool 'longify-debug'; + $DEBUG = 0 unless defined $DEBUG; + # TODO: settings updating stuff goes here. } -- cgit v1.2.3