Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ebfe474a79 | ||
|
|
0c3a909ef3 | ||
|
|
1d941ef1c2 | ||
|
|
f9c7799381 | ||
|
|
37e0405972 | ||
|
|
429683194f | ||
|
|
b2bc129d47 | ||
|
|
5e74f21865 | ||
|
|
070d306838 | ||
|
|
c9f1071363 | ||
|
|
1ccc16fff6 | ||
|
|
95648914d4 | ||
|
|
6af792f9cd | ||
|
|
052a511599 | ||
|
|
15e1f7ac1d | ||
|
|
a1177f3455 | ||
|
|
2cc55a07fa | ||
|
|
b4c6b21942 | ||
|
|
b95e6a3b5c | ||
|
|
c711c8f249 | ||
|
|
9b6bfd35b2 | ||
|
|
bd6ece8ddb | ||
|
|
158e4c223a | ||
|
|
246b99b8ce |
41
CHANGELOG
41
CHANGELOG
@@ -107,3 +107,44 @@
|
|||||||
[0.7.0]
|
[0.7.0]
|
||||||
* Set turn_uris to an array and not a string
|
* 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)
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
"description": "file://DESCRIPTION.md",
|
"description": "file://DESCRIPTION.md",
|
||||||
"changelog": "file://CHANGELOG",
|
"changelog": "file://CHANGELOG",
|
||||||
"tagline": "Secure & decentralized communication",
|
"tagline": "Secure & decentralized communication",
|
||||||
"version": "0.7.0",
|
"version": "1.5.0",
|
||||||
"healthCheckPath": "/",
|
"healthCheckPath": "/",
|
||||||
"httpPort": 8008,
|
"httpPort": 8008,
|
||||||
"memoryLimit": 536870912,
|
"memoryLimit": 536870912,
|
||||||
@@ -19,9 +19,9 @@
|
|||||||
"manifestVersion": 2,
|
"manifestVersion": 2,
|
||||||
"website": "https://matrix.org",
|
"website": "https://matrix.org",
|
||||||
"contactEmail": "support@cloudron.io",
|
"contactEmail": "support@cloudron.io",
|
||||||
"icon": "logo.png",
|
"icon": "file://logo.png",
|
||||||
"tags": [
|
"tags": [
|
||||||
"im", "collaboration", "voip", "videochat", "chat"
|
"im", "collaboration", "voip", "videochat", "chat", "slack"
|
||||||
],
|
],
|
||||||
"mediaLinks": [
|
"mediaLinks": [
|
||||||
"https://cloudron-app-screenshots.s3.amazonaws.com/org.matrix.synapse/606cd9d4ccc3bee11a49f91444a2dad8947cbc7c/1.png",
|
"https://cloudron-app-screenshots.s3.amazonaws.com/org.matrix.synapse/606cd9d4ccc3bee11a49f91444a2dad8947cbc7c/1.png",
|
||||||
@@ -30,6 +30,8 @@
|
|||||||
],
|
],
|
||||||
"changelog": "file://CHANGELOG",
|
"changelog": "file://CHANGELOG",
|
||||||
"postInstallMessage": "file://POSTINSTALL.md",
|
"postInstallMessage": "file://POSTINSTALL.md",
|
||||||
"minBoxVersion": "5.1.4",
|
"minBoxVersion": "5.3.0",
|
||||||
"documentationUrl": "https://cloudron.io/documentation/apps/synapse/"
|
"forumUrl": "https://forum.cloudron.io/category/50/matrix-synapse-riot",
|
||||||
|
"documentationUrl": "https://cloudron.io/documentation/apps/synapse/",
|
||||||
|
"optionalSso": true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
This app packages Synapse <upstream>1.12.3</upstream>.
|
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
|
||||||
|
|||||||
10
Dockerfile
10
Dockerfile
@@ -1,16 +1,10 @@
|
|||||||
FROM cloudron/base:1.0.0@sha256:147a648a068a2e746644746bbfb42eb7a50d682437cead3c67c933c546357617
|
FROM cloudron/base:2.0.0@sha256:f9fea80513aa7c92fe2e7bf3978b54c8ac5222f47a9a32a7f8833edf0eb5a4f4
|
||||||
|
|
||||||
RUN mkdir -p /app/pkg
|
RUN mkdir -p /app/pkg
|
||||||
|
|
||||||
WORKDIR /app/code
|
WORKDIR /app/code
|
||||||
|
|
||||||
ARG VERSION=v1.12.3
|
ARG VERSION=v1.15.2
|
||||||
|
|
||||||
RUN apt update && \
|
|
||||||
apt install -y build-essential python3-dev libffi-dev \
|
|
||||||
python3-pip python-setuptools sqlite3 libxml2-dev \
|
|
||||||
libssl-dev python-virtualenv libjpeg-dev libxslt1-dev libldap2-dev libsasl2-dev && \
|
|
||||||
rm -rf /var/cache/apt /var/lib/apt/lists
|
|
||||||
|
|
||||||
# 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
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<sso>
|
Account ids are created with the username and the second level domain under which the
|
||||||
This app integrates with the Cloudron User Management. Cloudron users can register
|
app is installed e.g. `@username@domain.com`.
|
||||||
themselves using any client and use Matrix Synapse.
|
|
||||||
</sso>
|
|
||||||
|
|
||||||
**IMPORTANT: See the [docs](https://cloudron.io/documentation/apps/synapse/) on
|
For federation to work, the second level domain has to be configured to serve up the
|
||||||
how to complete setup and start using this app.**
|
`.well-known/domain.com/matrix` URI. See the
|
||||||
|
[federation docs](https://cloudron.io/documentation/apps/synapse/) on
|
||||||
|
how to do this.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# https://github.com/matrix-org/synapse/blob/master/docs/sample_config.yaml
|
# https://github.com/matrix-org/synapse/blob/master/docs/sample_config.yaml
|
||||||
|
|
||||||
server_name: "matrix.example.com"
|
# if you change this, change the auto_join_rooms below as well
|
||||||
|
server_name: "example.com"
|
||||||
|
|
||||||
pid_file: /run/synapse/homeserver.pid
|
pid_file: /run/synapse/homeserver.pid
|
||||||
|
|
||||||
@@ -97,8 +98,9 @@ max_upload_size: 200M
|
|||||||
max_image_pixels: "32M"
|
max_image_pixels: "32M"
|
||||||
dynamic_thumbnails: false
|
dynamic_thumbnails: false
|
||||||
|
|
||||||
#auto_join_rooms:
|
autocreate_auto_join_rooms: true
|
||||||
# - "#discuss:example.com"
|
auto_join_rooms:
|
||||||
|
- "#discuss:example.com"
|
||||||
|
|
||||||
trusted_key_servers:
|
trusted_key_servers:
|
||||||
- server_name: "matrix.org"
|
- server_name: "matrix.org"
|
||||||
|
|||||||
24
start.sh
24
start.sh
@@ -28,6 +28,14 @@ if [[ ! -f /app/data/configs/homeserver.yaml ]]; then
|
|||||||
|
|
||||||
yq w -i /app/data/configs/homeserver.yaml server_name "${server_name}"
|
yq w -i /app/data/configs/homeserver.yaml server_name "${server_name}"
|
||||||
yq w -i /app/data/configs/homeserver.yaml registration_shared_secret "$(pwgen -1s 64)"
|
yq w -i /app/data/configs/homeserver.yaml registration_shared_secret "$(pwgen -1s 64)"
|
||||||
|
|
||||||
|
yq w -i /app/data/configs/homeserver.yaml auto_join_rooms "[]"
|
||||||
|
yq w -i /app/data/configs/homeserver.yaml auto_join_rooms\[0\] "#discuss:${server_name}"
|
||||||
|
|
||||||
|
if [[ -z "${CLOUDRON_LDAP_SERVER:-}" ]]; then
|
||||||
|
yq w -i /app/data/configs/homeserver.yaml enable_registration true
|
||||||
|
yq w -i /app/data/configs/homeserver.yaml password_config.pepper "$(pwgen -1s 12)"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Configuring synapse"
|
echo "==> Configuring synapse"
|
||||||
@@ -47,12 +55,16 @@ yq w -i /app/data/configs/homeserver.yaml email.smtp_pass "${CLOUDRON_MAIL_SMTP_
|
|||||||
yq w -i /app/data/configs/homeserver.yaml email.notif_from "%(app)s <${CLOUDRON_MAIL_FROM}>"
|
yq w -i /app/data/configs/homeserver.yaml email.notif_from "%(app)s <${CLOUDRON_MAIL_FROM}>"
|
||||||
|
|
||||||
# ldap
|
# ldap
|
||||||
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.uri' "${CLOUDRON_LDAP_URL}"
|
if [[ -n "${CLOUDRON_LDAP_SERVER:-}" ]]; then
|
||||||
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.start_tls' false
|
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.uri' "${CLOUDRON_LDAP_URL}"
|
||||||
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.base' "${CLOUDRON_LDAP_USERS_BASE_DN}"
|
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.start_tls' false
|
||||||
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.bind_dn' "${CLOUDRON_LDAP_BIND_DN}"
|
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.base' "${CLOUDRON_LDAP_USERS_BASE_DN}"
|
||||||
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.bind_password' "${CLOUDRON_LDAP_BIND_PASSWORD}"
|
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.bind_dn' "${CLOUDRON_LDAP_BIND_DN}"
|
||||||
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.filter' "(objectClass=user)"
|
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.bind_password' "${CLOUDRON_LDAP_BIND_PASSWORD}"
|
||||||
|
yq w -i /app/data/configs/homeserver.yaml 'password_providers[0].config.filter' "(objectClass=user)"
|
||||||
|
else
|
||||||
|
yq w -i /app/data/configs/homeserver.yaml password_config.localdb_enabled true
|
||||||
|
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 "[]"
|
yq w -i /app/data/configs/homeserver.yaml turn_uris "[]"
|
||||||
|
|||||||
119
test/package-lock.json
generated
119
test/package-lock.json
generated
@@ -53,9 +53,9 @@
|
|||||||
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
|
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "13.11.1",
|
"version": "14.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.5.tgz",
|
||||||
"integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g=="
|
"integrity": "sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA=="
|
||||||
},
|
},
|
||||||
"@types/yauzl": {
|
"@types/yauzl": {
|
||||||
"version": "2.9.1",
|
"version": "2.9.1",
|
||||||
@@ -115,6 +115,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
|
||||||
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
|
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
|
||||||
},
|
},
|
||||||
|
"async": {
|
||||||
|
"version": "0.9.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
|
||||||
|
"integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
|
||||||
|
},
|
||||||
"asynckit": {
|
"asynckit": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||||
@@ -178,16 +183,6 @@
|
|||||||
"ansi-styles": "^3.2.1",
|
"ansi-styles": "^3.2.1",
|
||||||
"escape-string-regexp": "^1.0.5",
|
"escape-string-regexp": "^1.0.5",
|
||||||
"supports-color": "^5.3.0"
|
"supports-color": "^5.3.0"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"supports-color": {
|
|
||||||
"version": "5.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
|
||||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
|
||||||
"requires": {
|
|
||||||
"has-flag": "^3.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"chokidar": {
|
"chokidar": {
|
||||||
@@ -206,9 +201,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"chromedriver": {
|
"chromedriver": {
|
||||||
"version": "80.0.2",
|
"version": "83.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-80.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-83.0.0.tgz",
|
||||||
"integrity": "sha512-MKrTzBtykWuIswRYgUw9dHXr96BShQYSy8NdLlo2LN1mZ17A9nxtz9v0h9z1zKWTVaxT7e0qvo41rSY5BL1i+Q==",
|
"integrity": "sha512-AePp9ykma+z4aKPRqlbzvVlc22VsQ6+rgF+0aL3B5onHOncK18dWSkLrSSJMczP/mXILN9ohGsvpuTwoRSj6OQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@testim/chrome-version": "^1.0.7",
|
"@testim/chrome-version": "^1.0.7",
|
||||||
"axios": "^0.19.2",
|
"axios": "^0.19.2",
|
||||||
@@ -359,9 +354,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ejs": {
|
"ejs": {
|
||||||
"version": "3.0.2",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.3.tgz",
|
||||||
"integrity": "sha512-IncmUpn1yN84hy2shb0POJ80FWrfGNY0cxO9f4v+/sG7qcBvAtVWUA1IdzY/8EYUmOVhoKJVdJjNd3AZcnxOjA=="
|
"integrity": "sha512-wmtrUGyfSC23GC/B1SMv2ogAUgbQEtDmTIhfqielrG5ExIM9TP4UoYdi90jLF1aTcsWCJNEO0UrgKzP0y3nTSg==",
|
||||||
|
"requires": {
|
||||||
|
"jake": "^10.6.1"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"emoji-regex": {
|
"emoji-regex": {
|
||||||
"version": "7.0.3",
|
"version": "7.0.3",
|
||||||
@@ -464,9 +462,9 @@
|
|||||||
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
|
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
|
||||||
},
|
},
|
||||||
"fastq": {
|
"fastq": {
|
||||||
"version": "1.7.0",
|
"version": "1.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz",
|
||||||
"integrity": "sha512-YOadQRnHd5q6PogvAR/x62BGituF2ufiEA6s8aavQANw5YKHERI4AREboX6KotzP8oX2klxYF2wcV/7bn1clfQ==",
|
"integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"reusify": "^1.0.4"
|
"reusify": "^1.0.4"
|
||||||
}
|
}
|
||||||
@@ -479,6 +477,14 @@
|
|||||||
"pend": "~1.2.0"
|
"pend": "~1.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"filelist": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==",
|
||||||
|
"requires": {
|
||||||
|
"minimatch": "^3.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"fill-range": {
|
"fill-range": {
|
||||||
"version": "7.0.1",
|
"version": "7.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||||
@@ -532,9 +538,9 @@
|
|||||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||||
},
|
},
|
||||||
"fsevents": {
|
"fsevents": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
|
||||||
"integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
|
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"function-bind": {
|
"function-bind": {
|
||||||
@@ -592,9 +598,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"graceful-fs": {
|
"graceful-fs": {
|
||||||
"version": "4.2.3",
|
"version": "4.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
|
||||||
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
|
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
|
||||||
},
|
},
|
||||||
"growl": {
|
"growl": {
|
||||||
"version": "1.10.5",
|
"version": "1.10.5",
|
||||||
@@ -625,9 +631,9 @@
|
|||||||
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
|
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
|
||||||
},
|
},
|
||||||
"ignore": {
|
"ignore": {
|
||||||
"version": "5.1.4",
|
"version": "5.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.6.tgz",
|
||||||
"integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A=="
|
"integrity": "sha512-cgXgkypZBcCnOgSihyeqbo6gjIaIyDqPQB7Ra4vhE9m6kigdGoQDMHjviFhRZo3IMlRy6yElosoviMs5YxZXUA=="
|
||||||
},
|
},
|
||||||
"immediate": {
|
"immediate": {
|
||||||
"version": "3.0.6",
|
"version": "3.0.6",
|
||||||
@@ -755,6 +761,17 @@
|
|||||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
|
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
|
||||||
},
|
},
|
||||||
|
"jake": {
|
||||||
|
"version": "10.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/jake/-/jake-10.7.1.tgz",
|
||||||
|
"integrity": "sha512-FUkLZXms1LSTQop5EJBdXVzbM0q6yYWMM4vo/TiLQeHJ4UMJVO8DBTZFiAgMBJctin9q92xnr2vdH7Wrpn7tTQ==",
|
||||||
|
"requires": {
|
||||||
|
"async": "0.9.x",
|
||||||
|
"chalk": "^2.4.2",
|
||||||
|
"filelist": "^1.0.1",
|
||||||
|
"minimatch": "^3.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "3.13.1",
|
"version": "3.13.1",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
|
||||||
@@ -861,9 +878,9 @@
|
|||||||
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
|
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
|
||||||
},
|
},
|
||||||
"mocha": {
|
"mocha": {
|
||||||
"version": "7.1.1",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz",
|
||||||
"integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==",
|
"integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-colors": "3.2.3",
|
"ansi-colors": "3.2.3",
|
||||||
"browser-stdout": "1.3.1",
|
"browser-stdout": "1.3.1",
|
||||||
@@ -878,7 +895,7 @@
|
|||||||
"js-yaml": "3.13.1",
|
"js-yaml": "3.13.1",
|
||||||
"log-symbols": "3.0.0",
|
"log-symbols": "3.0.0",
|
||||||
"minimatch": "3.0.4",
|
"minimatch": "3.0.4",
|
||||||
"mkdirp": "0.5.3",
|
"mkdirp": "0.5.5",
|
||||||
"ms": "2.1.1",
|
"ms": "2.1.1",
|
||||||
"node-environment-flags": "1.0.6",
|
"node-environment-flags": "1.0.6",
|
||||||
"object.assign": "4.1.0",
|
"object.assign": "4.1.0",
|
||||||
@@ -913,9 +930,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mkdirp": {
|
"mkdirp": {
|
||||||
"version": "0.5.3",
|
"version": "0.5.5",
|
||||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
|
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||||
"integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
|
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "^1.2.5"
|
"minimist": "^1.2.5"
|
||||||
}
|
}
|
||||||
@@ -924,6 +941,14 @@
|
|||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
|
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "^3.0.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1188,9 +1213,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"string.prototype.trimend": {
|
"string.prototype.trimend": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
|
||||||
"integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==",
|
"integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"define-properties": "^1.1.3",
|
"define-properties": "^1.1.3",
|
||||||
"es-abstract": "^1.17.5"
|
"es-abstract": "^1.17.5"
|
||||||
@@ -1217,9 +1242,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"string.prototype.trimstart": {
|
"string.prototype.trimstart": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
|
||||||
"integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==",
|
"integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"define-properties": "^1.1.3",
|
"define-properties": "^1.1.3",
|
||||||
"es-abstract": "^1.17.5"
|
"es-abstract": "^1.17.5"
|
||||||
@@ -1295,9 +1320,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
"version": "6.0.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
"integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
|
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"has-flag": "^3.0.0"
|
"has-flag": "^3.0.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,11 +9,11 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chromedriver": "^80.0.2",
|
"chromedriver": "^83.0.0",
|
||||||
"ejs": "^3.0.2",
|
"ejs": "^3.1.3",
|
||||||
"expect.js": "^0.3.1",
|
"expect.js": "^0.3.1",
|
||||||
"mkdirp": "^1.0.4",
|
"mkdirp": "^1.0.4",
|
||||||
"mocha": "^7.1.1",
|
"mocha": "^7.2.0",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"selenium-server-standalone-jar": "^3.141.59",
|
"selenium-server-standalone-jar": "^3.141.59",
|
||||||
"selenium-webdriver": "^3.6.0",
|
"selenium-webdriver": "^3.6.0",
|
||||||
|
|||||||
69
test/test.js
69
test/test.js
@@ -58,6 +58,37 @@ describe('Application life cycle test', function () {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://matrix.org/docs/spec/client_server/latest#user-interactive-api-in-the-rest-api
|
||||||
|
function registerUser(done) {
|
||||||
|
superagent.post('https://' + app.fqdn + '/_matrix/client/r0/register?kind=user').send({
|
||||||
|
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
|
// https://matrix.org/docs/spec/client_server/latest
|
||||||
function checkLogin(done) {
|
function checkLogin(done) {
|
||||||
superagent.post('https://' + app.fqdn + '/_matrix/client/r0/login').send({
|
superagent.post('https://' + app.fqdn + '/_matrix/client/r0/login').send({
|
||||||
@@ -75,9 +106,19 @@ describe('Application life cycle test', function () {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function checkAutoJoinRoom(done) {
|
||||||
|
superagent.get('https://' + app.fqdn + '/_matrix/client/r0/joined_rooms?access_token=' + token).end(function (error, result) {
|
||||||
|
if (error) return done(error);
|
||||||
|
if (result.statusCode !== 200) return done(new Error('Room listing failed with status ' + result.statusCode));
|
||||||
|
|
||||||
|
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 createRoom(done) {
|
||||||
superagent.post('https://' + app.fqdn + '/_matrix/client/r0/createRoom?access_token=' + token).send({
|
superagent.post('https://' + app.fqdn + '/_matrix/client/r0/createRoom?access_token=' + token).send({
|
||||||
room_alias_name: 'discuss'
|
room_alias_name: 'general'
|
||||||
}).end(function (error, result) {
|
}).end(function (error, result) {
|
||||||
if (error) return done(error);
|
if (error) return done(error);
|
||||||
if (result.statusCode !== 200) return done(new Error('Room creation failed with status ' + result.statusCode));
|
if (result.statusCode !== 200) return done(new Error('Room creation failed with status ' + result.statusCode));
|
||||||
@@ -104,6 +145,31 @@ describe('Application life cycle test', function () {
|
|||||||
execSync('cloudron build', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
execSync('cloudron build', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// No SSO
|
||||||
|
it('install app (no sso)', function () {
|
||||||
|
execSync('cloudron install --no-sso --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
|
});
|
||||||
|
|
||||||
|
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('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 () {
|
||||||
|
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
|
});
|
||||||
|
|
||||||
|
// SSO
|
||||||
it('install app', function () {
|
it('install app', function () {
|
||||||
execSync('cloudron install --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
execSync('cloudron install --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
});
|
});
|
||||||
@@ -118,6 +184,7 @@ describe('Application life cycle test', function () {
|
|||||||
|
|
||||||
it('check landing page', checkLandingPage);
|
it('check landing page', checkLandingPage);
|
||||||
it('can login', checkLogin);
|
it('can login', checkLogin);
|
||||||
|
it('check autojoin', checkAutoJoinRoom);
|
||||||
it('create room', createRoom);
|
it('create room', createRoom);
|
||||||
it('check room', checkRoom);
|
it('check room', checkRoom);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user