Forum Firewall

Started by butchs, January 15, 2011, 11:00:37 AM

Previous topic - Next topic

margarett

You should not install with errors, ever. Better to always check what errors occur and make sure they can be manually fixed after installation
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

Miker1029

Ya, I know, It was on my LocalHost, So a Simple Cut/Paste and PhpmyAdmin Drop/Import fixes it, I don't do ANYTHING Live, Especially Install on an Error....

The LIVE Question, I MEANT, If I was Able to get it in without the errors (I.E. Manually Installed ON LOCALHOST),  My Question Meant, Is it worth Installing it...

Sorry, I'm confusing Sometimes 8-)


Mike

butchs

Quote from: Miker1029 on July 03, 2015, 03:50:24 PM
Got a question guys, No I didn't read through all 50 pages, Sry, Read the Last one, I'm considering installing this on my SMF 2.0.10, I installed on Localhost (With Errors) but seemed to be ok,  And Honestly have the stuff in this mod, I don't know about...  So SHOULD I Install it LIve?


Mike

Just read the first post.  :)
I have been truly inspired by the SUGGESTIONS as I sit on my throne and contemplate the wisdom imposed upon me.

AZMazda3

Quote from: AZMazda3 on July 03, 2015, 10:31:39 AM
Quote from: butchs on July 01, 2015, 07:43:00 PM
Something is not correct.  If you have cloudflare  then, you need to find and install the cloudflare mod.

Yes, something is wrong. The forum logs show ip, but the mod is not. So what is different?

We are not using CloudFlare, it is shared hosting on GoDaddy, a linux based server. So I'm not sure the cloudflare mod will help us.

I'm still attempting to resolve this, I strongly feel that this issue of all visitor IPs being logged as 0.0.0.0 has something to do with the upgrade. I wish I had taken screenshots of the Forum Firewall visitor log beforehand but had no idea that this would happen.

Any thoughts here? I see some random posts in the SMF community about visitor IPs being 0.0.0.0

margarett

SMF gets the user's IP from $_SERVER superglobal which is, as you might guess, filled by the server.

It either gets an invalid value (eg, unknown IPV6 format) or it comes with 0.0.0.0 already. You might want to upload a test php program that print_r that superglobal and see what's inside
Se forem conduzir, não bebam. Se forem beber... CHAMEM-ME!!!! :D

QuoteOver 90% of all computer problems can be traced back to the interface between the keyboard and the chair

romanos8

I am getting error installing this amazing mod in several of my themes due there is not this code :

echo '
</div>
</div></div>';





This is the current code of my theme:


<?php
/**
 * Simple Machines Forum (SMF)
 *
 * @package SMF
 * @author Simple Machines
 * @copyright 2011 Simple Machines
 * @license http://www.simplemachines.org/about/smf/license.php BSD
 *
 * @version 2.0
 */

/* This template is, perhaps, the most important template in the theme. It
contains the main template layer that displays the header and footer of
the forum, namely with main_above and main_below. It also contains the
menu sub template, which appropriately displays the menu; the init sub
template, which is there to set the theme up; (init can be missing.) and
the linktree sub template, which sorts out the link tree.

The init sub template should load any data and set any hardcoded options.

The main_above sub template is what is shown above the main content, and
should contain anything that should be shown up there.

The main_below sub template, conversely, is shown after the main content.
It should probably contain the copyright statement and some other things.

The linktree sub template should display the link tree, using the data
in the $context['linktree'] variable.

The menu sub template should display all the relevant buttons the user
wants and or needs.

For more information on the templating system, please see the site at:
http://www.simplemachines.org/
*/

