Commit graph

2224 commits

Author SHA1 Message Date
hmonroy
22dc49a5c5 Add feature flag for Codex Special:Block UI
Introduce a temporary feature flag that will be used to display
Special:Block UI in Codex.

Bug: T358153
Change-Id: I74bc90af986ac2f429a952a19b6edf4fb02c5618
2024-02-21 13:52:29 -08:00
Tim Starling
380d398f1d Remove $wgUseSameSiteLegacyCookies
After the deployment of the updated mediawiki.cookie module, the
configuration variable can be safely removed.

Bug: T344791
Change-Id: Idf3b3ef521ef2ac368c3f575f99bf4c6da7baa82
2024-02-14 11:26:30 +11:00
jenkins-bot
86965e099d Merge "Drop deprecated config $wgOpenSearchTemplate" 2024-02-13 17:22:42 +00:00
Amir Sarabadani
ef7497d8cd Drop deprecated config $wgOpenSearchTemplate
Not to be confused with $wgOpenSearchTemplates (plural)

Soft-deprecated since 1.25 and hard-deprecated since at least
I9776d11d4e2d184 (1.39).

Not set in production.

Change-Id: I6a95b9e0e2b74bb44d51c375a62886761ec9ea88
2024-02-12 19:54:00 +01:00
Brian Wolff
ea84b992ef Change $wgSVGMetadataCutoff default to 5 MiB (previously 512KiB).
This is used to (among other things) detect lang tags in multilingual
SVGs. Users have complained that lang tags are often missed in large
SVG files.

The cut-off is used for two things during upload:
* Run some (simple) regexes to detect <?xml header
* Use XMLReader (with entity substitution enabled!) to look for specific tags.

The first check doesn't make sense to use a configurable cut off. Change
it to look at the first 4096 bytes only. The <?xml header is required to be
the first thing in the file other than BOM, so this should be more than
sufficient. XML parsers give a fatal error if there is whitespace before
the <?xml declaration.

It seems unlikely to be problematic to use XMLReader on up to 5MB of the file,
since that is a "pull" XML parser, and won't load the entire file at once.
The code that cuts off the SVG at the 5MB mark likely uses more memory
than parsing the file does. In fact, we separately use XMLReader to do
security checks with no such cut-off, so potentially it could even make sense
to remove the cut-off entirely, since clearly parsing the full file is not
causing problems.

Bug: T270889
Change-Id: I7350918647d92c40934a7c86e906b6bfb8a40ada
2024-02-09 19:20:34 -08:00
jenkins-bot
b235bbab53 Merge "Always log a message when disableLocalTransform is hit" 2024-02-09 11:27:31 +00:00
Cindy Cicalese
c22300ec98 Deprecate array_merge_recursive merge strategy for extension/skins
The array_merge_recursive merge strategy is not intuitive and not
recommended. It does not appear to be used in any of the extensions
or skins that codesearch is aware of. To prevent confusion and
accidental use of array_merge_recursive when the behavior of
array_replace_recursive is likely desired, the array_merge_recursive
merge strategy is deprecated by this patch.

Bug: T292602
Change-Id: Ia0b861c308e6c7b4d40994af4c535ffdfa2b9ff5
2024-02-07 12:37:47 -05:00
Tim Starling
7c81d82d76
Stop using $wgUseSameSiteLegacyCookies
* Deprecate the wgUseSameSiteLegacyCookies configuration variable and
  imply false (the previous default).
* Deprecate WebRequest::getCrossSiteCookie(), which was introduced to
  support this feature.
* Ignore the sameSiteLegacy option if it is passed to
  WebResponse::setCookie() or mediawiki.cookie.set(). The configuration
  variable can't be removed until the after the JS change is deployed.

Bug: T344791
Change-Id: I30392ebc02809bc6b6ee2070d3e468e48d5d1fae
2024-02-06 16:25:38 -08:00
jenkins-bot
0e593c7a28 Merge "Migrate bot passwords to virtual domains" 2024-02-07 00:11:25 +00:00
Dreamy Jazz
79dd6be086 Remove mention of removal in 1.38 for wgEnablePartialActionBlocks
Why:
* The wgEnablePartialActionBlocks config is marked as unstable,
  but also as to be removed before 1.38.
