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)

152

(9 replies, posted in Discussions)

HighContrast wrote:

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....

153

(9 replies, posted in Discussions)

Okay thanks,

Did you check this post

Try and contact pepak

Let us know how and if you get along...

154

(31 replies, posted in Discussions)

It was standard in orginal extension, but users get pissed if they have to enter captchas on every post....

155

(9 replies, posted in Discussions)

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?

156

(4 replies, posted in PunBB 1.4 additions)

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.

157

(32 replies, posted in PunBB 1.3 extensions)

Started updating to include 1.4 Extensions

http://keydogbb.info/img/directory.png

158

(4 replies, posted in PunBB 1.4 troubleshooting)

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!

159

(4 replies, posted in PunBB 1.4 additions)

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.


http://keydogbb.info/img/urlchecker.png

<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 &amp; 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

Download (Mediafire)

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

162

(52 replies, posted in PunBB 1.3 extensions)

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?

165

(115 replies, posted in Supported extensions)

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...

166

(0 replies, posted in PunBB 1.4 bug reports)

It would be good if the  pun_repository for downloading, updating extensions in 1.4.1 was in the download - would save time ....

167

(115 replies, posted in Supported extensions)

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 ....

168

(170 replies, posted in PunBB 1.3 extensions)

This extension has not been supported for many months.
If any other extension developer wants to improve and re-relase: feel free....

169

(3 replies, posted in General discussion)

pain in the eyes....

170

(52 replies, posted in PunBB 1.3 extensions)

JanMichaels wrote:

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...

171

(52 replies, posted in PunBB 1.3 extensions)

Justice wrote:

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.

172

(4 replies, posted in PunBB 1.3 additions)

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)

173

(4 replies, posted in PunBB 1.3 additions)

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 ?

174

(52 replies, posted in PunBB 1.3 extensions)

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...

175

(52 replies, posted in PunBB 1.3 extensions)

Brilliant.
Hope to have it installed here soon....