F:\WEBSITES\testbed\zipped\yabb_svn_new\branches\2.5.2\cgi-bin\yabb2\Admin\Settings_Antispam.pl F:\WEBSITES\testbed\zipped\yabb_svn_new\trunk\cgi-bin\yabb2\Admin\Settings_Antispam.pm
############################################################################### ###############################################################################
# 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;