1use strict;
2use Irssi;
3use vars qw($VERSION %IRSSI);
4
5$VERSION = "1.0";
6%IRSSI = (
7    authors     => 'Daniel "dubkat" Reidy',
8    contact     => 'dubkat@dubkat.org (www.dubkat.org)',
9    name        => 'callerid',
10    description => 'Reformats CallerID (+g) Messages
11               (Also known as Server-Side Ignore)
12               on Hybrid & Ratbox IRCDs (EFnet)
13               to be Easier on the Eyes',
14    license     => 'GPL',
15    url         => 'http://scripts.irssi.org/',
16);
17
18#########################################################################################
19#	Thanks to Geert and Senneth for helping me out with my first irssi script!	#
20#	Hopefully someone will find this useful.					#
21#											#
22#	Callerid is used to block messages from users at the server.			#
23#	Callerid mode is activated by usermode +g on Hybrid and Ratbox servers (EFnet)	#
24#	The ircd maintains a list of users that may message you.			#
25#	To add users to the list, do /quote accept NICK					#
26#	The IRCD will *NOT* inform you that the user has been added.			#
27#	To remove a user from the list do /quote accept -NICK				#
28#	The IRCD will *NOT* inform you that the user has been removed.			#
29#	To see a list of users on your accept list do /quote accept *			#
30#											#
31#	The following alias may make life easier:					#
32#	alias accept quote accept							#
33#########################################################################################
34
35Irssi::signal_add('event 716', 'callerid_them');
36	sub callerid_them {
37		my ($server, $data) = @_;
38		my (undef, $nick, undef) = split(/ +/, $data, 3);
39		Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'callerid_them', $nick);
40		Irssi::signal_stop();
41	}
42
43Irssi::signal_add('event 717', 'callerid_them_notified');
44	sub callerid_them_notified {
45		my ($server, $data) = @_;
46		my (undef, $nick, undef) = split(/ +/, $data, 3);
47                $server->printformat($nick, MSGLEVEL_CLIENTCRAP, 'callerid_them_notified', $nick);
48                Irssi::signal_stop();
49        }
50
51Irssi::signal_add('event 282', 'callerid_accept_eof');
52	sub callerid_accept_eof { Irssi::signal_stop(); }
53
54Irssi::signal_add('event 718', 'callerid_you');
55	sub callerid_you {
56		my ($server, $data) = @_;
57		my (undef, $nick, $host, undef) = split(/ +/, $data, 4);
58		$server->printformat($nick, MSGLEVEL_CLIENTCRAP, 'callerid_you', $nick, $host);
59		Irssi::signal_stop();
60	}
61
62Irssi::signal_add('event 281', 'callerid_accept_list');
63	sub callerid_accept_list {
64		my ($server, $data) = @_;
65		my (undef, $list, undef) = split(/ +/, $data, 3);
66		$data =~ s/^\S+\s//;
67		$data =~ s/\s+:$//;
68		$server->printformat($data, MSGLEVEL_CLIENTCRAP, 'callerid_accept_list', $data);
69		Irssi::signal_stop();
70	}
71
72
73Irssi::signal_add('event 457', 'callerid_accept_exsists');
74	sub callerid_accept_exsists {
75		my ($server, $data) = @_;
76		my (undef, $nick, undef) = split(/ +/, $data, 3);
77		Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'callerid_accept_exsists', $nick);
78		Irssi::signal_stop();
79	}
80
81
82Irssi::signal_add('event 458', 'callerid_not_on_list');
83        sub callerid_not_on_list {
84                my ($server, $data) = @_;
85                my (undef, $info, undef) = split(/ +/, $data, 3);
86                Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'callerid_not_on_list', $info);
87                Irssi::signal_stop();
88        }
89
90Irssi::signal_add('event 456', 'callerid_full');
91	sub callerid_full {
92		my ($server, $data) = @_;
93                my (undef, $info) = split(/ +/, $data, 2);
94                Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'callerid_full', $info);
95                Irssi::signal_stop();
96        }
97
98Irssi::signal_add('event 401', 'callerid_invalid_nick');
99        sub callerid_invalid_nick{
100                my ($server, $data) = @_;
101                my (undef, $info, undef) = split(/ +/, $data, 3);
102                Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'callerid_invalid_nick', $info);
103                Irssi::signal_stop();
104        }
105
106
107Irssi::theme_register
108  (
109     [
110	'callerid_them',
111	'%_[%_%RCALLERID%n%_]%_ %W$0%n is in server-side ignore.',
112
113	'callerid_you',
114	'%_[%_%yCALLERID%n%_]%_ %W$0%n ($1) is attempting to message you.',
115
116	'callerid_accept_list',
117	'%_[%_%gACCEPTED%n%_]%_ %W$0%n',
118
119	'callerid_accept_exsists',
120	'%_[%_%BCALLERID%n%_]%_ %W$0%n Is Already On Your Accept List. Do %_/quote accept *%_ for a list :)',
121
122	'callerid_full',
123	'%_[%_%pCALLERID%n%_]%_ List is full. Do %_/quote accept *%_ for a list',
124
125        'callerid_not_on_list',
126        '%_[%_%pCALLERID%n%_]%_ $0 is not a user on your accept list.',
127
128        'callerid_invalid_nick',
129        '%_[%_%pCALLERID%n%_]%_ Cannot add/remove $0. That nick does not exist.',
130
131        'callerid_them_notified',
132        '%_[%_%rCALLERID%n%_]%_ %_$0%_ has been notified that you attempted to message them. (They will not notified of further messages for 60sec).',
133
134     ]
135  );
136