Compare commits

...

313 Commits

Author SHA1 Message Date
Girish Ramakrishnan
25c9352df2 Version 1.94.0 2024-05-28 18:21:44 +02:00
Girish Ramakrishnan
478f3580a6 Update tests 2024-05-28 18:20:51 +02:00
Girish Ramakrishnan
58d82345cf Update test packages 2024-05-28 18:20:46 +02:00
Girish Ramakrishnan
49a2dbbea9 Update Synapse to 1.108.0 2024-05-28 18:20:40 +02:00
Girish Ramakrishnan
e5df109acc Version 1.93.0 2024-05-28 18:20:29 +02:00
Johannes Zellner
fd80c93278 Update test deps 2024-05-14 17:43:34 +02:00
Johannes Zellner
8b56a68dd0 Update to 1.107.0 2024-05-14 17:42:31 +02:00
Johannes Zellner
e99b0d9a5d Bump version 2024-04-30 17:53:40 +02:00
Johannes Zellner
9394b4a02e Update test deps 2024-04-30 17:37:39 +02:00
Johannes Zellner
b93b5621a8 Update to 1.106.0 2024-04-30 17:37:28 +02:00
Girish Ramakrishnan
028c6645f6 Version 1.91.2 2024-04-23 19:07:11 +02:00
Girish Ramakrishnan
29b721457f Update Synapse to 1.105.1 2024-04-23 18:47:14 +02:00
Johannes Zellner
436ff4266d Bump version 2024-04-16 18:54:10 +02:00
Johannes Zellner
b60557ea14 Update test deps 2024-04-16 18:31:52 +02:00
Johannes Zellner
cc40cbbfcb Update to 1.105.0 2024-04-16 18:31:44 +02:00
Johannes Zellner
53a48ceeb4 Bump version 2024-04-02 20:15:47 +02:00
Johannes Zellner
de750591bb Update test deps 2024-04-02 19:15:11 +02:00
Johannes Zellner
7f53673d66 Update to 1.104.0 2024-04-02 19:14:58 +02:00
Girish Ramakrishnan
a4e9b9a6d1 Version 1.90.0 2024-03-19 17:16:22 +01:00
Girish Ramakrishnan
abafe0b579 Update Synapse to 1.103.0 2024-03-19 15:51:11 +01:00
Girish Ramakrishnan
b8a59ebb69 Version 1.89.0 2024-03-06 09:28:31 +01:00
Girish Ramakrishnan
e41486e1b4 Update test packages 2024-03-06 09:28:26 +01:00
Girish Ramakrishnan
7fee626dbb Update Synapse to 1.102.0 2024-03-05 18:39:12 +01:00
Johannes Zellner
de3ae78346 Bump version 2024-02-13 13:59:15 +01:00
Johannes Zellner
9cb28d29dc Update test deps 2024-02-13 13:40:31 +01:00
Johannes Zellner
4fc1c3cef0 Update to 1.101.0 2024-02-13 13:40:18 +01:00
Johannes Zellner
0d55a94c8d Bump version 2024-01-31 13:51:28 +01:00
Johannes Zellner
0868614791 Update test deps 2024-01-31 13:34:44 +01:00
Johannes Zellner
8041a9fcef Update to 1.100.0 2024-01-31 13:34:34 +01:00
Johannes Zellner
4ef20a8f08 Bump version 2024-01-16 18:35:04 +01:00
Johannes Zellner
d898f229c8 Make tests language independent 2024-01-16 18:33:34 +01:00
Johannes Zellner
75efef6cbb Update to 1.99.0 2024-01-16 17:57:28 +01:00
Girish Ramakrishnan
3ca3794cc1 Version 1.85.0 2024-01-02 22:43:22 +01:00
Girish Ramakrishnan
58fe826905 Update test packages 2024-01-02 22:38:02 +01:00
Girish Ramakrishnan
2d8b58a66b Update the public suffix list 2024-01-02 22:37:58 +01:00
Girish Ramakrishnan
80ea999dcf Image workaround not needed 2024-01-02 22:11:57 +01:00
Girish Ramakrishnan
d57e637ac7 Version 1.84.0 2023-12-13 10:32:21 +01:00
Girish Ramakrishnan
4becdfaf1a Update test packages 2023-12-13 10:13:34 +01:00
Girish Ramakrishnan
2ed3fd8eb1 Update Synapse to 1.98.0 2023-12-13 10:06:45 +01:00
Girish Ramakrishnan
8a7e098f4f always generate pepper salt 2023-12-08 11:24:20 +01:00
Girish Ramakrishnan
5a73f8790c remove superagent 2023-11-29 11:11:24 +01:00
Girish Ramakrishnan
1c8bd95bf8 Version 1.83.0 2023-11-29 11:10:47 +01:00
Girish Ramakrishnan
da68486f69 Fix update test 2023-11-29 10:28:42 +01:00
Girish Ramakrishnan
e338d70303 Update Synapse to 1.97.0 2023-11-28 15:39:39 +01:00
Girish Ramakrishnan
0e793468aa Version 1.82.0 2023-11-24 14:53:43 +01:00
Girish Ramakrishnan
1ed71044fd also skip verification 2023-11-24 14:33:47 +01:00
Girish Ramakrishnan
61f6bf7e11 forgot to remove 2023-11-24 14:33:21 +01:00
Girish Ramakrishnan
08ce8185b7 Use allow_existing_users flag instead
when external registration is enabled, this means that we don't move
all of the external users as oidc accounts
2023-11-24 14:31:20 +01:00
Vladimir D
7f405a1e6b Fixes to migration 2023-11-24 14:30:08 +01:00
Vladimir D
630b30e9cd tests refactored using Element-web app 2023-11-24 10:36:19 +01:00
Vladimir D
7ceec54658 OIDC auth implemented, ldap users migration implemented 2023-11-24 10:33:57 +01:00
Girish Ramakrishnan
9ff85f5103 Version 1.81.0 2023-11-20 11:51:56 +01:00
Girish Ramakrishnan
3402ad2131 Update Synapse to 1.96.1 2023-11-20 11:44:12 +01:00
Johannes Zellner
5410b2b017 Bump version 2023-11-17 11:42:24 +01:00
Girish Ramakrishnan
c9814e25db Version 1.80.1 2023-11-01 15:47:08 +01:00
Girish Ramakrishnan
89eb13fa70 Update Synapse to 1.95.1 2023-11-01 15:23:59 +01:00
Girish Ramakrishnan
e8316ee377 Version 1.80.0 2023-11-01 15:21:54 +01:00
Girish Ramakrishnan
6603220ece Update Synapse to 1.95.0 2023-11-01 15:01:57 +01:00
Girish Ramakrishnan
9b790d39b7 Version 1.79.0 2023-10-10 17:52:52 +05:30
Girish Ramakrishnan
6fbd0e437c Update Synapse to 1.94.0 2023-10-10 16:17:30 +05:30
Girish Ramakrishnan
f03c4e5243 Version 1.78.0 2023-10-08 19:14:15 +05:30
Girish Ramakrishnan
3969cc4fe5 Update base image 2023-10-08 18:30:07 +05:30
Girish Ramakrishnan
d4356d2e75 Version 1.77.0 2023-09-26 23:26:14 +05:30
Girish Ramakrishnan
3f416461fb Update test packages 2023-09-26 22:44:47 +05:30
Girish Ramakrishnan
f951536f97 Update Synapse to 1.93.0 2023-09-26 22:33:17 +05:30
Johannes Zellner
213dcc79bf Bump version 2023-09-18 17:05:10 +02:00
Girish Ramakrishnan
43631d9042 Version 1.76.1 2023-09-16 09:55:43 +05:30
Girish Ramakrishnan
7889bd5bba Update Synapse to 1.92.2 2023-09-16 09:14:51 +05:30
Johannes Zellner
a29ec53ef8 Bump version 2023-09-12 17:49:59 +02:00
Johannes Zellner
ff7dc454d1 Bump version 2023-09-06 20:18:37 +02:00
Johannes Zellner
9e0b281b9f Update test deps 2023-09-04 16:34:38 +02:00
Johannes Zellner
44dbaf4e5f Bump version 2023-09-04 16:34:29 +02:00
Johannes Zellner
d124978826 Bump version 2023-08-30 13:55:16 +02:00
Girish Ramakrishnan
d2366dca87 Version 1.74.0-1 2023-08-23 08:08:54 +05:30
Girish Ramakrishnan
18c22f35ea minBoxVersion has to be 7.5.1 2023-08-23 08:08:38 +05:30
Girish Ramakrishnan
98c21db158 Version 1.74.0 2023-08-23 07:09:23 +05:30
Girish Ramakrishnan
3649849e1c Update test packages 2023-08-23 07:00:42 +05:30
Girish Ramakrishnan
f450beb46f Optional turn server support 2023-08-23 06:50:59 +05:30
Johannes Zellner
b4c4b76e52 Update test deps 2023-08-15 13:14:50 +02:00
Johannes Zellner
8cb161e997 Bump version 2023-08-15 13:14:34 +02:00
Johannes Zellner
5fdccc8df9 Update test deps 2023-08-01 13:21:07 +02:00
Johannes Zellner
9e387f7915 Bump version 2023-08-01 13:20:27 +02:00
Johannes Zellner
a3584e777e Bump version 2023-07-18 17:59:12 +02:00
Girish Ramakrishnan
d1867c7ba6 Version 1.70.1 2023-07-07 09:39:49 +05:30
Girish Ramakrishnan
4b6d902230 thumbnailing workaround 2023-07-07 09:20:22 +05:30
Girish Ramakrishnan
2774e37e72 Update s3 storage provider 2023-07-07 09:14:21 +05:30
Girish Ramakrishnan
f3f7bec506 Version 1.70.0 2023-07-05 13:42:11 +05:30
Girish Ramakrishnan
9735318be9 Update Synapse to 1.87.0 2023-07-05 13:30:52 +05:30
Johannes Zellner
b06afd8e63 Fix version in changelog 2023-06-20 19:23:19 +02:00
Johannes Zellner
6403278d37 Update test deps 2023-06-20 19:15:03 +02:00
Johannes Zellner
3e2d60a34c Bump version 2023-06-20 19:14:52 +02:00
Girish Ramakrishnan
b02f6409cb Version 1.68.2 2023-06-09 22:28:05 +05:30
Girish Ramakrishnan
29e23bd85e Update Synapse to 1.85.2 2023-06-09 22:07:53 +05:30
Girish Ramakrishnan
eed12bfe0b Version 1.68.1 2023-06-08 09:38:24 +05:30
Girish Ramakrishnan
1a30c1864d Update Synapse to 1.85.1 2023-06-08 09:20:25 +05:30
Girish Ramakrishnan
cf8933b222 Version 1.68.0 2023-06-07 16:08:28 +05:30
Girish Ramakrishnan
9d1d46c30f Update Synapse to 1.85.0 2023-06-07 15:38:39 +05:30
Girish Ramakrishnan
8ca2a5c12a Version 1.67.1 2023-05-27 10:03:09 +02:00
Girish Ramakrishnan
2ea3d1b3c8 Update test packages 2023-05-27 10:03:04 +02:00
Girish Ramakrishnan
4a48d7978b Update Synapse to 1.84.1 2023-05-27 09:28:31 +02:00
Johannes Zellner
b636aff2ae Bump package version 2023-05-23 14:32:27 +02:00
Johannes Zellner
2f4a5d9d5a Update test deps 2023-05-09 22:35:38 +02:00
Johannes Zellner
fd18a30b94 Bump version 2023-05-09 22:35:21 +02:00
Johannes Zellner
0dd99f211c Update test deps 2023-04-25 14:17:47 +02:00
Johannes Zellner
807c03724d Bump version 2023-04-25 14:17:31 +02:00
Johannes Zellner
90bed040d5 Update test deps 2023-04-11 17:04:37 +02:00
Johannes Zellner
82bc13b9cc Bump version 2023-04-11 17:00:21 +02:00
Johannes Zellner
faa3e64bc9 Update test deps 2023-03-28 15:30:33 +02:00
Johannes Zellner
898f2db57b Bump version 2023-03-28 15:30:17 +02:00
Girish Ramakrishnan
03e34a374a Version 1.62.1 2023-03-22 09:55:04 +01:00
Girish Ramakrishnan
cfbd1cd54e typo in post install 2023-03-22 09:24:41 +01:00
Johannes Zellner
429625a920 Update test deps 2023-03-15 10:52:36 +01:00
Johannes Zellner
e2a6fd55a2 Bump version 2023-03-15 10:52:21 +01:00
Girish Ramakrishnan
23d4c1106a Version 1.61.0 2023-03-01 09:29:49 +01:00
Girish Ramakrishnan
99612d5740 Update test packages 2023-03-01 09:14:17 +01:00
Girish Ramakrishnan
2f3b5edfbc Update synapseto 1.78.0 2023-03-01 08:57:29 +01:00
Johannes Zellner
35ee043100 Update test deps 2023-02-14 16:29:59 +01:00
Johannes Zellner
ed9a5d5cd5 Bump version 2023-02-14 16:29:37 +01:00
Johannes Zellner
d9e1eca30e Update test deps 2023-02-01 11:35:06 +01:00
Johannes Zellner
ea99f2f4a5 Bump version 2023-02-01 11:34:54 +01:00
Johannes Zellner
35c31e2512 Update test deps 2023-01-17 14:11:52 +01:00
Johannes Zellner
370f256143 Bump version 2023-01-17 14:11:43 +01:00
Johannes Zellner
f5a5440cc8 Update test deps 2022-12-20 19:35:45 +01:00
Johannes Zellner
e226002bf3 Bump version 2022-12-20 19:33:51 +01:00
Johannes Zellner
9c84c6424f Update to base image 4.0.0 2022-12-06 14:41:44 +01:00
Johannes Zellner
97eebecf37 Update test deps 2022-12-06 14:28:42 +01:00
Johannes Zellner
0c32ddde1f Bump version 2022-12-06 14:28:32 +01:00
Girish Ramakrishnan
24680e18af Version 1.55.0 2022-11-22 15:41:15 +01:00
Girish Ramakrishnan
97e11820b7 Update test packages 2022-11-22 15:29:51 +01:00
Girish Ramakrishnan
700d3b23cb Update Synapse to 1.72.0 2022-11-22 15:15:11 +01:00
Johannes Zellner
2859cc73d0 Update test deps 2022-11-08 14:50:49 +01:00
Johannes Zellner
aae5a5eecd Bump version 2022-11-08 14:50:39 +01:00
Johannes Zellner
9ed6f56792 Fix version in changelog 2022-10-29 07:08:31 +02:00
Johannes Zellner
404f794d10 Bump version 2022-10-29 06:59:44 +02:00
Johannes Zellner
8d5978a8e0 Bump version 2022-10-26 13:59:00 +02:00
Johannes Zellner
c380911b76 Bump version 2022-10-17 17:53:15 +02:00
Johannes Zellner
ac332c311a Bump version 2022-09-27 15:25:07 +02:00
Johannes Zellner
6f78e44bf2 Bump version 2022-09-13 15:35:28 +02:00
Johannes Zellner
2c407c2f3c Remove double changelog line 2022-08-31 21:02:35 +02:00
Johannes Zellner
1069750c78 Bump version 2022-08-31 20:33:52 +02:00
Girish Ramakrishnan
99b08d6c0a Version 1.49.1 2022-08-22 19:04:39 +02:00
Girish Ramakrishnan
b2e7800788 install oidc 2022-08-22 18:52:12 +02:00
Girish Ramakrishnan
e915c9837c Version 1.49.0 2022-08-17 06:54:06 +02:00
Girish Ramakrishnan
8b9c4141a2 Update Synapse to 1.65.0 2022-08-17 06:08:02 +02:00
Johannes Zellner
760a37bdb2 Bump version 2022-08-02 14:40:19 +02:00
Johannes Zellner
d4f05c3748 Bump version 2022-07-20 21:36:38 +02:00
Johannes Zellner
401535ce2d Update test deps 2022-07-19 16:47:28 +02:00
Johannes Zellner
fbf2ac8ef4 Bump version 2022-07-19 16:47:19 +02:00
Johannes Zellner
4d0bfd8bf1 Bump version 2022-07-05 14:39:00 +02:00
Johannes Zellner
0d8f2eab6f Bump version for 1.61.1 2022-06-28 16:21:48 +02:00
Girish Ramakrishnan
0bc489a337 Version 1.45.1 2022-06-27 17:37:20 -07:00
Girish Ramakrishnan
ce0f8eb9be Update test packages 2022-06-27 17:29:32 -07:00
Girish Ramakrishnan
f47064f648 Add s3 storage provider
https://forum.cloudron.io/topic/7285/request-include-s3-storage-module
2022-06-27 16:54:53 -07:00
Girish Ramakrishnan
75d97f2bb3 Version 1.45.0 2022-06-14 17:49:45 -07:00
Girish Ramakrishnan
43f64a052d Display name support 2022-06-14 17:39:10 -07:00
Girish Ramakrishnan
27e6c5a442 Update Synapse to 1.61.0 2022-06-14 17:39:01 -07:00
Girish Ramakrishnan
8983e8fcee Version 1.44.0 2022-05-31 13:58:13 -07:00
Girish Ramakrishnan
4ec76880a0 Update Synapse to 1.60.0 2022-05-31 13:45:57 -07:00
Girish Ramakrishnan
01ed3cc5ab Version 1.43.1 2022-05-18 09:51:21 -07:00
Girish Ramakrishnan
6e4c16ba2e Update synapse to 1.59.1 2022-05-18 09:32:02 -07:00
Johannes Zellner
b2f3950795 Bump version for 1.59.0 2022-05-17 12:29:22 +02:00
Girish Ramakrishnan
2844b64621 Update synapse to 1.58.1 2022-05-05 08:58:19 -07:00
Johannes Zellner
20582a7fe6 Update test deps 2022-05-03 13:35:41 +02:00
Johannes Zellner
de875e14f6 Bump version for 1.58.0 2022-05-03 13:35:13 +02:00
Girish Ramakrishnan
6ca10fe63d Version 1.41.1 2022-04-20 15:51:50 -07:00
Girish Ramakrishnan
08e65a0769 Update synapse to 1.57.1 2022-04-20 09:04:41 -07:00
Girish Ramakrishnan
bc031e515e Update postinstall 2022-04-19 10:04:27 -05:00
Girish Ramakrishnan
ce74f2b418 Set enable_registration_without_verification to true 2022-04-19 10:03:47 -05:00
Johannes Zellner
292ffd482b Bump version for 1.57.0 2022-04-19 15:27:12 +02:00
Girish Ramakrishnan
8267b04c4f Update test packages 2022-04-05 10:36:18 -07:00
Girish Ramakrishnan
4ab831470b Update Synapse to 1.56.0 2022-04-05 09:10:51 -07:00
Girish Ramakrishnan
203fcc8baf Version 1.40.1-1 2022-03-24 17:34:29 -07:00
Girish Ramakrishnan
dbb03144dd Update Synapse to 1.55.2 2022-03-24 17:08:12 -07:00
Girish Ramakrishnan
3e384b6ea4 Version 1.40.1 2022-03-24 12:16:47 -07:00
Girish Ramakrishnan
2b70590b4f Update Synapse to 1.55.1 2022-03-24 12:05:12 -07:00
Girish Ramakrishnan
f32618bc44 Version 1.40.0 2022-03-22 15:55:57 -07:00
Girish Ramakrishnan
63389b8969 Update test packages 2022-03-22 15:35:17 -07:00
Girish Ramakrishnan
2faf4a83c1 Update Synapse to 1.55.0 2022-03-22 15:30:11 -07:00
Johannes Zellner
0de4fcd2c1 Update test deps 2022-03-08 18:12:43 +01:00
Johannes Zellner
4501f517cd Bump version for 1.54.0 2022-03-08 18:12:23 +01:00
Johannes Zellner
50b81437a3 Update test deps 2022-02-22 14:19:02 +01:00
Johannes Zellner
cb2effd01e Bump version for 1.53.0 2022-02-22 14:18:44 +01:00
Johannes Zellner
8a0741d6a2 Update test deps 2022-02-08 17:05:35 +01:00
Johannes Zellner
8605a2801f Bump version for 1.52.0 2022-02-08 17:05:18 +01:00
Johannes Zellner
39b8fe59e8 Update test deps 2022-01-25 13:45:11 +01:00
Johannes Zellner
ab0335ff1a Bump version for 1.51.0 2022-01-25 13:43:50 +01:00
Johannes Zellner
e6d27ee341 Update test deps 2022-01-24 16:31:23 +01:00
Johannes Zellner
306ee5dadb Bump version for 1.50.2 2022-01-24 16:31:09 +01:00
Johannes Zellner
e6b9d6cafb Jump to 1.50.1 2022-01-18 22:04:38 +01:00
Johannes Zellner
8e02930fbd Update test deps 2022-01-18 13:24:46 +01:00
Johannes Zellner
8c3209768d Bump version for 1.50.0 2022-01-18 13:24:30 +01:00
Girish Ramakrishnan
cdab116284 Version 1.38.1 2021-12-21 11:16:25 -08:00
Girish Ramakrishnan
092b466ff4 Update test packages 2021-12-21 11:08:59 -08:00
Girish Ramakrishnan
6177240cf6 Update synapse to 1.49.2 2021-12-21 11:03:24 -08:00
Girish Ramakrishnan
cf22aa6ae7 Update Synapse to 1.49.1 2021-12-21 09:23:09 -08:00
Johannes Zellner
aa02b23016 Bump version for 1.49.0 2021-12-14 16:38:09 +01:00
Johannes Zellner
2cd92623e2 Bump version for 1.48.0 2021-11-30 16:17:32 +01:00
Johannes Zellner
ee7878d3d2 Update test deps 2021-11-23 14:33:16 +01:00
Johannes Zellner
33dca51dcd Bump version for 1.47.1 2021-11-23 14:33:02 +01:00
Johannes Zellner
122b16805f Update test deps 2021-11-17 16:29:12 +01:00
Johannes Zellner
3a69b0c615 Bump version for 1.47.0 2021-11-17 16:28:56 +01:00
Johannes Zellner
f27425775e Update test deps 2021-11-02 16:07:28 +01:00
Johannes Zellner
47855846f5 Bump version for 1.46.0 2021-11-02 16:07:07 +01:00
Johannes Zellner
96bfd2839c Bump version for 1.45.1 2021-10-21 11:19:50 +02:00
Johannes Zellner
e6f8f7b246 Update test deps 2021-10-19 14:47:32 +02:00
Johannes Zellner
426035f1d5 Bump version for 1.45.0 2021-10-19 14:46:47 +02:00
Girish Ramakrishnan
c2d2f9bd03 Version 1.33.0 2021-10-05 09:35:20 -07:00
Girish Ramakrishnan
4e5fb767f6 Update test packages 2021-10-05 09:29:26 -07:00
Girish Ramakrishnan
feb0208b8d Update synapse to 1.44.0 2021-10-05 09:25:59 -07:00
Johannes Zellner
ec4900372c Bump version for 1.43.0 2021-09-21 16:50:19 +02:00
Johannes Zellner
340a757d88 Update test deps 2021-09-08 11:33:58 +02:00
Johannes Zellner
93ec693780 Bump version for 1.42.0 2021-09-08 11:30:54 +02:00
Girish Ramakrishnan
668112e865 Version 1.30.2 2021-08-31 12:32:30 -07:00
Girish Ramakrishnan
233a26a8db Update synapse to 1.41.1 2021-08-31 11:26:11 -07:00
Girish Ramakrishnan
5703b98d6f Version 1.30.1 2021-08-30 23:05:59 -07:00
Girish Ramakrishnan
ee10da9df5 Fix postinstall message 2021-08-30 22:42:00 -07:00
Johannes Zellner
7123688a92 Ensure we log to stdout/stderr 2021-08-30 15:50:49 +02:00
Girish Ramakrishnan
38cd11c0b7 Version 1.30.0 2021-08-24 09:53:13 -07:00
Girish Ramakrishnan
d06f83a567 Update synapse to 1.41.0 2021-08-24 09:45:09 -07:00
Girish Ramakrishnan
fb83f5a54e Version 1.29.0 2021-08-10 11:23:44 -07:00
Girish Ramakrishnan
ad4d18e706 Update synapse to 1.40.0 2021-08-10 11:10:43 -07:00
Girish Ramakrishnan
80425602a3 Update test packages 2021-08-02 23:08:28 -07:00
Girish Ramakrishnan
de44651747 delete password_providers on update 2021-08-02 23:08:16 -07:00
Johannes Zellner
79c17c17f1 Update test deps 2021-07-29 21:43:40 +02:00
Johannes Zellner
605a809a32 Bump version for 1.39.0 2021-07-29 21:43:02 +02:00
Girish Ramakrishnan
b5963b4276 Version 1.27.1 2021-07-24 00:08:49 -07:00
Girish Ramakrishnan
a6c93ac360 Update synapse to 1.38.1 2021-07-24 00:03:54 -07:00
Girish Ramakrishnan
b5662ec4dc Version 1.27.0 2021-07-24 00:02:44 -07:00
Girish Ramakrishnan
6775418daf delete password_providers section without sso 2021-07-23 23:56:08 -07:00
Johannes Zellner
66231bcae5 Update test deps 2021-07-13 16:43:14 +02:00
Johannes Zellner
acd9e9cbf6 Bump version for 1.38.0 2021-07-13 16:42:50 +02:00
Johannes Zellner
f7a3528db0 Bump version for 1.37.1 2021-07-01 12:12:58 +02:00
Johannes Zellner
affa9850a3 Rework test to follow new patterns 2021-06-29 14:56:14 +02:00
Johannes Zellner
ad9429c622 Update test deps 2021-06-29 14:13:55 +02:00
Johannes Zellner
208b5b689d Bump version for 1.37.0 2021-06-29 14:13:26 +02:00
Girish Ramakrishnan
54428229bb Version 1.26.0 2021-06-15 09:42:40 -07:00
Girish Ramakrishnan
805349b360 Update Synapse to 1.36.0 2021-06-15 09:41:54 -07:00
Johannes Zellner
47dcff5e35 Update test deps 2021-06-04 10:21:08 +02:00
Johannes Zellner
260198817d Bump version for 1.35.1 2021-06-04 10:11:04 +02:00
Girish Ramakrishnan
f9f5353f42 Version 1.25.0 2021-06-02 18:31:44 -07:00
Girish Ramakrishnan
4d0ef3f614 Update Synapse to 1.35.0 2021-06-02 18:21:41 -07:00
Girish Ramakrishnan
b7b20f0b56 Version 1.24.0 2021-05-18 09:34:30 -07:00
Girish Ramakrishnan
7cd91ecd61 Update synapse to 1.34.0 2021-05-18 09:17:38 -07:00
Johannes Zellner
fbf55b9162 Bump version for 1.33.2 2021-05-14 10:40:12 +02:00
Johannes Zellner
d27523bc00 Update test deps 2021-05-08 18:23:49 +02:00
Johannes Zellner
fad354943f Bump version for 1.23.1 2021-05-08 18:23:02 +02:00
Johannes Zellner
a4b8455363 Bump version for 1.33.0 2021-05-06 10:21:14 +02:00
Johannes Zellner
dc25932bfd Bump version for 1.32.2 2021-04-22 12:36:21 +02:00
Johannes Zellner
908481d2c6 Bump version for 1.32.1 2021-04-22 10:37:22 +02:00
Johannes Zellner
bcbb54c9be Fixup changelog 2021-04-20 18:07:50 +02:00
Johannes Zellner
d749c8f974 Update test deps 2021-04-20 17:39:39 +02:00
Johannes Zellner
169510a50d Bump version for 1.32.0 2021-04-20 17:38:49 +02:00
Johannes Zellner
bd6d954ddd Do not redirect stdio to logfile 2021-04-08 14:52:34 +02:00
Girish Ramakrishnan
c39c97bf64 Version 1.22.0 2021-04-06 15:40:25 -07:00
Girish Ramakrishnan
007f0607fd Update synapse to 1.31.0 2021-04-06 15:39:53 -07:00
Johannes Zellner
a53664b9b1 Update test deps 2021-03-26 14:55:57 +01:00
Johannes Zellner
53f7612ba9 Bump version for 1.30.1 2021-03-26 14:54:03 +01:00
Girish Ramakrishnan
d51a1d3b40 Version 1.21.0 2021-03-22 11:02:48 -07:00
Girish Ramakrishnan
e0abc92551 Update synapse to 1.30.0 2021-03-22 10:40:03 -07:00
Girish Ramakrishnan
98fc17e9d3 Version 1.20.0 2021-03-08 09:39:15 -08:00
Girish Ramakrishnan
aa32c3c771 Update synapse to 1.29.0 2021-03-08 09:27:43 -08:00
Girish Ramakrishnan
d7e26b3687 Version 1.19.0 2021-02-26 13:10:14 -08:00
Girish Ramakrishnan
2882a804c8 Update synapse to 1.28.0 2021-02-26 12:17:37 -08:00
Girish Ramakrishnan
a1ffa1e1dc Version 1.18.0 2021-02-16 12:29:45 -08:00
Girish Ramakrishnan
15672eddc2 v4 yq has different syntax 2021-02-16 12:14:39 -08:00
Girish Ramakrishnan
022881e357 Fix base image 2021-02-16 11:39:04 -08:00
Girish Ramakrishnan
8d92d05a90 Update test packages 2021-02-05 21:56:47 -08:00
Girish Ramakrishnan
f97dde4b75 python is 3.8 2021-02-05 21:54:24 -08:00
Girish Ramakrishnan
d3b63b30a0 Update base image 2021-02-05 21:51:43 -08:00
Girish Ramakrishnan
80bdba8f29 Version 1.17.0 2021-01-27 13:07:50 -08:00
Girish Ramakrishnan
7ff92d42cf Update synapse to 1.26.0 2021-01-27 11:48:24 -08:00
Girish Ramakrishnan
5e2d8155bd Version 1.16.0 2021-01-13 09:30:04 -08:00
Girish Ramakrishnan
fe4fff7057 Update synapse to 1.25.0 2021-01-13 09:12:56 -08:00
Girish Ramakrishnan
ae6d081dfa Version 1.15.0-1 2021-01-11 21:37:53 -08:00
Girish Ramakrishnan
1b6f7f9c8a Add federated tag 2021-01-11 21:34:31 -08:00
Girish Ramakrishnan
c6dc2d84ff Version 1.24.0 2020-12-09 22:19:44 -08:00
Girish Ramakrishnan
0c44e699b6 Update synapse to 1.24.0 2020-12-09 22:11:44 -08:00
Girish Ramakrishnan
e9fc19d2c2 Version 1.14.1 2020-12-09 22:10:48 -08:00
Girish Ramakrishnan
f7283f78c3 Update synapse to 1.23.1 2020-12-09 17:08:24 -08:00
Girish Ramakrishnan
c4a4489a2d Version 1.14.0 2020-11-19 00:51:29 -08:00
Girish Ramakrishnan
b504a462f6 Update synapse to 1.23.0 2020-11-19 00:42:17 -08:00
Girish Ramakrishnan
6cc8f51801 Version 1.13.1 2020-10-30 14:14:53 -07:00
Girish Ramakrishnan
f40033ce42 Update matrix to 1.22.1 2020-10-30 13:59:21 -07:00
Girish Ramakrishnan
ee25574780 Version 1.13.0 2020-10-27 09:27:48 -07:00
Girish Ramakrishnan
a82f5e1de5 Update synapse to 1.22.0 2020-10-27 09:02:38 -07:00
Girish Ramakrishnan
fc73988618 Version 1.12.2 2020-10-15 09:54:54 -07:00
Girish Ramakrishnan
0a8a05827a Update synapse to 1.21.2 2020-10-15 09:38:34 -07:00
Girish Ramakrishnan
a14fa5ec36 Version 1.12.1 2020-10-14 10:00:21 -07:00
Girish Ramakrishnan
f2a0bbbf51 Update synapse to 1.21.1 2020-10-14 09:53:14 -07:00
Girish Ramakrishnan
23d574e2ee Version 1.12.0 2020-10-12 21:22:08 -07:00
Girish Ramakrishnan
a728b9131a Update synapse to 1.21.0 2020-10-12 21:10:51 -07:00
Girish Ramakrishnan
6e952f3394 Version 1.11.0 2020-09-25 17:29:52 -07:00
Girish Ramakrishnan
8df7aa4744 Update synapse to 1.20.1 2020-09-25 17:08:48 -07:00
Girish Ramakrishnan
1ad2983994 Version 1.10.0 2020-09-21 14:47:03 -07:00
Girish Ramakrishnan
23f7a98154 make index.html customizable 2020-09-21 14:39:48 -07:00
Girish Ramakrishnan
b4a4361bf8 Fix test packages 2020-09-21 14:29:06 -07:00
Girish Ramakrishnan
d90fb12540 Update synapse to 1.19.3 2020-09-21 09:29:39 -07:00
Girish Ramakrishnan
9ea6ea74d5 Update synapse to 1.19.2 2020-09-21 09:27:15 -07:00
Girish Ramakrishnan
cffa89120c Version 1.9.1 2020-08-27 09:42:20 -07:00
Girish Ramakrishnan
e20dac829c Fix screenshots 2020-08-27 09:38:12 -07:00
Girish Ramakrishnan
ad142a67d5 Update synapse to 1.9.1 2020-08-27 09:26:45 -07:00
Girish Ramakrishnan
a3eed1117d Version 1.9.0 2020-08-18 15:59:26 -07:00
Girish Ramakrishnan
ab61ce410f fix restore test 2020-08-18 15:57:54 -07:00
Girish Ramakrishnan
9c8dd4fc9b Update Synapse to 1.19.0 2020-08-18 15:31:00 -07:00
Girish Ramakrishnan
09c9886098 Version 1.8.0 2020-07-30 16:30:14 -07:00
Girish Ramakrishnan
4d4977dc4d Update synapse to 1.18.0 2020-07-30 15:58:52 -07:00
Girish Ramakrishnan
890c091cc2 Version 1.7.0 2020-07-13 10:44:57 -07:00
Girish Ramakrishnan
dd8c7e7e30 Update synapse to 1.17.0 2020-07-13 09:56:58 -07:00
Girish Ramakrishnan
3677faa3ef Version 1.6.1 2020-07-10 16:02:32 -07:00
Girish Ramakrishnan
68d0e948b4 Update synapse to 1.16.1 2020-07-10 15:49:26 -07:00
Girish Ramakrishnan
999cfa2dce Version 1.6.0 2020-07-08 11:06:24 -07:00
Girish Ramakrishnan
fc4b23e207 Fixup tests 2020-07-08 10:54:10 -07:00
Girish Ramakrishnan
02755c3578 Update synapse to 1.6.0 2020-07-08 10:48:24 -07:00
12 changed files with 3746 additions and 1424 deletions

150
CHANGELOG
View File

@@ -1,150 +0,0 @@
[0.1.0]
* Initial version
[0.1.1]
* Removed the Riot part of the installation due to security
* Changed from Sqlite to Postgres
* Added LDAP support
* Fixed upload limit in nginx_matrix.conf
* Added bogus index.html so cloudron recognizes the matrix server as online
* Added coturn as TURN server
[0.1.2]
* Updated logo (transparent)
* Enabled email settings
[0.1.3]
* Changed log location of nginx due to backup crashes
[0.1.4]
* Changed log location of synapse due to backup crashes
* Updated some configs
[0.1.5]
* Update to synapse v0.31.2
[0.1.6]
* Update to synapse v0.33.8
[0.1.7]
* Update to synapse v0.33.9
[0.1.8]
* Update to synapse v0.99.0
* Fixed missing LDAP stuff
[0.1.9]
* Update to synapse v0.99.3
[0.2.0]
* Update to synapse v0.99.4
[0.2.1]
* Update to synapse v0.99.5.1
[0.2.2]
* Update to synapse v0.99.5.2
[0.2.3]
* Update to synapse v1.0.0
* Fixed url preview
* Fixed voip
[0.2.4]
* Fixed federation
[0.2.5]
* Update to synapse v1.1.0
[0.2.6]
* Update to synapse v1.2.1
[0.2.7]
* Update to synapse v1.3.0
[0.2.8]
* Update to synapse v1.3.1
[0.2.9]
* Update to synapse v1.4.0 (lots of changes)
[0.3.0]
* Update to synapse v1.4.1
[0.3.1]
* Update to synapse v1.5.1
[0.3.3]
* Update to synapse v1.6.0
[0.3.4]
* Update to synapse v1.6.1
[0.3.5]
* Update to synapse v1.8.0
[0.3.6]
* Update to synapse v1.9.1
[0.3.7]
* Update to synapse v1.10.0
[0.3.8]
* Update to synapse v1.11.0
[0.4.0]
* Update to synapse v1.12.0
[0.4.1]
* Update to synapse v1.12.2
[0.5.0]
* New reworked app
[0.6.0]
* Fix title
[0.7.0]
* Set turn_uris to an array and not a string
[0.7.1]
* Users will now automatically join the #discuss channel (only in new installations)
[1.0.0]
* Use latest base image
* Update to synapse v1.12.4
[1.1.0]
* Update Synapse to 1.13.0
* [Full changelog](https://github.com/matrix-org/synapse/releases/tag/v1.13.0)
* Set Referrer-Policy header to no-referrer on media downloads. (#7009)
* Admin API POST /_synapse/admin/v1/join/<roomIdOrAlias> to join users to a room like auto_join_rooms for creation of users. (#7051)
* Add options to prevent users from changing their profile or associated 3PIDs. (#7096)
* Allow server admins to define and enforce a password policy (MSC2000). (#7118)
* Improve the support for SSO authentication on the login fallback page. (#7152, #7235)
* Always whitelist the login fallback in the SSO configuration if public_baseurl is set. (#7153)
* Admin users are no longer required to be in a room to create an alias for it. (#7191)
* Require admin privileges to enable room encryption by default. This does not affect existing rooms. (#7230)
[1.2.0]
* Update Synapse to 1.14.0
* [Full changelog](https://github.com/matrix-org/synapse/releases/tag/v1.14.0)
[1.3.0]
* Add optional sso support
[1.4.0]
* Update Synapse to 1.15.1
* [Full changelog](https://github.com/matrix-org/synapse/releases/tag/v1.15.0)
* Advertise support for Client-Server API r0.6.0 and remove related unstable feature flags. (#6585)
* Add an option to disable autojoining rooms for guest accounts. (#6637)
* Add admin APIs to allow server admins to manage users' devices. Contributed by @dklimpel. (#7481)
* Add support for generating thumbnails for WebP images. Previously, users would see an empty box instead of preview image. Contributed by @WGH-. (#7586)
* Support the standardized m.login.sso user-interactive authentication flow. (#7630)
[1.5.0]
* Update Synapse to 1.15.2
* [Full changelog](https://github.com/matrix-org/synapse/releases/tag/v1.15.2)
* A malicious homeserver could force Synapse to reset the state in a room to a small subset of the correct state. This affects all Synapse deployments which federate with untrusted servers. (96e9afe6)
* HTML pages served via Synapse were vulnerable to clickjacking attacks. This predominantly affects homeservers with single-sign-on enabled, but all server administrators are encouraged to upgrade. (ea26e9a9)

1249
CHANGELOG.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -3,35 +3,35 @@
"title": "Matrix Synapse", "title": "Matrix Synapse",
"author": "Matrix synapse authors", "author": "Matrix synapse authors",
"description": "file://DESCRIPTION.md", "description": "file://DESCRIPTION.md",
"changelog": "file://CHANGELOG", "changelog": "file://CHANGELOG.md",
"tagline": "Secure & decentralized communication", "tagline": "Secure & decentralized communication",
"version": "1.5.0", "version": "1.94.0",
"upstreamVersion": "1.108.0",
"healthCheckPath": "/", "healthCheckPath": "/",
"httpPort": 8008, "httpPort": 8008,
"memoryLimit": 536870912, "memoryLimit": 536870912,
"addons": { "addons": {
"localstorage": {}, "localstorage": {},
"ldap": {}, "oidc": { "loginRedirectUri": "/_synapse/client/oidc/callback" },
"postgresql": {}, "postgresql": {},
"sendmail": {}, "sendmail": { "supportsDisplayName": true },
"turn": {} "turn": { "optional": true }
}, },
"manifestVersion": 2, "manifestVersion": 2,
"website": "https://matrix.org", "website": "https://matrix.org",
"contactEmail": "support@cloudron.io", "contactEmail": "support@cloudron.io",
"icon": "file://logo.png", "icon": "file://logo.png",
"tags": [ "tags": [
"im", "collaboration", "voip", "videochat", "chat", "slack" "im", "collaboration", "voip", "videochat", "chat", "slack", "zulip", "federated"
], ],
"mediaLinks": [ "mediaLinks": [
"https://cloudron-app-screenshots.s3.amazonaws.com/org.matrix.synapse/606cd9d4ccc3bee11a49f91444a2dad8947cbc7c/1.png", "https://screenshots.cloudron.io/org.matrix.synapse/1.png",
"https://cloudron-app-screenshots.s3.amazonaws.com/org.matrix.synapse/606cd9d4ccc3bee11a49f91444a2dad8947cbc7c/2.png", "https://screenshots.cloudron.io/org.matrix.synapse/2.png",
"https://cloudron-app-screenshots.s3.amazonaws.com/org.matrix.synapse/606cd9d4ccc3bee11a49f91444a2dad8947cbc7c/3.png" "https://screenshots.cloudron.io/org.matrix.synapse/3.png"
], ],
"changelog": "file://CHANGELOG",
"postInstallMessage": "file://POSTINSTALL.md", "postInstallMessage": "file://POSTINSTALL.md",
"minBoxVersion": "5.3.0", "minBoxVersion": "7.5.1",
"forumUrl": "https://forum.cloudron.io/category/50/matrix-synapse-riot", "forumUrl": "https://forum.cloudron.io/category/50/matrix-synapse-riot",
"documentationUrl": "https://cloudron.io/documentation/apps/synapse/", "documentationUrl": "https://docs.cloudron.io/apps/synapse/",
"optionalSso": true "optionalSso": true
} }

View File

@@ -1,12 +1,10 @@
This app packages Synapse <upstream>1.15.2</upstream>.
**This package only provides the Matrix backend. A variety of clients are available **This package only provides the Matrix backend. A variety of clients are available
[here](https://matrix.org/clients/). Riot is a popular web frontend for Matrix and [here](https://matrix.org/clients/). Riot is a popular web frontend for Matrix and
is available as a separate app.** is available as a separate app.**
Matrix is an ambitious new ecosystem for open federated Instant Messaging and VoIP. ## About
## Matrix Matrix is an ambitious new ecosystem for open federated Instant Messaging and VoIP.
Matrix specifies a set of pragmatic RESTful HTTP JSON APIs as an open standard, which handle: Matrix specifies a set of pragmatic RESTful HTTP JSON APIs as an open standard, which handle:
@@ -18,7 +16,7 @@ Matrix specifies a set of pragmatic RESTful HTTP JSON APIs as an open standard,
* Using 3rd Party IDs (3PIDs) such as email addresses, phone numbers, Facebook accounts to authenticate, identify and discover users on Matrix. * Using 3rd Party IDs (3PIDs) such as email addresses, phone numbers, Facebook accounts to authenticate, identify and discover users on Matrix.
* Placing 1:1 VoIP and Video calls * Placing 1:1 VoIP and Video calls
## Synapse ## What is Synapse?
Synapse is a reference "homeserver" implementation of Matrix from the core development Synapse is a reference "homeserver" implementation of Matrix from the core development
team at matrix.org, written in Python/Twisted. team at matrix.org, written in Python/Twisted.

View File

@@ -1,27 +1,32 @@
FROM cloudron/base:2.0.0@sha256:f9fea80513aa7c92fe2e7bf3978b54c8ac5222f47a9a32a7f8833edf0eb5a4f4 FROM cloudron/base:4.2.0@sha256:46da2fffb36353ef714f97ae8e962bd2c212ca091108d768ba473078319a47f4
RUN mkdir -p /app/pkg RUN mkdir -p /app/pkg
WORKDIR /app/code WORKDIR /app/code
ARG VERSION=v1.15.2
# https://pythonspeed.com/articles/activate-virtualenv-dockerfile/ # https://pythonspeed.com/articles/activate-virtualenv-dockerfile/
RUN virtualenv -p python3 /app/code/env RUN virtualenv -p python3 /app/code/env
ENV VIRTUAL_ENV=/app/code/env ENV VIRTUAL_ENV=/app/code/env
ENV PATH="$VIRTUAL_ENV/bin:$PATH" ENV PATH="$VIRTUAL_ENV/bin:$PATH"
ARG VERSION=1.108.0
# https://github.com/matrix-org/synapse-s3-storage-provider
ARG STORAGE_PROVIDER_VERSION=1beb6af95e1f5caedb8e6e7e1cc176cdb2106d37
# Synapse (https://github.com/matrix-org/synapse/blob/master/INSTALL.md) # Synapse (https://github.com/matrix-org/synapse/blob/master/INSTALL.md)
# lxml - required for previews # lxml - required for previews
RUN pip install --upgrade pip && \ RUN pip install --upgrade pip && \
pip install --upgrade setuptools && \ pip install --upgrade setuptools && \
pip install matrix-synapse==${VERSION} psycopg2-binary python-ldap matrix-synapse-ldap3 lxml publicsuffix2 pip install matrix-synapse==v${VERSION} psycopg2-binary python-ldap matrix-synapse-ldap3 lxml publicsuffix2 git+https://github.com/matrix-org/synapse-s3-storage-provider.git@${STORAGE_PROVIDER_VERSION} matrix-synapse[oidc]
RUN curl -sL https://github.com/mikefarah/yq/releases/download/3.2.1/yq_linux_amd64 -o /usr/bin/yq && \ # Updated suffix list
chmod +x /usr/bin/yq RUN curl -L https://publicsuffix.org/list/public_suffix_list.dat -o /app/code/env/lib/python3.10/site-packages/publicsuffix2/public_suffix_list.dat
RUN ln -sf /app/data/index.html /app/code/env/lib/python3.10/site-packages/synapse/static/index.html
RUN chown -R cloudron.cloudron /app/code RUN chown -R cloudron.cloudron /app/code
ADD homeserver.yaml.template start.sh /app/pkg/ ADD index.html homeserver.yaml.template start.sh /app/pkg/
CMD [ "/app/pkg/start.sh" ] CMD [ "/app/pkg/start.sh" ]

View File

@@ -1,8 +1,6 @@
Account ids are created with the username and the second level domain under which the Account ids are created with the username and the second level domain under which the
app is installed e.g. `@username@domain.com`. app is installed e.g. `@$CLOUDRON-USERNAME:$CLOUDRON-APP-DOMAIN`.
For federation to work, the second level domain has to be configured to serve up the For federation to work, the delegation URI `https://$CLOUDRON-APP-DOMAIN/.well-known/matrix/server`
`.well-known/domain.com/matrix` URI. See the must be configured. See the [docs](https://docs.cloudron.io/apps/synapse/#post-installation) on how to do this.
[federation docs](https://cloudron.io/documentation/apps/synapse/) on
how to do this.

View File

@@ -72,6 +72,7 @@ federation_ip_range_blacklist:
- 'fc00::/7' - 'fc00::/7'
enable_registration: false enable_registration: false
enable_registration_without_verification: true
registration_shared_secret: "somesecret" registration_shared_secret: "somesecret"
allow_guest_access: false allow_guest_access: false

68
index.html Normal file
View File

@@ -0,0 +1,68 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Synapse is running</title>
<style>
body {
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
max-width: 40em;
margin: auto;
text-align: center;
}
h1, p {
margin: 1.5em;
}
hr {
border: none;
background-color: #ccc;
color: #ccc;
height: 1px;
width: 7em;
margin-top: 4em;
}
.logo {
display: block;
width: 12em;
margin: 4em auto;
}
</style>
</head>
<body>
<div class="logo">
<svg role="img" aria-label="[Matrix logo]" viewBox="0 0 200 85" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="parent" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="child" transform="translate(-122.000000, -6.000000)" fill="#000000" fill-rule="nonzero">
<g id="matrix-logo" transform="translate(122.000000, 6.000000)">
<polygon id="left-bracket" points="2.24708861 1.93811009 2.24708861 82.7268844 8.10278481 82.7268844 8.10278481 84.6652459 0 84.6652459 0 0 8.10278481 0 8.10278481 1.93811009"></polygon>
<path d="M24.8073418,27.5493174 L24.8073418,31.6376991 L24.924557,31.6376991 C26.0227848,30.0814294 27.3455696,28.8730642 28.8951899,28.0163743 C30.4437975,27.1611927 32.2189873,26.7318422 34.218481,26.7318422 C36.1394937,26.7318422 37.8946835,27.102622 39.4825316,27.8416679 C41.0708861,28.5819706 42.276962,29.8856073 43.1005063,31.7548404 C44.0017722,30.431345 45.2270886,29.2629486 46.7767089,28.2506569 C48.3253165,27.2388679 50.158481,26.7318422 52.2764557,26.7318422 C53.8843038,26.7318422 55.3736709,26.9269101 56.7473418,27.3162917 C58.1189873,27.7056734 59.295443,28.3285835 60.2759494,29.185022 C61.255443,30.0422147 62.02,31.1615927 62.5701266,32.5426532 C63.1187342,33.9262275 63.3936709,35.5898349 63.3936709,37.5372459 L63.3936709,57.7443688 L55.0410127,57.7441174 L55.0410127,40.6319376 C55.0410127,39.6201486 55.0020253,38.6661761 54.9232911,37.7700202 C54.8440506,36.8751211 54.6293671,36.0968606 54.2764557,35.4339817 C53.9232911,34.772611 53.403038,34.2464807 52.7177215,33.8568477 C52.0313924,33.4689743 51.0997468,33.2731523 49.9235443,33.2731523 C48.7473418,33.2731523 47.7962025,33.4983853 47.0706329,33.944578 C46.344557,34.393033 45.7764557,34.9774826 45.3650633,35.6969211 C44.9534177,36.4181193 44.6787342,37.2353431 44.5417722,38.150855 C44.4037975,39.0653615 44.3356962,39.9904257 44.3356962,40.9247908 L44.3356962,57.7443688 L35.9835443,57.7443688 L35.9835443,40.8079009 C35.9835443,39.9124991 35.963038,39.0263982 35.9253165,38.150855 C35.8853165,37.2743064 35.7192405,36.4666349 35.424557,35.7263321 C35.1303797,34.9872862 34.64,34.393033 33.9539241,33.944578 C33.2675949,33.4983853 32.2579747,33.2731523 30.9248101,33.2731523 C30.5321519,33.2731523 30.0126582,33.3608826 29.3663291,33.5365945 C28.7192405,33.7118037 28.0913924,34.0433688 27.4840506,34.5292789 C26.875443,35.0164459 26.3564557,35.7172826 25.9250633,36.6315376 C25.4934177,37.5470495 25.2779747,38.7436 25.2779747,40.2229486 L25.2779747,57.7441174 L16.9260759,57.7443688 L16.9260759,27.5493174 L24.8073418,27.5493174 Z" id="m"></path>
<path d="M68.7455696,31.9886202 C69.6075949,30.7033339 70.7060759,29.672189 72.0397468,28.8926716 C73.3724051,28.1141596 74.8716456,27.5596239 76.5387342,27.2283101 C78.2050633,26.8977505 79.8817722,26.7315908 81.5678481,26.7315908 C83.0974684,26.7315908 84.6458228,26.8391798 86.2144304,27.0525982 C87.7827848,27.2675248 89.2144304,27.6865688 90.5086076,28.3087248 C91.8025316,28.9313835 92.8610127,29.7983798 93.6848101,30.9074514 C94.5083544,32.0170257 94.92,33.4870734 94.92,35.3173431 L94.92,51.026844 C94.92,52.3913138 94.998481,53.6941963 95.1556962,54.9400165 C95.3113924,56.1865908 95.5863291,57.120956 95.9787342,57.7436147 L87.5091139,57.7436147 C87.3518987,57.276055 87.2240506,56.7996972 87.1265823,56.3125303 C87.0278481,55.8266202 86.9592405,55.3301523 86.9207595,54.8236294 C85.5873418,56.1865908 84.0182278,57.1405633 82.2156962,57.6857982 C80.4113924,58.2295248 78.5683544,58.503022 76.6860759,58.503022 C75.2346835,58.503022 73.8817722,58.3275615 72.6270886,57.9776459 C71.3718987,57.6269761 70.2744304,57.082244 69.3334177,56.3411872 C68.3921519,55.602644 67.656962,54.6680275 67.1275949,53.5390972 C66.5982278,52.410167 66.3331646,51.065556 66.3331646,49.5087835 C66.3331646,47.7961578 66.6367089,46.384178 67.2455696,45.2756092 C67.8529114,44.1652807 68.6367089,43.2799339 69.5987342,42.6173064 C70.5589873,41.9556844 71.6567089,41.4592165 72.8924051,41.1284055 C74.1273418,40.7978459 75.3721519,40.5356606 76.6270886,40.3398385 C77.8820253,40.1457761 79.116962,39.9896716 80.3329114,39.873033 C81.5483544,39.7558917 82.6270886,39.5804312 83.5681013,39.3469028 C84.5093671,39.1133743 85.2536709,38.7732624 85.8032911,38.3250587 C86.3513924,37.8773578 86.6063291,37.2252881 86.5678481,36.3680954 C86.5678481,35.4731963 86.4210127,34.7620532 86.1268354,34.2366771 C85.8329114,33.7113009 85.4405063,33.3018092 84.9506329,33.0099615 C84.4602532,32.7181138 83.8916456,32.5232972 83.2450633,32.4255119 C82.5977215,32.3294862 81.9010127,32.2797138 81.156962,32.2797138 C79.5098734,32.2797138 78.2159494,32.6303835 77.2746835,33.3312202 C76.3339241,34.0320569 75.7837975,35.2007046 75.6275949,36.8354037 L67.275443,36.8354037 C67.3924051,34.8892495 67.8817722,33.2726495 68.7455696,31.9886202 Z M85.2440506,43.6984752 C84.7149367,43.873433 84.1460759,44.0189798 83.5387342,44.1361211 C82.9306329,44.253011 82.2936709,44.350545 81.6270886,44.4279688 C80.96,44.5066495 80.2934177,44.6034294 79.6273418,44.7203193 C78.9994937,44.8362037 78.3820253,44.9933138 77.7749367,45.1871248 C77.1663291,45.3829468 76.636962,45.6451321 76.1865823,45.9759431 C75.7349367,46.3070055 75.3724051,46.7263009 75.0979747,47.2313156 C74.8232911,47.7375872 74.6863291,48.380356 74.6863291,49.1588679 C74.6863291,49.8979138 74.8232911,50.5218294 75.0979747,51.026844 C75.3724051,51.5338697 75.7455696,51.9328037 76.2159494,52.2246514 C76.6863291,52.5164991 77.2349367,52.7213706 77.8632911,52.8375064 C78.4898734,52.9546477 79.136962,53.012967 79.8037975,53.012967 C81.4506329,53.012967 82.724557,52.740978 83.6273418,52.1952404 C84.5288608,51.6507596 85.1949367,50.9981872 85.6270886,50.2382771 C86.0579747,49.4793725 86.323038,48.7119211 86.4212658,47.9321523 C86.518481,47.1536404 86.5681013,46.5304789 86.5681013,46.063422 L86.5681013,42.9677248 C86.2146835,43.2799339 85.7736709,43.5230147 85.2440506,43.6984752 Z" id="a"></path>
<path d="M116.917975,27.5493174 L116.917975,33.0976917 L110.801266,33.0976917 L110.801266,48.0492936 C110.801266,49.4502128 111.036203,50.3850807 111.507089,50.8518862 C111.976962,51.3191945 112.918734,51.5527229 114.33038,51.5527229 C114.801013,51.5527229 115.251392,51.5336183 115.683038,51.4944037 C116.114177,51.4561945 116.526076,51.3968697 116.917975,51.3194459 L116.917975,57.7438661 C116.212152,57.860756 115.427595,57.9381798 114.565316,57.9778972 C113.702785,58.0153523 112.859747,58.0357138 112.036203,58.0357138 C110.742278,58.0357138 109.516456,57.9477321 108.36,57.7722716 C107.202785,57.5975651 106.183544,57.2577046 105.301519,56.7509303 C104.418987,56.2454128 103.722785,55.5242147 103.213418,54.5898495 C102.703038,53.6562385 102.448608,52.4292716 102.448608,50.9099541 L102.448608,33.0976917 L97.3903797,33.0976917 L97.3903797,27.5493174 L102.448608,27.5493174 L102.448608,18.4967596 L110.801013,18.4967596 L110.801013,27.5493174 L116.917975,27.5493174 Z" id="t"></path>
<path d="M128.857975,27.5493174 L128.857975,33.1565138 L128.975696,33.1565138 C129.367089,32.2213945 129.896203,31.3559064 130.563544,30.557033 C131.23038,29.7596679 131.99443,29.0776844 132.857215,28.5130936 C133.719241,27.9495083 134.641266,27.5113596 135.622532,27.1988991 C136.601772,26.8879468 137.622025,26.7315908 138.681013,26.7315908 C139.229873,26.7315908 139.836962,26.8296275 140.504304,27.0239413 L140.504304,34.7336477 C140.111646,34.6552183 139.641013,34.586844 139.092658,34.5290275 C138.543291,34.4704569 138.014177,34.4410459 137.504304,34.4410459 C135.974937,34.4410459 134.681013,34.6949358 133.622785,35.2004532 C132.564051,35.7067248 131.711392,36.397255 131.064051,37.2735523 C130.417215,38.1501009 129.955443,39.1714422 129.681266,40.3398385 C129.407089,41.5074807 129.269873,42.7736624 129.269873,44.1361211 L129.269873,57.7438661 L120.917722,57.7438661 L120.917722,27.5493174 L128.857975,27.5493174 Z" id="r"></path>
<path d="M144.033165,22.8767376 L144.033165,16.0435798 L152.386076,16.0435798 L152.386076,22.8767376 L144.033165,22.8767376 Z M152.386076,27.5493174 L152.386076,57.7438661 L144.033165,57.7438661 L144.033165,27.5493174 L152.386076,27.5493174 Z" id="i"></path>
<polygon id="x" points="156.738228 27.5493174 166.266582 27.5493174 171.619494 35.4337303 176.913418 27.5493174 186.147848 27.5493174 176.148861 41.6831927 187.383544 57.7441174 177.85443 57.7441174 171.501772 48.2245028 165.148861 57.7441174 155.797468 57.7441174 166.737468 41.8589046"></polygon>
<polygon id="right-bracket" points="197.580759 82.7268844 197.580759 1.93811009 191.725063 1.93811009 191.725063 0 199.828354 0 199.828354 84.6652459 191.725063 84.6652459 191.725063 82.7268844"></polygon>
</g>
</g>
</g>
</svg>
</div>
<h1>Synapse is running</h1>
<p>Your Synapse server is ready for messages.</p>
<p>To use this server you'll need <a href="https://matrix.org/docs/projects/try-matrix-now.html#clients" target="_blank" rel="noopener noreferrer">a Matrix client</a>.
</p>
<p>Welcome to the Matrix universe :)</p>
<hr>
<p>
<small>
<a href="https://matrix.org" target="_blank" rel="noopener noreferrer">
matrix.org
</a>
&nbsp; - &nbsp;
<a href="https://cloudron.io" target="_blank" rel="noopener noreferrer">
cloudron.io
</a>
</small>
</p>
</body>
</html>

View File

@@ -21,60 +21,86 @@ if [[ ! -f /app/data/configs/homeserver.yaml ]]; then
# fix logging configuration # fix logging configuration
cp /app/pkg/homeserver.yaml.template /app/data/configs/homeserver.yaml cp /app/pkg/homeserver.yaml.template /app/data/configs/homeserver.yaml
mv /app/data/configs/${server_name}.log.config /app/data/configs/log.config mv /app/data/configs/${server_name}.log.config /app/data/configs/log.config
yq w -i /app/data/configs/homeserver.yaml log_config /app/data/configs/log.config yq eval -i ".log_config=\"/app/data/configs/log.config\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/log.config handlers.file.filename /run/synapse/homeserver.log
# delete default file and buffer handlers
yq eval -i "del(.handlers.file)" /app/data/configs/log.config
yq eval -i "del(.handlers.buffer)" /app/data/configs/log.config
mv /app/data/configs/${server_name}.signing.key /app/data/configs/signing.key mv /app/data/configs/${server_name}.signing.key /app/data/configs/signing.key
yq w -i /app/data/configs/homeserver.yaml server_name "${server_name}" yq eval -i ".server_name=\"${server_name}\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml registration_shared_secret "$(pwgen -1s 64)" yq eval -i ".registration_shared_secret=\"$(pwgen -1s 64)\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml auto_join_rooms "[]" yq eval -i ".auto_join_rooms=[]" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml auto_join_rooms\[0\] "#discuss:${server_name}" yq eval -i ".auto_join_rooms[0]=\"#discuss:${server_name}\"" /app/data/configs/homeserver.yaml
if [[ -z "${CLOUDRON_LDAP_SERVER:-}" ]]; then if [[ -z "${CLOUDRON_OIDC_ISSUER:-}" ]]; then
yq w -i /app/data/configs/homeserver.yaml enable_registration true yq eval -i ".enable_registration=true" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml password_config.pepper "$(pwgen -1s 12)" # just setting enabled to false is not enough. see https://github.com/matrix-org/matrix-synapse-ldap3/issues/123
yq eval -i "del(.password_providers)" /app/data/configs/homeserver.yaml
fi fi
yq eval -i ".password_config.pepper=\"$(pwgen -1s 12)\"" /app/data/configs/homeserver.yaml # always set this so that users can enable password login if needed
fi fi
echo "==> Ensure we log to console"
yq eval -i ".root.handlers=[\"console\"]" /app/data/configs/log.config
yq eval -i ".loggers.twisted.handlers=[\"console\"]" /app/data/configs/log.config
[[ ! -f /app/data/index.html ]] && cp /app/pkg/index.html /app/data/index.html
echo "==> Configuring synapse" echo "==> Configuring synapse"
yq w -i /app/data/configs/homeserver.yaml public_baseurl "${CLOUDRON_APP_ORIGIN}" yq eval -i ".public_baseurl=\"${CLOUDRON_APP_ORIGIN}\"" /app/data/configs/homeserver.yaml
# database # database
yq w -i /app/data/configs/homeserver.yaml database.args.user "${CLOUDRON_POSTGRESQL_USERNAME}" yq eval -i ".database.args.user=\"${CLOUDRON_POSTGRESQL_USERNAME}\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml database.args.password "${CLOUDRON_POSTGRESQL_PASSWORD}" yq eval -i ".database.args.password=\"${CLOUDRON_POSTGRESQL_PASSWORD}\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml database.args.database "${CLOUDRON_POSTGRESQL_DATABASE}" yq eval -i ".database.args.database=\"${CLOUDRON_POSTGRESQL_DATABASE}\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml database.args.host "${CLOUDRON_POSTGRESQL_HOST}" yq eval -i ".database.args.host=\"${CLOUDRON_POSTGRESQL_HOST}\"" /app/data/configs/homeserver.yaml
# email # email
yq w -i /app/data/configs/homeserver.yaml email.smtp_host "${CLOUDRON_MAIL_SMTP_SERVER}" yq eval -i ".email.smtp_host=\"${CLOUDRON_MAIL_SMTP_SERVER}\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml email.smtp_port "${CLOUDRON_MAIL_SMTP_PORT}" yq eval -i ".email.smtp_port=${CLOUDRON_MAIL_SMTP_PORT}" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml email.smtp_user "${CLOUDRON_MAIL_SMTP_USERNAME}" yq eval -i ".email.smtp_user=\"${CLOUDRON_MAIL_SMTP_USERNAME}\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml email.smtp_pass "${CLOUDRON_MAIL_SMTP_PASSWORD}" yq eval -i ".email.smtp_pass=\"${CLOUDRON_MAIL_SMTP_PASSWORD}\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml email.notif_from "%(app)s <${CLOUDRON_MAIL_FROM}>" yq eval -i ".email.notif_from=\"${CLOUDRON_MAIL_FROM_DISPLAY_NAME:-Matrix} <${CLOUDRON_MAIL_FROM}>\"" /app/data/configs/homeserver.yaml
# ldap # oidc
if [[ -n "${CLOUDRON_LDAP_SERVER:-}" ]]; then if [[ -n "${CLOUDRON_OIDC_ISSUER:-}" ]]; then
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.uri' "${CLOUDRON_LDAP_URL}" yq eval -i "del(.password_providers)" /app/data/configs/homeserver.yaml # remove old ldap config
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.start_tls' false echo " ==> Configuring OIDC auth"
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.base' "${CLOUDRON_LDAP_USERS_BASE_DN}" yq eval -i ".oidc_providers[0].idp_id=\"cloudron\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.bind_dn' "${CLOUDRON_LDAP_BIND_DN}" yq eval -i ".oidc_providers[0].idp_name=\"Cloudron\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.bind_password' "${CLOUDRON_LDAP_BIND_PASSWORD}" yq eval -i ".oidc_providers[0].issuer=\"${CLOUDRON_OIDC_ISSUER}\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.filter' "(objectClass=user)" yq eval -i ".oidc_providers[0].client_id=\"${CLOUDRON_OIDC_CLIENT_ID}\"" /app/data/configs/homeserver.yaml
yq eval -i ".oidc_providers[0].client_secret=\"${CLOUDRON_OIDC_CLIENT_SECRET}\"" /app/data/configs/homeserver.yaml
yq eval -i ".oidc_providers[0].scopes=[\"openid\", \"email\", \"profile\"]" /app/data/configs/homeserver.yaml
yq eval -i ".oidc_providers[0].authorization_endpoint=\"${CLOUDRON_OIDC_AUTH_ENDPOINT}\"" /app/data/configs/homeserver.yaml
yq eval -i ".oidc_providers[0].token_endpoint=\"${CLOUDRON_OIDC_TOKEN_ENDPOINT}\"" /app/data/configs/homeserver.yaml
yq eval -i ".oidc_providers[0].userinfo_endpoint=\"${CLOUDRON_OIDC_PROFILE_ENDPOINT}\"" /app/data/configs/homeserver.yaml
# https://s3lph.me/ldap-to-oidc-migration-3-matrix.html
yq eval -i ".oidc_providers[0].allow_existing_users=true" /app/data/configs/homeserver.yaml
yq eval -i ".oidc_providers[0].skip_verification=true" /app/data/configs/homeserver.yaml
yq eval -i ".oidc_providers[0].user_mapping_provider.config.localpart_template=\"{{ user.sub }}\"" /app/data/configs/homeserver.yaml
yq eval -i ".oidc_providers[0].user_mapping_provider.config.display_name_template=\"{{ user.name }}\"" /app/data/configs/homeserver.yaml
else else
yq w -i /app/data/configs/homeserver.yaml password_config.localdb_enabled true yq eval -i ".password_config.localdb_enabled=true" /app/data/configs/homeserver.yaml
# just setting enabled to false is not enough. see https://github.com/matrix-org/matrix-synapse-ldap3/issues/123
yq eval -i "del(.password_providers)" /app/data/configs/homeserver.yaml
fi fi
# turn (https://github.com/matrix-org/synapse/blob/master/docs/turn-howto.md#synapse-setup) # turn (https://github.com/matrix-org/synapse/blob/master/docs/turn-howto.md#synapse-setup)
yq w -i /app/data/configs/homeserver.yaml turn_uris "[]" if [[ -n "${CLOUDRON_TURN_SERVER:-}" ]]; then
yq w -i /app/data/configs/homeserver.yaml turn_uris\[0\] "turn:${CLOUDRON_TURN_SERVER}:${CLOUDRON_TURN_TLS_PORT}?transport=udp" yq eval -i ".turn_uris=[]" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml turn_uris\[1\] "turn:${CLOUDRON_TURN_SERVER}:${CLOUDRON_TURN_TLS_PORT}?transport=tcp" yq eval -i ".turn_uris[0]=\"turn:${CLOUDRON_TURN_SERVER}:${CLOUDRON_TURN_TLS_PORT}?transport=udp\"" /app/data/configs/homeserver.yaml
yq w -i /app/data/configs/homeserver.yaml turn_shared_secret "${CLOUDRON_TURN_SECRET}" yq eval -i ".turn_uris[1]=\"turn:${CLOUDRON_TURN_SERVER}:${CLOUDRON_TURN_TLS_PORT}?transport=tcp\"" /app/data/configs/homeserver.yaml
yq eval -i ".turn_shared_secret=\"${CLOUDRON_TURN_SECRET}\"" /app/data/configs/homeserver.yaml
fi
# fix permissions # fix permissions
echo "==> Fixing permissions" echo "==> Fixing permissions"
chown -R cloudron.cloudron /app/data /run/synapse chown -R cloudron.cloudron /app/data /run/synapse
echo "==> Starting synapse" echo "==> Starting synapse"
gosu cloudron:cloudron python3 -m synapse.app.homeserver --config-path /app/data/configs/homeserver.yaml gosu cloudron:cloudron python3 -m synapse.app.homeserver --config-path /app/data/configs/homeserver.yaml -n

3065
test/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -9,14 +9,9 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"chromedriver": "^83.0.0", "chromedriver": "^125.0.2",
"ejs": "^3.1.3",
"expect.js": "^0.3.1", "expect.js": "^0.3.1",
"mkdirp": "^1.0.4", "mocha": "^10.4.0",
"mocha": "^7.2.0", "selenium-webdriver": "^4.21.0"
"rimraf": "^3.0.2",
"selenium-server-standalone-jar": "^3.141.59",
"selenium-webdriver": "^3.6.0",
"superagent": "^5.2.2"
} }
} }

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env node #!/usr/bin/env node
/* jslint node:true */ /* jshint esversion: 8 */
/* global it:false */ /* global it:false */
/* global xit:false */ /* global xit:false */
/* global describe:false */ /* global describe:false */
@@ -11,241 +11,350 @@
require('chromedriver'); require('chromedriver');
var execSync = require('child_process').execSync, const execSync = require('child_process').execSync,
expect = require('expect.js'), expect = require('expect.js'),
path = require('path'), path = require('path'),
superagent = require('superagent'), { Builder, By, Key, until } = require('selenium-webdriver'),
webdriver = require('selenium-webdriver'); { Options } = require('selenium-webdriver/chrome');
var by = require('selenium-webdriver').By,
until = require('selenium-webdriver').until, if (!process.env.USERNAME || !process.env.PASSWORD) {
Key = require('selenium-webdriver').Key; console.log('USERNAME and PASSWORD env vars need to be set');
process.exit(1);
}
describe('Application life cycle test', function () { describe('Application life cycle test', function () {
this.timeout(0); this.timeout(0);
var server, browser = new webdriver.Builder().forBrowser('chrome').build();
var LOCATION = 'test'; const ELEMENT_LOCATION = 'element-test';
var app; const LOCATION = 'test';
var username = process.env.USERNAME; const TEST_TIMEOUT = parseInt(process.env.TIMEOUT, 10) || 10000;
var password = process.env.PASSWORD; const EXEC_ARGS = { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' };
var TIMEOUT = process.env.TIMEOUT | 30000; const USERNAME = process.env.USERNAME;
var token, roomId; const PASSWORD = process.env.PASSWORD;
const ROOM_ID = Math.floor((Math.random() * 100) + 1);
const ROOM_NAME = 'Test room ' + ROOM_ID;
const MSG_TEXT = 'Test message ';
before(function (done) { let browser, app;
if (!process.env.USERNAME) return done(new Error('USERNAME env var not set')); let athenticated_by_oidc = false;
if (!process.env.PASSWORD) return done(new Error('PASSWORD env var not set'));
var seleniumJar= require('selenium-server-standalone-jar'); before(function () {
var SeleniumServer = require('selenium-webdriver/remote').SeleniumServer; const options = new Options().windowSize({ width: 1280, height: 1024 });
server = new SeleniumServer(seleniumJar.path, { port: 4444 }); if (process.env.HEADLESS) options.addArguments('headless');
server.start();
done(); browser = new Builder().forBrowser('chrome').setChromeOptions(options).build();
}); });
after(function (done) { after(function () {
browser.quit(); browser.quit();
server.stop();
done();
}); });
function checkLandingPage(done) { function sleep(millis) {
browser.get('https://' + app.fqdn).then(function () { return new Promise(resolve => setTimeout(resolve, millis));
return browser.wait(until.elementLocated(by.xpath('//h1[contains(text(),"Synapse is running")]')), TIMEOUT);
}).then(function () {
done();
});
} }
// https://matrix.org/docs/spec/client_server/latest#user-interactive-api-in-the-rest-api async function waitForElement(elem) {
function registerUser(done) { await browser.wait(until.elementLocated(elem), TEST_TIMEOUT);
superagent.post('https://' + app.fqdn + '/_matrix/client/r0/register?kind=user').send({ await browser.wait(until.elementIsVisible(browser.findElement(elem)), TEST_TIMEOUT);
username: username,
password: password,
inhibit_login: false
}).end(function (error, result) {
// we will first get a 401
let session = result.body.session;
console.log('session is', session);
if (result.statusCode !== 401) return done(new Error('Expecting a 401 ' + result.statusCode));
superagent.post('https://' + app.fqdn + '/_matrix/client/r0/register?kind=user').send({
auth: {
type: 'm.login.dummy',
session: session
},
username: username,
password: password,
inhibit_login: false
}).end(function (error, result) {
if (error) return done(error);
if (result.statusCode !== 200) return done(new Error('Login failed with status ' + result.statusCode));
console.log('registered user with id', result.user_id);
done();
});
});
} }
// https://matrix.org/docs/spec/client_server/latest function getAppInfo() {
function checkLogin(done) { const inspect = JSON.parse(execSync('cloudron inspect'));
superagent.post('https://' + app.fqdn + '/_matrix/client/r0/login').send({ app = inspect.apps.filter(function (a) { return a.location.indexOf(LOCATION) === 0; })[0];
type: 'm.login.password', expect(app).to.be.an('object');
user: username,
password: password
}).end(function (error, result) {
if (error) return done(error);
if (result.statusCode !== 200) return done(new Error('Login failed with status ' + result.statusCode));
token = result.body.access_token;
if (!token) return done(new Error('No token'));
done();
});
} }
function checkAutoJoinRoom(done) { function getElementAppInfo() {
superagent.get('https://' + app.fqdn + '/_matrix/client/r0/joined_rooms?access_token=' + token).end(function (error, result) { const inspect = JSON.parse(execSync('cloudron inspect'));
if (error) return done(error); app = inspect.apps.filter(function (a) { return a.location.indexOf(ELEMENT_LOCATION) === 0; })[0];
if (result.statusCode !== 200) return done(new Error('Room listing failed with status ' + result.statusCode)); expect(app).to.be.an('object');
if (result.body.joined_rooms.length !== 1) return done(new Error('User must have auto-joined discuss channel:' + result.statusCode));
done();
});
} }
function createRoom(done) { function getMessage() {
superagent.post('https://' + app.fqdn + '/_matrix/client/r0/createRoom?access_token=' + token).send({ return MSG_TEXT + Math.floor((Math.random() * 100) + 1);
room_alias_name: 'general'
}).end(function (error, result) {
if (error) return done(error);
if (result.statusCode !== 200) return done(new Error('Room creation failed with status ' + result.statusCode));
roomId = result.body.room_id;
if (!roomId) return done(new Error('No room id'));
done();
});
} }
function checkRoom(done) { async function updateSynapseConfig() {
superagent.get('https://' + app.fqdn + '/_matrix/client/r0/joined_rooms?access_token=' + token).end(function (error, result) { console.log(`Setting Synapse Matrix server location to "https://${app.fqdn}"`);
if (error) return done(error); execSync(`cloudron exec --app ${ELEMENT_LOCATION} -- bash -c "jq '.default_server_config[\\"m.homeserver\\"].base_url = \\"https://${app.fqdn}\\"' /app/data/config.json | sponge /app/data/config.json"`);
if (result.statusCode !== 200) return done(new Error('Room listing failed with status ' + result.statusCode)); execSync(`cloudron restart --app ${ELEMENT_LOCATION}`);
// wait when all services are up and running
if (!result.body.joined_rooms.includes(roomId)) return done(new Error('No room in list: ' + JSON.stringify(result.body))); await sleep(15000);
done();
});
} }
xit('build app', function () { async function checkLandingPage() {
execSync('cloudron build', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); await browser.get(`https://${app.fqdn}`);
}); await browser.wait(until.elementLocated(By.xpath('//h1[contains(text(),"Synapse is running")]')), TEST_TIMEOUT);
}
async function registerUser() {
await browser.get(`https://${app.fqdn}/#/register`);
await waitForElement(By.xpath('//input[@label="Username"]'));
await browser.findElement(By.xpath('//input[@label="Username"]')).sendKeys(USERNAME);
await browser.sleep(2000);
await browser.findElement(By.xpath('//input[@label="Password"]')).sendKeys(PASSWORD);
await browser.sleep(2000);
await browser.findElement(By.xpath('//input[@label="Confirm password"]')).sendKeys(PASSWORD);
await browser.sleep(2000);
await browser.findElement(By.xpath('//input[@value="Register"]')).click();
await browser.sleep(2000);
await waitForElement(By.xpath('//h1[text()="You\'re in"]'));
await browser.sleep(2000);
await browser.findElement(By.xpath('//div[@role="button" and text()="Skip"]')).click();
await browser.sleep(2000);
await waitForElement(By.xpath(`//h1[contains(., "Welcome")]`));
}
async function loginOIDC(username, password) {
browser.manage().deleteAllCookies();
await browser.get(`https://${app.fqdn}/#/login`);
await browser.sleep(6000);
await waitForElement(By.xpath('//div[@role="button" and contains(., "Continue with Cloudron")]'));
await browser.findElement(By.xpath('//div[@role="button" and contains(., "Continue with Cloudron")]')).click();
await browser.sleep(2000);
if (!athenticated_by_oidc) {
await waitForElement(By.xpath('//input[@name="username"]'));
await browser.findElement(By.xpath('//input[@name="username"]')).sendKeys(username);
await browser.findElement(By.xpath('//input[@name="password"]')).sendKeys(password);
await browser.sleep(2000);
await browser.findElement(By.id('loginSubmitButton')).click();
await browser.sleep(2000);
athenticated_by_oidc = true;
}
await waitForElement(By.xpath('//p[@class="confirm-trust" and contains(., "Continuing will grant ")]'));
await browser.findElement(By.xpath('//a[contains(., "Continue")]')).click();
await browser.sleep(2000);
//if (await browser.findElements(By.xpath('//div[@aria-label="Skip verification for now"]')).then(found => !!found.length)) {
// await skipVerification();
//}
await browser.sleep(3000);
await waitForElement(By.xpath(`//h1[contains(., "Welcome")]`));
}
async function login() {
await browser.get('https://' + app.fqdn + '/#/login');
await browser.wait(until.elementLocated(By.xpath('//input[@value="Sign in"]')), TEST_TIMEOUT);
await browser.findElement(By.xpath('//input[@name="username"]')).sendKeys(USERNAME);
await browser.findElement(By.xpath('//input[@name="password"]')).sendKeys(PASSWORD);
await browser.findElement(By.xpath('//input[@value="Sign in"]')).click();
await browser.sleep(5000);
if (await browser.findElements(By.xpath('//div[@aria-label="Skip verification for now"]')).then(found => !!found.length)) {
await skipVerification();
}
await browser.wait(until.elementLocated(By.xpath('//span[text()="Rooms"]')), TEST_TIMEOUT);
}
async function skipVerification() {
await browser.wait(until.elementLocated(By.xpath('//div[@aria-label="Skip verification for now"]')), TEST_TIMEOUT);
await browser.sleep(5000);
await browser.findElement(By.xpath('//div[@aria-label="Skip verification for now"]')).click();
await browser.wait(until.elementLocated(By.xpath('//div[contains(text(), "verify later")]')), TEST_TIMEOUT);
await browser.sleep(5000);
await browser.findElement(By.xpath('//div[contains(text(), "verify later")]')).click();
await browser.sleep(5000);
}
async function logout() {
await browser.get('https://' + app.fqdn + '/#/home');
await browser.sleep(5000);
await waitForElement(By.xpath('//div[@role="button" and @aria-label="User menu"]'));
await browser.findElement(By.xpath('//div[@role="button" and @aria-label="User menu"]')).click();
await browser.sleep(2000);
await browser.findElement(By.xpath('//li[@role="menuitem" and @aria-label="Sign out"]')).click();
await browser.sleep(2000);
// if (await browser.findElements(By.xpath('//button[contains(text(), "I don\'t want my encrypted messages")]')).then(found => !!found.length)) {
await browser.findElement(By.xpath('//button[contains(text(), "I don\'t want my encrypted messages")]')).click();
await browser.sleep(3000);
// }
await waitForElement(By.xpath('//h1[text()="Sign in"]'));
}
async function isLoggedIn() {
await browser.get('https://' + app.fqdn + '/#/home');
await browser.wait(until.elementLocated(By.xpath('//span[text()="Rooms"]')), TEST_TIMEOUT);
}
async function createRoom() {
await browser.get('https://' + app.fqdn + '/#/home');
await browser.sleep(4000);
await waitForElement(By.xpath('//div[@role="button" and @aria-label="Add room"]'));
await browser.findElement(By.xpath('//div[@role="button" and @aria-label="Add room"]')).click();
await browser.sleep(2000);
await browser.findElement(By.xpath('//li[@role="menuitem" and @aria-label="New room"]')).click();
await browser.sleep(2000);
await browser.findElement(By.xpath('//input[@label="Name"]')).sendKeys(ROOM_NAME);
await browser.sleep(2000);
await browser.findElement(By.xpath('//button[text()="Create room"]')).click();
await browser.sleep(2000);
await waitForElement(By.xpath('//div[@role="button" and @aria-label="Add room"]'));
await waitForElement(By.xpath('//div[@class="mx_RoomTile_titleContainer"]/div[@title="' + ROOM_NAME + '"]'));
}
async function checkRoom() {
await browser.get('https://' + app.fqdn + '/#/home');
await browser.sleep(4000);
await waitForElement(By.xpath('//div[@role="treeitem" and @aria-label="' + ROOM_NAME + '"]'));
await browser.findElement(By.xpath('//div[@role="treeitem" and @aria-label="' + ROOM_NAME + '"]')).click();
await browser.sleep(2000);
await waitForElement(By.xpath('//h2[text()="' + ROOM_NAME + '"]'));
}
async function sendMessage() {
await checkRoom();
await browser.findElement(By.xpath('//div[contains(@class, "mx_BasicMessageComposer_input")]')).sendKeys(getMessage());
await browser.sleep(2000);
await browser.findElement(By.xpath('//div[@role="button" and @aria-label="Send message"]')).click();
await browser.sleep(2000);
}
xit('build app', function () { execSync('cloudron build', EXEC_ARGS); });
// No SSO // No SSO
it('install app (no sso)', function () { it('install app (no sso)', function () { execSync('cloudron install --no-sso --location ' + LOCATION, EXEC_ARGS); });
execSync('cloudron install --no-sso --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); it('can get app information', getAppInfo);
});
it('can get app information', function () {
var inspect = JSON.parse(execSync('cloudron inspect'));
app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0];
expect(app).to.be.an('object');
});
it('check landing page', checkLandingPage); it('check landing page', checkLandingPage);
it('can register new user', registerUser);
it('can login', checkLogin);
it('check autojoin', checkAutoJoinRoom);
it('create room', createRoom);
it('check room', checkRoom);
it('uninstall app', function () { it('can install element-web app (no sso)', function () { execSync('cloudron install --appstore-id im.riot.cloudronapp --location ' + ELEMENT_LOCATION, EXEC_ARGS); });
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); it('update element-app config', updateSynapseConfig);
it('can get Element app info', getElementAppInfo);
it('can register new user', registerUser);
it('create room', createRoom);
it('can send message', sendMessage);
it('can logout', logout);
it('can login', login);
it('check room', checkRoom);
it('can logout', logout);
it('can get app info', getAppInfo);
it('uninstall element-web app', async function () {
await browser.get('about:blank');
execSync(`cloudron uninstall --app ${ELEMENT_LOCATION}`, EXEC_ARGS);
}); });
it('uninstall app', function () { execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS); });
// SSO // SSO
it('install app', function () { it('install app (sso)', function () { execSync('cloudron install --location ' + LOCATION, EXEC_ARGS); });
execSync('cloudron install --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); it('can get app info', getAppInfo);
});
it('can get app information', function () { it('can install element-web app (sso)', function () { execSync('cloudron install --appstore-id im.riot.cloudronapp --location ' + ELEMENT_LOCATION, EXEC_ARGS); });
var inspect = JSON.parse(execSync('cloudron inspect')); it('update element-app config', updateSynapseConfig);
app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0]; it('can get Element app info', getElementAppInfo);
it('can login via OIDC', loginOIDC.bind(null, USERNAME, PASSWORD));
expect(app).to.be.an('object');
});
it('check landing page', checkLandingPage);
it('can login', checkLogin);
it('check autojoin', checkAutoJoinRoom);
it('create room', createRoom); it('create room', createRoom);
it('check room', checkRoom); it('can send message', sendMessage);
it('can get app info', getAppInfo);
it('can restart app', function (done) { it('can restart app', function () { execSync(`cloudron restart ${app.id}`); });
execSync('cloudron restart');
done(); it('backup app', function () { execSync(`cloudron backup create --app ${app.id}`, EXEC_ARGS); });
it('can get Element app info', getElementAppInfo);
it('is logged in', isLoggedIn);
it('check room', checkRoom);
it('can get app info', getAppInfo);
it('restore app', async function () {
const backups = JSON.parse(execSync(`cloudron backup list --raw --app ${app.id}`));
await browser.get('about:blank');
execSync(`cloudron uninstall --app ${app.id}`, EXEC_ARGS);
execSync(`cloudron install --location ${LOCATION}`, EXEC_ARGS);
getAppInfo();
execSync(`cloudron restore --backup ${backups[0].id} --app ${app.id}`, EXEC_ARGS);
}); });
it('check landing page', checkLandingPage); it('can get Element app info', getElementAppInfo);
it('is logged in', isLoggedIn);
it('check room', checkRoom); it('check room', checkRoom);
it('can send message', sendMessage);
it('can logout', logout);
it('can get app info', getAppInfo);
it('backup app', function () { it('move to different location', async function () {
execSync('cloudron backup create --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
it('check landing page', checkLandingPage);
it('check room', checkRoom);
it('restore app', function () {
execSync('cloudron restore --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
});
it('check landing page', checkLandingPage);
it('check room', checkRoom);
it('move to different location', function () {
browser.manage().deleteAllCookies(); browser.manage().deleteAllCookies();
execSync('cloudron configure --location ' + LOCATION + '2', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); await browser.get('about:blank');
var inspect = JSON.parse(execSync('cloudron inspect'));
app = inspect.apps.filter(function (a) { return a.location === LOCATION + '2'; })[0]; execSync(`cloudron configure --location ${LOCATION}2`, EXEC_ARGS);
expect(app).to.be.an('object'); getAppInfo();
// wait when all services are up and running
await sleep(15000);
}); });
it('check landing page', checkLandingPage); it('update element-app config', updateSynapseConfig);
it('check room', checkRoom);
it('uninstall app', function () { it('can get Element app info', getElementAppInfo);
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); it('can login via OIDC', loginOIDC.bind(null, USERNAME, PASSWORD));
it('check room', checkRoom);
it('can send message', sendMessage);
it('can logout', logout);
it('can get app info', getAppInfo);
it('uninstall app', async function () {
await browser.get('about:blank');
execSync(`cloudron uninstall --app ${app.id}`, EXEC_ARGS);
}); });
// test update // test update
it('can install app', function () { it('can install app for update', function () { execSync('cloudron install --appstore-id org.matrix.synapse --location ' + LOCATION, EXEC_ARGS); });
execSync('cloudron install --appstore-id org.matrix.synapse --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); it('can get app info', getAppInfo);
var inspect = JSON.parse(execSync('cloudron inspect')); it('update element-app config', updateSynapseConfig);
app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0];
expect(app).to.be.an('object');
});
it('check landing page', checkLandingPage); it('can get Element app info', getElementAppInfo);
it('can login', checkLogin);
it('can login via OIDC', loginOIDC.bind(null, USERNAME, PASSWORD));
it('is logged in', isLoggedIn);
it('create room', createRoom); it('create room', createRoom);
it('check room', checkRoom); it('can send message', sendMessage);
it('can logout', logout);
it('can get app info', getAppInfo);
it('can update', function () { it('can update', async function () {
execSync('cloudron update --app ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); await browser.get('about:blank');
execSync(`cloudron update --app ${app.id}`, EXEC_ARGS);
// wait when all services are up and running
await sleep(15000);
}); });
it('check landing page', checkLandingPage); it('can get Element app info', getElementAppInfo);
it('can login via OIDC', loginOIDC.bind(null, USERNAME, PASSWORD));
it('is logged in', isLoggedIn);
it('check room', checkRoom); it('check room', checkRoom);
it('uninstall app', function () { it('can send message', sendMessage);
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }); it('can get app info', getAppInfo);
it('uninstall app', async function () {
await browser.get('about:blank');
execSync(`cloudron uninstall --app ${app.id}`, EXEC_ARGS);
});
it('uninstall element-web app', function () {
execSync(`cloudron uninstall --app ${ELEMENT_LOCATION}`, EXEC_ARGS);
}); });
}); });