############################################################################### # Settings_Antispam.pm # # $Date: 01 Sep 2026 $ # ############################################################################### # YaBB: Yet another Bulletin Board # # Open-Source Community Software for Webmasters # # Version: YaBBForum 3.2 # # Packaged: 01 Sep 2026 # # Distributed by: https://yabbforum.nz # # =========================================================================== # # Copyright (c) 2000-2026 YaBB (yabbforum.nz) - All Rights Reserved. # # Software by: The YaBB Development Team # # with assistance from the YaBB community. # ############################################################################### # use strict; use CGI::Carp qw(fatalsToBrowser); use English qw(-no_match_vars); our $VERSION = '3.2'; $settings_antispampmver = 'YaBBForum 3.2'; if ( $action eq 'detailedversion' ) { return 1; } if ( -e "$vardir/spamrules.txt" ) { fopen( SPAM, "$vardir/spamrules.txt" ) || fatal_error( 'cannot_open', 'spamrules.txt', 1 ); $spamlist = do { local $INPUT_RECORD_SEPARATOR = undef; }; fclose(SPAM); } # Email Domain Filter if ( -e "$vardir/email_domain_filter.txt" ) { require "$vardir/email_domain_filter.txt"; } $adomains =~ s/,/\n/gsxm; $bdomains =~ s/,/\n/gxsm; if ($min_reg_time eq q{}) {$min_reg_time = 15 ;} # List of settings our @settings = ( { name => $settings_txt{'generalspam'}, id => 'spam', items => [ { description => qq~~, input_html => qq~~, name => 'post_speed_count', validate => 'number', }, { description => qq~~, input_html => qq~~, name => 'minlinkpost', validate => 'number', }, { description => qq~~, input_html => qq~~, name => 'minlinksig', validate => 'number', }, { description => qq~~, input_html => qq~~, name => 'minlinkweb', validate => 'number', }, { description => qq~~, input_html => qq~~, name => 'spd_detention_time', validate => 'number', }, { description => qq~~, input_html => qq~~, name => 'timeout', validate => 'number', }, { description => qq~~, input_html => qq~~, name => 'min_reg_time', validate => 'number', }, { header => $settings_txt{'speedban'}, }, { description => qq~~, input_html => qq~~, name => 'speedpostdetection', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'min_post_speed', validate => 'number', depends_on => ['speedpostdetection'], }, { header => $settings_txt{'spambot'}, }, { description => qq~~, input_html => qq~~, name => 'honeypot', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'spamfruits', validate => 'boolean', }, ], }, { name => $tsc_txt{'2'}, id => 'tsc', items => [ { description => qq~~, input_html => qq~~, two_rows => 1, name => 'spamrules', validate => 'fulltext,null', }, ], }, { name => $domain_filter_txt{'2'}, id => 'emailfilter', items => [ { description => qq~~, input_html => qq~~, two_rows => 1, name => 'adomains', validate => 'fulltext,null', }, { description => qq~~, input_html => qq~~, two_rows => 1, name => 'bdomains', validate => 'fulltext,null', }, ], }, ); # Routine to save them sub SaveSettings { my %settings = @_; # TSC $settings{'spamrules'} =~ s/\r(?=\n*)//gxsm; fopen( SPAM, ">$vardir/spamrules.txt" ); print {SPAM} delete $settings{'spamrules'} or croak "$croak{'print'} SPAM"; fclose(SPAM); # email domain filter my @domains = ( delete $settings{'adomains'}, delete $settings{'bdomains'} ); foreach (@domains) { s/\n/,/gxsm; s/\s+//gxsm; s/(^,+|,+$)//gxsm; s/,+/,/gxsm; s/\@/\\@/gxsm; } fopen( FILE, ">$vardir/email_domain_filter.txt" ); print {FILE} qq~\$adomains = "$domains[0]";\n~ or croak "$croak{'print'} emain_domain"; print {FILE} qq~\$bdomains = "$domains[1]";\n~ or croak "$croak{'print'} email_domain"; print {FILE} q~1;~ or croak "$croak{'print'} email_domain"; fclose(FILE); # Settings.pm SaveSettingsTo( 'Settings.pm', %settings ); return; } 1;