1
0
mirror of https://github.com/stonith404/pingvin-share.git synced 2024-11-10 18:00:13 +01:00
Commit Graph

276 Commits

Author SHA1 Message Date
Elias Schneider
7304b54125
release: 0.17.4 2023-08-01 12:37:47 +02:00
Elias Schneider
62deb6c152
release: 0.17.3 2023-07-31 16:38:58 +02:00
Elias Schneider
9ba2b4c82c
fix: logo doesn't get loaded correctly 2023-07-31 16:38:29 +02:00
Elias Schneider
a47d080657
fix: share expiration never doesn't work if using another language than English 2023-07-31 16:34:24 +02:00
Elias Schneider
72a52eb33f
release: 0.17.2 2023-07-31 15:37:12 +02:00
Elias Schneider
c9a2a469c6
fix: ECONNREFUSED with Docker ipv6 enabled 2023-07-31 15:37:04 +02:00
Elias Schneider
b534129194
chore(translations): remove Thai 2023-07-31 08:56:22 +02:00
Elias Schneider
0beebfd779
chore(translation): add Russian 2023-07-31 08:55:17 +02:00
Elias Schneider
2ed5ecc1ea
release: 0.17.1 2023-07-30 22:34:33 +02:00
Elias Schneider
9bb05158c5
chore: update deps 2023-07-30 22:34:10 +02:00
Elias Schneider
36230371fd
chore: update translations via Crowdin (#216)
* New translations en-US.ts (Finnish)

* New translations en-US.ts (Finnish)

* New translations en-US.ts (Finnish)
2023-07-30 22:19:15 +02:00
Elias Schneider
5fd79a35cb
chore: add translation file for Finnish 2023-07-30 21:00:20 +02:00
Elias Schneider
cecaa90e15
chore: update translations via Crowdin (#215)
* New translations en-US.ts (Portuguese)

* New translations en-US.ts (Portuguese, Brazilian)

* New translations en-US.ts (Portuguese, Brazilian)
2023-07-30 20:58:23 +02:00
Elias Schneider
2584bb0d48
fix: rename pt-PT.ts to pt-BR.ts 2023-07-25 17:07:38 +02:00
Elias Schneider
82008aa261
chore: update translations via Crowdin (#207)
* New translations en-US.ts (French)

* New translations en-US.ts (French)

* New translations en-US.ts (Spanish)

* New translations en-US.ts (Danish)

* New translations en-US.ts (German)

* New translations en-US.ts (Portuguese)

* New translations en-US.ts (Chinese Simplified)

* New translations en-US.ts (Thai)

* New translations en-US.ts (French)

* New translations en-US.ts (French)

* New translations en-US.ts (Portuguese)

* New translations en-US.ts (Portuguese)

* New translations en-US.ts (Portuguese)

* New translations en-US.ts (Portuguese)

* New translations en-US.ts (Spanish)

* New translations en-US.ts (German)

* New translations en-US.ts (Portuguese, Brazilian)

* New translations en-US.ts (Portuguese, Brazilian)
2023-07-25 17:05:12 +02:00
Elias Schneider
a07a78a138
chore: update translations via Crowdin (#206)
* New translations en-US.ts (French)

* New translations en-US.ts (Spanish)

* New translations en-US.ts (Danish)

* New translations en-US.ts (German)

* New translations en-US.ts (Portuguese)

* New translations en-US.ts (Chinese Simplified)

* New translations en-US.ts (Thai)
2023-07-23 14:02:53 +02:00
Elias Schneider
2618bbb897
release: 0.17.0 2023-07-23 13:42:54 +02:00
Elias Schneider
6667c7a8d7
Merge branch 'main' of https://github.com/stonith404/pingvin-share 2023-07-23 13:42:13 +02:00
Elias Schneider
7f0c31c2e0
feat: add note to language picker 2023-07-23 13:42:10 +02:00
Elias Schneider
3165dcf9e6
chore: update translations via Crowdin (#205)
* New translations en-US.ts (German)

* New translations en-US.ts (German)

* New translations en-US.ts (French)

* New translations en-US.ts (Spanish)

* New translations en-US.ts (Danish)

* New translations en-US.ts (German)

* New translations en-US.ts (Portuguese)

* New translations en-US.ts (Chinese Simplified)

* New translations en-US.ts (Thai)

* New translations en-US.ts (Spanish)

* New translations en-US.ts (Spanish)

* New translations en-US.ts (Portuguese)
2023-07-23 12:36:17 +02:00
Elias Schneider
f4c88aeb08
fix: wrong layout if button text is too long in modals 2023-07-22 16:23:04 +02:00
Elias Schneider
231a2e95b9
feat: add share url alias /s 2023-07-22 16:09:10 +02:00
Elias Schneider
7827b687fa
feat: ability to define zip compression level 2023-07-22 15:44:45 +02:00
Elias Schneider
5816b39fc6
fix: confusion between GB and GiB 2023-07-22 15:29:53 +02:00
Elias Schneider
890588f5da
refactor: use locale instead of two letter code 2023-07-22 13:08:42 +02:00
Elias Schneider
e6a2014875
chore: update translations via Crowdin (#204)
* New translations en.ts (French)

* New translations en.ts (Spanish)

* New translations en.ts (Danish)

* New translations en.ts (German)

* New translations en.ts (Portuguese)

* New translations en.ts (Chinese Simplified)

* New translations en.ts (Thai)
2023-07-22 12:49:07 +02:00
Elias Schneider
396363488c
chore: minor translation fixes 2023-07-22 12:43:12 +02:00
Elias Schneider
424331ed1a
chore: update translations via Crowdin (#203)
* New translations en.ts (German)

* New translations en.ts (French)

* New translations en.ts (French)

* New translations en.ts (German)

* New translations zh-CN.ts (Chinese Simplified) (#202)

* finish Simplified Chinese trans in zh-CN.ts

* fix type error at line:270

---------

Co-authored-by: YunChao <yunchaozk@outlook.com>
2023-07-22 12:36:51 +02:00
Elias Schneider
d198a132db
chore: update translations via Crowdin (#200)
* New translations en.ts (German)

* New translations en.ts (French)

* New translations en.ts (French)

* New translations en.ts (German)
2023-07-22 12:34:26 +02:00
Elias Schneider
a041a6969d
chore: update translations via Crowdin (#197)
* New translations en.ts (French)

* New translations en.ts (Spanish)

* New translations en.ts (Danish)

* New translations en.ts (German)

* New translations en.ts (Portuguese)

* New translations en.ts (Chinese Simplified)

* New translations en.ts (Thai)

* New translations en.ts (French)

* New translations en.ts (French)

* New translations en.ts (Spanish)

* New translations en.ts (Danish)

* New translations en.ts (French)

* New translations en.ts (Spanish)

* New translations en.ts (Danish)

* New translations en.ts (French)

* New translations en.ts (Spanish)

* New translations en.ts (Danish)

* New translations en.ts (German)

* New translations en.ts (Portuguese)

* New translations en.ts (Chinese Simplified)

* New translations en.ts (Thai)

* New translations en.ts (French)

* New translations en.ts (Spanish)

* New translations en.ts (Spanish)

* New translations en.ts (German)

* New translations en.ts (German)
2023-07-20 23:45:09 +02:00
Elias Schneider
70b425b380
fix: mistakes in English translations 2023-07-20 19:42:55 +02:00
Elias Schneider
b9f6e3bd08
feat: localization (#196)
* Started adding locale translations :)

* Added some more translations

* Working on translating even more pages

* More translations

* Added test default locale retrieval

* replace `intl.formatMessage` with custom `t` hook

* add more translations

* improve title syntax

* add more translations

* translate admin config page

* translated error messages

* add language selecter

* minor fixes

* improve language handling

* add upcoming languages

* add `crowdin.yml`

* run formatter

---------

Co-authored-by: Steve Tautonico <stautonico@gmail.com>
2023-07-20 15:32:07 +02:00
Elias Schneider
7c5ec8d0ea
release: 0.16.1 2023-07-10 14:13:58 +02:00
Pierre Bidet
a1ea7c0265
fix: set link default value to random (#192)
* fix: set link default value to random

* fix: add auto EOL and add conventional-changelog package

* feat: Adding reverse shares' shares a clickable link (#178)

* Add clickable link to reverse share's shares

* Ran format

* Apply suggestions from code review

* fix: set link default value to random (#181)

* fix: set link default value to random

* fix: add auto EOL and add conventional-changelog package

* Apply suggestions from code review

---------

Co-authored-by: Elias Schneider <login@eliasschneider.com>

* feat: Adding reverse share ability to copy the link (#179)

---------

Co-authored-by: Elias Schneider <login@eliasschneider.com>
2023-07-10 13:58:17 +02:00
Elias Schneider
adf0f8d57e
release: 0.16.0 2023-07-09 17:15:26 +02:00
pierrbt
1466240461
feat: Adding more informations on My Shares page (table and modal) (#174)
* Adding an information button to the shares and corrected MyShare interface

* Adding other informations and disk usage

* Adding description, disk usage

* Add case if the expiration is never

* Adding file size and better UI

* UI changes to Information Modal

* Adding description to the My Shares page

* Ran format

* Remove string type

Co-authored-by: Elias Schneider <login@eliasschneider.com>

* Remove string type check

Co-authored-by: Elias Schneider <login@eliasschneider.com>

* Remove string type conversion

Co-authored-by: Elias Schneider <login@eliasschneider.com>

* Variable name changes

Co-authored-by: Elias Schneider <login@eliasschneider.com>

* Remove color

Co-authored-by: Elias Schneider <login@eliasschneider.com>

* Requested changes made

* Ran format

* Adding MediaQuery

---------

Co-authored-by: Elias Schneider <login@eliasschneider.com>
2023-06-26 08:22:15 +02:00
pierrbt
348852cfa4
feat: Adding the possibility of copying the link by clicking text and icons (#171) 2023-06-23 20:07:49 +02:00
Elias Schneider
932496a121
release: 0.15.0 2023-05-09 09:18:31 +02:00
Elias Schneider
2dc0fc9332
refactor: improve logging 2023-05-09 08:45:30 +02:00
Elias Schneider
5132d177b8
feat: add healthcheck endpoint 2023-04-27 22:31:06 +02:00
Elias Schneider
e5071cba12
feat: configure ports, db url and api url with env variables 2023-04-25 23:39:57 +02:00
Elias Schneider
b33c1d7f4b
release: 0.14.1 2023-04-07 23:13:54 +02:00
Elias Schneider
b7db9b9b40
refactor: simplify create share function 2023-04-04 22:47:32 +02:00
Elias Schneider
f2e4019190
release: 0.14.0 2023-04-01 20:19:27 +02:00
Elias Schneider
0e5c673270
fix: bool config variable can't be changed 2023-03-24 21:37:39 +01:00
iUnstable0
beece56327
feat(share, config): more variables, placeholder and reset default (#132)
* More email share vars + unfinished placeolders config

{desc} {expires} vars
(unfinished) config placeholder vals

* done

* migrate

* edit seed

* removed comments

* refactor: replace dependecy `luxon` with `moment`

* update shareRecipientsMessage message

* chore: remove `luxon`

* fix: grammatically incorrect `shareRecipientsMessage` message

* changed to defaultValue and value instead

* fix: don't expose defaultValue to non admin user

* fix: update default value if default value changes

* refactor: set config value to null instead of a empty string

* refactor: merge two migrations into one

* fix value check empty

---------

Co-authored-by: Elias Schneider <login@eliasschneider.com>
2023-03-23 08:31:21 +01:00
Elias Schneider
ca73ccf629
release: 0.13.1 2023-03-14 20:26:04 +01:00
Elias Schneider
2158df4228
release: 0.13.0 2023-03-14 16:09:20 +01:00
Elias Schneider
37e765ddc7
fix: show line breaks in txt preview 2023-03-14 16:08:57 +01:00
Elias Schneider
b25c30d1ed
feat: sort shared files 2023-03-14 14:50:18 +01:00
Elias Schneider
c807d208d8
feat: add preview modal 2023-03-14 12:09:21 +01:00
Elias Schneider
f82099f36e
fix: upload file if it is 0 bytes 2023-03-13 08:57:56 +01:00
Elias Schneider
6345e21db9
refactor: globalize modal title style 2023-03-13 08:50:54 +01:00
Elias Schneider
8ff417a013
fix: set password manually input not shown 2023-03-12 19:28:50 +01:00
Elias Schneider
cb1a0d4090
release: 0.12.1 2023-03-11 12:40:27 +01:00
Elias Schneider
0c2a62b0ca
release: 0.12.0 2023-03-10 09:40:19 +01:00
Elias Schneider
452c635933
chore: dump packages 2023-03-10 09:40:09 +01:00
Elias Schneider
0455ba1bc1
chore: upgrade mantine to v6 2023-03-10 09:01:33 +01:00
Elias Schneider
3ad6b03b6b
fix: home page shown even if disabled 2023-03-10 08:40:32 +01:00
Elias Schneider
91c3525b15
chore: add sharp for image optimizations 2023-03-08 17:47:36 +01:00
Elias Schneider
8403d7e14d
feat: ability to change logo in frontend 2023-03-08 14:47:41 +01:00
Elias Schneider
155c743197
release: 0.11.1 2023-03-05 10:50:32 +01:00
Elias Schneider
8b77e81d4c
fix: old config variable prevents to create a share 2023-03-05 10:48:01 +01:00
Elias Schneider
22d81b2220
release: 0.11.0 2023-03-04 23:41:11 +01:00
Elias Schneider
fddad3ef70
feat: custom branding (#112)
* add first concept

* remove setup status

* split config page in multiple components

* add custom branding docs

* add test email button

* fix invalid email from header

* add migration

* mount images to host

* update docs

* remove unused endpoint

* run formatter
2023-03-04 23:29:00 +01:00
Elias Schneider
f9840505b8
feat: invite new user with email 2023-02-21 08:51:04 +01:00
Elias Schneider
edb511252f
release: 0.10.2 2023-02-13 09:39:43 +01:00
Elias Schneider
c3af0fe097
fix: pdf preview tries to render on server 2023-02-13 09:39:27 +01:00
Elias Schneider
6419da07fb
release: 0.10.1 2023-02-12 20:00:55 +01:00
Elias Schneider
7cd9dff637
fix: setup wizard doesn't redirect after completion 2023-02-12 20:00:35 +01:00
Elias Schneider
dc8cf3d5ca
fix: non administrator user redirection error while setup isn't finished 2023-02-11 15:57:21 +01:00
Elias Schneider
4c6ef52a17
release: 0.10.0 2023-02-10 11:47:29 +01:00
Elias Schneider
ccdf8ea3ae
feat: allow multiple shares with one reverse share link 2023-02-10 11:10:07 +01:00
Elias Schneider
5d1a7f0310
feat!: reset password with email 2023-02-09 18:17:53 +01:00
Elias Schneider
38de022215
feat(frontend): server side rendering to improve performance 2023-02-07 10:21:25 +01:00
Elias Schneider
82f204e8a9
fix: invalid redirection after jwt expiry 2023-02-06 11:15:46 +01:00
Elias Schneider
4e840ecd29
refactor: handle authentication state in middleware 2023-02-04 18:12:49 +01:00
Elias Schneider
3d5c919110
release: 0.9.0 2023-01-31 15:25:01 +01:00
Elias Schneider
008df06b5c
feat: direct file link 2023-01-31 15:22:08 +01:00
Elias Schneider
233c26e5cf
fix: improve send test email UX 2023-01-31 13:16:11 +01:00
Elias Schneider
91a6b3f716
feat: file preview 2023-01-31 09:03:03 +01:00
Elias Schneider
0a2b7b1243
refactor: use cookie instead of local storage for share token 2023-01-26 21:18:22 +01:00
Elias Schneider
b98fe7911f
release: 0.8.0 2023-01-26 16:10:16 +01:00
Elias Schneider
ad92cfc852
fix: admin users were created while the setup wizard wasn't finished 2023-01-26 15:43:13 +01:00
Elias Schneider
4a5fb549c6
feat: reverse shares (#86)
* add first concept

* add reverse share funcionality to frontend

* allow creator to limit share expiration

* moved reverse share in seperate module

* add table to manage reverse shares

* delete complete share if reverse share was deleted

* optimize function names

* add db migration

* enable reverse share email notifications

* fix config variable descriptions

* fix migration for new installations
2023-01-26 13:44:04 +01:00
Elias Schneider
bb64f6c33f
fix: Add meta tags to new pages 2023-01-17 09:13:53 +01:00
Elias Schneider
e09213a295 release: 0.7.0 2023-01-13 10:59:52 +01:00
Elias Schneider
fc116d65c0 chore: dump packages 2023-01-13 10:31:22 +01:00
Elias Schneider
76088cc76a feat: add ClamAV to scan for malicious files 2023-01-13 10:16:35 +01:00
Elias Schneider
349bf475cc fix: invalid github release link on admin page 2023-01-11 22:32:37 +01:00
Elias Schneider
fccc4cbc02 release: 0.6.1 2023-01-11 13:08:09 +01:00
Elias Schneider
f1b44f87fa fix: shareUrl uses wrong origin 2023-01-11 13:06:38 +01:00
Elias Schneider
dc9ec429c6 release: 0.6.0 2023-01-09 12:14:41 +01:00
Elias Schneider
653d72bcb9
feat: chunk uploads (#76)
* add first concept

* finished first concept

* allow 3 uploads at same time

* retry if chunk failed

* updated clean temporary files job

* fix throttling for chunk uploads

* update tests

* remove multer

* migrate from `MAX_FILE_SIZE` to `MAX_SHARE_SIZE`

* improve error handling if file failed to upload

* fix promise limit

* improve file progress
2023-01-09 11:43:48 +01:00
Elias Schneider
72c8081e7c fix: error message typo 2023-01-06 09:21:46 +01:00
Elias Schneider
54f591cd60 release: 0.5.1 2023-01-04 16:02:54 +01:00
Elias Schneider
11174656e4 fix: email configuration updated without restart 2023-01-04 15:30:49 +01:00
Elias Schneider
faea1abcc4 feat: use cookies for authentication 2023-01-04 11:54:28 +01:00
Elias Schneider
71658ad39d feat: show version and show button if new release is available on admin page 2022-12-30 19:23:17 +01:00
Elias Schneider
5bc4f902f6
feat: improve config UI (#69)
* add first concept

* completed configuration ui update

* add button for testing email configuration

* improve mobile layout

* add migration

* run formatter

* delete unnecessary modal

* remove unused comment
2022-12-30 14:40:23 +01:00
Elias Schneider
e5b50f855c fix: refresh token gets deleted on session end 2022-12-26 12:57:54 +01:00
Elias Schneider
ef21bac59b feat: manually switch color scheme 2022-12-24 23:58:31 +01:00
Steve
16480f6e95
feat: TOTP (two-factor) Authentication (#55)
* Working on some initial prototype stuff for TOTP

* Fixed a bug that prevented the change password menu from working

* Enable/disable totp working

* Added the new login procedure including TOTP! :)

* misc: Changed bad description for the TOTP_SECRET env var

* I forgot to include the migration for the new prisma stuff

* fix: refresh user context instead refreshing the page

* refactor: simplify totp error handling

* Removed U2F tab + format schema

* fix: tokens not saved in cookies

* refactor: deleted commented out code

* refactor: move password text to input description

* refactor: remove tabler icon package

Co-authored-by: Elias Schneider <login@eliasschneider.com>
Co-authored-by: Elias Schneider <58886915+stonith404@users.noreply.github.com>
2022-12-21 17:58:37 +01:00
Elias Schneider
0616a68bd2 feat: custom email message 2022-12-15 21:44:04 +01:00
Elias Schneider
844c47e129 fix: rerange accordion items 2022-12-13 09:57:48 +01:00
Elias Schneider
8728fa5207 feat: add description field to share 2022-12-12 11:54:13 +01:00
Elias Schneider
3d1d4d0fc7 fix: only create zip if more than one file is in the share 2022-12-11 12:19:42 +01:00
Elias Schneider
d010a8a2d3 feat: upload 3 files at same time 2022-12-10 23:16:10 +01:00
Elias Schneider
9798e26872 fix: setup wizard table doesn't take full width 2022-12-10 18:45:53 +01:00
Elias Schneider
0c10dc674f
Merge pull request #37 from Neyxo/improvement-30-docker-image
Improved docker image (size & speed)
2022-12-10 18:33:45 +01:00
Jean-Michel Carrel
8e38c5fed7 Improved docker image (size & speed) 2022-12-10 15:34:01 +01:00
Elias Schneider
7e877ce9f4 fix: show alternative to copy button if site is not using https 2022-12-10 13:16:23 +01:00
Elias Schneider
b1bfb09dfd fix: tables on mobile 2022-12-09 14:37:09 +01:00
Elias Schneider
c8a4521677 fix: sign up page available when registration is disabled 2022-12-09 12:05:43 +01:00
Elias Schneider
a165f8ec4d refactor: remove console log 2022-12-08 23:22:15 +01:00
Elias Schneider
cbe37c6798 fix: obscured text length 2022-12-08 23:12:25 +01:00
Elias Schneider
a545c44426 fix: improve admin dashboard color and layout 2022-12-08 22:43:14 +01:00
Elias Schneider
bfb0d151ea fix: obscure critical config variables 2022-12-08 19:14:06 +01:00
Elias Schneider
4a016ed57d fix: unauthenticated dialog not shown 2022-12-06 11:05:04 +01:00
Elias Schneider
5ea63fb60b fix: use session storage for share token 2022-12-06 10:54:17 +01:00
Elias Schneider
75f57a4e57 fix: dropzone rejection on chrome 2022-12-05 22:09:41 +01:00
Elias Schneider
e2527de976 refactor: remove type email 2022-12-05 18:09:18 +01:00
Elias Schneider
b5c7b04fcb chore: upgrade dependencies 2022-12-05 17:27:19 +01:00
Elias Schneider
38f493ac5a refactor: run formatter 2022-12-05 16:54:15 +01:00
Elias Schneider
0499548dd3 refactor: convert config variables to upper case 2022-12-05 16:53:52 +01:00
Elias Schneider
d4a0f1a4f1 fix: unable to update user privileges 2022-12-05 16:17:41 +01:00
Elias Schneider
7a3967fd6f feat: add user management 2022-12-05 15:53:24 +01:00
Elias Schneider
e958a83b87 fix: docker build 2022-12-02 15:10:49 +01:00
Elias Schneider
b579b8f330 feat: add setup wizard 2022-12-01 23:07:49 +01:00
Elias Schneider
493705e4ef feat: add add new config strategy to frontend 2022-11-28 17:50:36 +01:00
Elias Schneider
34db3ae2a9 fix: hide and disallow email recipients if disabled 2022-11-11 19:03:08 +01:00
Elias Schneider
32ad43ae27 feat: add email recepients functionality 2022-11-11 15:12:16 +01:00
Elias Schneider
43299522ee chore: upgrade to Next.js 13 2022-10-31 11:20:54 +01:00
Elias Schneider
99de4e57e1 fix: share finishes before all files are uploaded 2022-10-31 10:28:29 +01:00
Elias Schneider
c2ddce6203 fix: infinite loading when file size is small 2022-10-29 23:09:28 +02:00
Elias Schneider
c6e1f07f51 fix: only show not signed in warning if not signed in 2022-10-29 22:55:46 +02:00
Elias Schneider
712cfe625a feat: add rate limiting 2022-10-24 12:11:10 +02:00
Elias Schneider
84d29dff68 feat: allow unauthenticated uploads 2022-10-18 14:27:14 +02:00
Elias Schneider
41c3bafbd7 chore: upgrade packages to fix vulnerabilities 2022-10-18 09:43:13 +02:00
Elias Schneider
c52a4d5e3a feat(frontend): remove footer 2022-10-18 09:31:13 +02:00
Elias Schneider
239b18cdae fix: opt out of static site generation to enable publicRuntimeConfig 2022-10-18 09:17:57 +02:00
Elias Schneider
cc17e7e641 fix: remove unused env variable 2022-10-16 20:31:16 +02:00
Elias Schneider
4e3f6be8e3 feat: automatically detect hour format 2022-10-16 20:21:35 +02:00
Elias Schneider
c5099ce2e8 refactor: run formatter 2022-10-16 00:14:02 +02:00
Elias Schneider
9d17377bbc Merge remote-tracking branch 'stonith404/main' into main 2022-10-16 00:08:37 +02:00
Steve Tautonico
5988d5ffcc
Added granular control of expiration + 12/24 hour modes 2022-10-14 18:14:46 -04:00
Elias Schneider
1259922847 fix: improve failed upload error handling 2022-10-14 15:10:24 +02:00
Elias Schneider
58efc48ffa feat: extract logo to component 2022-10-14 14:19:32 +02:00
Elias Schneider
a33b5b37d9 feat: replace tooltip with toast 2022-10-14 13:11:59 +02:00
Elias Schneider
aa5b125367 fix: share not found if unauthenticated 2022-10-14 12:21:26 +02:00