GitHub/WoltLab/WCF.git
4 years agoUse of explicit font weight `600` instead of `bold`
Alexander Ebert [Tue, 18 Aug 2020 17:54:44 +0000 (19:54 +0200)]
Use of explicit font weight `600` instead of `bold`

4 years agoAllow disabling preview button in WYSIWYG form container
ilou [Mon, 17 Aug 2020 16:44:31 +0000 (18:44 +0200)]
Allow disabling preview button in WYSIWYG form container

4 years agoMerge pull request #3517 from WoltLab/zxcvbn-bundle
Tim Düsterhus [Mon, 17 Aug 2020 15:21:17 +0000 (17:21 +0200)]
Merge pull request #3517 from WoltLab/zxcvbn-bundle

Load zxcvbn on demand

4 years agoMerge pull request #3516 from WoltLab/retain-dimensions-aspect-ratio
Tim Düsterhus [Mon, 17 Aug 2020 15:20:45 +0000 (17:20 +0200)]
Merge pull request #3516 from WoltLab/retain-dimensions-aspect-ratio

Improve phrasing for *_retain_dimensions phrases

4 years agoMerge pull request #3476 from WoltLab/failsafe-scss
Joshua Rüsweg [Mon, 17 Aug 2020 14:24:29 +0000 (16:24 +0200)]
Merge pull request #3476 from WoltLab/failsafe-scss

Failsafe Style SCSS

4 years agoFix comment
joshuaruesweg [Mon, 17 Aug 2020 14:13:25 +0000 (16:13 +0200)]
Fix comment

4 years agoFix image path on editing styles
joshuaruesweg [Mon, 17 Aug 2020 13:50:25 +0000 (15:50 +0200)]
Fix image path on editing styles

4 years agoRemove 3.1.* update instructions
Tim Düsterhus [Mon, 17 Aug 2020 13:34:27 +0000 (15:34 +0200)]
Remove 3.1.* update instructions

This cleans up package.xml. The 3.1.* instructions are not required for master / 5.3.

4 years agoRemove unused div from PasswordStrength.js
Tim Düsterhus [Mon, 17 Aug 2020 13:13:59 +0000 (15:13 +0200)]
Remove unused div from PasswordStrength.js

4 years agoLoad zxcvbn on demand
Tim Düsterhus [Mon, 17 Aug 2020 13:12:14 +0000 (15:12 +0200)]
Load zxcvbn on demand

Resolves #3515

4 years agoImprove phrasing for *_retain_dimensions phrases
Tim Düsterhus [Mon, 17 Aug 2020 13:00:07 +0000 (15:00 +0200)]
Improve phrasing for *_retain_dimensions phrases

- de: s/Bildformat/Seitenverhältnis/
- en: s/Dimensions/Aspect Ratio/
- en: Use Title Case

Resolves #3510

4 years agoClose the notification drop-down after clicking a link
Alexander Ebert [Sat, 15 Aug 2020 18:04:03 +0000 (20:04 +0200)]
Close the notification drop-down after clicking a link

This prevents the drop-down from staying open if the link is _effectively_ a no-op that does not cause a navigation, such as when the link target is the current page.

4 years agoMerge branch '5.2'
Alexander Ebert [Sat, 15 Aug 2020 17:37:20 +0000 (19:37 +0200)]
Merge branch '5.2'

4 years agoPrefer longer group names for mentions
Alexander Ebert [Sat, 15 Aug 2020 17:35:58 +0000 (19:35 +0200)]
Prefer longer group names for mentions

4 years agoAdded a unique key to `wcf1_user.username`
Marcel Werk [Sat, 15 Aug 2020 14:16:03 +0000 (16:16 +0200)]
Added a unique key to `wcf1_user.username`

Closes #3494

4 years agoIncrease upload limits to more reasonable values
Marcel Werk [Sat, 15 Aug 2020 14:12:03 +0000 (16:12 +0200)]
Increase upload limits to more reasonable values

Closes #3457

4 years agoFix indentation
joshuaruesweg [Fri, 14 Aug 2020 14:35:26 +0000 (16:35 +0200)]
Fix indentation

4 years agoFix cleanup
joshuaruesweg [Fri, 14 Aug 2020 14:29:11 +0000 (16:29 +0200)]
Fix cleanup

4 years agoGenerate CSS on saving custom CSS
joshuaruesweg [Fri, 14 Aug 2020 13:13:00 +0000 (15:13 +0200)]
Generate CSS on saving custom CSS

4 years agoMerge pull request #3511 from WoltLab/worker-thread-error-handling
Joshua Rüsweg [Fri, 14 Aug 2020 13:42:59 +0000 (15:42 +0200)]
Merge pull request #3511 from WoltLab/worker-thread-error-handling

Add proper error handling to WorkerCLICommand with --threads > 1

4 years agoMerge branch '5.2' into master
Tim Düsterhus [Fri, 14 Aug 2020 10:28:02 +0000 (12:28 +0200)]
Merge branch '5.2' into master

4 years agoSkip display-name of Mailbox if display-name == addr-spec
Tim Düsterhus [Fri, 14 Aug 2020 10:22:16 +0000 (12:22 +0200)]
Skip display-name of Mailbox if display-name == addr-spec

If the human readable $name of a Mailbox matches the $address then leave
out the $name within the header representation and specify a bare email
address. The name is redundant in cases like this and this might lead to
negative spam scoring.

4 years agoAdd proper error handling to WorkerCLICommand with --threads > 1
Tim Düsterhus [Fri, 14 Aug 2020 09:39:29 +0000 (11:39 +0200)]
Add proper error handling to WorkerCLICommand with --threads > 1

Fixes #3507

4 years agoConvert `<small>` into `font-size`
Alexander Ebert [Thu, 13 Aug 2020 21:39:37 +0000 (23:39 +0200)]
Convert `<small>` into `font-size`

4 years agoAllow the `dropover` to bubble from the editor
Alexander Ebert [Thu, 13 Aug 2020 18:26:47 +0000 (20:26 +0200)]
Allow the `dropover` to bubble from the editor

Enables proper drag & drop when running in fullscreen mode.

Fixes #3509

4 years agoMerge pull request #3508 from WoltLab/update-default-style
Tim Düsterhus [Thu, 13 Aug 2020 13:54:09 +0000 (15:54 +0200)]
Merge pull request #3508 from WoltLab/update-default-style

Update defaultStyle/ and defaultStyle.tar

4 years agoUpdate defaultStyle/ and defaultStyle.tar
Tim Düsterhus [Thu, 13 Aug 2020 11:48:16 +0000 (13:48 +0200)]
Update defaultStyle/ and defaultStyle.tar

The files have been created by exporting the style from the ACP for the
current git master.

Resolves #3459

4 years agoMerge branch '5.2'
Alexander Ebert [Thu, 13 Aug 2020 11:31:56 +0000 (13:31 +0200)]
Merge branch '5.2'

4 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Thu, 13 Aug 2020 11:31:37 +0000 (13:31 +0200)]
Merge branch '3.1' into 5.2

4 years agoMerge pull request #3500 from Krymonota/patch-12
Alexander Ebert [Thu, 13 Aug 2020 11:31:16 +0000 (13:31 +0200)]
Merge pull request #3500 from Krymonota/patch-12

Add missing phrases to English 3rd party register language items

4 years agoMerge pull request #3483 from WoltLab/page-action-buttons-overhaul
Alexander Ebert [Thu, 13 Aug 2020 11:29:36 +0000 (13:29 +0200)]
Merge pull request #3483 from WoltLab/page-action-buttons-overhaul

Overhauled the page action buttons' behavior

4 years agoMerge branch '5.2'
joshuaruesweg [Thu, 13 Aug 2020 07:46:00 +0000 (09:46 +0200)]
Merge branch '5.2'

4 years agoFix resizing images in Safari
joshuaruesweg [Thu, 13 Aug 2020 07:44:48 +0000 (09:44 +0200)]
Fix resizing images in Safari
Fixes #3506

4 years agoMerge pull request #3505 from WoltLab/create-thumbnail-leak
Tim Düsterhus [Thu, 13 Aug 2020 07:07:10 +0000 (09:07 +0200)]
Merge pull request #3505 from WoltLab/create-thumbnail-leak

Clear thumbnail handles as soon as possible

4 years agoMerge branch '5.2'
Marcel Werk [Wed, 12 Aug 2020 16:23:53 +0000 (18:23 +0200)]
Merge branch '5.2'

4 years agoMerge branch '3.1' into 5.2
Marcel Werk [Wed, 12 Aug 2020 16:22:56 +0000 (18:22 +0200)]
Merge branch '3.1' into 5.2

4 years agoPrevent username overflow in the message sidebar
Marcel Werk [Wed, 12 Aug 2020 16:22:37 +0000 (18:22 +0200)]
Prevent username overflow in the message sidebar

4 years agoMerge branch '5.2'
Marcel Werk [Wed, 12 Aug 2020 15:52:11 +0000 (17:52 +0200)]
Merge branch '5.2'

4 years agoMerge branch '3.1' into 5.2
Marcel Werk [Wed, 12 Aug 2020 15:51:54 +0000 (17:51 +0200)]
Merge branch '3.1' into 5.2

4 years agoPrevent changes to the showOrder setting of system boxes during an update
Marcel Werk [Wed, 12 Aug 2020 15:51:25 +0000 (17:51 +0200)]
Prevent changes to the showOrder setting of system boxes during an update

4 years agoMerge branch '5.2'
Marcel Werk [Wed, 12 Aug 2020 15:47:36 +0000 (17:47 +0200)]
Merge branch '5.2'

4 years agoMerge branch '3.1' into 5.2
Marcel Werk [Wed, 12 Aug 2020 15:47:22 +0000 (17:47 +0200)]
Merge branch '3.1' into 5.2

4 years agoPrevent changes to the visibility settings of system boxes during an update/upgrade
Alexander Ebert [Wed, 29 Jan 2020 13:38:56 +0000 (14:38 +0100)]
Prevent changes to the visibility settings of system boxes during an update/upgrade

4 years agoMerge branch '5.2' into master
Tim Düsterhus [Wed, 12 Aug 2020 15:14:54 +0000 (17:14 +0200)]
Merge branch '5.2' into master

4 years agoMerge pull request #3502 from Krymonota/timing-safe-comparison-social-login
Tim Düsterhus [Wed, 12 Aug 2020 14:13:05 +0000 (16:13 +0200)]
Merge pull request #3502 from Krymonota/timing-safe-comparison-social-login

Use timing safe comparison to validate `state` parameter for social login

4 years agoFix type of `options` parameter in HTTPRequest PHPDoc (#3504)
Niklas [Wed, 12 Aug 2020 14:08:29 +0000 (16:08 +0200)]
Fix type of `options` parameter in HTTPRequest PHPDoc (#3504)

4 years agoUse timing safe comparison to validate `state` parameter for social login
Niklas (Krymonota) [Wed, 12 Aug 2020 13:59:26 +0000 (15:59 +0200)]
Use timing safe comparison to validate `state` parameter for social login

The Twitter social login is left out because the implementation still uses OAuth 1.0, which does not support the `state` parameter.

Closes #3501

4 years agoClear thumbnail handles as soon as possible
Tim Düsterhus [Wed, 12 Aug 2020 13:55:02 +0000 (15:55 +0200)]
Clear thumbnail handles as soon as possible

This reproduces when rebuilding attachment thumbnails for largish animated
GIF files using ImageMagick. The ImageMagick on-disk cache quota is not
sufficient to hold:

1) The original
2) The tiny thumbnail
3) The in-progress regular thumbnail

The old value of the `$thumbnail` variable will only be destructed once (3)
returns. But the memory is already needed during execution of (3).

So this commit adjusts the code to `null` out the `$thumbnail` variable as
soon as possible, instead of waiting until it goes out of scope naturally.

Example stack trace from the worker:

    ImagickException: cache resources exhausted `/var/www/html/attachments/00/1-*snip*.bin' @ error/cache.c/OpenPixelCache/4083 in /var/www/html/lib/system/image/adapter/ImagickImageAdapter.class.php:132
    Stack trace:
    #0 /var/www/html/lib/system/image/adapter/ImagickImageAdapter.class.php(132): Imagick->cropthumbnailimage(352, 198)
    #1 /var/www/html/lib/system/image/adapter/ImageAdapter.class.php(82): wcf\system\image\adapter\ImagickImageAdapter->createThumbnail(352, 198, 0)
    #2 /var/www/html/lib/system/upload/DefaultUploadFileSaveStrategy.class.php(323): wcf\system\image\adapter\ImageAdapter->createThumbnail(352, 198, 0)
    #3 /var/www/html/lib/data/attachment/AttachmentAction.class.php(226): wcf\system\upload\DefaultUploadFileSaveStrategy->generateThumbnails(Object(wcf\data\attachment\Attachment))
    #4 /var/www/html/lib/data/AbstractDatabaseObjectAction.class.php(204): wcf\data\attachment\AttachmentAction->generateThumbnails()
    #5 /var/www/html/lib/system/worker/AttachmentRebuildDataWorker.class.php(48): wcf\data\AbstractDatabaseObjectAction->executeAction()
    #6 /var/www/html/lib/system/cli/command/WorkerCLICommand.class.php(152): wcf\system\worker\AttachmentRebuildDataWorker->execute()
    #7 /var/www/html/lib/system/CLIWCF.class.php(291): wcf\system\cli\command\WorkerCLICommand->execute(Array)
    #8 /var/www/html/lib/system/CLIWCF.class.php(85): wcf\system\CLIWCF->initCommands()
    #9 /var/www/html/cli.php(18): wcf\system\CLIWCF->__construct()
    #10 {main}

4 years agoAdd missing phrases to English 3rd party register language items
Niklas [Tue, 11 Aug 2020 16:16:41 +0000 (18:16 +0200)]
Add missing phrases to English 3rd party register language items

4 years agoMerge pull request #3499 from WoltLab/5.2-like-rebuild-data-fix
Joshua Rüsweg [Tue, 11 Aug 2020 09:32:34 +0000 (11:32 +0200)]
Merge pull request #3499 from WoltLab/5.2-like-rebuild-data-fix

Fix calculation the cached reactions

4 years agoUse proper placeholders for fetching the reactions
joshuaruesweg [Mon, 10 Aug 2020 16:36:49 +0000 (18:36 +0200)]
Use proper placeholders for fetching the reactions

4 years agoFix calculation the cached reactions
joshuaruesweg [Mon, 10 Aug 2020 15:57:26 +0000 (17:57 +0200)]
Fix calculation the cached reactions

4 years agoMerge branch '5.2' into master
Tim Düsterhus [Mon, 10 Aug 2020 15:20:05 +0000 (17:20 +0200)]
Merge branch '5.2' into master

4 years agoMerge pull request #3498 from WoltLab/dbo-action-php-8
Tim Düsterhus [Mon, 10 Aug 2020 15:19:21 +0000 (17:19 +0200)]
Merge pull request #3498 from WoltLab/dbo-action-php-8

Fix bogus call to `call_user_func_array` in AbstractDBOAction::validateAction()

4 years agoFix bogus call to `call_user_func_array` in AbstractDBOAction::validateAction()
Tim Düsterhus [Mon, 10 Aug 2020 14:16:37 +0000 (16:16 +0200)]
Fix bogus call to `call_user_func_array` in AbstractDBOAction::validateAction()

Fixes #3490

4 years agoMerge pull request #3449 from WoltLab/password-security
Alexander Ebert [Mon, 10 Aug 2020 12:42:17 +0000 (14:42 +0200)]
Merge pull request #3449 from WoltLab/password-security

Better password security estimation

4 years agoAdjusted the bar sizes for the visual password strength
Alexander Ebert [Mon, 10 Aug 2020 12:35:10 +0000 (14:35 +0200)]
Adjusted the bar sizes for the visual password strength

Old: 20/40/60/80/100
New: 5/20/50/85/100

4 years agoMerge pull request #3496 from WoltLab/comment-object-author-cleanup
Alexander Ebert [Mon, 10 Aug 2020 11:41:25 +0000 (13:41 +0200)]
Merge pull request #3496 from WoltLab/comment-object-author-cleanup

Add AbstractCommentManager::getObjectID() to DRY up isContentAuthor

4 years agoPrevent guests from being a comment’s content author
Tim Düsterhus [Mon, 10 Aug 2020 10:01:43 +0000 (12:01 +0200)]
Prevent guests from being a comment’s content author

4 years agoAdd AbstractCommentManager::getObjectID() to DRY up isContentAuthor
Tim Düsterhus [Mon, 10 Aug 2020 09:32:01 +0000 (11:32 +0200)]
Add AbstractCommentManager::getObjectID() to DRY up isContentAuthor

4 years agoMerge branch 'master' into password-security
Tim Düsterhus [Mon, 10 Aug 2020 07:48:49 +0000 (09:48 +0200)]
Merge branch 'master' into password-security

4 years agoSkip the menu indicator on mobile if only sub level items have counters
Marcel Werk [Sun, 9 Aug 2020 12:02:34 +0000 (14:02 +0200)]
Skip the menu indicator on mobile if only sub level items have counters

Closes #3164

4 years agoTypo
Alexander Ebert [Fri, 7 Aug 2020 23:21:12 +0000 (01:21 +0200)]
Typo

4 years agoMerge branch 'master' of https://github.com/WoltLab/WCF
Marcel Werk [Fri, 7 Aug 2020 20:53:30 +0000 (22:53 +0200)]
Merge branch 'master' of https://github.com/WoltLab/WCF

4 years agoAllow targeting of checkboxes in enableoptions
Marcel Werk [Fri, 7 Aug 2020 20:53:27 +0000 (22:53 +0200)]
Allow targeting of checkboxes in enableoptions

Closes #3277

4 years agoMerge pull request #3493 from WoltLab/comment-object-author
Alexander Ebert [Fri, 7 Aug 2020 17:43:33 +0000 (19:43 +0200)]
Merge pull request #3493 from WoltLab/comment-object-author

Add contentAuthor badge to comments

4 years agoMerge pull request #3482 from WoltLab/style-image-upload
Alexander Ebert [Fri, 7 Aug 2020 17:35:11 +0000 (19:35 +0200)]
Merge pull request #3482 from WoltLab/style-image-upload

Add upload for custom style assets

4 years agoImproved the UI/UX for the password strength estimations
Alexander Ebert [Fri, 7 Aug 2020 16:35:12 +0000 (18:35 +0200)]
Improved the UI/UX for the password strength estimations

4 years agoIgnore certain scroll events that are just side effects
Alexander Ebert [Fri, 7 Aug 2020 14:52:41 +0000 (16:52 +0200)]
Ignore certain scroll events that are just side effects

4 years agoUse a more defined description
Joshua Rüsweg [Fri, 7 Aug 2020 14:04:58 +0000 (16:04 +0200)]
Use a more defined description

Co-authored-by: Tim Düsterhus <duesterhus@woltlab.com>
4 years agoMerge branch '5.2'
joshuaruesweg [Fri, 7 Aug 2020 13:45:11 +0000 (15:45 +0200)]
Merge branch '5.2'

4 years agoRemove superfluous `array_unique` call
joshuaruesweg [Fri, 7 Aug 2020 13:43:27 +0000 (15:43 +0200)]
Remove superfluous `array_unique` call
No double value can occur in the array. When deleting, we already check if the object still exists in our file array and delete it only if it really still exists.

4 years agoImplement isContentAuthor for article comments
Tim Düsterhus [Fri, 7 Aug 2020 11:55:49 +0000 (13:55 +0200)]
Implement isContentAuthor for article comments

4 years agoImplement isContentAuthor for user profile comments
Tim Düsterhus [Fri, 7 Aug 2020 11:55:20 +0000 (13:55 +0200)]
Implement isContentAuthor for user profile comments

4 years agoAdd contentAuthor badge to comments
Tim Düsterhus [Fri, 7 Aug 2020 11:54:54 +0000 (13:54 +0200)]
Add contentAuthor badge to comments

Resolves #3386

4 years agoAdd ICommentManager::isContentAuthor()
Tim Düsterhus [Fri, 7 Aug 2020 11:54:35 +0000 (13:54 +0200)]
Add ICommentManager::isContentAuthor()

4 years agoMerge pull request #3488 from WoltLab/external-link-handling
Marcel Werk [Fri, 7 Aug 2020 10:43:47 +0000 (12:43 +0200)]
Merge pull request #3488 from WoltLab/external-link-handling

External link handling

4 years agoApplied suggestions
Marcel Werk [Fri, 7 Aug 2020 10:11:10 +0000 (12:11 +0200)]
Applied suggestions

4 years agoFix return value of sort callback in TemplateListPage
Tim Düsterhus [Fri, 7 Aug 2020 09:56:58 +0000 (11:56 +0200)]
Fix return value of sort callback in TemplateListPage

Found using PHP 8's new warning:

> Message: uasort(): Returning bool from comparison function is deprecated,
> return an integer less than, equal to, or greater than zero

4 years agoMerge branch '5.2' into master
Tim Düsterhus [Fri, 7 Aug 2020 09:42:09 +0000 (11:42 +0200)]
Merge branch '5.2' into master

4 years agoFix PHP 8 compatibility for WCFSetup's error handler
Tim Düsterhus [Fri, 7 Aug 2020 09:31:45 +0000 (11:31 +0200)]
Fix PHP 8 compatibility for WCFSetup's error handler

see 0267fa9af7e18aa6449726f748e672cdac192d12

4 years agoApplied suggestions
Marcel Werk [Fri, 7 Aug 2020 08:28:47 +0000 (10:28 +0200)]
Applied suggestions

4 years agoMerge pull request #3487 from WoltLab/improved-package-search-results
Marcel Werk [Fri, 7 Aug 2020 08:18:00 +0000 (10:18 +0200)]
Merge pull request #3487 from WoltLab/improved-package-search-results

Improve results when searching for packages

4 years agoMerge pull request #3477 from WoltLab/style-cleanup-update
Alexander Ebert [Thu, 6 Aug 2020 22:14:51 +0000 (00:14 +0200)]
Merge pull request #3477 from WoltLab/style-cleanup-update

Add update script for style cleanup

4 years agoAdded rel attribute for external links in menus
Marcel Werk [Thu, 6 Aug 2020 21:24:22 +0000 (23:24 +0200)]
Added rel attribute for external links in menus

4 years agoAdd rel="ugc" for links within user generated content
Marcel Werk [Thu, 6 Aug 2020 21:19:27 +0000 (23:19 +0200)]
Add rel="ugc" for links within user generated content

4 years agoImproved the animation behavior by merging transitions
Alexander Ebert [Thu, 6 Aug 2020 20:48:57 +0000 (22:48 +0200)]
Improved the animation behavior by merging transitions

4 years agoisInternalURL() treats everything as internal that resides on the same subdomain
Marcel Werk [Thu, 6 Aug 2020 20:45:09 +0000 (22:45 +0200)]
isInternalURL() treats everything as internal that resides on the same subdomain

4 years agoRemoved EXTERNAL_LINK_REL_NOFOLLOW
Marcel Werk [Thu, 6 Aug 2020 20:37:05 +0000 (22:37 +0200)]
Removed EXTERNAL_LINK_REL_NOFOLLOW

4 years agoNew method to generate attributes for <a> tags
Marcel Werk [Thu, 6 Aug 2020 20:36:49 +0000 (22:36 +0200)]
New method to generate attributes for <a> tags

4 years agoUse of StringUtil::getAnchorTag()
Marcel Werk [Thu, 6 Aug 2020 20:35:54 +0000 (22:35 +0200)]
Use of StringUtil::getAnchorTag()

4 years agouse StringUtil::getAnchorTag()
Marcel Werk [Thu, 6 Aug 2020 19:51:51 +0000 (21:51 +0200)]
use StringUtil::getAnchorTag()

4 years agoMerge pull request #3486 from Krymonota/use-generic-default-cookie-prefix
Alexander Ebert [Thu, 6 Aug 2020 17:24:52 +0000 (19:24 +0200)]
Merge pull request #3486 from Krymonota/use-generic-default-cookie-prefix

Use generic value for default cookie prefix

4 years agoFixed image path issue
Marcel Werk [Thu, 6 Aug 2020 15:47:47 +0000 (17:47 +0200)]
Fixed image path issue

4 years agoImprove results when searching for packages
Marcel Werk [Thu, 6 Aug 2020 15:42:47 +0000 (17:42 +0200)]
Improve results when searching for packages

Closes #3407

4 years agoUse generic value for default cookie prefix
Niklas (Krymonota) [Thu, 6 Aug 2020 15:23:31 +0000 (17:23 +0200)]
Use generic value for default cookie prefix

... so that it doesn't have to be adjusted for new versions.

4 years agoMerge branch '5.2'
Marcel Werk [Thu, 6 Aug 2020 14:26:20 +0000 (16:26 +0200)]
Merge branch '5.2'

4 years agoAdded missing informal variant
Marcel Werk [Thu, 6 Aug 2020 14:25:45 +0000 (16:25 +0200)]
Added missing informal variant

4 years agoMerge pull request #3484 from WoltLab/wcfsetup-cookietest
Tim Düsterhus [Thu, 6 Aug 2020 12:59:46 +0000 (14:59 +0200)]
Merge pull request #3484 from WoltLab/wcfsetup-cookietest

Detect misconfigured hostnames during WCFSetup

4 years agoDetect misconfigured hostnames during WCFSetup
Tim Düsterhus [Thu, 6 Aug 2020 12:38:02 +0000 (14:38 +0200)]
Detect misconfigured hostnames during WCFSetup

Misconfigured reverse reverse proxies might rewrite the `host` header to the
upstream's hostname, instead of preserving the `host` as it was sent by the
web browser. Such a misconfiguration will cause WoltLab Suite to generate
incorrect absolute URLs and more importantly this also causes it to specify
an incorrect `domain` within cookies. The latter leads to the browser ignoring
the cookie. At the end of WCFSetup this ultimately leads to the ACP session
cookie being ignored, which in turn leads to failing the transition from
WCFSetup into the package installation. Instead the user will be bounced to
the LoginForm which fails to load, because the necessary option.xml was not
yet installed.

An example HAProxy configuration that reproduces the issue is as follows:

    listen test
     mode http
     bind *:80
     http-request set-header host 172.19.0.5
     server nginx 172.19.0.5:80

If the WCFSetup is accepted via any hostname that is not `172.19.0.5`, e.g.
by using `localhost` then cookies will fail to stick within the web browser.

This commit extends the system requirements step to:

- Compare the HTTP_HOST as seen by the web server against both:
   1) The `Referer` header.
   2) The `window.location.host` value in JavaScript.
  If any of those mismatches, then the web server is not correctly configured.
- Read a cookie that was set earlier.
  If this cookie is missing, then most likely the `domain` property was
  incorrectly specified.

This commit most likely resolves #3024.