+++ /dev/null
-use Irssi;
-use strict;
-use vars qw($VERSION %IRSSI);
-use integer;
-
-### REQUIREMENTS
-#
-# You need spamcalc from http://spamcalc.net/ installed on your system in
-# the perl path or in ~/.irssi/scripts/spamcalc
-#
-# The data directory (below) should be set to the spamcalc dir
-#
-# It should work afterwards
-#
-
-require spamcalc::SpamCalc;
-
-my $irssidir = Irssi::get_irssi_dir();
-my $datafilesdir = $irssidir . "/scripts/spamcalc/data";
-
-my($debug) = 0;
-my $calc;
-
-################################################################################
-
-$VERSION = "1.0.0";
-%IRSSI = (
- authors => "Pieter-Bas IJdens",
- contact => "irssi-scripts\@nospam.mi4.org.uk",
- name => "dnsspam",
- description => "Checks for DNS Spam on JOIN",
- license => "GPLv2 or later",
- url => "http://pieter-bas.ijdens.com/irssi/",
- changed => "2005-03-10"
-);
-
-################################################################################
-
-sub register_messages
-{
- Irssi::theme_register([
- 'sc_spam_certain',
- '%RSPAMCALC:%n {channick_hilight $0} from {hilight $1}'.
- ' spam level: {hilight $2} on {channel $3}',
- 'sc_spam_probable',
- '%YSPAMCALC:%n {channick_hilight $0} from {hilight $1}'.
- ' spam level: {hilight $2} on {channel $3}',
- 'sc_spam_clean',
- '%GSPAMCALC:%n {channick_hilight $0} from {hilight $1}'.
- ' spam level: {hilight $2} on {channel $3}'
- ]);
-}
-
-################################################################################
-
-sub run_spamcalc
-{
- my($host) = @_;
-
- # Don't do anything for unresolved ipv6 ips
- if ($host =~ /:/) {
- return 0;
- }
-
- # Don't do anything for unresolved ipv4 ips
- if ($host =~ /[0-9]$/) {
- return 0;
- }
-
- my $score = $calc->get_host_score($host);
-
- return $score;
-}
-
-################################################################################
-
-sub event_join
-{
- my ($server, $channame, $nick, $host) = @_;
-
- return if $server->{chat_type} ne "IRC";
-
- my $chanrec = $server->channel_find($channame);
-
- if ($chanrec)
- {
- my($username, $hostname) = split('@', $host);
-
- my ($level) = run_spamcalc($hostname);
-
- if ($level > 100)
- {
- $chanrec->printformat(
- MSGLEVEL_JOINS,
- 'sc_spam_certain',
- $nick,
- "*!*@". $hostname,
- $level,
- $channame
- );
- }
- elsif ($level > 50)
- {
- $chanrec->printformat(
- MSGLEVEL_JOINS,
- 'sc_spam_probable',
- $nick,
- "*!*@". $hostname,
- $level,
- $channame
- );
- }
- elsif ($debug > 0)
- {
- $chanrec->printformat(
- MSGLEVEL_JOINS,
- 'sc_spam_clean',
- $nick,
- "*!*@". $hostname,
- $level,
- $channame
- );
- }
- }
- else
- {
- Irssi::print("%RDNSSPAM:%n Chanrec not found for $channame%N");
- }
-
- return;
-}
-
-################################################################################
-
-sub event_load_settings
-{
- return;
-}
-
-################################################################################
-
-sub cmd_spamcalc
-{
- my ($data, $server, $item) = @_;
- my ($level);
-
- $level = run_spamcalc($data);
-
- Irssi::print("SPAMCALC: $level ($data)");
-}
-
-################################################################################
-
-$calc = SpamCalc->new();
-$calc->load_datafiles($datafilesdir);
-
-################################################################################
-
-register_messages();
-
-################################################################################
-
-Irssi::signal_add({
- 'message join' => \&event_join,
- 'setup changed' => \&event_load_settings
-});
-
-################################################################################
-
-Irssi::command_bind("sc", \&cmd_spamcalc);