Commit Graph

717 Commits

Author SHA1 Message Date
Miroslav Šedivý
d65ba62bfc upload middleware: fix permissions issue. 2021-01-08 23:42:53 +01:00
Miroslav Šedivý
fc6997d2ac lint fix. 2021-01-08 22:41:37 +01:00
Miroslav Šedivý
a6afccd079 desktop single mutex shared gtk. 2021-01-08 22:03:50 +01:00
Miroslav Šedivý
d3340ad085 upload drop change API. 2021-01-07 18:28:23 +01:00
Miroslav Šedivý
3f9fffe96d desktop drop -> gtk. 2021-01-07 18:27:50 +01:00
Miroslav Šedivý
39208f1ea5 drop: chrome weird behavior, multiple cursor moves. 2021-01-06 20:16:21 +01:00
Miroslav Šedivý
3e52b264ba API drop file upload. 2021-01-06 20:03:41 +01:00
Miroslav Šedivý
a104fc0525 change formatting. 2021-01-06 18:58:16 +01:00
Miroslav Šedivý
62ba53dc46 implement file drop API. 2021-01-06 18:57:50 +01:00
Miroslav Šedivý
64187964d4 uris -> files. 2021-01-06 18:54:55 +01:00
Miroslav Šedivý
a92ead019e add drop bindings. 2021-01-06 18:27:21 +01:00
Miroslav Šedivý
4aa7da45e1 screen change mutex, fixes "HTTP requests are not buffered - screen changing is failing". 2021-01-04 19:39:21 +01:00
Miroslav Šedivý
245c3d9635 add CanHostOnly. 2020-12-29 22:00:28 +01:00
Miroslav Šedivý
655d64105e HttpJsonRequest user friendly message. 2020-12-27 21:07:09 +01:00
Miroslav Šedivý
da71c9261d API: Target member was not found, return 404. 2020-12-27 17:07:09 +01:00
Miroslav Šedivý
a6dccc753b API update: control give memberId. 2020-12-26 23:53:04 +01:00
Miroslav Šedivý
b197bb303e add support for modules. 2020-12-12 18:37:19 +01:00
Miroslav Šedivý
5b69413e01 AddHandler in WebSockets. 2020-12-12 17:40:10 +01:00
Miroslav Šedivý
af463b1015 AddRouter in API. 2020-12-12 17:07:45 +01:00
Miroslav Šedivý
9786c8d537 join members endpoints to one file. 2020-12-08 16:05:54 +01:00
Miroslav Šedivý
f1f26b5f25 MemberDataPayload & membersList implemented. 2020-12-08 16:04:54 +01:00
Miroslav Šedivý
7fb40c0384 + GetProfile & GetState members. 2020-12-08 15:37:48 +01:00
Miroslav Šedivý
209971cb8a member profile & state to types. 2020-12-08 15:14:20 +01:00
Miroslav Šedivý
58c8104ce6 remove unused logger from room api handler. 2020-12-08 14:31:15 +01:00
Miroslav Šedivý
4b4ddcfe15 use json marshal default values. 2020-12-08 14:13:12 +01:00
Miroslav Šedivý
303c22bba5 profileChanged tested, minor bugs fixed. 2020-12-06 21:34:23 +01:00
Miroslav Šedivý
9ca4e04e0b pointer struct to members crud. 2020-12-06 21:10:45 +01:00
Miroslav Šedivý
2467c94c59 add profileChanged. 2020-12-06 19:29:39 +01:00
Miroslav Šedivý
a2da60d617 add default access control on users. 2020-12-06 19:19:57 +01:00
Miroslav Šedivý
c714d17d87 is_receiving - is_watching. 2020-12-06 19:02:33 +01:00
Miroslav Šedivý
e17e2cb606 + CanAccessClipboard. 2020-12-06 18:55:24 +01:00
Miroslav Šedivý
5edd9dc97a + CanHost. 2020-12-06 18:50:41 +01:00
Miroslav Šedivý
92aa717a8d user - member. 2020-12-06 18:50:04 +01:00
Miroslav Šedivý
4fe74fd112 + CanWatch. 2020-12-06 18:49:20 +01:00
Miroslav Šedivý
d2ffac3d4b + CanConnect. 2020-12-06 18:49:08 +01:00
Miroslav Šedivý
0a201d50c8 + CanLogin. 2020-12-06 18:48:50 +01:00
Miroslav Šedivý
35cd0f5270 add connect / disconnect to adapters. 2020-12-06 18:11:11 +01:00
Miroslav Šedivý
6ca1e27f01 add file adapter. 2020-12-06 17:28:15 +01:00
Miroslav Šedivý
100544198b add members database adapters interface. 2020-12-06 00:21:09 +01:00
Miroslav Šedivý
edb9fef097 remove unused HasHost. 2020-12-05 23:42:40 +01:00
Miroslav Šedivý
b24c217509 members database import. 2020-12-05 23:31:41 +01:00
Miroslav Šedivý
9f452aeb01 add database to Sessions. 2020-12-05 23:05:46 +01:00
Miroslav Šedivý
a6fbafc079 SetProfile changed as Update. 2020-12-05 22:18:45 +01:00
Miroslav Šedivý
22407825fe destroy only if is WebRTC active. 2020-12-05 21:05:09 +01:00
Miroslav Šedivý
feb07b97ab resolve deadlock problem with mutexes. 2020-12-03 20:05:44 +01:00
Miroslav Šedivý
c61f5f2835 WebRTC + peer closed. 2020-12-03 17:03:15 +01:00
Miroslav Šedivý
4670b5187c Disconnect WebRTC on socket disconnect. 2020-12-03 16:45:41 +01:00
Miroslav Šedivý
7eee6debc7 WS remove connected & disconnected event. 2020-12-03 16:42:27 +01:00
Miroslav Šedivý
d7b5bd6842 extract member state to custom struct. 2020-12-03 16:10:52 +01:00
Miroslav Šedivý
5f3b9f72cf ID in MemberProfile. 2020-12-02 19:22:26 +01:00
Miroslav Šedivý
f361d0c681 WS added session events. 2020-12-02 18:59:54 +01:00
Miroslav Šedivý
1f5c0a3547 updated session events. 2020-12-02 18:59:32 +01:00
Miroslav Šedivý
cf47b7e2fa crud update new member profile. 2020-12-02 17:43:34 +01:00
Miroslav Šedivý
81b3fbd673 moved capture StopStream to websockets events. 2020-12-02 17:36:06 +01:00
Miroslav Šedivý
0d2f3405bb new MemberProfile & session refactor. 2020-12-02 17:29:38 +01:00
Miroslav Šedivý
220e162f42 beautify. 2020-12-02 17:23:35 +01:00
Miroslav Šedivý
82d37b15e4 HasConnectedMembers and Members returns not connected. 2020-12-02 17:12:00 +01:00
Miroslav Šedivý
5541675f57 use member id or create new. 2020-12-02 16:50:30 +01:00
Miroslav Šedivý
123fbd8317 IsAdmin + IsConnected. 2020-12-02 16:49:51 +01:00
Miroslav Šedivý
25fec63455 WS do not connect if already connected. 2020-12-02 11:45:22 +01:00
Miroslav Šedivý
1677e38935 introduced ImplicitHosting. 2020-12-02 11:24:20 +01:00
Miroslav Šedivý
26c0fea840 controlRequest if already is the host. 2020-12-02 10:47:20 +01:00
Miroslav Šedivý
b7103ca809 ResetKeys on ClearHost. 2020-12-02 10:46:00 +01:00
Miroslav Šedivý
964588b328 remove HostID. 2020-12-02 00:04:36 +01:00
Miroslav Šedivý
bdd8bdab72 members as map. 2020-12-01 22:56:08 +01:00
Miroslav Šedivý
b82fbae597 replace old Member structures. 2020-12-01 19:47:50 +01:00
Miroslav Šedivý
6599a093c0 remove MemberList structs. 2020-12-01 19:45:21 +01:00
Miroslav Šedivý
1b6bc44f2a event SystemDisconnect. 2020-12-01 19:44:23 +01:00
Miroslav Šedivý
21293256ed connected session only websocket. 2020-11-30 22:28:13 +01:00
Miroslav Šedivý
b194f8034a add MemberId to init. 2020-11-30 22:24:58 +01:00
Miroslav Šedivý
2c7291324c fix Host ID json name. 2020-11-30 21:27:43 +01:00
Miroslav Šedivý
5c0dee93ac messages highlight comments. 2020-11-30 21:06:37 +01:00
Miroslav Šedivý
caa4be4d3b remove unused MEMBER_LIST. 2020-11-30 21:06:19 +01:00
Miroslav Šedivý
d00015ee91 system init WS. 2020-11-30 20:07:19 +01:00
Miroslav Šedivý
745ef00cd2 update connected / disconnected events. 2020-11-30 19:13:17 +01:00
Miroslav Šedivý
753fb01955 removed OnCreated event. 2020-11-30 18:52:16 +01:00
Miroslav Šedivý
743ab2bf6a signal provide upon request WS. 2020-11-30 18:27:25 +01:00
Miroslav Šedivý
2e090eb54d update control WS. 2020-11-30 18:24:38 +01:00
Miroslav Šedivý
4bbf3bb039 update screen WS. 2020-11-30 17:53:05 +01:00
Miroslav Šedivý
83be51ea0f update keyboard WS. 2020-11-30 17:45:53 +01:00
Miroslav Šedivý
e93d167be6 update clipboard WS. 2020-11-30 17:40:38 +01:00
Miroslav Šedivý
2c210f3cf1 signal provide remove ID. 2020-11-30 17:33:34 +01:00
Miroslav Šedivý
0a75950356 remove admin from websockets. 2020-11-30 17:31:29 +01:00
Miroslav Šedivý
994a91886d remove broadcast from websocket. 2020-11-30 17:29:05 +01:00
Miroslav Šedivý
def6248ca7 revert broadcast status. 2020-11-30 17:27:11 +01:00
Miroslav Šedivý
8f9671689f add new messages. 2020-11-30 17:09:14 +01:00
Miroslav Šedivý
8cce32c73c edit control event as host. 2020-11-30 17:06:42 +01:00
Miroslav Šedivý
147aa0e1a3 updated websocket events with TODO comments. 2020-11-30 15:48:19 +01:00
Miroslav Šedivý
f9b62073ef add control reset. 2020-11-29 15:58:26 +01:00
Miroslav Šedivý
179a22476c do not remove user on disconnect. 2020-11-28 15:30:35 +01:00
Miroslav Šedivý
5699ad0bf9 allow login using Query. 2020-11-28 15:22:04 +01:00
Miroslav Šedivý
b675e4cc82 member name refactor. 2020-11-28 15:03:38 +01:00
Miroslav Šedivý
c4978ba376 http response name convention. 2020-11-28 15:00:21 +01:00
Miroslav Šedivý
3f312c84ad remove user kick. 2020-11-28 14:32:38 +01:00
Miroslav Šedivý
59457b7658 rest CRUD members minor update. 2020-11-27 20:00:14 +01:00
Miroslav Šedivý
a90bf87e24 login with secret. 2020-11-27 19:59:54 +01:00
Miroslav Šedivý
a330a3cc76 REST create & Delete member. 2020-11-25 22:39:54 +01:00
Miroslav Šedivý
71a84963bc fix types - no json. 2020-11-25 22:35:54 +01:00
Miroslav Šedivý
ecfce6c886 remove room lock. 2020-11-25 22:16:56 +01:00
Miroslav Šedivý
d1fccf5ab6 MemberProfile as public type & create user on auth. 2020-11-25 22:07:05 +01:00
Miroslav Šedivý
665d9d2130 Create + Delete session. 2020-11-25 22:06:13 +01:00
Miroslav Šedivý
104d98d129 comment out yet unused props. 2020-11-25 20:26:29 +01:00
Miroslav Šedivý
f9b2460c3b replace SetConnected function. 2020-11-25 20:26:11 +01:00
Miroslav Šedivý
fa54823098 Split connected to WebRTC & WebSocket. 2020-11-25 20:02:53 +01:00
Miroslav Šedivý
bc77c8f8f5 add MemberProfile to session. 2020-11-25 19:44:50 +01:00
Miroslav Šedivý
b73e2403af peer -> webrtc_peer. 2020-11-25 18:41:40 +01:00
Miroslav Šedivý
ff7efe9f3b socket -> websocket_peer. 2020-11-25 18:36:33 +01:00
Miroslav Šedivý
d49542013b CRUD add payloads. 2020-11-22 00:06:55 +01:00
Miroslav Šedivý
43781cdf52 fix crud handler. 2020-11-21 23:57:54 +01:00
Miroslav Šedivý
ce49d975c0 member in plural form. 2020-11-21 23:42:34 +01:00
Miroslav Šedivý
d39d922f85 add dummy member endpoints. 2020-11-21 23:39:24 +01:00
Miroslav Šedivý
45f029a2a4 fix broadcast bug. 2020-11-18 23:32:43 +01:00
Miroslav Šedivý
fb6dabf4e0 add control status. 2020-11-18 23:14:28 +01:00
Miroslav Šedivý
628abe06fd rest control edit. 2020-11-18 23:05:38 +01:00
Miroslav Šedivý
428d6939ec use HttpUnprocessableEntity if already broadcasting. 2020-11-18 23:05:26 +01:00
Miroslav Šedivý
ef03f9ec9d do not export REST functions. 2020-11-18 22:35:50 +01:00
Miroslav Šedivý
1ae6f05c73 update 401 & 403. 2020-11-18 22:34:42 +01:00
Miroslav Šedivý
18ca647c76 Data -> Payload & change order. 2020-11-18 21:56:42 +01:00
Miroslav Šedivý
ac2fc100b4 REST API keyboard. 2020-11-18 21:53:06 +01:00
Miroslav Šedivý
db820806a4 add broadcast endpoint & broadcast pipeline return error. 2020-11-18 21:34:39 +01:00
Miroslav Šedivý
6fbb1a2cc7 add control give & control take endpoints. 2020-11-18 21:10:40 +01:00
Miroslav Šedivý
6d27b0a69c return err socket. 2020-11-18 20:34:33 +01:00
Miroslav Šedivý
da7e6f7728 Broadcast should not return error. 2020-11-18 20:30:33 +01:00
Miroslav Šedivý
3f4914d260 REST API control. 2020-11-16 22:48:20 +01:00
Miroslav Šedivý
eec285cd07 Rename displayname to name. 2020-11-16 22:22:19 +01:00
Miroslav Šedivý
570efbf3a6 remove unused ban endpoint. 2020-11-16 22:21:21 +01:00
Miroslav Šedivý
d87a10b23a remove unused mute function. 2020-11-16 22:10:03 +01:00
Miroslav Šedivý
99068b893b naming convention -> screen size. 2020-11-16 22:04:50 +01:00
Miroslav Šedivý
227b6b24c2 REST screen change broadcast. 2020-11-16 21:57:53 +01:00
Miroslav Šedivý
e8f9e2e4e4 fix clipboard bug. 2020-11-16 21:57:35 +01:00
Miroslav Šedivý
0dab2a99d3 introduce REST API authorization. 2020-11-16 19:37:52 +01:00
Miroslav Šedivý
316533dab0 remove duplicate error logging. 2020-11-16 18:12:25 +01:00
Miroslav Šedivý
b411675108 code indentation. 2020-11-16 17:48:10 +01:00
Miroslav Šedivý
234b0a2e06 remove code duplication. 2020-11-16 16:56:03 +01:00
Miroslav Šedivý
db706097f6 add mutex on streaming and fix "Fail while changing screen size and no users are joined". 2020-11-14 23:14:48 +01:00
Miroslav Šedivý
0d419787bc add memberMu. 2020-11-14 23:05:09 +01:00
Miroslav Šedivý
f11c1c5e54 add hostMu. 2020-11-14 22:54:35 +01:00
Miroslav Šedivý
1fd53cfb74 CheckKeys() mutex on shared map. 2020-11-14 22:35:50 +01:00
Miroslav Šedivý
8a9f465d0b add log to http utils. 2020-11-14 18:27:20 +01:00
Miroslav Šedivý
4a5654f2ef fix lint err. 2020-11-14 18:27:10 +01:00
Miroslav Šedivý
7524f20cb7 http session context helper function. 2020-11-14 18:22:15 +01:00
Miroslav Šedivý
40b986c8be use Chi Router instead of Chi Mux. 2020-11-14 18:16:25 +01:00
Miroslav Šedivý
a18482b54e use websocket authentication & refactor. 2020-11-14 17:51:18 +01:00
Miroslav Šedivý
f136a31b03 minor refactor ifs. 2020-11-14 16:09:00 +01:00
Miroslav Šedivý
7c64e6068a minor session changes. 2020-11-14 16:03:39 +01:00
Miroslav Šedivý
e5eaf5c60c session id to session. 2020-11-14 16:03:12 +01:00
Miroslav Šedivý
fdf5839547 trim newlines on webrtc logs. 2020-11-14 14:52:15 +01:00
Miroslav Šedivý
d09b6dcb10 broadcast naming convention & on destroy. 2020-11-14 13:46:12 +01:00
Miroslav Šedivý
bd45e81afe fixes "Fast changing screen size crashes neko". 2020-11-13 22:22:44 +01:00
Miroslav Šedivý
9c26f35c76 destroy pipelines func. 2020-11-13 21:23:48 +01:00
Miroslav Šedivý
ff97242bac normalize logs. 2020-11-13 17:42:04 +01:00
Miroslav Šedivý
dd8867615e fix naming convention. 2020-11-13 17:34:53 +01:00
Miroslav Šedivý
e4864b095e http listening not warning. 2020-11-07 20:12:37 +01:00
Miroslav Šedivý
a6fd0f3d25 fixes "screen size change is sometimes failing". 2020-11-07 17:22:25 +01:00
Miroslav Šedivý
e4fa855f7b linter fix. 2020-11-04 00:41:04 +01:00
Miroslav Šedivý
a8173ce02f change screen size only on desktop. 2020-11-04 00:27:47 +01:00
Miroslav Šedivý
b0ae758d7b refactor xorg race condition. 2020-11-04 00:09:52 +01:00
Miroslav Šedivý
51c6e0091f Connected / Disconnected refactor. 2020-11-01 21:03:25 +01:00
Miroslav Šedivý
e51541fe01 separate disconnect from destroy. 2020-11-01 20:53:25 +01:00
Miroslav Šedivý
311ed987d8 refactor WS authentication. 2020-11-01 20:23:09 +01:00
Miroslav Šedivý
16d762b6ae GST pipelines refactor. 2020-11-01 20:18:19 +01:00
Miroslav Šedivý
c10b2212d1 auth moved from websockets to session. 2020-11-01 18:39:12 +01:00
Miroslav Šedivý
3ea979ed47 minor changes. 2020-11-01 18:12:16 +01:00
Miroslav Šedivý
c53ae28196 remove emotes structs. 2020-11-01 17:56:06 +01:00
Miroslav Šedivý
d78f98e78e make serving files as optional feature. 2020-11-01 17:40:22 +01:00
Miroslav Šedivý
7fb977faa4 edit broadcast. 2020-11-01 17:34:47 +01:00
Miroslav Šedivý
507fce7862 port new API back to refactor. 2020-11-01 16:54:06 +01:00
Miroslav Šedivý
9559edf4d4 bug fixes. 2020-11-01 16:37:00 +01:00
Miroslav Šedivý
5d906e0a8b major refactor. 2020-11-01 16:09:48 +01:00
Miroslav Šedivý
5c92b75cf7 Refactor: session remove duplicate ID in endpoints. 2020-10-31 23:53:19 +01:00
Miroslav Šedivý
e150203b54 refactor session remove redundant IDs. 2020-10-31 23:03:37 +01:00
Miroslav Šedivý
b61495ac0b remove redundant ID parameter in websockets. 2020-10-31 22:43:47 +01:00
Miroslav Šedivý
b6393c4396 API lint fix. 2020-10-31 21:58:57 +01:00
Miroslav Šedivý
5a25aefa34 webRTC WS disconnect error handling. 2020-10-31 21:56:20 +01:00
Miroslav Šedivý
cca147859d refactor WebRTC antipatterns. 2020-10-31 21:46:29 +01:00
Miroslav Šedivý
b1b5a70c64 WebRTC refactor -> session dependency removal. 2020-10-31 21:20:42 +01:00
Miroslav Šedivý
dadac4f145 webrtc removed unused function. 2020-10-31 20:11:32 +01:00
Miroslav Šedivý
06282d8064 remove unused websocket functions. 2020-10-31 19:59:17 +01:00
Miroslav Šedivý
894c0f28dc REST API implement Clipboard. 2020-10-31 12:35:02 +01:00
Miroslav Šedivý
963d210507 use custom JWT middleware. 2020-10-31 12:27:55 +01:00
Miroslav Šedivý
71d39a5c74 add API JWT auth. 2020-10-31 10:48:24 +01:00
Miroslav Šedivý
4e6a78fb54 update errors. 2020-10-30 22:39:35 +01:00
Miroslav Šedivý
c77d2b0305 ScreenConfigurationsList API. 2020-10-30 22:20:23 +01:00
Miroslav Šedivý
bff779aee7 add new REST errors. 2020-10-30 22:06:03 +01:00
Miroslav Šedivý
b6d5df6d04 API screen change websocket broadcast. 2020-10-30 21:29:51 +01:00
Miroslav Šedivý
9343e85b8f resolution -> screen configuration. 2020-10-30 21:28:07 +01:00
Miroslav Šedivý
d48b857dfe API resiolution with error handling. 2020-10-30 19:56:22 +01:00
Miroslav Šedivý
0c40eda36b manager fix naming convention. 2020-10-30 19:39:45 +01:00
Miroslav Šedivý
b4a233ef2e remove xorg ValidScreenSize double checking. 2020-10-30 19:32:52 +01:00
Miroslav Šedivý
dc32e64190 api manager. 2020-10-30 18:16:21 +01:00
Miroslav Šedivý
5acd428dee create api skeleton. 2020-10-29 22:23:30 +01:00
Miroslav Šedivý
fc3ee13f65 move logger to http package. 2020-10-29 22:12:33 +01:00
Miroslav Šedivý
3c5c01f475 remove chat. 2020-10-29 18:11:30 +01:00
Miroslav Šedivý
78c397ef54 fix formatting. 2020-10-29 18:07:04 +01:00
Miroslav Šedivý
cd769c05d3 gst - correctly destroy unused pipelines. 2020-10-29 17:51:17 +01:00
Miroslav Šedivý
96e99955fc refactor rempte manager - start pipeline only once. 2020-10-29 17:50:04 +01:00
Miroslav Šedivý
7d5df0346e add nolint. 2020-10-28 22:36:30 +01:00
Miroslav Šedivý
e1ef49c46a ws upgrade fail error message. 2020-10-28 22:28:10 +01:00
Miroslav Šedivý
4b39607af0 redundant break statement. 2020-10-28 22:24:19 +01:00
Miroslav Šedivý
7ec3d5ac6d add nolint. 2020-10-28 22:21:31 +01:00
Miroslav Šedivý
f5fcf724f4 unnecessary assignment to the blank identifier. 2020-10-28 22:09:48 +01:00
Miroslav Šedivý
91fed3c480 log socket disconnected error. 2020-10-28 22:09:02 +01:00
Miroslav Šedivý
1ce6dad973 log clipboard sync error. 2020-10-28 22:07:18 +01:00
Miroslav Šedivý
541ca80878 unknown session id return error. 2020-10-28 22:02:42 +01:00
Miroslav Šedivý
1e3abf51af remove unused package. 2020-10-28 22:02:31 +01:00
Miroslav Šedivý
95ce0063ec set host catch error. 2020-10-28 21:59:37 +01:00
Miroslav Šedivý
2b0d85a98c redundant break statement. 2020-10-28 21:54:48 +01:00
Miroslav Šedivý
f751cba428 sessions Destroy log error. 2020-10-28 21:50:47 +01:00
Miroslav Šedivý
f521373f9b should omit comparison to bool constant. 2020-10-28 21:50:19 +01:00
Miroslav Šedivý
4093bc5311 peer connection SetLocalDescription error catch. 2020-10-28 20:56:14 +01:00
Miroslav Šedivý
2f0b159ad6 SetEphemeralUDPPortRange error catch. 2020-10-28 20:54:09 +01:00
Miroslav Šedivý
7628554356 redundant break statement. 2020-10-28 20:46:34 +01:00
Miroslav Šedivý
d0d3e6b2d2 should omit comparison to bool constant. 2020-10-28 20:44:50 +01:00
Miroslav Šedivý
01d125316f WebSocketHandler no return. 2020-10-28 20:29:18 +01:00
Miroslav Šedivý
26c2bbf10d remove unused HTTP middlewares. 2020-10-28 20:06:34 +01:00
Miroslav Šedivý
a5014e205e n.eko.moe -> demodesk. 2020-10-28 19:15:48 +01:00
Miroslav Šedivý
56de805f54 initial commit - from neko open source repository.. 2020-10-22 16:54:50 +02:00