// Initialize the template... mainly little settings.
function template_init()
{
global $context$settings$options$txt;

/* Use images from default theme when using templates from the default theme?
if this is 'always', images from the default theme will be used.
if this is 'defaults', images from the default theme will only be used with default templates.
if this is 'never' or isn't set at all, images from the default theme will not be used. */
$settings['use_default_images'] = 'never';

/* What document type definition is being used? (for font size and other issues.)
'xhtml' for an XHTML 1.0 document type definition.
'html' for an HTML 4.01 document type definition. */
$settings['doctype'] = 'xhtml';

/* The version this template/theme is for.
This should probably be the version of SMF it was created for. */
$settings['theme_version'] = '2.0';

/* Set a setting that tells the theme that it can render the tabs. */
$settings['use_tabs'] = true;

/* Define the Theme variants. */
$settings['theme_variants'] = array('blue''red','green','violet''black','skyblue');

/* Use plain buttons - as opposed to text buttons? */
$settings['use_buttons'] = true;

/* Show sticky and lock status separate from topic icons? */
$settings['separate_sticky_lock'] = true;

/* Does this theme use the strict doctype? */
$settings['strict_doctype'] = false;

/* Does this theme use post previews on the message index? */
$settings['message_index_preview'] = false;

/* Set the following variable to true if this theme requires the optional theme strings file to be loaded. */
$settings['require_theme_strings'] = true;
}

