Commit graph

275 commits

Author SHA1 Message Date
Liangent a86019d2d3 Add new variable article_first_contributor
Bug: 67793
Change-Id: I725b7150de52bdc6518f73a6302f850e8d596824
2014-08-11 11:51:44 +00:00
Marius Hoch 39fb819b9c Don't try to pass non Title objects into RequestContext::setTitle
That will cause a fatal error...

Change-Id: Ib12765ca696ee9c8c5a0572dab54d30a4434e6ce
2014-07-20 22:04:37 +02:00
Kunal Mehta b40416c037 Add user_rights variable
Allows for more broad filters to check for a given right, rather
than having to check against multiple groups, which becomes useful
with global groups.

Bug: 60191
Change-Id: I95b5477d6d868d4b83bcd98e779e6d535aa755b3
2014-07-06 22:18:57 -07:00
Jackmcbarn 9409452698 Add tags from all matching filters
If multiple filters all add tags to an edit, make all of them be added
rather than just one of them.

Bug: 66387
Change-Id: Ib666c2765718d7d0603921ab94d22a7d51cbd3d2
2014-07-02 23:20:47 +00:00
Aaron Schulz 9a632d04ec Defer af_throttled query to post-commit auto-commit mode
* Due to the nature of this code (a throttle) it will likely slam the DB,
  so push it after the end of the main transaction.

bug: 60600
Change-Id: I48895358deaa1b951d849eeee14c7126cfa25ec8
2014-01-29 23:37:08 +00:00
jenkins-bot efa50efe4f Merge "Increased the number of rows in AbuseFilter's Filter testing textarea" 2014-01-24 00:27:22 +00:00
Liangent 25a15f641c New diff variables regarding pre-save transformed wikitext
Change-Id: Ie21041d96f1c4cf37d697fffcaffa1ff8242f886
2014-01-20 02:49:54 +01:00
jenkins-bot cb7dc7fa63 Merge "Make MOVED_TO* var generating from RecentChanges working" 2014-01-19 23:54:15 +00:00
nullzero 6c89ccc2fe Make MOVED_TO* var generating from RecentChanges working
This patch fixes the generation of MOVED_TO vars from
recentchanges rows.

Change-Id: I6c5471620a0fb5cb78b946fc162ff3d6a30b0e0e
2014-01-20 00:48:23 +01:00
Anjana S 4a5b76539d Increased the number of rows in AbuseFilter's Filter testing textarea
The text areas for the table row had only 5 rows, which is a lot less than
 the default number of rows.So now the number of rows in the testing textarea is changed to 15.

Bug: 59869
Change-Id: I9f221e7a49473ae1d473333f7ecf26235366d257
2014-01-12 21:04:52 +05:30
jenkins-bot 2125c3e341 Merge "Removing AbuseFilter::checkConditions' param" 2014-01-07 19:28:46 +00:00
Hoo man 91ff9853ce Merge "Add triggered filter id as parameter to messages" 2014-01-05 21:04:09 +00:00
Matthias Mullie 84536df324 Removing AbuseFilter::checkConditions' param
I'm not really sure why it exists; I assume to minimize overhead of init'ing
multiple AbuseFilterParser objects that would be exactly the same.

However, checkConditions() - which checks one specific condition - is not really
an "endpoint" you will want to call in <your-extension-that-uses-AbuseFilter>.
You're more likely to call something higher-lever (like
AbuseFilter::filterAction, which will take care of fetching all appropriate
filters, as well as run them through checkConditions, and much more). This will
trickle down to ::checkAllFilter, down to ::checkFilter, which would eventually
call ::checkConditions with the 'keepvars' argument.
Basically, unless you're re-implementing much of AbuseFilter yourself, you won't
get to pass anything other than 'keepvars' to checkFilter.
As a result, even though you may call AbuseFilter to call on multiple different
vars, it will re-use the same parser with the first vars.

I'm proposing to drop the 'keepvars' and just keep the vars around instead.
checkFilter can compare previous vars with new vars, and only init a new Parser
if the vars are different.

Change-Id: I96ccc60c77f3cdbb82c0f9f16782a1a44ffb1592
2013-12-30 12:15:59 +01:00
jenkins-bot 1f6936c8b3 Merge "Send AbuseFilter hits to CheckUser" 2013-12-26 22:13:45 +00:00
se4598 2c30df42c5 Add triggered filter id as parameter to messages
Bug: 50464
Change-Id: I82f1c7f021c8d95fe50fd4da4bc57a8850bbbb84
2013-12-26 22:09:03 +01:00
Kunal Mehta ba6d178f07 Send AbuseFilter hits to CheckUser
Bug: 29583
Change-Id: I175f95b7118dab87de208cfb729e14403a670680
2013-11-10 12:34:48 -08:00
Siebrand Mazeland 2bb441ee9c Declare visibility on class properties
Also compress some variable documentation.

Change-Id: I47d31e18df18492373aa407ea19f1a81b2cf5d57
2013-11-06 16:11:09 +00:00
Siebrand Mazeland ddc930e897 Ensure variables are defined
Change-Id: Iab1d36b0162c1d7a91cdd80ac36bbf338e7df61d
2013-11-06 17:09:24 +01:00
jenkins-bot 14871447ee Merge "Adding some comments to explain what various classes are for." 2013-11-05 13:26:15 +00:00
kaldari 307b078ada Only allow throttling if object caching is enabled...
...otherwise it doesn't work.

This change add 2 checks for object caching, one for the filter
configuration interface, and one for the actual throttle checking.

Bug: 50894
Change-Id: I89ebcc6ff7d91d3a9ad8e744c0c4ff3e33e3b673
2013-10-31 14:59:26 -07:00
kaldari b165827b67 Adding some comments to explain what various classes are for.
Change-Id: Ic44342035bc277dfd75c1da06a3a1205e8c659a4
2013-10-24 15:11:08 -07:00
Siebrand Mazeland 632365e834 Create consistent return point
Change-Id: Iaca35d1d9e94c027b580ead8bec102d1f6306105
2013-10-15 14:27:10 +02:00
Siebrand Mazeland 84d5cd33a2 Remove unused local variables
Change-Id: If708a112ae6df070da19f52682f0e2b19fe67959
2013-10-14 21:39:35 +02:00
Siebrand Mazeland 563bf12331 Pass correct variable to closure
Corrects Change-Id I3d8ace509ec0a9471cc68be3398bb1c108d6e570.

Change-Id: I5937aef91710e48c5417cff55f824ae67825097d
2013-10-14 21:39:05 +02:00
Brad Jorsch 0ef6f6dcce Reset $wgTitle in AbuseFilter::filterAction()
If AbuseFilter::filterAction changed $wgTitle, we need to reset it back
to the old value before returning.

And for good measure, we also need to check the main RequestContext to
make sure it didn't cache the bogus $wgTitle on us.

Bug: 53498
Change-Id: I4d706a1ee07f0b171f98e7d558d7be27e6759614
2013-09-30 14:37:52 -04:00
Aaron Schulz 5c322d6f31 Fixed "A BAD KEY WAS PROVIDED/CHARACTERS OUT OF RANGE" memcached errors
Change-Id: I27b51a4baec34475513407b604cf4c5fcd561cc9
2013-09-17 16:52:19 -07:00
jenkins-bot 74f8ecc379 Merge "Push counter updates to transaction end to avoid contention" 2013-08-30 22:35:35 +00:00
Aaron Schulz a951290cb7 Push counter updates to transaction end to avoid contention
Change-Id: I3d8ace509ec0a9471cc68be3398bb1c108d6e570
2013-08-28 14:31:08 -07:00
Yuki Shira a84e56bd39 Give grep a chance to find the usages
Change-Id: I65fbf2b7cd8d03c669646607e3841eb7d69b4e75
2013-08-18 15:35:16 +09:00
jenkins-bot 963655c81e Merge "New variable: new_pst which provides a PSTed version of new_wikitext" 2013-08-08 08:01:47 +00:00
Marius Hoch fb40850d9e Make sure a session has been started prior to using it
Thanks Anomie for pointing this out.

Change-Id: Ieaa9847e74c35e3080dabeaef8895209bfcc675b
2013-07-31 18:46:43 +02:00
Marius Hoch 4cb9a96ac9 Don't trigger filter hits for nonexisting filter 0
AbuseFilter::getConsequencesForFilters uses filter ids as
array keys, that causes problems if both local and global
filters were hit, because array_merge reindexes arrays.

Example:
https://www.mediawiki.org/wiki/Special:AbuseLog/18687

Change-Id: I81cb110322461e30113199cfa313cd8e8e8b2262
2013-07-09 13:57:22 +02:00
Marius Hoch 8957c003ba Revert "Change AbuseFilter to use UserCache instead of user_text fields"
This reverts commit aaa256aa94.

Bug: 49918
Change-Id: I597cbc03e2ecc45cfcca632232d5bbb1ef7be9d8
2013-06-27 01:01:15 +02:00
Marius Hoch 89726ae861 Allow filtering links and html for page creations
Right now it's impossible to filter added_links etc.
for page creations.

(Only slightly tested)

Change-Id: Iee07fc8bfe41e78abb73d8ae969aa1e4d97339bc
2013-06-05 03:52:29 +02:00
Marius Hoch a7aa0fa185 Fix AbuseFilter::disableConditionLimit()
Used for Special:AbuseFilter/test

Change-Id: I964efbbb0be7cae418746667778874790fdbb499
2013-05-28 00:43:33 +02:00
Liangent 8be81448bd New variable: new_pst which provides a PSTed version of new_wikitext
It's observed that some vandals use {{subst:void}} to trick the system
and other users and this new variable may help.