* This is no longer the case as this config is present in 1.42 and
  as such this should be removed and instead still indicate this
  is unstable without listing a release version for this config.

What:
* Reword the @unstable tag for the wgEnablePartialActionBlocks
  to no longer reference a specific release version.

Bug: T280531
Change-Id: I317cd07c42aa59c6a45bf7403fdc79a363880bb5
2024-02-06 13:41:49 +00:00
jenkins-bot
d9ae1a9609 Merge "grants: Fix risk rating of 'privateinfo'" 2024-02-05 14:29:37 +00:00
Bartosz Dziewoński
be135c0fc0 Remove $wgUseMediaWikiUIEverywhere
MediaWiki UI has never really made it out of beta before being
deprecated. Legacy code using plain HTML forms doesn't need it;
new code can be written using Codex.

Bug: T182050
Change-Id: Ib9966bc6a4a94f771cb99a5aa52fb6a1dc826ca5
2024-02-05 09:05:14 -05:00
Gergő Tisza
b73cce53f7 grants: Fix risk rating of 'privateinfo'
Per T290790#9447932, not actually risky.

Bug: T290790
Change-Id: I99e3f8d7e6cf210954325f2d066cc1475af9bd3a
2024-02-05 13:41:18 +00:00
Amir Sarabadani
be5593b10d Migrate bot passwords to virtual domains
Bug: T351559
Change-Id: I645f1e4a4517b9177286e834236b0c047bef928c
2024-02-01 17:35:29 +01:00
Amir Sarabadani
2d66025fdf Drop deprecated configs $wgMinimalPasswordLength and $wgMaximalPasswordLength
Soft-deprecated since 1.26 and hard-deprecated since at least
I9776d11d4e2d184 (1.39).

Not set in production.

Change-Id: I55e4569c5a40f77a719bc7ab1924eaa706e0da53
2024-02-01 16:29:05 +01:00
jenkins-bot
e4ab75aad5 Merge "rdbms: clarify allowed characters in DBname/DBschema/DBprefix" 2024-01-31 00:25:42 +00:00
Amir Sarabadani
4c68983623 Drop deprecated config $wgAllowImageTag
Soft-deprecated since 1.35 and hard-deprecated since at least
I9776d11d4e2d184 (1.39).

Not set in production.

Change-Id: I68b68ffcdff22daafad34c186d1cc609dcecbf32
2024-01-30 11:42:54 +00:00
Reedy
e2f9bea62b Fix casing of Mediawiki to MediaWiki
Change-Id: I0f266a034a99255b27fd96d82335d6e710a61f20
2024-01-29 17:15:04 +00:00
Amir Sarabadani
c1043ec8ff Drop deprecated config SquidPurgeUseHostHeader
Soft-deprecated since 1.33 and hard-deprecated since at least
I9776d11d4e2d184 (1.39). It's already noop in the code.

Not set in production.

Change-Id: I5895bc4dae9620d53c37188662e21bf01ae7bd85
2024-01-26 16:47:11 +01:00
Amir Sarabadani
ba1563a0ba Drop deprecated config ContentHandlerTextFallback
Soft-deprecated since 1.37 and hard-deprecated since at least
I9776d11d4e2d184 (1.39)

Not set in production.

Change-Id: I0b25e89d1652dfa697ab1176a1e2b6ca3163bdab
2024-01-26 12:45:18 +01:00
jenkins-bot
939fa4e5e5 Merge "Drop deprecated config $wgLogoHD" 2024-01-24 22:40:47 +00:00
Amir Sarabadani
167fbd0a20 Drop deprecated config $wgLogoHD
It has been deprecated since 1.35, hard deprecated since at least I9776d11d4e2d184

No grep result in wmf-config

Change-Id: I2c67bab3e3212f25a0cbce7301f5e32a082f76da
2024-01-24 19:46:04 +01:00
jenkins-bot
6939d95afe Merge "EditRecovery: Add user preference" 2024-01-24 09:28:15 +00:00
jenkins-bot
8f8e1d6f85 Merge "Change more uses of getDBLoadBalancerFactory() to getConnectionProvider()" 2024-01-23 17:59:21 +00:00
Bartosz Dziewoński
4aebcfe097 Change more uses of getDBLoadBalancerFactory() to getConnectionProvider()
Some less trivial cases. Also update variable names.