// The main sub template above the content.
function template_html_above()
{
global $context$settings$options$scripturl$txt$modSettings;



// Show right to left and the character set for ease of translating.
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"'
$context['right_to_left'] ? ' dir="rtl"' '''>
<head>'
;

// The ?fin20 part of this link is just here to make sure browsers don't cache it wrongly.
echo '
<link rel="stylesheet" type="text/css" href="'
$settings['theme_url'], '/css/index.css?fin20" />
<link rel="stylesheet" type="text/css" href="'
$settings['theme_url'], '/css/index'$context['theme_variant'], '.css?fin20" />';

// Some browsers need an extra stylesheet due to bugs/compatibility issues.
foreach (array('ie7''ie6''webkit') as $cssfix)
if ($context['browser']['is_' $cssfix])
echo '
<link rel="stylesheet" type="text/css" href="'
$settings['default_theme_url'], '/css/'$cssfix'.css" />';

// RTL languages require an additional stylesheet.
if ($context['right_to_left'])
echo '
<link rel="stylesheet" type="text/css" href="'
$settings['theme_url'], '/css/rtl.css" />';

// Here comes the JavaScript bits!
echo '
<script type="text/javascript" src="'
$settings['default_theme_url'], '/scripts/script.js?fin20"></script>
<script type="text/javascript" src="'
$settings['theme_url'], '/scripts/theme.js?fin20"></script>
<script type="text/javascript"><!-- // --><![CDATA[
var smf_theme_url = "'
$settings['theme_url'], '";
var smf_default_theme_url = "'
$settings['default_theme_url'], '";
var smf_images_url = "'
$settings['images_url'], '";
var smf_scripturl = "'
$scripturl'";
var smf_iso_case_folding = '
$context['server']['iso_case_folding'] ? 'true' 'false'';
var smf_charset = "'
$context['character_set'], '";'$context['show_pm_popup'] ? '
var fPmPopup = function ()
{
if (confirm("' 
$txt['show_personal_messages'] . '"))
window.open(smf_prepareScriptUrl(smf_scripturl) + "action=pm");
}
addLoadEvent(fPmPopup);' 
'''
var ajax_notification_text = "'
$txt['ajax_in_progress'], '";
var ajax_notification_cancel_text = "'
$txt['modify_cancel'], '";
// ]]></script>'
;

echo '
<meta http-equiv="Content-Type" content="text/html; charset='
$context['character_set'], '" />
<meta name="description" content="'
$context['page_title_html_safe'], '" />', !empty($context['meta_keywords']) ? '
<meta name="keywords" content="' 
$context['meta_keywords'] . '" />' '''
<title>'
$context['page_title_html_safe'], '</title>';

// Please don't index these Mr Robot.
if (!empty($context['robot_no_index']))
echo '
<meta name="robots" content="noindex" />'
;

// Present a canonical url for search engines to prevent duplicate content in their indices.
if (!empty($context['canonical_url']))
echo '
<link rel="canonical" href="'
$context['canonical_url'], '" />';

// Show all the relative links, such as help, search, contents, and the like.
echo '
<link rel="help" href="'
$scripturl'?action=help" />
<link rel="search" href="'
$scripturl'?action=search" />
<link rel="contents" href="'
$scripturl'" />';

// If RSS feeds are enabled, advertise the presence of one.
if (!empty($modSettings['xmlnews_enable']) && (!empty($modSettings['allow_guestAccess']) || $context['user']['is_logged']))
echo '
<link rel="alternate" type="application/rss+xml" title="'
$context['forum_name_html_safe'], ' - '$txt['rss'], '" href="'$scripturl'?type=rss;action=.xml" />';

// If we're viewing a topic, these should be the previous and next topics, respectively.
if (!empty($context['current_topic']))
echo '
<link rel="prev" href="'
$scripturl'?topic='$context['current_topic'], '.0;prev_next=prev" />
<link rel="next" href="'
$scripturl'?topic='$context['current_topic'], '.0;prev_next=next" />';

// If we're in a board, or a topic for that matter, the index will be the board's index.
if (!empty($context['current_board']))
echo '
<link rel="index" href="'
$scripturl'?board='$context['current_board'], '.0" />';

// jquery social smfsimple
echo '<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
     <script type="text/javascript" src="'
$settings['theme_url'], '/scripts/jquery.share.js"></script>
'
;

// Output any remaining HTML headers. (from mods, maybe?)
echo $context['html_headers'];

echo '
<link rel="stylesheet" type="text/css" href="'
$settings['default_theme_url'], '/css/jquery-ui-1.8.20.custom.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="'
$settings['default_theme_url'], '/scripts/jquery.validate.min.js"></script>
<script type="text/javascript" src="'
$settings['default_theme_url'], '/scripts/jquery-ui-1.8.20.custom.min.js"></script>
</head>
<body>'
;
}

function 
template_body_above()
{
global $context$settings$options$scripturl$txt$modSettings;

// Begin SMFSimple.com header
echo !empty($settings['forum_width']) ? '
<div id="full_header" style="width: ' 
$settings['forum_width'] . '">' '''';

// SMFSimple.com Header Content 
echo '
<div class="ss_content_header">
<div class="ss_logo">
<a href="'
$scripturl'">', empty($context['header_logo_url_html_safe']) ? '<img src="'$settings['theme_url'] .'/images/logo.png" alt="'$context['forum_name'] .'" />' '<img src="' $context['header_logo_url_html_safe'] . '" alt="' $context['forum_name'] . '" />''</a>
</div>
<div align="right" style="padding: 20px 0px;"><div id="mydiv"></div>
<script type="text/javascript">
            $(document).ready(function(){
                $(\'#mydiv\').share({
                    networks: [\'email\',\'facebook\',\'twitter\',\'googleplus\',\'pinterest\',\'tumblr\',\'digg\',\'linkedin\',\'stumbleupon\'],
                    theme: \'square\'
                });
            });
</script></div>
</div>
'
;

echo '
'
, !empty($settings['forum_width']) ? '
</div>' 
'';

// End SMFSimple.com Header

// Begin SMFSimple.com Menu And Search

echo !empty($settings['forum_width']) ? '
<div id="full_menu" style="width: ' 
$settings['forum_width'] . '">' '''';

// Show the menu here, according to the menu sub template.
template_menu();

echo '
'
, !empty($settings['forum_width']) ? '
</div>' 
'';

echo !empty($settings['forum_width']) ? '
<div id="ss_variant_pos" style="width: ' 
$settings['forum_width'] . '">' '''';

if (empty(
$settings['disable_user_variant']))

echo '<div id="ss_variant">',
$txt['firox_change_color'] ,'
<a class="red" href="'
$scripturl'?variant=red" title=""></a>
<a class="blue" href="'
$scripturl'?variant=blue" title=""></a>
<a class="green" href="'
$scripturl'?variant=green" title=""></a>
<a class="black" href="'
$scripturl'?variant=black" title=""></a>
<a class="violet" href="'
$scripturl'?variant=violet" title=""></a>
<a class="skyblue" href="'
$scripturl'?variant=skyblue" title=""></a>
</div>'
;

echo '
'
, !empty($settings['forum_width']) ? '
</div>' 
'';

// End SMFSimple.com Menu And Search

echo !empty($settings['forum_width']) ? '
<div class="wrapper" style="width: ' 
$settings['forum_width'] . '">' '''';

// Show the navigation tree.
theme_linktree();


// The main content should go here.
echo '
<div id="content_section"><div class="frame">
<div id="main_content_section">'
;

// Custom banners and shoutboxes should be placed here, before the linktree.
}

function 
template_body_below()
{
global $context$settings$options$scripturl$txt$modSettings echo base64_decode('CQk8L2Rpdj4NCgk8L2Rpdj48L2Rpdj4NCgkNCgk8ZGl2IGlkPSJmb290ZXJfc2VjdGlvbiI+DQoJCTx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPjx0ZCB3aWR0aD0iNTAlIiBhbGlnbj0ibGVmdCI+PHVsIGNsYXNzPSJyZXNldCI+DQoJCQk8bGkgY2xhc3M9ImNvcHlyaWdodCI+');

echo theme_copyright(), base64_decode('PC9saT4NCgkJPC91bD48L3RkPg0KCQk8dGQgYWxpZ249InJpZ2h0IiB3aWR0aD0iNTAlIj4NCgkJPGEgaHJlZj0iaHR0cDovL3d3dy5zbWZzaW1wbGUuY29tIiB0aXRsZT0iU01GU2ltcGxlLmNvbSBUaGVtZXMgYW5kIE1vZHMiPkZpcm94IE11bHRpY29sb3IgYnkgU01GU2ltcGxlLmNvbTwvYT4NCgkJPC90ZD48L3RyPjwvdGFibGU+DQoJCQ0KCTwvZGl2PjwvZGl2Pg==');

// Copyright SMFSimple.com (Please do not remove)
!empty($debug['copy']['not_remove']);

 !empty($settings['forum_width']) ? '
</div>' 
'';

// Show the load time?
if ($context['show_load_time'])
echo '
<p align="center">'
$txt['page_created'], $context['load_time'], $txt['seconds_with'], $context['load_queries'], $txt['queries'], '</p>';
}

function 
template_html_below()
{
global $context$settings$options$scripturl$txt$modSettings;

echo '
</body></html>'
;
}

// Show a linktree. This is that thing that shows "My Community | General Category | General Discussion"..
function theme_linktree($force_show false)
{
global $context$settings$options$shown_linktree$scripturl;

// If linktree is empty, just return - also allow an override.
if (empty($context['linktree']) || (!empty($context['dont_default_linktree']) && !$force_show))
return;

echo '
<div class="navigate_section">
<ul>
<li class="linktree_ss">
<a href="'
.$scripturl.'" title="home">
<img class="linktree_ss" src="'
.$settings['images_url'].'/theme/home.png" alt="home" />
</a>
</li>'
;

// Each tree item has a URL and name. Some may have extra_before and extra_after.
foreach ($context['linktree'] as $link_num => $tree)
{
echo '
<li'
, ($link_num == count($context['linktree']) - 1) ? ' class="last"' '''>';

// Show something before the link?
if (isset($tree['extra_before']))
echo $tree['extra_before'];

// Show the link, including a URL if it should have one.
echo $settings['linktree_link'] && isset($tree['url']) ? '
<a href="' 
$tree['url'] . '"><span>' $tree['name'] . '</span></a>' '<span>' $tree['name'] . '</span>';

// Show something after the link...?
if (isset($tree['extra_after']))
echo $tree['extra_after'];

echo '
</li>'
;
}
echo '
</ul>
</div>'
;

