Fluff Vandal Fighter
This is a remake of the Vandal fighter which in turn is a descendant from CryptoDerk's Vandal Fighter It's still written in Java but it utilises the new stream from WikiMedia based on SocketIO, not the IRC feed.
This is a tool for fighting vandalism on WikiMedia wikis. The tool connects via Socket.IO to the stream of Recent Changes and displays a table of the recent changes for the user to click on to review and if necessary take apropriate action. Note that action in some cases require special permission.
What's going on/features
- Builtin browser window to view diffs.
- Shortcuts to delete/rollback/revert/block a page/edit/user.
- Coloring and geolocation of anonymous edits and edits made by non-autoconfirmed users
- History handling to see session history per article or per user.
- Support for ORES scoring
- Support for geolocation of IP-addresses via MaxMind's GeoLite database (not included, you need to download your own copy)
The FluffVandalFighter requires two things, a jar file and a configuration file. The configuration file you can create yourself based on the following template. Substitute the template values with values that match your wiki.
# Username is not required, remove the username line and you will be prompted to enter manually.
# Password is not required, remove the password line and you will be prompted to enter manually.
fontname=Arial Unicode MS
# Not required, remove this line if you're not using the geoipdb
You can download the latest version from here.
Java 1.7 or newer. If you run Open JDK you may also need to install OpenJFX.
You can either start by double clicking on the jar-file or via the command prompt:
java -jar FluffVandalFighter.jar
To start with debug logging enabled, run the following long long commmand:
java -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog -Dorg.apache.commons.logging.simplelog.showdatetime=true -Dorg.apache.commons.logging.simplelog.dateTimeFormat="yyyy-MM-dd HH:mm:ss:SSS zzz" -Dorg.apache.commons.logging.simplelog.log.org.apache.http=ERROR -Dorg.apache.commons.logging.simplelog.log.org.apache.http.wire=ERROR -Dorg.apache.commons.logging.simplelog.log.org.wikipedia.sv.fluff=DEBUG -Dorg.apache.commons.logging.simplelog.log.se.fluff.mediawiki=DEBUG -Dorg.apache.commons.logging.simplelog.log.io.socket=ERROR -jar FluffVandalFighter.jar 2>> debug.log
Colors can be customized (see config section) but the standard colors are:
- Pink indicates that a user isn't yet auto confirmed or has contributed less than 50 edits
- Magenta indicates that an edit was made by an anonymous user
- Yellow indicates that the action was a deletion/undelete/revision
- Red indicates that the action was a block/unblock/reblock
- Meta + q = Open latest recent change in diff browser (equal to space in main window)
- Space = Open latest recent change in diff browser
- F8 = Open massdelete-dialog
- F12 = Mark last row as the one "last seen", giving a visual hint on which row was the last one you saw or handled.
- Ctrl + b = block user
- d = delete article
- Ctrl + e = Edit current open page in an external browser
- e = Edit current article
- Ctrl + l = Send a Thank to the user
- m = Message to the user who performed this edit
- Ctrl + o = Open the current page in an external browser
- o = Open article in diff browser
- Ctrl + p = Patrol edit
- r = Rollback user's edit(s)
- t = Go to user's talk page
- Ctrl + u = Open user information dialog
- u = Go to user's page
- v = Revert edit
- Ctrl + w = Close window
- Escape = Close window
- Alt + Left arrow = Navigate back
- Alt + Right arrow = Navigate forward
I do have a list of stuff to implement in FVF and the following list is by no means the complete one but a few of the major ideas I have is listed here.
- Replace Swing with JavaFX
- Implement support for different languages
- Implement custom watchlists (in progress)
- Open any article for edit?
- Support for Wikidata objects (as a browser?)
- Handle notifications (is implemented but could be handled more in the program)
Fluff Vandal Fighter is licensed under the Apache License 2.0.
- Upgraded ORES from v2 to v3
- Adding better support for external browser on Linux
- Set diff browser title from EventStreamRecord, not parsed from HTML source
- Added global hotkey (Meta + q) to show the latest diff in the recent changes browser
- Replaced Socket.IO 0.9 with SSE, this will require config change by the user:
This change also reduces CPU and memory usage, upgrade is greatly recommended.
- Change stream.scheme to "https"
- Change stream.path to "/v2/stream/recentchange"
- Added possibility to customize colors on anonymous or unconfirmed edits as well as deletions and blocks
- Added button in edit dialog to copy username (from user page or talk page) or page title
- If window will be shown outside screen bounderies, reset bounderies to (hopefully) visible coords. Issue #20
- Bugfix: Parameter for Notifications API is broken for some reason, removing the parameter until further. Issue #23
- Added a whitelist as a temporary feature until the "real" whitelist functionality is ready. Set "users.whitelist" in config.ini to a pipe-separated list (case sensitive) of usernames. Any edits matching any username here will be ignored not displayed in the recent change table. Note that any actions will be displayed, only edits will be filtered.
- Bugfix: Settings for MassDeleteDialog wasn't re-enabled upon errors in configuration.
- Locating which Regional IP registry to use added as a service and enabeling RIPE via this service. Still, more RIR's to be added later on. Issue #12
- Retrieving whois information from RIPE (other Regional IP registrys will follow) in the diffbrowser. Issue #12
- Bugfix: Crash due to timing issues inbetween sending edit and reciving the same edit in the rc stream.
- Bugfix: Correct row height in main table depending on font size
- Bugfix: Better parsing of config.ini, ignoring leading and trailing whitespaces
- Using fontname/fontsize from configuration file for diffbrowser
- Added setting
diffbrowser.useexternal=false to use web browser for diff viewing, replacing the internal
- Clicking an user contribution in user dialog opens diff in external browser. (Issue #19)
- Saving column sizes to config file on resize, issue #15. (Also disallowing reordering columns for now, creating issue #21)
- Bugfix: Namespace confusion with different language. Issue #7
- Program will check for updates upon start
- Basic WikiData browser is mapped to q when browsing a diff
- ORES scoring was made a bit more efficient in bunching together edits made within the same 1,5 seconds, taking some load of the servers.
- F12 will set a blue line around the last record, allowing you to know where to scroll to when you come back if you wish to inspect edits made since you last pressed F12.
- Delete page dialog will show if the page has deleted revisions
- Count of new notifications will be shown in the main statusbar
- Sound will be played (if enabled) when new notifications or messages is detected
- New editor using the RSyntaxTextArea, adds undo-support, line numbering and more
- MassDelete dialog (F8) that can process a list of articles and delete them one by one.
- More assistance to combat vandals for svwp
- Checks for new messages every 5 minutes
- Saves position and size of the main window between uses
- Ctrl + o will now open the current article in external browser
- Bugfixes as usual.