It would be nice to be possible to diff this variable against
old_wikitext, but it needs some performance consideration.

Change-Id: I4c4c4e806663363b40936363d659c42016e18cf6
2013-04-24 23:01:57 +08:00
jenkins-bot 84487b86d8 Merge "Deprecate addHolder for addHolders." 2013-04-23 21:22:37 +00:00
nischayn22 454a7cc897 Deprecate addHolder for addHolders.
lot of code was using ::merge() to create a new AbuseFilterVariableHolder
this is now simplified using a single addHolders method.

merge() still exists as its usful as a static function.
addHolder() is deprecated.

Change-Id: Ia4f6a56f642242a04cf2973b74ce44d91fce00eb
2013-04-23 23:19:32 +02:00
Kunal Mehta 4bec58cd54 Add a "ucase" function to convert the provided string to uppercase.
I basically took the lcase code and tweaked it to work for uppercase.

Bug: 47321
Change-Id: I230dbd99c27bf3a4a042befd6d334b4c0439bde0
2013-04-17 11:48:15 -05:00
Aaron Schulz 05b38eb613 Merge "Change AbuseFilter to use UserCache instead of user_text fields" 2013-04-09 22:00:51 +00:00
Siebrand Mazeland 3ff9084c2d Fix PHPDoc comments
Change-Id: I7d6da503d909d06b9a10cb55144852e1c4d07569
2013-04-01 11:04:03 +02:00
Alex Monk aaa256aa94 Change AbuseFilter to use UserCache instead of user_text fields
Change-Id: I51210ff91366a3a1610d34ca20e8966aaded89a0
2013-03-27 15:59:34 +00:00
Marius Hoch 42bd0d84f4 AbuseFilter: Change format of database logging/ performance
AF is setting several lazy load variables for the currently editing user.
To do this it's passing along the user name extracted from a user object
and generating a new user object later from that name which is of course
pointless. With this patch I'll pass user objects directly to prevent that.
On top of that I've deprecated a method in AFComputedVariable::compute which
was redundant as there is a more generic one which can solve that task
just fine.

Furthermore I've changed the logging behaviour from serializing the whole
AbuseFilterVariableHolder object to only store the variables. That has two
major advantages:
 * The amount of data that needs to be saved on a filter hit is reduced
   to about 1/10 of what the old version needed.
 * This is much more forward compatible as the old way of saving this
   relied on the class structure to stay the same while this is a simple
   array containing the vars.

On top of that we now only log variables already set by the time
a filter is hit. On top of the obvious performance increasement
that makes it easier for the user to spot the relevant data.

Another thing this change alters is the way the AbuseFilter internally
works with AbuseFilterVariableHolder objects. Right now we use one for
testing the filter(s) and later we use another one to compute the same
data again in case a filter was hit (for logging)!

This is not thoroughly tested yet, but way more sane than what we're
currently doing!

Change-Id: Ib15e7501bff32a54afe2d103ef5aedb950e58ef6
2013-02-28 22:35:22 +01:00
Marius Hoch fdae51ec07 Fix default for $wgAbuseFilterAnonBlockDuration
$wgAbuseFilterAnonBlockDuration didn't default to the actual
value of $wgAbuseFilterBlockDuration but to the default value
of that (which is indefinite). Fixed that (untested)

Change-Id: I26a929bfba997b80445a108e212030fe7faa6428
2013-02-23 00:20:29 +01:00
Hoo man e817f73f13 Merge "Check against $wgAbuseFilterRestrictedActions instead of hardcoded list for block actions" 2013-02-19 13:09:51 +00:00
Hoo man d858cfca35 Merge "Check that $title is defined and is a Title object" 2013-02-19 12:41:39 +00:00
jeblad 53e230c5c7 Check that $title is defined and is a Title object
During testing the context does not always contain a valid
Title object. In those cases AbuseFilter will fail hard.
This changeset makes the filter survive some of those
failures.

Change-Id: I0b2247432619ddf15cc17ed41b4b7a6a11e910e0
2013-02-19 13:39:47 +01:00
Hoo man 750f594b0f Merge "Create variable to set length of IP blocks" 2013-02-19 12:30:53 +00:00
Reedy d729a0ee02 Bug 43011 - AbuseFilter: Invalid argument supplied for foreach
Change-Id: I83f17b1747dd46998ffab2b6f7f867ab24c665a1
2013-02-11 22:30:59 +00:00
Kunal Mehta b8f53e27c3 Create variable to set length of IP blocks
This creates a $wgAbuseFilterAnonBlockDuration, which
allows for IP blocks to have a different length.

For backwards compatability this is default set to
$wgAbuseFilterBlockDuration.

Change-Id: Ibfd5c9639317150442f745a5759f3c34b38de274
2013-02-08 04:59:54 -06:00