$shown_linktree true;
}

// Show the menu up top. Something like [home] [help] [profile] [logout]...
function template_menu()
{
global $context$settings$options$scripturl$txt;

echo '
<div id="main_menu">
<table width="100%"><tr>
<td class="ss_menu_pad">
<ul class="dropmenu" id="menu_nav">'
;

foreach ($context['menu_buttons'] as $act => $button)
{
echo '
<li id="button_'
$act'">
<a class="'
$button['active_button'] ? 'active ' '''firstlevel" href="'$button['href'], '"', isset($button['target']) ? ' target="' $button['target'] . '"' '''>
<span class="'
, isset($button['is_last']) ? 'last ' '''firstlevel">'$button['title'], '</span>
</a>'
;
if (!empty($button['sub_buttons']))
{
echo '
<ul>'
;

foreach ($button['sub_buttons'] as $childbutton)
{
echo '
<li>
<a href="'
$childbutton['href'], '"', isset($childbutton['target']) ? ' target="' $childbutton['target'] . '"' '''>
<span'
, isset($childbutton['is_last']) ? ' class="last"' '''>'$childbutton['title'], !empty($childbutton['sub_buttons']) ? '...' '''</span>
</a>'
;
// 3rd level menus :)
if (!empty($childbutton['sub_buttons']))
{
echo '
<ul>'
;

foreach ($childbutton['sub_buttons'] as $grandchildbutton)
echo '
<li>
<a href="'
$grandchildbutton['href'], '"', isset($grandchildbutton['target']) ? ' target="' $grandchildbutton['target'] . '"' '''>
<span'
, isset($grandchildbutton['is_last']) ? ' class="last"' '''>'$grandchildbutton['title'], '</span>
</a>
</li>'
;

echo '
</ul>'
;
}

echo '
</li>'
;
}
echo '
</ul>'
;
}
echo '
</li>'
;
}

echo '
</ul></td>
<td class="ss_search_pad">
<div align="right">
<form id="search" action="'
$scripturl'?action=search2" method="post" accept-charset="'$context['character_set'], '">
<input type="text" name="search" value="" class="input_text" />&nbsp;
<input type="hidden" name="advanced" value="0" />'
;

// Search within current topic?
if (!empty($context['current_topic']))
echo '
<input type="hidden" name="topic" value="'
$context['current_topic'], '" />';
// If we're on a certain board, limit it to this board ;).
elseif (!empty($context['current_board']))
echo '
<input type="hidden" name="brd['
$context['current_board'], ']" value="'$context['current_board'], '" />';

  echo  '</form>
</div></td>
</tr></table>
</div>'
;
}

// Generate a strip of buttons.
function template_button_strip($button_strip$direction 'top'$strip_options = array())
{
global $settings$context$txt$scripturl;

if (!is_array($strip_options))
$strip_options = array();

// List the buttons in reverse order for RTL languages.
if ($context['right_to_left'])
$button_strip array_reverse($button_striptrue);

// Create the buttons...
$buttons = array();
foreach ($button_strip as $key => $value)
{
if (!isset($value['test']) || !empty($context[$value['test']]))
$buttons[] = '
<li><a' 
. (isset($value['id']) ? ' id="button_strip_' $value['id'] . '"' '') . ' class="button_strip_' $key . (isset($value['active']) ? ' active' '') . '" href="' $value['url'] . '"' . (isset($value['custom']) ? ' ' $value['custom'] : '') . '><span>' $txt[$value['text']] . '</span></a></li>';
}

// No buttons? No button strip either.
if (empty($buttons))
return;

// Make the last one, as easy as possible.
$buttons[count($buttons) - 1] = str_replace('<span>''<span class="last">'$buttons[count($buttons) - 1]);

echo '
<div class="buttonlist'
, !empty($direction) ? ' float' $direction '''"', (empty($buttons) ? ' style="display: none;"' ''), (!empty($strip_options['id']) ? ' id="' $strip_options['id'] . '"'''), '>
<ul>'
,
implode(''$buttons), '
</ul>
</div>'
;
}

?>





Where I have to add this code? :


echo '
</div>
</div></div>';

if (!function_exists('FFCopyright')) {
global $sourcedir;
require_once($sourcedir . '/Subs-ForumFirewall.php'); }

butchs

You can try adding

   if (!function_exists('FFCopyright')) {
global $sourcedir;
require_once($sourcedir . '/Subs-ForumFirewall.php'); }


Just before

echo theme_copyright(),

Please note that I did not test it...  You need ot research how to modify custom themes.  There were posts in this thread for helper apps.
I have been truly inspired by the SUGGESTIONS as I sit on my throne and contemplate the wisdom imposed upon me.

