| ############################################################################### |
| ############################################################################### |
| # Settings_Antispam.pl # |
| # Settings_Antispam.pm # |
| |
| # $Date: 01.05.16 $ # |
| ############################################################################### |
| ############################################################################### |
| # YaBB: Yet another Bulletin Board # |
| # YaBB: Yet another Bulletin Board # |
| # Open-Source Community Software for Webmasters # |
| # Open-Source Community Software for Webmasters # |
| # Version: YaBB 2.5.2 # |
| # Version: YaBB 2.6.12 # |
| # Packaged: October 21, 2012 # |
| # Packaged: January 5, 2016 # |
| # Distributed by: http://www.yabbforum.com # |
| # Distributed by: http://www.yabbforum.com # |
| # =========================================================================== # |
| # =========================================================================== # |
| # Copyright (c) 2000-2012 YaBB (www.yabbforum.com) - All Rights Reserved. # |
| # Copyright (c) 2000-2016 YaBB (www.yabbforum.com) - All Rights Reserved. # |
| # Software by: The YaBB Development Team # |
| # Software by: The YaBB Development Team # |
| # with assistance from the YaBB community. # |
| # with assistance from the YaBB community. # |
| ############################################################################### |
| ############################################################################### |
| |
| # use strict; |
| |
| use CGI::Carp qw(fatalsToBrowser); |
| |
| use English qw(-no_match_vars); |
| |
| our $VERSION = '2.6.12'; |
| |
| |
| |
| $settings_antispampmver = 'YaBB 2.6.12 $Revision: 1710 $'; |
| |
| if ( $action eq 'detailedversion' ) { return 1; } |
| |
| |
| |
| if ( -e "$vardir/spamrules.txt" ) { |
| |
| fopen( SPAM, "$vardir/spamrules.txt" ) |
| |
| || fatal_error( 'cannot_open', 'spamrules.txt', 1 ); |
| |
| |
| $settings_antispamplver = 'YaBB 2.5.2 $Revision: 1.1 $'; |
| $spamlist = do { local $INPUT_RECORD_SEPARATOR = undef; <SPAM> }; |
| if ($action eq 'detailedversion') { return 1; } |
| fclose(SPAM); |
| |
| |
| # TSC |
| |
| if (-e "$vardir/spamrules.txt" ) { |
| |
| fopen(SPAM, "$vardir/spamrules.txt") || &fatal_error("cannot_open","spamrules.txt", 1); |
| |
| $spamlist = join('', <SPAM>); |
| |
| fclose(SPAM); |
| |
| } |
| } |
| |
| |
| # Email Domain Filter |
| # Email Domain Filter |
| if (-e "$vardir/email_domain_filter.txt" ) { |
| if ( -e "$vardir/email_domain_filter.txt" ) { |
| require "$vardir/email_domain_filter.txt"; |
| require "$vardir/email_domain_filter.txt"; |
| } |
| } |
| $adomains =~ s~,~\n~g; |
| $adomains =~ s/,/\n/gsxm; |
| $bdomains =~ s~,~\n~g; |
| $bdomains =~ s/,/\n/gxsm; |
| |
| |
| |
| if ($min_reg_time eq q{}) {$min_reg_time = 15 ;} |
| |
| |
| # List of settings |
| # List of settings |
| @settings = ( |
| our @settings = ( |
| { |
| { |
| name => $settings_txt{'generalspam'}, |
| name => $settings_txt{'generalspam'}, |
| id => 'spam', |
| id => 'spam', |
| items => [ |
| items => [ |
| { |
| { |
| description => qq~<label for="post_speed_count">$admin_txt{'91'}<br /><span class="small">$admin_txt{'91a'}</span></label>~, |
| description => |
| input_html => qq~<input type="text" name="post_speed_count" id="post_speed_count" size="5" value="$post_speed_count" />~, |
| qq~<label for="post_speed_count">$admin_txt{'91'}<br /><span class="small">$admin_txt{'91a'}</span></label>~, |
| name => 'post_speed_count', |
| input_html => |
| validate => 'number', |
| qq~<input type="text" name="post_speed_count" id="post_speed_count" size="5" value="$post_speed_count" />~, |
| }, |
| name => 'post_speed_count', |
| { |
| validate => 'number', |
| description => qq~<label for="minlinkpost">$admin_txt{'minlinkpost'}<br /><span class="small">$admin_txt{'minlinkpost_exp'}</span></label>~, |
| }, |
| input_html => qq~<input type="text" name="minlinkpost" id="minlinkpost" size="5" value="$minlinkpost" />~, |
| { |
| name => 'minlinkpost', |
| description => |
| validate => 'number', |
| qq~<label for="minlinkpost">$admin_txt{'minlinkpost'}<br /><span class="small">$admin_txt{'minlinkpost_exp'}</span></label>~, |
| }, |
| input_html => |
| { |
| qq~<input type="text" name="minlinkpost" id="minlinkpost" size="5" value="$minlinkpost" />~, |
| description => qq~<label for="minlinksig">$admin_txt{'minlinksig'}<br /><span class="small">$admin_txt{'minlinksig_exp'}</span></label>~, |
| name => 'minlinkpost', |
| input_html => qq~<input type="text" name="minlinksig" id="minlinksig" size="5" value="$minlinksig" />~, |
| validate => 'number', |
| name => 'minlinksig', |
| }, |
| validate => 'number', |
| { |
| }, |
| description => |
| { |
| qq~<label for="minlinksig">$admin_txt{'minlinksig'}<br /><span class="small">$admin_txt{'minlinksig_exp'}</span></label>~, |
| description => qq~<label for="minlinkweb">$admin_txt{'minlinkweb'}<br /><span class="small">$admin_txt{'minlinkweb_exp'}</span></label>~, |
| input_html => |
| input_html => qq~<input type="text" name="minlinkweb" id="minlinkweb" size="5" value="$minlinkweb" />~, |
| qq~<input type="text" name="minlinksig" id="minlinksig" size="5" value="$minlinksig" />~, |
| name => 'minlinkweb', |
| name => 'minlinksig', |
| validate => 'number', |
| validate => 'number', |
| }, |
| }, |
| { |
| { |
| description => qq~<label for="spd_detention_time">$admin_txt{'92'}<br /><span class="small">$admin_txt{'93'}</span></label>~, |
| description => |
| input_html => qq~<input type="text" name="spd_detention_time" id="spd_detention_time" size="5" value="$spd_detention_time" />~, |
| qq~<label for="minlinkweb">$admin_txt{'minlinkweb'}<br /><span class="small">$admin_txt{'minlinkweb_exp'}</span></label>~, |
| name => 'spd_detention_time', |
| input_html => |
| validate => 'number', |
| qq~<input type="text" name="minlinkweb" id="minlinkweb" size="5" value="$minlinkweb" />~, |
| }, |
| name => 'minlinkweb', |
| { |
| validate => 'number', |
| description => qq~<label for="timeout">$admin_txt{'408'}</label>~, |
| }, |
| input_html => qq~<input type="text" name="timeout" id="timeout" size="4" value="$timeout" />~, |
| { |
| name => 'timeout', |
| description => |
| validate => 'number', |
| qq~<label for="spd_detention_time">$admin_txt{'92'}<br /><span class="small">$admin_txt{'93'}</span></label>~, |
| }, |
| input_html => |
| { |
| qq~<input type="text" name="spd_detention_time" id="spd_detention_time" size="5" value="$spd_detention_time" />~, |
| description => qq~<label for="honeypot">$admin_txt{'honeypot'}</label>~, |
| name => 'spd_detention_time', |
| input_html => qq~<input type="checkbox" name="honeypot" id="honeypot" value="1"${ischecked($honeypot)} />~, |
| validate => 'number', |
| name => 'honeypot', |
| }, |
| validate => 'boolean', |
| { |
| }, |
| description => |
| { |
| qq~<label for="timeout">$admin_txt{'408'}</label>~, |
| description => qq~<label for="spamfruits">$admin_txt{'spamfruits'}</label>~, |
| input_html => |
| input_html => qq~<input type="checkbox" name="spamfruits" id="spamfruits" value="1"${ischecked($spamfruits)} />~, |
| qq~<input type="text" name="timeout" id="timeout" size="4" value="$timeout" />~, |
| name => 'spamfruits', |
| name => 'timeout', |
| validate => 'boolean', |
| validate => 'number', |
| }, |
| }, |
| { |
| { |
| header => $settings_txt{'speedban'}, |
| description => qq~<label for="min_reg_time">$admin_txt{'min_reg_time'}</label>~, |
| }, |
| input_html => qq~<input type="text" name="min_reg_time" id="min_reg_time" size="4" value="$min_reg_time" />~, |
| { |
| name => 'min_reg_time', |
| description => qq~<label for="speedpostdetection">$admin_txt{'89'}</label>~, |
| validate => 'number', |
| input_html => qq~<input type="checkbox" name="speedpostdetection" id="speedpostdetection" value="1" ${ischecked($speedpostdetection)}/>~, |
| }, |
| name => 'speedpostdetection', |
| { header => $settings_txt{'speedban'}, }, |
| validate => 'boolean', |
| { |
| }, |
| description => |
| { |
| qq~<label for="speedpostdetection">$admin_txt{'89'}</label>~, |
| description => qq~<label for="min_post_speed">$admin_txt{'90'}</label>~, |
| input_html => |
| input_html => qq~<input type="text" name="min_post_speed" id="min_post_speed" size="5" value="$min_post_speed" />~, |
| qq~<input type="checkbox" name="speedpostdetection" id="speedpostdetection" value="1" ${ischecked($speedpostdetection)}/>~, |
| name => 'min_post_speed', |
| name => 'speedpostdetection', |
| validate => 'number', |
| validate => 'boolean', |
| depends_on => ['speedpostdetection'], |
| }, |
| }, |
| { |
| ], |
| description => |
| }, |
| qq~<label for="min_post_speed">$admin_txt{'90'}</label>~, |
| { |
| input_html => |
| name => $tsc_txt{'2'}, |
| qq~<input type="text" name="min_post_speed" id="min_post_speed" size="5" value="$min_post_speed" />~, |
| id => 'tsc', |
| name => 'min_post_speed', |
| items => [ |
| validate => 'number', |
| { |
| depends_on => ['speedpostdetection'], |
| description => qq~<label for="spamrules"><b>$tsc_txt{'4'}</b><br /><span class="small">$tsc_txt{'3'}</span></label>~, |
| }, |
| input_html => qq~<textarea cols="60" rows="35" name="spamrules" id="spamrules" style="width: 95%">$spamlist</textarea>~, |
| { header => $settings_txt{'spambot'}, }, |
| two_rows => 1, |
| { |
| name => 'spamrules', |
| description => |
| validate => 'fulltext,null', |
| qq~<label for="honeypot">$admin_txt{'honeypot'}</label>~, |
| }, |
| input_html => |
| ], |
| qq~<input type="checkbox" name="honeypot" id="honeypot" value="1"${ischecked($honeypot)} />~, |
| }, |
| name => 'honeypot', |
| { |
| validate => 'boolean', |
| name => $domain_filter_txt{'2'}, |
| }, |
| id => 'emailfilter', |
| { |
| items => [ |
| description => |
| { |
| qq~<label for="spamfruits">$admin_txt{'spamfruits'}</label>~, |
| description => qq~<label for="adomains"><b>$domain_filter_txt{'4'}</b><br /><span class="small">$domain_filter_txt{'3'}</span></label>~, |
| input_html => |
| input_html => qq~<textarea cols="60" rows="35" name="adomains" id="adomains" style="width: 95%">$adomains</textarea>~, |
| qq~<input type="checkbox" name="spamfruits" id="spamfruits" value="1"${ischecked($spamfruits)} />~, |
| two_rows => 1, |
| name => 'spamfruits', |
| name => 'adomains', |
| validate => 'boolean', |
| validate => 'fulltext,null', |
| }, |
| }, |
| ], |
| { |
| }, |
| description => qq~<label for="bdomains"><b>$domain_filter_txt{'6'}</b><br /><span class="small">$domain_filter_txt{'7'}</span></label>~, |
| { |
| input_html => qq~<textarea cols="60" rows="35" name="bdomains" id="bdomains" style="width: 95%">$bdomains</textarea>~, |
| name => $tsc_txt{'2'}, |
| two_rows => 1, |
| id => 'tsc', |
| name => 'bdomains', |
| items => [ |
| validate => 'fulltext,null', |
| { |
| }, |
| description => |
| ], |
| qq~<label for="spamrules"><b>$tsc_txt{'4'}</b><br /><span class="small">$tsc_txt{'3'}</span></label>~, |
| }, |
| input_html => |
| |
| qq~<textarea cols="60" rows="35" name="spamrules" id="spamrules" style="width: 95%">$spamlist</textarea>~, |
| |
| two_rows => 1, |
| |
| name => 'spamrules', |
| |
| validate => 'fulltext,null', |
| |
| }, |
| |
| ], |
| |
| }, |
| |
| { |
| |
| name => $domain_filter_txt{'2'}, |
| |
| id => 'emailfilter', |
| |
| items => [ |
| |
| { |
| |
| description => |
| |
| qq~<label for="adomains"><b>$domain_filter_txt{'4'}</b><br /><span class="small">$domain_filter_txt{'3'}</span></label>~, |
| |
| input_html => |
| |
| qq~<textarea cols="60" rows="35" name="adomains" id="adomains" style="width: 95%">$adomains</textarea>~, |
| |
| two_rows => 1, |
| |
| name => 'adomains', |
| |
| validate => 'fulltext,null', |
| |
| }, |
| |
| { |
| |
| description => |
| |
| qq~<label for="bdomains"><b>$domain_filter_txt{'6'}</b><br /><span class="small">$domain_filter_txt{'7'}</span></label>~, |
| |
| input_html => |
| |
| qq~<textarea cols="60" rows="35" name="bdomains" id="bdomains" style="width: 95%">$bdomains</textarea>~, |
| |
| two_rows => 1, |
| |
| name => 'bdomains', |
| |
| validate => 'fulltext,null', |
| |
| }, |
| |
| ], |
| |
| }, |
| ); |
| ); |
| |
| |
| # Routine to save them |
| # Routine to save them |
| sub SaveSettings { |
| sub SaveSettings { |
| my %settings = @_; |
| my %settings = @_; |
| |
| |
| # TSC |
| |
| $settings{'spamrules'} =~ s/\r(?=\n*)//g; |
| |
| fopen(SPAM, ">$vardir/spamrules.txt"); |
| |
| print SPAM delete($settings{'spamrules'}); |
| |
| fclose(SPAM); |
| |
| |
| |
| # email domain filter |
| |
| my @domains = (delete $settings{'adomains'}, delete $settings{'bdomains'}); |
| |
| foreach (@domains){ |
| |
| s~\n~,~g; |
| |
| s~\s+~~g; |
| |
| s~(^,+|,+$)~~g; |
| |
| s~,+~,~g; |
| |
| s~\@~\\@~g; |
| |
| } |
| |
| fopen(FILE, ">$vardir/email_domain_filter.txt"); |
| |
| print FILE qq~\$adomains = "$domains[0]";\n~; |
| |
| print FILE qq~\$bdomains = "$domains[1]";\n~; |
| |
| print FILE qq~1;~; |
| |
| fclose(FILE); |
| |
| |
| |
| # Settings.pl |
| # TSC |
| &SaveSettingsTo('Settings.pl', %settings); |
| $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; |
| 1; |
| |
| |