This doesn't really change anything, but I hope it helps promote
getConnectionProvider() as the common way to do this.

Follow-up to 8604c384f6.

Change-Id: I6657d783375fac5c7fa856b884ff1fb09285e94c
2024-01-23 16:34:45 +01:00
Bartosz Dziewoński
d726cdfd3d Injection.md: Improve advice about replacing wfGetDB()
Change-Id: Ic9b3208f736ef90639c10d0efabaa7f4e8d970db
2024-01-23 14:04:31 +00:00
TheresNoTime
2466abb518 EditRecovery: Add user preference
Add a user preference to allow the user to enable or disable
EditRecovery.
Set the default as disabled.

Bug: T350653
Change-Id: Ibbb59eb84f1dd0b40f9576e048f2ac76044f9014
2024-01-23 13:28:31 +00:00
Gergő Tisza
9de0e23b48 Support dependency injection in log formatters
Use ObjectFactory specifications instead of class names in
$wgLogActionHandlers, like in most other places. Class name
support is retained for B/C.

Also remove old LogPage code that assumed $wgLogActionsHandlers
is an array of callables. This is how $wgLogActionsHandlers was
defined in b6d72cfeb2, but then
4ac56c2466 redefined it to an
array of classnames (and I6846ce0 adjusted the documentation),
and the old functionality has been broken since.

Make LogFormatter::__construct() public so subclasses can be
created in the service wiring.

Technically this is a breaking change since there is no
guarantee existing formatter classes are publicly creatable,
but there is no way to issue a deprecation warning about that,
and it isn't really covered by the stable interface policy.
All non-public constructors found by codesearch are fixed in
companion patches.

Bug: T54220
Change-Id: I72427a4b3f4be1c3c1eb3522a8b58fe9445a3397
Depends-On: Ie691e8d59141f696619dce8f756645c45a3e943a
Depends-On: I41562247d51f4f9fe8dafed37ba2ad81c881d99d
2024-01-20 16:36:56 +01:00
Aaron Schulz
448bdf06b1 rdbms: clarify allowed characters in DBname/DBschema/DBprefix
Change-Id: I8e010b27cc436d845687843c2a20dbd89ebe2197
2024-01-18 15:56:35 +00:00
jenkins-bot
e462a9275d Merge "Support multiple matchPatterns in temp user autocreate config" 2024-01-17 17:25:04 +00:00
jenkins-bot
55c5c9ee6f Merge "user preferences: Add some information about types to the phpdoc" 2024-01-17 14:44:10 +00:00
Dreamy Jazz
7f588780a0 Support multiple matchPatterns in temp user autocreate config
Why:
* There is a need to update the generation and match pattern on
  WMF wikis to a new format that includes the year and starts with
  `~`. As such, the 'matchPattern' key needs to be updated.
* Removing the old 'matchPattern' from the wgAutoCreateTempUser
  config currently leaves existing temporary accounts as no longer
  recongnised as temporary accounts.
* Instead, the 'matchPattern' needs to be able to take an array of
  string patterns so that old patterns can still be used for matching.

What:
* Update the MainConfigSchama to indicate that 'matchPattern' in the
  wgAutoCreateTempUser config can be an array of strings.
* Add TempUserConfig::getMatchPatterns and deprecate TempUserConfig::
  getMatchPattern. This is needed because ::getMatchPattern was typed
  to only ever return one Pattern, which is no longer the case with this
  config change.
* Update the RealTempUserConfig to support multiple patterns defined in
  the 'matchPattern' key. The RealTempUserConfig::getMatchPattern method
  returns the pattern or first pattern if multiple are defined to allow
  time for existing usages of this deprecated method to be updated.
* Update the RealTempUserConfig to rely on other methods instead of checking
  object property values where possible (e.g. use ::isEnabled instead of
  checking $this->enabled) to allow easier unit testing.
* Update UserSelectQueryBuilder and ChangesListSpecialPage to use TempUserConfig
  ::getMatchPatterns instead of ::getMatchPattern.
* Update mediawiki.util/util.js to be able to parse the 'matchPattern' value
  when it is an array of strings.
* Update maintenance/userOptions.php to use ::getMatchPatterns instead of
  ::getMatchPattern.
* Add and update unit and integration tests for the new code, as well as
  expanding coverage over existing code that was indirectly affected.

Bug: T354619
Change-Id: I3763daefe4dc7c76370bd934fb20452591c9c762
2024-01-17 11:24:26 +00:00
Gergő Tisza
183372c995 authz: Group grants by riskiness
Bug: T290790
Change-Id: Ib7a195c167f82e686c4ede45388957f9988bf75d
2024-01-16 23:55:48 +01:00
jenkins-bot
5eeb9876c7 Merge "ResourceLoader: Drop targets system, deprecated in 1.41" 2024-01-16 11:11:56 +00:00
Gergő Tisza
044910ae71
user preferences: Add some information about types to the phpdoc
User options saved to the database and retrieved get converted
to strings, but defaults and set but not yet saved vaues don't.
This behavior can be confusing.

When a value equal to the default is set for a given user, that
value won't be written to the database; defaults are represented
by the lack of a database row. This behavior can also be
confusing.

Update the phpdoc of some user preferences related methods and
variables to make these things clearer.

Change-Id: I32a18b30f007c97015e6d641379ce60ab6ac7ed7
2024-01-15 20:25:25 -08:00
James D. Forrester
273cc042ae ResourceLoader: Drop targets system, deprecated in 1.41
Bug: T340802
Depends-On: Ie936afed7042d5a4713b027c30d7487565a35eaf
Change-Id: Icad30d62301be5d7390ebdf34e818519e3fe56c4
2024-01-12 16:42:38 -05:00
Tim Starling
551ec29ea6 Check warnings from INSERT during tests
INSERT IGNORE when inserting NULL into a non-nullable field will succeed
with a warning on MySQL but fail on PostgreSQL. In any case, it's
probably harmful and unintended. But to check the error code of MySQL
warnings, you need to query the server with SHOW WARNINGS, so there is a
performance cost.

So, add a configuration variable which, when enabled, checks warnings
after INSERT to see if there were any null type constraint errors. Set
it to true in DevelopmentSettings.php and TestSetup.php.

Change-Id: I5e47e2d3cc7e0f804036e11b512b1e3b76804432
2024-01-12 09:33:05 +11:00
jenkins-bot
a0a78dbdfb Merge "Tweak docs for UseLegacyMediaStyles" 2024-01-11 16:08:12 +00:00
Timo Tijhof
937847b26a Replace various magic numbers with easy-to-verify expressions
Follows-up I8518e0488 (9c02258a04).

Instead of documenting how to compute the number to manually verify
it, use the expression directly. This should make it significantly
easier to understand, verify, and modify.

Noteworthy:

* Language.php, I kept 31_556_952 as-is because the
  calculation would otherwise involve a float. It also has the benefit
  of allowing the long durations to build upon that as a given number.

* SqlBlobStore.php, remove this irrelevant default value as it is
  unreachable. The only call to new SqlBlobStore is BlobStoreFactory,
  which always calls setCacheExpiry. For back-compat and to keep
  tests as-is, move to re-used constant between class and config.

Change-Id: I86b034883bd7efdf93b8365b43178af826f1c703
2024-01-11 15:12:24 +11:00
Reedy
0efc8a1fdd Tweak docs for UseLegacyMediaStyles
Follows-Up: I70e537b2beb99de9a41e7dc66a0d60a508009887
Change-Id: I96ad111d8972ba55a09ddcd452447c519471a96f
2024-01-10 18:20:58 +00:00
Tim Starling
faf1f74651 Always log a message when disableLocalTransform is hit
* Log a message when thumbnailing is attempted but disableLocalTransform
  is set in configuration. There is already a similar log entry in
  thumb.php but it was missing for other callers.
* Update the config docs.

Change-Id: If4c02b831989e6183b72384e676cddeab1dcf41e
2024-01-10 11:17:11 +11:00
jenkins-bot
7057d995bc Merge "Add support for conditional user defaults" 2024-01-09 04:42:53 +00:00
Martin Urbanec
6c8b696020 Add support for conditional user defaults
Why:
Sometimes, it is necessary to have different behavior
for newly registered and existing users. For example,
this happens in the Echo or GrowthExperiments extensions.
As of now, this behavior is implemented by inserting
user_properties rows in onLocalUserCreated.

Over time, this results in a singificant amount of rows
inserted, which contributes to the user_properties table bloat,
which is already overly large (cf. T54777). This patch makes it
possible to remove such rows by supporting conditional defaults
for user properties.

What:
Add support for conditional defaults of user properties. This can be
configured via `ConditionalUserOptions` config option.

Bug: T321527
Change-Id: I1549c3137e66801c85e03e46427e27da333d68e2
2024-01-09 02:33:17 +00:00
Timo Tijhof
2953becc4d ResourceLoader: Improve docs for $wgResourceLoaderValidateJS
Change-Id: If9591e292910fc2ae7bf2041af57b053d17eb845
2024-01-06 22:33:09 +00:00
Thalia
caf9912323 Use year in temporary user names and restart index each year
Why:

* Part of a temporary user name is generated from an index that
  increments, which is stored in the database.
* As specified in T345855, the index will be restarted each year.
* Also specified in T345855, the year will be included in
  generated temporary user names.

What:
* Since the year must be included in the name in order to avoid
  naming conflicts if the index is restarted each year, both are
  implemented together and controlled by a single config.
* Add a new config option that, when true, restarts the name
  generation index at the start of each year and add the year into
  the user name: $wgAutoCreateTempUser['serialProvider']['useYear']
* Add a uas_year column to the user_autocreate_serial table, which
  is unique in combination with uas_shard, so the index can be
  stored for each shard/year combination.
* The year is added into the username just after the prefix, as
  specified in T345855. This is based on research that having the
  year near the start of the name aids understanding that the
  names are not IP addresses. The position of the year within the
  name is therefore not configurable (though whether to include
  it is). See T345855 for the research.

Bug: T349494
Bug: T349501
Depends-On: I6b3c640a4e74f52fd4a4f46de5a2cbe80fe3b665
Change-Id: If51acb3f4efa361ce36d919c862a52501a5a7d24
2024-01-05 17:14:19 +00:00
Bartosz Dziewoński
6876ccf177 Replace $wgCommandLineMode checks with MW_ENTRY_POINT in other places
I'm not sure if there's a good way to split this up into
logical chunks.

Bug: T313841
Change-Id: I3b35a2e475b5143f383d4085fbc6a0ed3bbc32b8
2024-01-02 22:17:14 +01:00
jenkins-bot
9879c4587a Merge "Fix typo in 'MainStash' docs" 2023-12-23 08:10:05 +00:00
jenkins-bot
3f0e771aef Merge "Temp users: Add 'offset' option for PlainNumericSerialMapping" 2023-12-20 16:32:13 +00:00
Bartosz Dziewoński
05ebaa40a8 Fix typo in 'MainStash' docs
Change-Id: I6d4df851da40f6e44ad3bb5ea6a5679160771da4
2023-12-20 13:11:53 +01:00
Thalia
e1cb9deacb Temp users: Add 'offset' option for PlainNumericSerialMapping
Why:

* Naming conflicts may arise on autocreation.
* For example, when generating temporary user names, the config
  wgAutoCreateTempUser['serialMapping']['type'] determines how
  the unique, numerical part of the name is generated, and naming
  conflicts may arise when changing types.
* Specifically we encountered the case of changing the
  $wgAutoCreateTempUser['serialMapping']['type'] from 'scramble'
  to 'plain-numeric'.
* In general conflict could be avoided in 'plain-numeric' mode if
  the highest number used in an existing username is known, by
  adding an offset.

What:

* Handle an 'offset' config option in PlainNumericSerialMapping to
  allow avoiding conflicts.

Bug: T353545
Change-Id: Id2f9a5b5cc808ce859b93b597cf7ea0efcd9e269
2023-12-18 12:20:42 +00:00