romanos8

Quote from: butchs on September 04, 2015, 08:56:22 PM
You can try adding

   if (!function_exists('FFCopyright')) {
global $sourcedir;
require_once($sourcedir . '/Subs-ForumFirewall.php'); }


Just before

echo theme_copyright(),

Please note that I did not test it...  You need ot research how to modify custom themes.  There were posts in this thread for helper apps.


Great. Now the mod is installed and working but the mod shows all IPs as 0.0.0.0 so it is blocking all users even to me. Please help.


Invalid ip: Repeated!


When I select the option to block DOS attacks then the mod blocked me :(.


Please check the attachment , this is my configuration .


Thanks for your help.

butchs

Check out this thread just a few posts above.  Plus read the few posts before it.  You should fix it before going live.

Here is how to adjust DOS protection.

The Mod includes code an installDB.php that automatically fills your database and robots.txt info in the mod settings.  You should manually run it if you manually install the mod or run it in package manager when you change or install a new robots file.
I have been truly inspired by the SUGGESTIONS as I sit on my throne and contemplate the wisdom imposed upon me.

llmfit

I'm confused. I'm not sure that this mod should do what i want.

When my forum was not under cloudflare i used a mod (that i not remember) that blocks registration based on country-code: in admin panel i could choose which regions enable to register. I think the mod was http://www.simplemachines.org/community/index.php?topic=355275.0 but i remember that i downloaded from custom mod. But now my forum is under cloudflare and i deleted the mod because become useless.

Now, that i'm under cloudflare, i need something like that and i'm not sure your mod fit my needs. I want only allow registration from ITALY, SPAIN, FRANCE. The others can view the forum only as guest! I read that your mod is compatible with cloudflare. Can i set up your mod to do this?

butchs

Yes this mod can block countries using cloudflare.  I do it all the time.

By the way cloudflare allows country blocking in the system.  It should be your first line of defense.  However, I noticed a while back that someone times things slip past cloudflare.  This mod can be used for these stragglers.

It will block by other means depending on your host.
I have been truly inspired by the SUGGESTIONS as I sit on my throne and contemplate the wisdom imposed upon me.

Ken.

SMF 2.0.11

The package is not staying in my Package Manager.

When the package is uploaded it appears to upload OK and there is the link to install it, but when you click the link it's no longer there. I tried using my ftp to do the upload and the package did upload and appear in the Package Manager, but disappeared from the P-M after 2-3 seconds.

As a test I uploaded a different package (Anti Bot) and it worked as expected.
"If you don't have a stack of failures in your shop, you aren't trying hard enough". --Richard Raffin.


Kindred

That sounds like your HOST may have some automated process which is removing the file.
Слaва
Украинi

Please do not PM, IM or Email me with support questions.  You will get better and faster responses in the support boards.  Thank you.

"Loki is not evil, although he is certainly not a force for good. Loki is... complicated."

Ken.

OK, thanks... I'll check that.
"If you don't have a stack of failures in your shop, you aren't trying hard enough". --Richard Raffin.


butchs

I have been truly inspired by the SUGGESTIONS as I sit on my throne and contemplate the wisdom imposed upon me.

Ken.

Thanks, I've placed a support ticket with my host.
"If you don't have a stack of failures in your shop, you aren't trying hard enough". --Richard Raffin.


leemg

one small error in own theme but difficult to manual edit.

looking through index.template there is over 30 instances of <div> and none that matches the whole string so i can add the new code.

Any help appreciated :-/


Kindred

it would probably be down near the SMF copyright
Слaва
Украинi

Please do not PM, IM or Email me with support questions.  You will get better and faster responses in the support boards.  Thank you.

"Loki is not evil, although he is certainly not a force for good. Loki is... complicated."

leemg

Thanks for the quick reply.

i think i know where it goes now but just not sure.

butchs

You do not have the right to remove that copyright unless you provide a donation.
I have been truly inspired by the SUGGESTIONS as I sit on my throne and contemplate the wisdom imposed upon me.

Advertisement: