Commit Graph

1800 Commits

Author SHA1 Message Date
zeripath 01087e9eef
Make Requests Processes and create process hierarchy. Associate OpenRepository with context. (#17125)
This PR registers requests with the process manager and manages hierarchy within the processes.

Git repos are then associated with a context, (usually the request's context) - with sub commands using this context as their base context.

Signed-off-by: Andrew Thornton <art27@cantab.net>
2021-11-30 20:06:32 +00:00
GiteaBot eb8513a690 [skip ci] Updated translations via Crowdin 2021-11-30 00:25:14 +00:00
GiteaBot 789d251ae4 [skip ci] Updated translations via Crowdin 2021-11-27 00:25:11 +00:00
GiteaBot f23851f690 [skip ci] Updated translations via Crowdin 2021-11-26 00:25:09 +00:00
GiteaBot 4f99697888 [skip ci] Updated translations via Crowdin 2021-11-25 00:25:19 +00:00
GiteaBot 3d996c85a5 [skip ci] Updated translations via Crowdin 2021-11-24 00:25:19 +00:00
GiteaBot c79cc2d3e8 [skip ci] Updated translations via Crowdin 2021-11-23 00:31:08 +00:00
zeripath 1dbc58f742
More pleasantly handle broken or missing git repositories (#17747)
* More pleasantly handle broken or missing git repositories

In #17742 it was noted that there a completely invalid git repository underlying a
repo on gitea.com. This happened due to a problem during a migration however, it
is not beyond the realms of possibility that a corruption could occur to another
user.

This PR adds a check to RepoAssignment that will detect if a repository loading has
failed due to an absent git repository. It will then show a page suggesting the user
contacts the administrator or deletes the repository.

Fix #17742

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Update options/locale/locale_en-US.ini

Co-authored-by: techknowlogick <techknowlogick@gitea.io>

Co-authored-by: techknowlogick <techknowlogick@gitea.io>
2021-11-22 22:32:16 +00:00
GiteaBot 55e9228866 [skip ci] Updated translations via Crowdin 2021-11-22 00:24:56 +00:00
zeripath 8511eec4d4
Allow Loading of Diffs that are too large (#17739)
* Allow Loading of Diffs that are too large

This PR allows the loading of diffs that are suppressed because the file
is too large. It does not handle diffs of files which have lines which
are too long.

Fix #17738

Signed-off-by: Andrew Thornton <art27@cantab.net>
2021-11-22 00:51:08 +08:00
wxiaoguang 013fb73068
Use `hostmatcher` to replace `matchlist`, improve security (#17605)
Use hostmacher to replace matchlist.

And we introduce a better DialContext to do a full host/IP check, otherwise the attackers can still bypass the allow/block list by a 302 redirection.
2021-11-20 17:34:05 +08:00
GiteaBot 52869ef386 [skip ci] Updated translations via Crowdin 2021-11-20 00:25:08 +00:00
Gusted 381e131fc8
Added comment for changing issue ref (#17672)
* Added comment for changing issue ref
- Add a comment when someone changes the ref(erence?) of a issue.
2021-11-19 17:54:31 +08:00
GiteaBot 72b0882a45 [skip ci] Updated translations via Crowdin 2021-11-19 00:25:46 +00:00
GiteaBot b01f6c1a8c [skip ci] Updated translations via Crowdin 2021-11-18 00:25:14 +00:00
KN4CK3R ea42d3c04e
Fixed commit count. (#17698)
Added "Tag" label.
Unified branch, tag and commit name.
2021-11-17 23:50:17 +00:00
GiteaBot 171f2d066e [skip ci] Updated translations via Crowdin 2021-11-17 00:25:11 +00:00
qwerty287 3be156f66a
Allow admins to change user avatars (#17661)
Adds the avatar change panel to the edit user page (bottom) and allows admins to change it this way

Co-authored-by: Gusted <williamzijl7@hotmail.com>
Co-authored-by: zeripath <art27@cantab.net>
2021-11-16 19:13:13 +00:00
zeripath bbffcc3aec
Multiple Escaping Improvements (#17551)
There are multiple places where Gitea does not properly escape URLs that it is building and there are multiple places where it builds urls when there is already a simpler function available to use this.
    
This is an extensive PR attempting to fix these issues.

1. The first commit in this PR looks through all href, src and links in the Gitea codebase and has attempted to catch all the places where there is potentially incomplete escaping.
2. Whilst doing this we will prefer to use functions that create URLs over recreating them by hand.
3. All uses of strings should be directly escaped - even if they are not currently expected to contain escaping characters. The main benefit to doing this will be that we can consider relaxing the constraints on user names and reponames in future. 
4. The next commit looks at escaping in the wiki and re-considers the urls that are used there. Using the improved escaping here wiki files containing '/'. (This implementation will currently still place all of the wiki files the root directory of the repo but this would not be difficult to change.)
5. The title generation in feeds is now properly escaped.
6. EscapePound is no longer needed - urls should be PathEscaped / QueryEscaped as necessary but then re-escaped with Escape when creating html with locales Signed-off-by: Andrew Thornton <art27@cantab.net>

Signed-off-by: Andrew Thornton <art27@cantab.net>
2021-11-16 18:18:25 +00:00
silverwind 23bd7b1211
Add copy button to markdown code blocks (#17638)
* Add copy button to markdown code blocks

Done mostly in JS because I think it's better not to try getting buttons
past the markup sanitizer.

* add svg module tests

* fix sanitizer regexp

* remove outdated comment

* vertically center button in issue comments as well

* add comment to css

* fix undefined on view file line copy

* combine animation less files

* Update modules/markup/markdown/markdown.go

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>

* add test for different sizes

* add cloneNode and add tests for it

* use deep clone

* remove useless optional chaining

* remove the svg node cache

* unify clipboard copy string and i18n

* remove unused var

* remove unused localization

* minor css tweaks to the button

* comment tweak

* remove useless attribute

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2021-11-16 16:16:05 +08:00
GiteaBot 3a60e0ad89 [skip ci] Updated translations via Crowdin 2021-11-16 00:25:21 +00:00
KN4CK3R ff9564a679
Changed migration text. (#17654) 2021-11-15 18:12:09 -05:00
Gusted 562785ef4e
Add download button for file viewer (#17640)
- Resolves #17286
- Use the `download` attribute such that the browser will natively
initate a download dialog for the given URL.

Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
2021-11-15 09:05:12 +08:00
GiteaBot 10db864c66 [skip ci] Updated translations via Crowdin 2021-11-15 00:24:54 +00:00
KN4CK3R 42ea0023a3
Add migration from GitBucket (#16767)
This PR adds [GitBucket](https://gitbucket.github.io/) as migration source.

Supported:
- Milestones
- Issues
- Pull Requests
- Comments
- Reviews
- Labels

There is no public usable instance so no integration tests added.
2021-11-14 20:11:10 +01:00
zeripath bab95c3a86
Correctly handle failed migrations (#17575)
* Correctly handle failed migrations

There is a bug in handling failed migrations whereby the migration task gets decoupled
from the migration repository. This leads to a failure of the task to get deleted with
the repository and also leads to the migration failed page resulting in a ISE.

This PR removes the zeroing out of the task id from the migration but also makes
the migration handler tolerate missing tasks much nicer.

Fix #17571

Signed-off-by: Andrew Thornton <art27@cantab.net>
2021-11-13 19:28:50 +08:00
GiteaBot 465fb4169e [skip ci] Updated translations via Crowdin 2021-11-10 00:25:15 +00:00
Kamil Domański 021df29623
Allow U2F 2FA without TOTP (#11573)
This change enables the usage of U2F without being forced to enroll an TOTP authenticator.
The `/user/auth/u2f` has been changed to hide the "use TOTP instead" bar if TOTP is not enrolled.

Fixes #5410
Fixes #17495
2021-11-08 23:47:19 +01:00
GiteaBot c9110eb5e4 [skip ci] Updated translations via Crowdin 2021-11-07 00:25:43 +00:00
Yuwei Ba 5e0cf4b82e
Update locale_en-US.ini (#17553) 2021-11-05 15:23:55 -04:00
GiteaBot de9625e485 [skip ci] Updated translations via Crowdin 2021-11-05 00:25:11 +00:00
GiteaBot f5bb788c4e [skip ci] Updated translations via Crowdin 2021-10-30 00:25:09 +00:00
GiteaBot 9733b60430 [skip ci] Updated translations via Crowdin 2021-10-29 00:25:11 +00:00
zeripath 3fc465ba5e
Fix mispelling of starred as stared (#17465)
There was a recent spelling mistake added to the locale file where stared was used
instead of starred.

This PR changes this to starred.

Signed-off-by: Andrew Thornton <art27@cantab.net>

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2021-10-28 15:05:00 +08:00
qwerty287 01fc24c78c
Add appearance section in settings (#17433)
* Add appearance section in settings

* Fix lint

* Fix lint

* Apply suggestions from code review

Co-authored-by: Lauris BH <lauris@nix.lv>

Co-authored-by: Lauris BH <lauris@nix.lv>
2021-10-27 23:40:08 +08:00
GiteaBot 843bc9deeb [skip ci] Updated translations via Crowdin 2021-10-25 00:25:06 +00:00
GiteaBot 07c7100c60 [skip ci] Updated translations via Crowdin 2021-10-24 00:25:14 +00:00
GiteaBot 2a9aefdabb [skip ci] Updated translations via Crowdin 2021-10-23 00:28:47 +00:00
GiteaBot 23d36929bc [skip ci] Updated translations via Crowdin 2021-10-22 00:25:10 +00:00
zeripath 09938ccd99
Re-separate the color translation strings (#17390)
Fix #17384

Signed-off-by: Andrew Thornton <art27@cantab.net>
2021-10-21 23:51:03 +02:00
GiteaBot 9046c022d2 [skip ci] Updated translations via Crowdin 2021-10-21 00:25:11 +00:00
Mario Lubenka 0208ea0248
"Copy branch name" button in pull request (#17323)
* Drop data-original from clipboard

data-original attribute was removed. Instead, the original value from
data-content is set after success/fail message was displayed.

Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com>

* "Copy branch name" button in pull request

Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com>

* Update templates/repo/issue/view_title.tmpl

Co-authored-by: silverwind <me@silverwind.io>

* Apply suggestions from code review

Co-authored-by: zeripath <art27@cantab.net>

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: zeripath <art27@cantab.net>
2021-10-19 13:32:11 -04:00
GiteaBot 1f41fcc342 [skip ci] Updated translations via Crowdin 2021-10-19 00:25:06 +00:00
GiteaBot 62a6717701 [skip ci] Updated translations via Crowdin 2021-10-18 00:25:12 +00:00
GiteaBot 8af5450cf7 [skip ci] Updated translations via Crowdin 2021-10-17 00:29:40 +00:00
6543 3728f1daa0
Add RSS/Atom feed support for user actions (#16002)
Return rss/atom feed for user based on rss url suffix or Content-Type header.
2021-10-16 16:21:16 +02:00
GiteaBot 74b6805225 [skip ci] Updated translations via Crowdin 2021-10-16 00:25:26 +00:00
zeripath a889d0cc8c
Add buttons to allow loading of incomplete diffs (#16829)
This PR adds two buttons to the stats and the end of the diffs list to load the (some of) the remaining incomplete diff sections.

Contains #16775
    
Signed-off-by: Andrew Thornton <art27@cantab.net>


## Screenshots

### Show more button at the end of the diff
![Screenshot from 2021-09-04 11-12-37](https://user-images.githubusercontent.com/1824502/132091009-b1f6113e-2c04-4be5-8a04-b8ecea56887b.png)

### Show more button at the end of the diff stats box
![Screenshot from 2021-09-04 11-14-54](https://user-images.githubusercontent.com/1824502/132091063-86da5a6d-6628-4b82-bea9-3655cd9f40f6.png)
2021-10-15 17:05:33 +01:00
Lunny Xiao bdfd751af8
Multiple tokens support for migrating from github (#17134)
* multiple tokens support for migrating from github

* improve code and token description

* Fix bug

* Add comment for get client
2021-10-15 13:47:15 +08:00
GiteaBot 96ff3e310f [skip ci] Updated translations via Crowdin 2021-10-15 00:25:10 +00:00
GiteaBot bd14c40461 [skip ci] Updated translations via Crowdin 2021-10-14 00:25:07 +00:00
wxiaoguang 7bcbdd0707
Add user status filter to admin user management page (#16770)
It makes Admin's life easier to filter users by various status.

* introduce window.config.PageData to pass template data to javascript module and small refactor

move legacy window.ActivityTopAuthors to window.config.PageData.ActivityTopAuthors
make HTML structure more IDE-friendly in footer.tmpl and head.tmpl
remove incorrect <style class="list-search-style"></style> in head.tmpl
use log.Error instead of log.Critical in admin user search

* use LEFT JOIN instead of SubQuery when admin filters users by 2fa. revert non-en locale.

* use OptionalBool instead of status map

* refactor SearchUserOptions.toConds to SearchUserOptions.toSearchQueryBase

* add unit test for user search

* only allow admin to use filters to search users
2021-10-12 20:11:35 +02:00
GiteaBot 7b8723158e [skip ci] Updated translations via Crowdin 2021-10-12 00:25:09 +00:00
GiteaBot 758c8c8446 [skip ci] Updated translations via Crowdin 2021-10-11 00:25:06 +00:00
wxiaoguang c5c88f2f18
Save and view issue/comment content history (#16909)
* issue content history

* Use timeutil.TimeStampNow() for content history time instead of issue/comment.UpdatedUnix (which are not updated in time)

* i18n for frontend

* refactor

* clean up

* fix refactor

* re-format

* temp refactor

* follow db refactor

* rename IssueContentHistory to ContentHistory, remove empty model tags

* fix html

* use avatar refactor to generate avatar url

* add unit test, keep at most 20 history revisions.

* re-format

* syntax nit

* Add issue content history table

* Update models/migrations/v197.go

Co-authored-by: 6543 <6543@obermui.de>

* fix merge

Co-authored-by: zeripath <art27@cantab.net>
Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: Lauris BH <lauris@nix.lv>
2021-10-10 18:40:03 -04:00
GiteaBot ff9a8a2231 [skip ci] Updated translations via Crowdin 2021-10-10 00:25:11 +00:00
GiteaBot 6d30a00762 [skip ci] Updated translations via Crowdin 2021-10-09 00:25:09 +00:00
a1012112796 bb39359668
Add a simple way to rename branch like gh (#15870)
- Update default branch if needed
- Update protected branch if needed
- Update all not merged pull request base branch name
- Rename git branch
- Record this rename work and auto redirect for old branch on ui

Signed-off-by: a1012112796 <1012112796@qq.com>
Co-authored-by: delvh <dev.lh@web.de>
2021-10-08 19:03:04 +02:00
GiteaBot f4ea6cc4b4 [skip ci] Updated translations via Crowdin 2021-10-05 00:25:07 +00:00
GiteaBot dd22c65002 [skip ci] Updated translations via Crowdin 2021-10-04 00:25:03 +00:00
qwerty287 47193dbcd9
Add option to copy line permalink (#17145)
* Add option to copy line permalink

* Fix lint

* Apply review suggestions

* Update code and fix lint

* Use features/clipboard.js framework
2021-10-02 10:46:43 +03:00
GiteaBot 5b2b2cf923 [skip ci] Updated translations via Crowdin 2021-10-02 00:25:02 +00:00
GiteaBot 347d48fdfe [skip ci] Updated translations via Crowdin 2021-10-01 00:25:01 +00:00
GiteaBot ac10c4ecc2 [skip ci] Updated translations via Crowdin 2021-09-30 00:25:39 +00:00
zeripath ddd3586c06
Fix missing repo link in issue/pull assigned emails (#17183)
There was a mistake in the template file: `templates/mail/issue/assigned.tmpl`
where the repourl was generated from a non-existent release instead of the issue.

This PR changes this to use the issue but also ensure that the issue repo is loaded.

It also slightly improves the English locale string.

Fix #17160

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: delvh <dev.lh@web.de>
2021-09-30 01:20:18 +02:00
Romain ecfac78f6e
Kanban colored boards (#16647)
Add a column Color in ProjectBoard and color picker in new / edit project board form.
2021-09-29 22:53:12 +02:00
GiteaBot 51bfe62bd9 [skip ci] Updated translations via Crowdin 2021-09-29 00:25:04 +00:00
GiteaBot 4389b2cacf [skip ci] Updated translations via Crowdin 2021-09-28 00:05:15 +00:00
zeripath 920608e592
Support direct comparison (git diff a..b) as well merge comparison (a...b) (#16635)
This PR changes the compare page to make the "..." in the between branches a clickable
link. This changes the comparison type from "..." to "..". Similarly it makes the
initial compare icon clickable to switch the head and base branches.

Signed-off-by: Andrew Thornton <art27@cantab.net>

Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
2021-09-27 13:19:34 +01:00
zeripath 123f0aea00
Allow LDAP Sources to provide Avatars (#16851)
* Allow LDAP Sources to provide Avatars

Add setting to LDAP source to allow it to provide an Avatar.

Currently this is required to point to the image bytes.

Fix #4144

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Rename as Avatar Attribute (drop JPEG)

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Always synchronize avatar if there is change

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Actually get the avatar from the ldap

Signed-off-by: Andrew Thornton <art27@cantab.net>

* clean-up

Signed-off-by: Andrew Thornton <art27@cantab.net>

* use len()>0 rather than != ""

Signed-off-by: Andrew Thornton <art27@cantab.net>

* slight shortcut in IsUploadAvatarChanged

Signed-off-by: Andrew Thornton <art27@cantab.net>

Co-authored-by: techknowlogick <techknowlogick@gitea.io>
2021-09-26 22:39:36 -04:00
GiteaBot 74542ad35b [skip ci] Updated translations via Crowdin 2021-09-26 00:05:01 +00:00
GiteaBot cbd5dc4dd6 [skip ci] Updated translations via Crowdin 2021-09-25 00:04:51 +00:00
crapStone 4a2655098f
Unify issue and pr subtitles (#17133) 2021-09-23 18:57:52 +02:00
GiteaBot d4bb8e0ae7 [skip ci] Updated translations via Crowdin 2021-09-20 00:04:38 +00:00
GiteaBot 693bea9780 [skip ci] Updated translations via Crowdin 2021-09-18 00:05:15 +00:00
GiteaBot f96d0d3d5b [skip ci] Updated translations via Crowdin 2021-09-17 00:04:54 +00:00
GiteaBot 5a42e72c04 [skip ci] Updated translations via Crowdin 2021-09-15 00:05:33 +00:00
GiteaBot 132c8c43e1 [skip ci] Updated translations via Crowdin 2021-09-13 00:05:10 +00:00
GiteaBot 20a2e26e99 [skip ci] Updated translations via Crowdin 2021-09-12 00:05:05 +00:00
Jimmy Praet 3d6cb25e31
Support unprotected file patterns (#16395)
Fixes #16381

Note that changes to unprotected files via the web editor still cannot be pushed directly to the protected branch. I could easily add such support for edits and deletes if needed. But for adding, uploading or renaming unprotected files, it is not trivial.

* Extract & Move GetAffectedFiles to modules/git
2021-09-11 16:21:17 +02:00
GiteaBot eb03e819d3 [skip ci] Updated translations via Crowdin 2021-09-11 00:05:02 +00:00
zeripath 9ca0e7905c
Add setting to OAuth handlers to skip local 2FA authentication (#16594)
This PR adds a setting to OAuth and OpenID login sources to allow the source to
skip local 2FA authentication.

Fix #13939

Signed-off-by: Andrew Thornton <art27@cantab.net>
2021-09-10 18:37:57 +02:00
zeripath 248b96d8a3
Use git attributes to determine generated and vendored status for language stats and diffs (#16773)
Replaces #16262
Replaces #16250
Replaces #14833

This PR first implements a `git check-attr` pipe reader - using `git check-attr --stdin -z --cached` - taking account of the change in the output format in git 1.8.5 and creates a helper function to read a tree into a temporary index file for that pipe reader.

It then wires this in to the language stats helper and into the git diff generation.

Files which are marked generated will be folded by default.

Fixes #14786
Fixes #12653
2021-09-09 21:13:36 +01:00
GiteaBot df2c7901e6 [skip ci] Updated translations via Crowdin 2021-09-09 00:04:58 +00:00
GiteaBot ded438fb1a [skip ci] Updated translations via Crowdin 2021-09-07 00:04:55 +00:00
GiteaBot 5a73153493 [skip ci] Updated translations via Crowdin 2021-09-04 00:04:54 +00:00
GiteaBot 219dec030d [skip ci] Updated translations via Crowdin 2021-09-03 00:04:56 +00:00
GiteaBot 9b4280ea4b [skip ci] Updated translations via Crowdin 2021-09-02 00:04:56 +00:00
a1012112796 cbf05c3f79
Add option to update pull request by `rebase` (#16125)
* add option to update pull request by `rebase`

Signed-off-by: a1012112796 <1012112796@qq.com>
2021-08-31 16:03:45 +02:00
GiteaBot b0ff429882 [skip ci] Updated translations via Crowdin 2021-08-30 00:04:50 +00:00
GiteaBot 5e71b9c200 [skip ci] Updated translations via Crowdin 2021-08-29 00:04:59 +00:00
zeripath e37342db0c
Add modals to Organization and Team remove/leave (#16471)
* Add modals to Organization and Team remove/leave

Add confirmation modals to Organization and Team remove and leave.

Fix #16215

Signed-off-by: Andrew Thornton <art27@cantab.net>

* avoid for-in

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Revert "avoid for-in"

This reverts commit 2af9a6f9d4.

* Apply suggestions from code review

Co-authored-by: silverwind <me@silverwind.io>

Co-authored-by: 6543 <6543@obermui.de>
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
2021-08-26 22:57:40 -04:00
GiteaBot 3289aceec2 [skip ci] Updated translations via Crowdin 2021-08-27 00:04:45 +00:00
GiteaBot c446901a5d [skip ci] Updated translations via Crowdin 2021-08-26 00:04:46 +00:00
delvh 20efc6b56c
Unify migration descriptions (#16781)
* Unify migration descriptions

* Clarify that pure Git migration differs from other migrations

Co-authored-by: Norwin <noerw@users.noreply.github.com>

* Use Pull Requests for Gitea migration

Co-authored-by: Norwin <noerw@users.noreply.github.com>
Co-authored-by: zeripath <art27@cantab.net>
2021-08-25 21:47:05 +08:00
John Olheiser 648464b504
Add bundle download for repository (#14538)
* Add bundle download

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix fmt

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Fix build tags

Signed-off-by: jolheiser <john.olheiser@gmail.com>

* Download specific commit

Signed-off-by: jolheiser <john.olheiser@gmail.com>
2021-08-24 11:47:09 -05:00
GiteaBot d22cb600ed [skip ci] Updated translations via Crowdin 2021-08-24 00:04:47 +00:00
GiteaBot 94f529af02 [skip ci] Updated translations via Crowdin 2021-08-23 00:04:31 +00:00
KN4CK3R cee5f7c5e2
Add migrate from OneDev (#16356)
* Use context to simplify logic.

* Added migration from OneDev.
This PR adds [OneDev](https://code.onedev.io/) as migration source.

Supported:
- [x] Milestones
- [x] Issues
- [x] Pull Requests
- [x] Comments
- [x] Reviews
- [x] Labels
2021-08-22 00:47:45 +02:00
Steven 3ecc4a1b9e
Fix dependency translations (#16753)
Signed-off-by: Steven Kriegler <61625851+justusbunsi@users.noreply.github.com>
2021-08-21 00:13:45 +01:00