Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 2.x > vBulletin 2.x Beta Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Details »»

Version: 1.00, by intellected intellected is offline
Developer Last Online: Apr 2002 Show Printable Version Email this Page

Version: 2.2.x Rating:
Released: 02-21-2002 Last Update: Never Installs: 9
Is in Beta Stage  
No support by the author.

UPDATED!!! AGAIN!

This is a more effective solution than the standard "ban", and is meant to be used for very annoying troublemakers that keeps re-registering once banned. Anyway - once a user is placed under the "Hellban", the following happens:

1. Every 3:d time the user tries to load a page, he is greeted with a fake "500 Internal Server Error" message.

2. Nobody but moderators and the user himself can see his posts. He is, essentially, under a site-wide ignore.

This may not be a 100% fail-safe solution, but a lot of the morons will hopefully get tired and go away.

Here is how it's done:

1. Run the following query on your database:

INSERT INTO usergroup VALUES("666","Hellban","","0","1","1","1","1","0", "1","0","0","0","1","1","1","1","0","0","1","1","1 ","0","0","1","0","0","0","0","0","0","0","0","1") ;
ALTER TABLE post ADD hellban INT UNSIGNED;
ALTER TABLE thread ADD hellban INT UNSIGNED;

2. Add this at the bottom of you global.php
PHP Code:
if ($bbuserinfo[usergroupid] == 666) {
  
  
$randnum mt_rand(1,3);
  if (
$randnum == 1) {
    
header("HTTP/1.0 500 Internal Server Error");
    exit;
  }   


3. Find this in newreply.php:
PHP Code:
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($title))."','".addslashes(htmlspecialchars($postusername))."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','$visible')"); 
REPLACE it with this:

PHP Code:
if ($bbuserinfo[usergroup] == 666) {
  
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible,hellban) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($title))."','".addslashes(htmlspecialchars($postusername))."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','$visible','$bbuserinfo[userid]')");
} else {
  
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($title))."','".addslashes(htmlspecialchars($postusername))."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','$visible')");

4. find this in newthread.php

PHP Code:
$DB_site->query("INSERT INTO thread (threadid,title,lastpost,forumid,open,replycount,postusername,postuserid,lastposter,dateline,iconid,visible,attach) VALUES (NULL,'".addslashes(htmlspecialchars($subject))."','".time()."','$forumid','1','0','".addslashes($postusername)."','$bbuserinfo[userid]','".addslashes($postusername)."','".time()."','$iconid','$visible','$attachcount')"); 
PHP Code:
if ($bbuserinfo[usergroup] == 666) {
  
$DB_site->query("INSERT INTO thread (threadid,title,lastpost,forumid,open,replycount,postusername,postuserid,lastposter,dateline,iconid,visible,attach,hellban) VALUES (NULL,'".addslashes(htmlspecialchars($subject))."','".time()."','$forumid','1','0','".addslashes($postusername)."','$bbuserinfo[userid]','".addslashes($postusername)."','".time()."','$iconid','$visible','$attachcount','$bbuserinfo[userid]')");
} else {
  
$DB_site->query("INSERT INTO thread (threadid,title,lastpost,forumid,open,replycount,postusername,postuserid,lastposter,dateline,iconid,visible,attach) VALUES (NULL,'".addslashes(htmlspecialchars($subject))."','".time()."','$forumid','1','0','".addslashes($postusername)."','$bbuserinfo[userid]','".addslashes($postusername)."','".time()."','$iconid','$visible','$attachcount')"); 

in that file, also find this:

PHP Code:
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($subject))."','".addslashes($postusername)."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','1')"); 
PHP Code:
if ($bbuserinfo[usergroup] == 666) {
  
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible,hellban) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($subject))."','".addslashes($postusername)."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','1','$bbuserinfo[userid]')");
} else {
  
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($subject))."','".addslashes($postusername)."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','1')");

After that, find this:

