There's a dutch language pack for 1.3.x here. Try using that first, and then fill in what's missing if need be...
(I used a german 1.3 translation on a 1.4.1 board and haven't noticed anything missing except in the admin section)
You are not logged in. Please login or register.
PunBB Forums → Posts by KeyDog
There's a dutch language pack for 1.3.x here. Try using that first, and then fill in what's missing if need be...
(I used a german 1.3 translation on a 1.4.1 board and haven't noticed anything missing except in the admin section)
I realized that the URL doesn't have to be community.com/username because community.com/id also works.
So I ended up using mod rewrite in .htaccess located in /forum. Works perfectly..
RewriteCond %{QUERY_STRING} ^id=([0-9]*)$
RewriteRule ^profile\.php$ http://community.com/%1 [R=302,L]I can still use direct links to see all posts and topics by a user, like this: community.com/forum/search.php?action=show_user_posts&user_id=id
Good stuff, thanks for the update....
It was standard in orginal extension, but users get pissed if they have to enter captchas on every post....
And how would you moderate your users, if you can't reach their profile be clicking on their username?
Would the links to mysite.com/username allways be on the same domain (your cms) or every user has link to different domains?
Instruction:
If you have a persistent spammer who keeps posting spam links send me the whole code block (retrieved by 'edit' function) of the post/s to keydog@keydogbb.info and - depending on further occurences found in the web - it will be added to the database.
Started updating to include 1.4 Extensions
http://punbb.informer.com/forums/topic/ … ew-window/
just open manifest.xml in editor - change maxtested to 1.4.1 and see if it works...
and let us know ... thanks!
URL Checker
Download Release 0.5.2 (DB @ http://keydogbb.info)
Download Release 0.5.3 (DB @ http://url-checker.org)
This extension queries an online database of URLs used by spammers. Currently in use on a forum with 20k users.
<extension engine="1.0">
<id>url_spam</id>
<title>Disallowing spammers urls</title>
<version>0.5.2</version>
<description>Disallows users to use urls that are used by spammers and delete users which try to use these urls if they have less then 5 posts.</description>
<author>Grez & KeyDog</author>
<minversion>1.3.4</minversion>
<maxtestedon>1.4.1</maxtestedon>
<install>
<![CDATA[
if (!$forum_db->table_exists('url_spam'))
{
$schema = array(
'FIELDS' => array(
'user_id' => array(
'datatype' => 'int(7)',
'allow_null' => false
),
'ip' => array(
'datatype' => 'VARCHAR(15)',
'allow_null' => false,
'default' => '\'0.0.0.0\'',
),
'url' => array(
'datatype' => 'VARCHAR(150)',
'allow_null' => true,
'default' => '\'\''
),
'time' => array(
'datatype' => 'DATETIME',
'allow_null' => false
),
'type' => array(
'datatype' => 'VARCHAR(4)',
'allow_null' => false
),
),
'PRIMARY KEY' => array('url', 'type')
);
$forum_db->create_table('url_spam', $schema);
}
]]>
</install>
<uninstall>
<![CDATA[
$forum_db->drop_table('url_spam');
]]>
</uninstall>
<hooks>
<hook id="po_end_validation"><![CDATA[
if(!isset($_POST['preview'])) {
function urlcheck($url, &$errors, $text = "") {
global $ext_info, $forum_user, $forum_db, $forum_url;
$query = 'http://www.keydogbb.info/url_spam.php?url='.urlencode($url);
$remote_file = get_remote_file($query, 3);
if($remote_file['content'] == "Y") {
if (file_exists($ext_info['path'].'/lang/'.$forum_user['language'].'/'.$ext_info['id'].'.php'))
include $ext_info['path'].'/lang/'.$forum_user['language'].'/'.$ext_info['id'].'.php';
else
include $ext_info['path'].'/lang/English/'.$ext_info['id'].'.php';
$query = array(
'SELECT' => 'url',
'FROM' => 'url_spam',
'WHERE' => 'url = \''.$url.'\' AND type = \'post\''
);
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
if($forum_db->num_rows($result) == 0) {
$query = array(
'INSERT' => 'user_id, ip, url, time, type',
'INTO' => 'url_spam',
'VALUES' => '\''.$forum_user['id'].'\', \''.get_remote_address().'\', \''.$url.'\', NOW(), \'post\''
);
$forum_db->query_build($query) or error(__FILE__, __LINE__);
}
if($forum_user['num_posts'] < 5 && $forum_user['group_id'] != 2) {
delete_user($forum_user['id'], true);
message($lang_url_spam['User deleted']);
} else {
$errors[] = sprintf($lang_url_spam['URL disallowed'], $url, $url);
}
} else {
$url = str_replace('"', '', $url);
}
if(!empty($text)) {
return '[url='.$url.']'.$text.'[/url]';
} else {
return '[url]'.$url.'[/url]';
}
}
$pattern = array();
$pattern[] = '#\[url\]([^\[]*?)\[/url\]#e';
$pattern[] = '#\[url=([^\[]+?)\](.*?)\[/url\]#e';
$replace = array();
$replace[] = 'urlcheck(\'$1\', $errors)';
$replace[] = 'urlcheck(\'$1\', $errors, \'$2\')';
$message = preg_replace($pattern, $replace, $message);
}
]]></hook>
<hook id="pf_change_details_signature_validation"><![CDATA[
$pattern = array();
$pattern[] = '#\[url\]([^\[]*?)\[/url\]#e';
$pattern[] = '#\[url=([^\[]+?)\](.*?)\[/url\]#e';
$replace = array();
$replace[] = 'urlcheck(\'$1\', $errors)';
$replace[] = 'urlcheck(\'$1\', $errors, \'$2\')';
if ($forum_config['o_make_links'] == '1')
{
if (!defined('FORUM_PARSER_LOADED')) {
require FORUM_ROOT.'include/parser.php';
}
$_POST['signature'] = do_clickable($_POST['signature']);
}
$_POST['signature'] = preg_replace($pattern, $replace, $_POST['signature']);
function urlcheck($url, &$errors, $text = "") {
global $ext_info, $forum_user, $forum_db, $forum_url;
$query = 'http://www.keydogbb.info/url_spam.php?url='.urlencode($url);
$remote_file = get_remote_file($query, 3);
if($remote_file['content'] == "Y") {
if (file_exists($ext_info['path'].'/lang/'.$forum_user['language'].'/'.$ext_info['id'].'.php'))
include $ext_info['path'].'/lang/'.$forum_user['language'].'/'.$ext_info['id'].'.php';
else
include $ext_info['path'].'/lang/English/'.$ext_info['id'].'.php';
$query = array(
'SELECT' => 'url',
'FROM' => 'url_spam',
'WHERE' => 'url = \''.$url.'\' AND type = \'sig\''
);
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
if($forum_db->num_rows($result) == 0) {
$query = array(
'INSERT' => 'user_id, ip, url, time, type',
'INTO' => 'url_spam',
'VALUES' => '\''.$forum_user['id'].'\', \''.get_remote_address().'\', \''.$url.'\', NOW(), \'sig\''
);
$forum_db->query_build($query) or error(__FILE__, __LINE__);
}
if($forum_user['num_posts'] < 5 && $forum_user['group_id'] != 2) {
delete_user($forum_user['id'], true);
message($lang_url_spam['User deleted']);
} else {
$errors[] = sprintf($lang_url_spam['URL disallowed'], $url, $url);
}
} else {
$url = str_replace('"', '', $url);
}
if(!empty($text)) {
return '[url='.$url.']'.$text.'[/url]';
} else {
return '[url]'.$url.'[/url]';
}
}
]]></hook>
<hook id="ain_items_end"><![CDATA[
?>
<div class="ct-set group-item<?php echo ++$forum_page['item_count'] ?>">
<div class="ct-box">
<h3 class="ct-legend hn"><span>URL spam checker</span></h3>
<ul class="data-list">
<?php
$query = array(
'SELECT' => 'us.user_id, u.username, us.ip, us.url, DATE_FORMAT(us.time, \'%Y-%m-%d %H:%i:%s\') AS date, us.type',
'FROM' => 'url_spam AS us',
'JOINS' => array(
array(
'LEFT JOIN' => 'users AS u',
'ON' => 'u.id = us.user_id',
),
),
'ORDER BY' => 'time DESC',
'LIMIT' => '50',
);
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
?>
<li><table>
<tr><th style="width: 70px;">User</th><th style="width: 120px;">IP</th><th style="width: 200px;">URL</th><th style="width: 100px;">Date</th><th style="width: 50px;">Type</th></tr>
<?php
while($spam = $forum_db->fetch_assoc($result)) {
echo "<tr>";
echo "<td><small>".((!empty($spam['username'])) ? "<a href=\"".forum_link($forum_url['user'], $spam['user_id'])."\">".forum_htmlencode($spam['username'])."</a>" : "DELETED")."</small></td>";
echo "<td><small>".$spam['ip']."</small></td>";
echo "<td><small>".$spam['url']."</small></td>";
echo "<td><small>".$spam['date']."</small></td>";
echo "<td><small>".$spam['type']."</small></td>";
echo "</tr>";
}
?>
</table>
<center><small><i>Last 25 entries. Ordered by date.</i></small></center></li>
</ul>
</div>
</div>
<?php
]]></hooks>
</extension>
Hide Currently Installed
Release 0.5.2
Extension to hide the list of currently installed extensions.
Example: Can be useful for hiding unofficial extensions that may have security holes
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">
<extension engine="1.0">
<id>hide_currently_installed</id>
<title>Hide Currently Installed</title>
<version>0.5.2</version>
<description>Hide Currently Installed</description>
<author>KeyDog</author>
<minversion>1.3</minversion>
<maxtestedon>1.4.1</maxtestedon>
<hooks>
<hook id="co_common"><![CDATA[
$pun_extensions_used = array_merge(isset($pun_extensions_used) ? $pun_extensions_used : array(), array($ext_info['id']));
]]></hook>
<hook id="ft_about_end" priority="1"><![CDATA[
if (!defined('PUN_EXTENSIONS_USED') && !empty($pun_extensions_used))
{
define('PUN_EXTENSIONS_USED', 1);
if (count($pun_extensions_used) == 1)
echo '<p style="clear: both; "></a>.</p>';
else
echo '<p style="clear: both; "></a></p>';
}
]]></hook>
</hooks>
</extension>
Just tested this extension on PunBB 1.4.1.
Seems to be working.
If anyone else can confirm?
Code here:
http://pastebin.com/3gE5w1Fu
Justice, I can confirm this extension works on PunBB 1.4.1.
<id>sfs_antispam</id>
<title>SFS Antispam</title>
<version>1.4.1</version>
<description>Prevents known spammers from registering.</description>
<author>Justice</author>
<minversion>1.3</minversion>
<maxtestedon>1.4.1</maxtestedon>
Try:
reuploading the extension to it's original location
clear cache (in admin extensions section )
uninstall via admin
clear cache
delete the extension from server if successful...
Did you delete the extension before uninstalling it via the admin interface?
Ok, It's been tested now. When you have a chance you can put max. test version 1.4.1 in manifest....
A very effective extension...
It would be good if the pun_repository for downloading, updating extensions in 1.4.1 was in the download - would save time ....
Nice work,
just small thing:
I just try installing this extension on a 1.4.1. board and I get warning it hasn't been tested ....
This extension has not been supported for many months.
If any other extension developer wants to improve and re-relase: feel free....
How can the reporting back of a person listed by their own service be an "innocent" person if they've already been reported to SFS and the person reporting back is using SFS's own database?
I agree with that logic, the chances of same username with same ip confirmed as spammer 1 month ago at forum x being innocent on forum y today are negligible... but as Justice states can't fight their ToS, maybe just draw their attention to the illogical part...
One can't put too much confidence in the whole sfs system anyway as some spammers have moved a step ahead:
People can set up xrumer et al to change username on each and every registration - if I report user ramadan1 with IP xxx.xxx.xxx.101 and 1 second later user ramadan2 registers on your forum with same IP he'll slip through and post the spam/link etc. The only things that mostly stays the same is the evidence (URL link).... [That's why I'd though of the URL checking system... but that has flaws too] Considering blocks of 10k "clean" IPs are purchased and the name generator does the above... the task turns neverending...
A blocked registration cannot be qualified as spamming, regardless of whether or not their IP address or email address is listed in the StopForumSpam database.
The problem with that: If a spammer is human or not hitting a honeypot, he'll only have 1-2 entries in the sfs db. Some people have code rules to require a minimum of 3-5 entries to block a spammer. If you have IP and email of a known spammer, he's a nuisance/danger for your site. The quality and certainty regarding spammers would increase if they were reported, imo.
Your efforts are appreciated !
Just wanted to hear a bit more. Sounds interesting and in the interest of spam fighting.
PS: You might consider adding your rules , integrating them into the SFS Antispam extension by Justice - as a double check would be even better for the community (IMO... just a thought)
Thanks,
but it would be better if you looked at the sfs antispam and stopforumspam.com extensions and integrated it that way
PunBB 1.3 is about NOT manually changing source code but doing it through extensions
Also, I don't believe the site you're recommending stoparticlespam has an especially good standing in the community - or how would you differentiate yourself from stopforumspam or botscout ?
Great added features
One thing that might be of value: instead of admin getting info of blocked spammers
-->
1. directly report the spammers to the sfs database so that it's really up to date....
and
2. log the attempts stats in the admin section of the board
Thanks again...
Brilliant.
Hope to have it installed here soon....
PunBB Forums → Posts by KeyDog
Powered by PunBB, supported by Informer Technologies, Inc.