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 WebSockets, not the IRC feed.

This is a tool for fighting vandalism on WikiMedia wikis. The tool connects via WebSockets 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 appropriate action. Note that action in some cases require special permission.

What's going on/features

  1. Builtin browser window to view diffs.
  2. Shortcuts to delete/rollback/revert/block a page/edit/user.
  3. Coloring and geolocation of anonymous edits and edits made by non-autoconfirmed users
  4. History handling to see session history per article or per user.
  5. Support for ORES scoring
  6. Support for geolocation of IP-addresses via MaxMind's GeoLite database (not included, you need to download your own copy)

The config.ini

The FluffVandalFighter requires two things, unpacked build package 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.
username=Username
# Password is not required, remove the password line and you will be prompted to enter manually.
password=Password       

stream.scheme=https
stream.host=stream.wikimedia.org
stream.path=/v2/stream/recentchange

api.scheme=https
api.host=sv.wikipedia.org
api.path=/w/api.php
api.wikipath=/w/

maintable.colors.anonymous=#FF00FF
maintable.colors.unconfirmed=#FFAFAF
maintable.colors.delete=#FFFF00
maintable.colors.block=#FF0000

ores.scheme=https
ores.host=ores.wikimedia.org
ores.path=/v3/scores/
ores.context=svwiki

fontname=Arial Unicode MS
fontsize=10

# Not required, remove this line if you're not using the geoipdb
geoipdb=GeoLite2-City.mmdb
sound.playmsgnotifications=true

diffbrowser.useexternal=false

users.whitelist=TestUser|TestUser2
skin=org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel
				

Requirements

You can download the latest version in zip.

Java 1.11 or newer. If you run Open JDK you may also need to install OpenJFX.

Startup

You can start by double clicking or executing either bin/FluffVandalFighter or bin/FluffVandalFighter.bat depending on your OS

Colors

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

Keyboard shortcuts

Global hotkey

  • Meta + q = Open latest recent change in diff browser (equal to space in main window)

Main window

  • Space = Open latest recent change in diff browser
  • F3 = Open any article in current wiki
  • 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.

Diff browser

  • Alt + b = copy username
  • Ctrl + b = block user
  • Alt + c = copy page title
  • d = delete article
  • Ctrl + e = Edit current open page in an external browser
  • e = Edit current article
  • Ctrl + h = Show a history dialog
  • 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

Major ideas/todos

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)

Licensing

Fluff Vandal Fighter is licensed under the Apache License 2.0.

Credits

Changelog

Version 2022-10-09

  • Continuation of previous release.
  • Updated dependencies
  • Bugfix: Sometimes the library parsing the events includes the prefix "event: message\n"
  • Fix for new revisions format since 1.32
  • Retrieve CSRF token for page edits, don't use token from page revision.
  • Added a browser to navigate to any wiki page

Version 2020-09-04

  • Added shortcuts in diffbrowser to allow copy of username and page title
  • Added WhoisClient for ARIN
  • Changed websocket reconnect time, there's probably a bug rendering in some disconnects with the event stream
  • Converted from Maven to Gradle also building a complete installation package. New links to download.
  • Minor bugfixes

Version 2019-12-21

  • Update to Java 11, including OpenJFX 11
  • Added config option to choose skin
  • Replaced internal SSEClient with okhttp-eventsource
  • Bugfixes for transfer-encoding chunked

Version 2018-03-18

  • Hide "#ooui-php-1" element
  • Added a history dialog, accessible via Ctrl + h
  • API changes

Version 2018-03-16

  • 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

Version 2017-05-05

  • Replaced Socket.IO 0.9 with SSE, this will require config change by the user:
    • Change stream.scheme to "https"
    • Change stream.path to "/v2/stream/recentchange"
    This change also reduces CPU and memory usage, upgrade is greatly recommended.
  • 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

Version 2017-03-17

  • 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

Version 2017-01-30

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

Version 2017-01-28

  • 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

Version 2017-01-23

  • Program will check for updates upon start
  • Basic WikiData browser is mapped to q when browsing a diff

Version 2017-01-17

  • 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

Version 2017-01-09

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