[INACTIVE][SEC] BigBrother 1.7.1: A Complete Griefer Logging + Rollback Package [531]

Discussion in 'Inactive/Unsupported Plugins' started by tkelly, Jan 5, 2011.

Thread Status:
Not open for further replies.
     
  1. Offline

    tkelly

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    BigBrotherv1.7.1
    irc.esper.net #BigBrother
    LATEST 617+-COMPATIBLE SNAPSHOT HERE

    What is BigBrother?
    BigBrother is a powerful weapon in the war against griefers, and this particular tool has the ability to log and rollback every individual change a griefer has done via a large, all-knowing database that logs every action a user has taken. It gives you the utilities to inspect the world around you and determine who made what change, so you can catch the griefer every time. You can go here for more information, but here's a few examples:
    1. Log players' block destruction, placement, chats, commands, and so much more
    2. When chests are destroyed, their contents are logged
    3. Log blocks destroyed by TNT and Creeper Explosions and Fires
    4. Inspect missing blocks, opened chests using a variety of tools
    5. Rollback all changes to exactly as they were
    6. Rollback by player, time, area, and block type

    I want a full list of what it logs.
    Okay. Here it goes:
    Broken blocks, placed blocks, destroyed signs' text, teleportation, changes in chest contents, commands, chats, disconnects, logins (with IP address), opening doors, pushing buttons, lever switches, created signs' text, leaf decay, TNT explosions, Creeper explosions, miscellaneous explosions, the opening of chests, burnt blocks, and lava flow.
    I'll admit, this list is pretty small (only 20 things). But with every update of BB, this list grows to allow you to log or not log anything you could want.

    That's a nice list, but what can I really do with BB?
    I'll give you a few scenarios in which BB can really come to the rescue.
    1. Complete Grief Rollback: A griefer, meanieguy, comes and starts griefing away when your admins are away. And when I say grief, I mean grief. He gets his hands on buckets of lava, TNT, and goes to town. By the time an admin gets back on, meanieguy and half of your town is gone. The admin can quickly and easily identify that meanieguy was the crook using /bb here or the SuperSticks. After that, all he has to do is issue the command: /bb rollback meanieguy, and everything is back to normal. Flows of lava is cleaned up, TNT explosions have been fixed, welcome signs are back with their sometimes-odd text, chests are back with their original contents, and your users are happy
    2. Specific Rollbacks: A couple of your (typically good) server members get a little carried away when making modifications to someone else's building. You don't want to rollback all their changes, but only in a particular area and within a certain period of time. You can just use: /bb rollback tw3dled3 tw3dledum t:1d5h r:20, and that will rollback just their changes, within a 20 block radius and within the past 1 days and 5 hours.
    3. Building Identification: Ever stumble across a building that is either so good or so bad that you have to know whose it was? By using /bb stick 1, you'll get a stick that will let you identify who placed or modifed which blocks. /bb stick 2 will give you a log that will let you inspect "air", water, and lava blocks (basically things that aren't rightclick-able).
    4. Creeper Rollbacks: Creepers are annoying for a two reasons: they kill you and they blow up your stuff. Thankfully, BigBrother can take care of reason 2. If a creeper blocks up the side of your building, you can quickly fix it by using /bb rollback Environment r:5. This will rollback any environmental changes within 5 blocks.
    *With the current version of BigBrother, you may have to do more work to rollback TNT, burnt blocks, and lava. Currently, these are logged as "Environment" (as it's difficult to match these actions up to a specific player). So rolling back meanieguy and Environment with a good time argument will easily take care of this.




    Hm, Okay. Where can I go to get more information?
    You can hop on over to BigBrother's github repository.
    There we have a wiki full of installation, troubleshooting, and command information; the full and bleeding edge source code; and an issue tracker to get your problems solved.

    Video Tutorial

    By Samkio.

    Changelog

    BigBrother v1.7.1
    Released 16 Mar, 2011
    - Built with CB 531.
    - Fix for SQLite problem with (LIMIT)
    - Fix for people using non-permissions plugin
    - Initial table prefix support.

    BigBrother v1.7
    Released 13 Mar, 2011
    - Updated + Compiled for CB 527, Permissions 2.5.3, GroupManager 1.0+
    - Inserts into database are now (optionally) LOW_PRIORITY (thanks GpMidi!)
    - Sanitizes names before sending to DB (helps w/ name hack)
    - Logging of signs changed using the Mass Sign Hack (.eas)
    - Rollback by Tick (greatly reduces lag during rollbacks, customizable # of blocks/tick)
    - Threaded and cleaned up Cleansing (much faster, no lag).
    - Options to restrict # of entries removed each cleansing
    - Cleansing happens on a schedule
    - '/bb version' and '/bb update'. version: tells you the version of BB you're running. update: tells you if there is an update. (These also work in the console: 'bb version' and 'bb update')
    - Complete properties file change: BigBrother.properties + watching.properties -> BigBrother.yml. (it will auto-convert)
    - Fix for broken bed logging
    - Fix for cancelled onEntityExplodes
    - Help support. View organized help w. '/help bb'- Auto-download of libraries is now optional
    - Temporarily turned off threading of /bb here and SuperSticks
    - Leaf Removal + Lava Flow defaulted to off
    - /bb log : Alias for /bb stick 2
    - A few other things...

    BigBrother v1.6.3
    Released 27 Feb, 2011
    - Fix for removal of Bukkit's onPlayerCommand
    - Command-logging fixed!
    - SuperStick threading
    - /bb here threading

    BigBrother v1.6.2
    Released 26 Feb, 2011
    - "Fixed" SQLite problem with database locking during datablock sending.
    - Fixed problem where it gives you sticks instead of proper item
    - Fixed but where Chest Logs end in "-"
    - Modified table schema to allow for longer chest logging.
    - Better error reporting when unable to create connection.
    - Extra Permissions check + better messaging
    - Initial Threading: Less lag when logging blocks and rolling back.

    BigBrother v1.6.1
    Released 23 Feb, 2011
    - "Fixed" SQLite problem with Cleansing
    - Fixed IndexOutOfBoundsException when timeCleanse setting was set to "0s"

    BigBrother v1.6
    Released 23 Feb, 2011
    - Multiworld support! Rolling back by radius will be limited to the world you're in. (All other rollbacks will still be universal)
    - Database cleansing on startup by age or number of records. Look in bigbrother.properties for these settings.
    - Initial On-demand cleansing. Using '/bb cleanse' (bb.admin.cleanse), it will invoke the cleansing under the settings you have. This will be built upon in upcoming updates.
    - Initial Lava Flow logging + rollback. Those ugly lava flows will be quickly removed. (Logs to "Environment" for now)
    - Sign creation text logging. Logs the text of signs when they build (in addition to destroy) signs
    - Performance enhancements from Oni and N3X15 builds
    - Player IP Logging on login (from Oni build) (can be turned off)
    - Better '/bb help'
    - No longer using the long, spammy constructor.
    - Fix for the not logging of broken blocks.

    BigBrother 1.5
    Jan 30 - (CraftBukkit #186)
    - Requires build #183 or higher
    - Logging/Rollback of blocks burnt by fire, initially to player "Environment". (fire = action #19)
    - Rollback confirmation if you're rolling back without a radius or time argument
    - Customize what the stick is (check "stickItem" in BigBrother.properties)
    - "History Log" - /bb stick 2 - Gives you a log to place and gives you the history there.
    - SuperSticks will now supply you with the item they need.
    - More permission separation between info, rollbacks, and watching (check the OP for more info)
    - /bb stats gives you a few basic stats about BB
    - Memory free'ing after sending blocks (thanks to Zenexer for that)
    - Restores optionally restore fire blocks, default false (check restoreFire in BigBrother.properties)

    BigBrother 1.4.3
    Jan 25 - (CraftBukkit #135)
    - All the updates from 1.4.2
    - Different management of connections

    BigBrother 1.4.2 (caused Conn. problems)
    Jan 24 - (CraftBukkit #135)
    - Removed annoying spam!
    - If connection can't be established from the start, BB tells you and shutsdown (rather than keeping on warning)
    - If connection fails in the middle of running the program, it's reset
    - Better handling of problems when saving to the database
    - Handling of data being too long
    - Right-clicking stuff with super stick doesn't interact with them

    BigBrother 1.4.1
    Jan 24 - (CraftBukkit #135)
    - Fixes internal client error with using just /bb

    BigBrother 1.4
    Jan 24 - (CraftBukkit #135)
    - Better connection management for SQLite and MySQL
    - Optional use of INNODB with MySQL
    - Fixes 'y' out of bounds error with MySQL
    - Creating Signs are now logged
    - Moved settings + data into plugins/BigBrother
    - Dependency downloader - Auto-Downloads SQLite and MySQL libraries into lib/ folder (thanks to Hidendra <3)
    - SuperSticks! - Support for many different types of sticks for searching an area
    - 'History Stick' - The first SuperStick, gives detailed history of a block
    - Radius Rollback - Specify the radius around you to rollback (using r: )
    - TNT/Creeper Logging - Log the blocks destroyed by TNT or creepers (for now logged as "Environment")
    - Leaf Decay -Logs leaves that decay so you can roll your trees back (for now logged as "Environment")
    - Flint+Steel logging
    - Opening chests - No chest modification though, the right hooks aren't in place
    - Destroying chests logging and rollback - If someone breaks your chest, roll them back and get all ur stuffs back

    See Older Ones Here...
  2.  
  3. Offline

    Nipper

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    No, It would run like it should. But it would fill up my /tmp but it still worked after that though even with full /tmp. It's like the sqlite was not deleting the files made in /tmp and cleaning up after it self. I only noticed this because MySQL uses the /tmp for every thing before writing to the DB. It was giving me errors saying db full. But stopping the server it self would auto delete all them .lib files.
  4. Offline

    Jobsti

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Works with #80
  5. Offline

    lawina

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Anyone managed to get this work with mySQL ?
  6. Offline

    Lim-Dul

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Yes, me.
    You edit the properties and everything is set up automagically, provided your DB permissions are correct.
  7. Offline

    GyD

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    great addon, but maybe we need more info for /bb here and a radius function for /bb rollback :D
  8. Offline

    arthoz

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    I was wondering if you could add bucket/flint&tinder use to the logging, this way we that just want to log dont need to get yet another plugin just for this that use other databases
  9. Offline

    highwisdom

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Running Cbukkit 79 with BB on SQLite mode..

    1. given the batch delay, is it not possible to rollback a users actions until 4-5 actions are performed in-world?

    2. I ran into a problem using BB just now: UserX logged in and spent a few hours building, then i called him over to help test BB. I placed some blocks and had him destroy them. BB detected this just fine with "/bb here UserX", but when I sought to rollback his actions using "/bb rollback UserX 10m"...it instead rolled back ALL of his actions since login hours before.

    3. I tried undoing the rollback, but I had already performed another rollback after the damaging one..so it wasn't possible. Needless to say; UserX was unhappy :(

    Which brings me to a suggestion: Is it possible to add a feature to have certain levels of undo history? Maybe up to 5 successive rollbacks?
  10. Offline

    tkelly

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @lawina : Yea, if you get the settings set up w/ the correct info like Lim-Dul said, it should work great. I'd actually highly recommend using MySQL over SQLite if you have the ability to.

    @GyD : Yep, I'm planning on adding a radius-based rollback arguement in the next update. What would you like as more info for /bb here?

    @arthoz : It already does have bucket logging (it logs it as placed and broken). And I'm working on fire tracking code to go hand in hand with the flint+steel, so that if User195 were to light a fire, and that ended up destroying your house, rolling him back would fix your house. I may need one more hook though. However, I could have a separate 'action' be just for flint+steel if you'd like that.

    @highwisdom :
    1) Nope, it's seconds. So if someone does only one action, you can roll them back within 4 seconds
    2) Ah, it's /bb rollback UserX t:10m, the different arguments (t:, id:, r: ) need to be started with a identifier so it doesn't get confused and thing 10m is a player.
    3) I may do this, but I'm hesitant because if a rollback is large enough, one undo will take up a lot of space in memory, let alone 5 :\
  11. Offline

    highwisdom

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    This would also work nicely :)

    forgot the "t:" -_-;....

    Is it not possible to make 'savestate' style database backups written to the server HDD instead of holding them in memory?
  12. Offline

    zipfe

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    tkelly, thanks for your great plugins.

    One question though, do signs really get logged? I tested it, does not seem to work.
    Changed blocks all show up, but not the signs. 1.3.2 / #82
  13. Offline

    mrgreaper

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    we did have an issue with /bb here t only seems to show changes if your right on the block :( could do with it being a radius

    say jim logs in and finds that theres a huge hole in his house so he calls a mod "hay mrgreaper whats up with this beeping hole in my house grrrr"
    mrgreaper goes over and issues /bb here (at the moment mrgreaper would have to stand in the hole)
    it tells mrgreaper that meanie2010 was the last one to edit the block
    mrgreaper issues /bb here meanie2010 (would that roll back the damage in just that area?) or /bb meanie2010
    then has a little chat with meanie2010 to let him know why he is about to be banned
    jim meanwhile praises mrgreaper and bigbrother

    have i got that right or is there more to it??

    we have done the odd test /bb mrgreaper when we first installed but dare not play around with it too much incase it wipes everything the user has done since it was added to the server
  14. Offline

    Pluckerpluck

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @mrgreaper You've almost got it but not quite.

    1) /bb here is a radius but only of 2. If you add a number after that you can specify a radius (/bb here 20) or you can change it in the settings file.

    2) To roll back you notice that it was meanie2010:
    /bb rollback meanie2010 t:1d

    the t:1d means rollback everything meanie2010 has done for the last 24 hours (you can use 20m for 20 min etc) which is the best you'll get because (from what I know) radius rollback isn't included yet (ever? I don't know). However, you can roll back by block type instead of time.

    If you read the first post there's full instructions as to what it can and can't do. I could always have missed something though.
  15. Offline

    tkelly

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @highwisdom : yea, I could do a "savestate" for rollback saving/undo. This'll take a little bit of reworking, so I'll probably get that in a little later.

    @zipfe : Sign creation doesn't yet (that'll be coming in the next update now that I have a hook I need). But sign destruction is in there. If that's not working for you, let me know.

    @mrgreaper : @Pluckerpluck pretty much got it all.
    /bb here shows you the changes people modified in the area around you, you can change up the radius by adding a number after that like Plucker said (and you can change the default radius in BigBrother.properties).
    If you want to see player+block-specific changes (ie. meanie2010 broke 20 glass and placed 5 tnt), you'd use:
    /bb here meanie2010.

    Once you're ready to rollback, you'd use /bb rollback meanie2010. And yea, there are a few different arguments you can add to rollback more specifically (as only using that command will rollback all meanie's stuff). Right now you can specificy by time (t) and block type (id) and, in the next update, radius (r).

    So all of meanie's changes in the past 1 hr and 30 min within a 50 block radius *will* be:
    /bb rollback meanie2010 t:1h30m r:50
  16. Offline

    mrgreaper

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    nice, thank you
  17. Offline

    arthoz

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Ah, i just looked for bucket ids, didnt even think about that, *blames lack of sleep*
    But yes, an action for flint+steel would be awesome, with users being the pyromaniacs they are theres a lot of usage from it
  18. Offline

    theoutrider

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    This is brilliant. So brilliant, as a matter of fact, that I'll be writing a PHP stat generator based on the BB database for my server. Because numbers are awesome. :)
  19. Offline

    arthoz

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Yup, a few lines of python typed here and i got a script that makes markers.py for minecraft-overviewer so i can easily see with the eye where "bad things" happen (and show others if i want to)
  20. Offline

    mrgreaper

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    minecraft overviewer?
  21. Offline

    arthoz

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
  22. Offline

    lawina

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
  23. Offline

    subram

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    [IMG]
    what did I do wrong ?
  24. Offline

    Lim-Dul

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    He just did? It's a link to the GitHub page. ;-)
  25. Offline

    inviktus

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Big Brother is loading fine but the commands aren't doing anything. I'm using the most recent build of both BB and Craftbukkit as of this post.

    its definitely loading. /bb commands show in console as unknown commands.
  26. Offline

    lawina

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Ah my fault quoted the wrong post, I ment his own person script quoted from his previous post:

    "Yup, a few lines of python typed here and i got a script that makes markers.py for minecraft-overviewer so i can easily see with the eye where "bad things" happen (and show others if i want to)"
  27. Offline

    tkelly

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @subram : It looks like you don't have the dependency library in place. Check the OP and get the one that you need. I think in the next update, I'm going to have it auto-download the dependency libraries...

    @arthoz @theoutrider Would you mind sending me/keeping me updated on those scripts? Eventually I'd love to include a web-based browsing package for BB, and those sound like awesome pieces to include. :)
  28. Offline

    arthoz

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Sure, no problem, i'll share later on when i add a few more features to it =)
  29. Offline

    subram

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
  30. Offline

    lawina

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Appreciate it :) .. and tkelly, keep it up!
  31. Offline

    tkelly

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    So I'm getting together a big update that changes around a few things and adds a few things, namely:
    - Better connection management. Improve speed and reduce lag overall, and reduce number of .lib files potentially created by SQLite in /tmp folder. (100% done)
    - Settings move. Moved settings into the plugins/BigBrother folder. (100% done)
    - Dependency Downloader. Download the MySQL and SQLite automatically. (100% done)
    - "Environment" logging. When an action can't be accurately attributed to a specific player, it'll be logged as "Environment" to allow you to still rollback and restore to perfect condition. (95% 100% done)
    - Explosion logging. Explosions from TNT will try to be associated with a specific player. All other explosions (Creepers, un-associated TNT, Ghast Bombs) will be put into the "Environment". (90% 100%done)
    - Leaf Decay. With the initial version, all leaf decay will be logged as "Environment". Later, I'm going to try to associate the decay with a specific player. (100% done)
    - Physical History Checker. With a magic stick, you can check the history of an area using different modes. BLOCK mode can show you the history of a specific block. BBHERE mode can essentially run a /bb here command with the stick. I'll probably get more in later. (50% 100% done)
    - Radius Rollback. Rollback only the area around you. (100% done)
    - Misc Logging. These will be eventually replaced. Logging of Chest opening (will be replaced with removing items from chests). Logging of using flint+steel (will be replaced with fire logging). (70% 100% done).

    So I'm just about done probably within 3 days if I'm not too busy IRL; but with so many changes, I'll need a little help testing everything. So if you'd like to help out with testing, let me know. :)

    Oh, and rolling back creepers is awesome :3
  32. Offline

    theoutrider

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    I'm entirely planning on making a public release of the stats generator as soon as it's done :) Good opportunity to finally learn some PHP and SQL. Figuring out the db structure was a lot easier than I expected.
Thread Status:
Not open for further replies.

Share This Page