1############################################################################### 2# Settings_Antispam.pm # 3# $Date: 12.02.14 $ # 4############################################################################### 5# YaBB: Yet another Bulletin Board # 6# Open-Source Community Software for Webmasters # 7# Version: YaBB 2.6.11 # 8# Packaged: December 2, 2014 # 9# Distributed by: http://www.yabbforum.com # 10# =========================================================================== # 11# Copyright (c) 2000-2014 YaBB (www.yabbforum.com) - All Rights Reserved. # 12# Software by: The YaBB Development Team # 13# with assistance from the YaBB community. # 14############################################################################### 15# use strict; 16use CGI::Carp qw(fatalsToBrowser); 17use English qw(-no_match_vars); 18our $VERSION = '2.6.11'; 19 20$settings_antispampmver = 'YaBB 2.6.11 $Revision: 1611 $'; 21if ( $action eq 'detailedversion' ) { return 1; } 22 23 24# TSC 25if ( -e "$vardir/spamrules.txt" ) { 26 fopen( SPAM, "$vardir/spamrules.txt" ) 27 || fatal_error( 'cannot_open', 'spamrules.txt', 1 ); 28 29 $spamlist = do { local $INPUT_RECORD_SEPARATOR = undef; <SPAM> }; 30 fclose(SPAM); 31} 32 33# Email Domain Filter 34if ( -e "$vardir/email_domain_filter.txt" ) { 35 require "$vardir/email_domain_filter.txt"; 36} 37$adomains =~ s/,/\n/gsxm; 38$bdomains =~ s/,/\n/gxsm; 39 40if ($min_reg_time eq q{}) {$min_reg_time = 15 ;} 41 42# List of settings 43our @settings = ( 44 { 45 name => $settings_txt{'generalspam'}, 46 id => 'spam', 47 items => [ 48 { 49 description => 50qq~<label for="post_speed_count">$admin_txt{'91'}<br /><span class="small">$admin_txt{'91a'}</span></label>~, 51 input_html => 52qq~<input type="text" name="post_speed_count" id="post_speed_count" size="5" value="$post_speed_count" />~, 53 name => 'post_speed_count', 54 validate => 'number', 55 }, 56 { 57 description => 58qq~<label for="minlinkpost">$admin_txt{'minlinkpost'}<br /><span class="small">$admin_txt{'minlinkpost_exp'}</span></label>~, 59 input_html => 60qq~<input type="text" name="minlinkpost" id="minlinkpost" size="5" value="$minlinkpost" />~, 61 name => 'minlinkpost', 62 validate => 'number', 63 }, 64 { 65 description => 66qq~<label for="minlinksig">$admin_txt{'minlinksig'}<br /><span class="small">$admin_txt{'minlinksig_exp'}</span></label>~, 67 input_html => 68qq~<input type="text" name="minlinksig" id="minlinksig" size="5" value="$minlinksig" />~, 69 name => 'minlinksig', 70 validate => 'number', 71 }, 72 { 73 description => 74qq~<label for="minlinkweb">$admin_txt{'minlinkweb'}<br /><span class="small">$admin_txt{'minlinkweb_exp'}</span></label>~, 75 input_html => 76qq~<input type="text" name="minlinkweb" id="minlinkweb" size="5" value="$minlinkweb" />~, 77 name => 'minlinkweb', 78 validate => 'number', 79 }, 80 { 81 description => 82qq~<label for="spd_detention_time">$admin_txt{'92'}<br /><span class="small">$admin_txt{'93'}</span></label>~, 83 input_html => 84qq~<input type="text" name="spd_detention_time" id="spd_detention_time" size="5" value="$spd_detention_time" />~, 85 name => 'spd_detention_time', 86 validate => 'number', 87 }, 88 { 89 description => 90 qq~<label for="timeout">$admin_txt{'408'}</label>~, 91 input_html => 92qq~<input type="text" name="timeout" id="timeout" size="4" value="$timeout" />~, 93 name => 'timeout', 94 validate => 'number', 95 }, 96 { 97 description => qq~<label for="min_reg_time">$admin_txt{'min_reg_time'}</label>~, 98 input_html => qq~<input type="text" name="min_reg_time" id="min_reg_time" size="4" value="$min_reg_time" />~, 99 name => 'min_reg_time', 100 validate => 'number', 101 }, 102 { header => $settings_txt{'speedban'}, }, 103 { 104 description => 105 qq~<label for="speedpostdetection">$admin_txt{'89'}</label>~, 106 input_html => 107qq~<input type="checkbox" name="speedpostdetection" id="speedpostdetection" value="1" ${ischecked($speedpostdetection)}/>~, 108 name => 'speedpostdetection', 109 validate => 'boolean', 110 }, 111 { 112 description => 113 qq~<label for="min_post_speed">$admin_txt{'90'}</label>~, 114 input_html => 115qq~<input type="text" name="min_post_speed" id="min_post_speed" size="5" value="$min_post_speed" />~, 116 name => 'min_post_speed', 117 validate => 'number', 118 depends_on => ['speedpostdetection'], 119 }, 120 { header => $settings_txt{'spambot'}, }, 121 { 122 description => 123 qq~<label for="honeypot">$admin_txt{'honeypot'}</label>~, 124 input_html => 125qq~<input type="checkbox" name="honeypot" id="honeypot" value="1"${ischecked($honeypot)} />~, 126 name => 'honeypot', 127 validate => 'boolean', 128 }, 129 { 130 description => 131 qq~<label for="spamfruits">$admin_txt{'spamfruits'}</label>~, 132 input_html => 133qq~<input type="checkbox" name="spamfruits" id="spamfruits" value="1"${ischecked($spamfruits)} />~, 134 name => 'spamfruits', 135 validate => 'boolean', 136 }, 137 ], 138 }, 139 { 140 name => $tsc_txt{'2'}, 141 id => 'tsc', 142 items => [ 143 { 144 description => 145qq~<label for="spamrules"><b>$tsc_txt{'4'}</b><br /><span class="small">$tsc_txt{'3'}</span></label>~, 146 input_html => 147qq~<textarea cols="60" rows="35" name="spamrules" id="spamrules" style="width: 95%">$spamlist</textarea>~, 148 two_rows => 1, 149 name => 'spamrules', 150 validate => 'fulltext,null', 151 }, 152 ], 153 }, 154 { 155 name => $domain_filter_txt{'2'}, 156 id => 'emailfilter', 157 items => [ 158 { 159 description => 160qq~<label for="adomains"><b>$domain_filter_txt{'4'}</b><br /><span class="small">$domain_filter_txt{'3'}</span></label>~, 161 input_html => 162qq~<textarea cols="60" rows="35" name="adomains" id="adomains" style="width: 95%">$adomains</textarea>~, 163 two_rows => 1, 164 name => 'adomains', 165 validate => 'fulltext,null', 166 }, 167 { 168 description => 169qq~<label for="bdomains"><b>$domain_filter_txt{'6'}</b><br /><span class="small">$domain_filter_txt{'7'}</span></label>~, 170 input_html => 171qq~<textarea cols="60" rows="35" name="bdomains" id="bdomains" style="width: 95%">$bdomains</textarea>~, 172 two_rows => 1, 173 name => 'bdomains', 174 validate => 'fulltext,null', 175 }, 176 ], 177 }, 178); 179 180# Routine to save them 181sub SaveSettings { 182 my %settings = @_; 183 184 # TSC 185 $settings{'spamrules'} =~ s/\r(?=\n*)//gxsm; 186 fopen( SPAM, ">$vardir/spamrules.txt" ); 187 print {SPAM} delete $settings{'spamrules'} or croak "$croak{'print'} SPAM"; 188 fclose(SPAM); 189 190 # email domain filter 191 my @domains = 192 ( delete $settings{'adomains'}, delete $settings{'bdomains'} ); 193 foreach (@domains) { 194 s/\n/,/gxsm; 195 s/\s+//gxsm; 196 s/(^,+|,+$)//gxsm; 197 s/,+/,/gxsm; 198 s/\@/\\@/gxsm; 199 } 200 fopen( FILE, ">$vardir/email_domain_filter.txt" ); 201 print {FILE} qq~\$adomains = "$domains[0]";\n~ or croak "$croak{'print'} emain_domain"; 202 print {FILE} qq~\$bdomains = "$domains[1]";\n~ or croak "$croak{'print'} email_domain"; 203 print {FILE} q~1;~ or croak "$croak{'print'} email_domain"; 204 fclose(FILE); 205 206 # Settings.pm 207 SaveSettingsTo( 'Settings.pm', %settings ); 208 return; 209} 210 2111; 212