PHP Code:
if ($visible==1) {
        
$DB_site->query("UPDATE forum SET replycount=replycount+1,threadcount=threadcount+1,lastpost='".time()."',lastposter='".addslashes($postusername)."' WHERE forumid IN ($foruminfo[parentlist])");

and replace with this:

PHP Code:
if ($visible==&& $bbuserinfo[usergroup] != 666) {
  
$DB_site->query("UPDATE forum SET replycount=replycount+1,threadcount=threadcount+1,lastpost='".time()."',lastposter='".addslashes($postusername)."' WHERE forumid IN ($foruminfo[parentlist])");

I showthread.php, find this:
PHP Code:
  $getpostids=$DB_site->query(
    SELECT post.postid FROM post
    WHERE post.threadid='
$threadid' AND post.visible=1 
    ORDER BY dateline 
$postorder LIMIT ".($limitlower-1).",$perpage 
  "
); 
Replace with this:

PHP Code:
if ($bbuserinfo[usergroupid] == 666 || ismoderator($forumid)) {
  
  
$getpostids=$DB_site->query(
    SELECT post.postid FROM post
    WHERE post.threadid='
$threadid' AND post.visible=1 AND post.hellban = '$bbuserinfo[userid]'
    ORDER BY dateline 
$postorder LIMIT ".($limitlower-1).",$perpage 
  "
);  
  
} else {

$getpostids=$DB_site->query(
    SELECT post.postid FROM post
    WHERE post.threadid='
$threadid' AND post.visible=1 AND post.hellban = NULL
    ORDER BY dateline 
$postorder LIMIT ".($limitlower-1).",$perpage 
"
);


in forumdisplay.php, find this:

PHP Code:
    $getthreadids=$DB_site->query("
    SELECT
    "
.iif($sortfield=="voteavg",$votequery,"")."
        thread.threadid
    FROM thread
    WHERE thread.forumid = 
$foruminfo[forumid]
        AND thread.sticky=0
        AND thread.visible=1
    
$datecut
    
$limitothers
      ORDER BY sticky DESC, 
$sortfield $sqlsortorder
      LIMIT "
.($sel_limitlower-1).",$perpage"); 
Replace that with this:

PHP Code:
if ($bbuserinfo[usergroup] == 666) {
  
$getthreadids=$DB_site->query("
    SELECT
    "
.iif($sortfield=="voteavg",$votequery,"")."
        thread.threadid
    FROM thread
    WHERE thread.forumid = 
$foruminfo[forumid]
        AND thread.sticky=0
        AND thread.visible=1
        AND thread.hellban = NULL
        AND thread.hellban = '
$bbuserinfo[userid]'
    
$datecut
    
$limitothers
      ORDER BY sticky DESC, 
$sortfield $sqlsortorder
      LIMIT "
.($sel_limitlower-1).",$perpage");
      
} else {
  
    
$getthreadids=$DB_site->query("
    SELECT
    "
.iif($sortfield=="voteavg",$votequery,"")."
        thread.threadid
    FROM thread
    WHERE thread.forumid = 
$foruminfo[forumid]
        AND thread.sticky=0
        AND thread.visible=1
    
$datecut
    
$limitothers
      ORDER BY sticky DESC, 
$sortfield $sqlsortorder
      LIMIT "
.($sel_limitlower-1).",$perpage");
  

Now, whenever you want to get rid of a user, simply set him or her to usergroup Hellban.

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2  
Old 02-22-2002, 01:42 AM
Sharp Sharp is offline
 
Join Date: Dec 2001
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Interesting.... Might check it out sometime....
Reply With Quote
  #3  
Old 02-22-2002, 01:53 AM
BigJohnson BigJohnson is offline
 
Join Date: Nov 2001
Posts: 535
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

nice thanx
Reply With Quote
  #4  
Old 02-22-2002, 03:31 AM
SaintDog SaintDog is offline
 
Join Date: Nov 2001
Location: Tennessee
Posts: 1,975
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I may install this for those users that keep registering multiple names even though they were asked nicely not to register more than once - That will teach them to listen

SaintDog
Reply With Quote
  #5  
Old 02-22-2002, 05:05 AM
Arathorn Arathorn is offline
 
Join Date: Nov 2001
Posts: 52
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Just to be clear, this hack basically puts a certain username in torture mode. Instead of banning him, you let him in and toy with him. But what's to prevent the user from re-registering yet again and escaping the hellban? Or does this hack somehow detect that?
Reply With Quote
  #6  
Old 02-22-2002, 11:54 AM
intellected intellected is offline
 
Join Date: Dec 2001
Posts: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by Arathorn
Just to be clear, this hack basically puts a certain username in torture mode. Instead of banning him, you let him in and toy with him. But what's to prevent the user from re-registering yet again and escaping the hellban? Or does this hack somehow detect that?
He hack is meant for the idiots that just keep re-registering even though they are banned over and over again due to their idiotic behavior. Toying or torture has nothing to do with it.

There is nothing to prevent the user from re-registering, and I don't think there ever will be, as the use can just delete the vbulletin cookie, EXCEPT for the fact that he might not be aware of hellban, unlike the standard ban.

This hack is meant to be silent (i.e. the banned used is unaware of it), and only meant for extreme troublemakers. It's meant to make terrorizing the forums a much less pleasureable experience (i.e. annoying error messages and no responses to his flamebaits). Some may discover that they are being fooled, but some (hopefully) will simply be bored and walk away.
Reply With Quote
  #7  
Old 02-24-2002, 07:03 AM
Overgrow's Avatar
Overgrow Overgrow is offline
 
Join Date: Nov 2001
Posts: 320
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I like this, except for the JOIN on the table that it adds with every showthread. Maybe a more efficient solution would be to modify newreply and newthread so that whenever a 666-user posts, it is automatically made visible=0? Or would that put it in the moderation queue...

Have you run this on a sizeable board and is there much of a hit with the join?
Reply With Quote
  #8  
Old 02-24-2002, 10:32 AM
intellected intellected is offline
 
Join Date: Dec 2001
Posts: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by Overgrow
I like this, except for the JOIN on the table that it adds with every showthread. Maybe a more efficient solution would be to modify newreply and newthread so that whenever a 666-user posts, it is automatically made visible=0? Or would that put it in the moderation queue...

Have you run this on a sizeable board and is there much of a hit with the join?
I don't know much about database performance - are joins that heavy? You solution would be better performance-wise, but it would take away the advantage of the user seeing his own posts. If they were invisible, he/she would probably get suspicious.

The solution would be to add a "hellban" column to the post table... I'll see what I can do.
Reply With Quote
  #9  
Old 02-24-2002, 10:41 AM
Admin's Avatar
Admin Admin is offline
Coder
 
Join Date: Oct 2023
Location: Server
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Joins are heavy on the database when they are done on large tables... post and user are 2 of the biggest tables in vB, so it should make things slower.

Adding a hellban flag to the post table would be ok, but bear in mind that even if you take a user out of that usergroup his older posts will still remain hidden.
Reply With Quote
  #10  
Old 02-24-2002, 10:49 AM
intellected intellected is offline
 
Join Date: Dec 2001
Posts: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by FireFly
Joins are heavy on the database when they are done on large tables... post and user are 2 of the biggest tables in vB, so it should make things slower.

Adding a hellban flag to the post table would be ok, but bear in mind that even if you take a user out of that usergroup his older posts will still remain hidden.

Oh yes - I guess that makes sense. And so I have learned another thing! leased:

As for the remain-hidden issue, the only solution I can think of is to add a little admin interface for it, but it seems overkill, as this is pretty much a last-resort-ban.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 07:55 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05628 seconds
  • Memory Usage 2,382KB
  • Queries Executed 23 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (13)bbcode_php
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (9)postbit
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete