############################################################################### # Settings_Security.pm # # $Date: 01 Sep 2026 $ # ############################################################################### # YaBBForum: 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 YaBBForum (yabbforum.nz) - All Rights Reserved. # # Software by: The YaBBForum Development Team # # with assistance from the YaBBForum community. # ############################################################################### # use strict; our $VERSION = '3.2'; $settings_securitypmver = 'YaBBForum 3.2'; if ( $action eq 'detailedversion' ) { return 1; } LoadLanguage('Sessions'); $admin_images = "$yyhtml_root/Templates/Admin/default"; if ( -e "$vardir/iplookup.urls" ) { fopen( IPLOOKUP, "$vardir/iplookup.urls" ) || fatal_error( 'cannot_open', 'iplookup.urls', 1 ); while () { chomp; $iplookup_urls .= qq~$_\n~; if ( $iplookup_urls !~ /&(.*amp;)/gsm ) { $iplookup_urls =~ s/&/&/gxsm; } } fclose(IPLOOKUP); } if ($regcheck) { require Sources::Decoder; validation_code(); } # List of settings @settings = ( { name => $settings_txt{'generalsec'}, id => 'flood', items => [ { description => qq~~, input_html => qq~~, name => 'stealthurl', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'sessions', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'do_scramble_id', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'referersecurity', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'show_online_ip_admin', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'show_online_ip_gmod', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'show_online_ip_fmod', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'ipLookup', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'iplookup_urls', validate => 'fulltext', depends_on => ['ipLookup'], }, ], }, { name => $settings_txt{'validimage'}, id => 'validimage', items => [ { description => qq~~, input_html => qq~~, name => 'regcheck', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'gpvalid_en', validate => 'boolean', }, { description => qq~~, input_html => qq~~, name => 'translayer', validate => 'boolean', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => qq~~, input_html => qq~~, name => 'codemaxchars', validate => 'number', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => qq~~, input_html => qq~~, name => 'captchastyle', validate => 'text', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => qq~~, input_html => qq~~, name => 'captchaStartChars', validate => 'text,null', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => qq~~, input_html => qq~~, name => 'captchaEndChars', validate => 'text,null', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => qq~~, input_html => qq~~, name => 'masterkey', validate => 'text', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => qq~~, input_html => qq~       ~, name => 'rgb_foreground', validate => 'text', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => qq~~, input_html => qq~       ~, name => 'rgb_shade', validate => 'text', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => qq~~, input_html => qq~       ~, name => 'rgb_background', validate => 'text', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => qq~~, input_html => qq~~, name => 'randomizer', validate => 'number', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => qq~~, input_html => qq~~, name => 'distortion', validate => 'number', depends_on => [ 'regcheck||', 'gpvalid_en||' ], }, { description => $floodtxt{'vpreview'}, input_html => qq~
$showcheck
~, }, ], }, ); # Routine to save them sub SaveSettings { my %settings = @_; foreach my $iplookup_url ( split /\s+/sm, $settings{'iplookup_urls'} ) { if ( $iplookup_url =~ /:\/\//xsm && $iplookup_url !~ /http(s|):\/\//xsm ) { fatal_error('invalid_value', $iplookup_url . $admin_txt{'iplookup_protocols'}); } } fopen( IPLOOKUP, ">$vardir/iplookup.urls" ); print {IPLOOKUP} $settings{'iplookup_urls'} or croak "$croak{'print'} IPLOOKUP"; fclose(IPLOOKUP); if ( length $settings{'masterkey'} < 8 || length $settings{'masterkey'} > 24 ) { LoadLanguage('Error'); fatal_error('invalid_key'); } SaveSettingsTo( 'Settings.pm', %settings ); return; } 1;