From fb7167773be738d11c5092d64b76cb1bde686198 Mon Sep 17 00:00:00 2001 From: Gnuxie <50846879+Gnuxie@users.noreply.github.com> Date: Mon, 28 Mar 2022 15:25:31 +0100 Subject: [PATCH 1/4] Use github workflows to push dockerhub images+tags. (#265) --- .github/workflows/docker-hub-latest.yml | 34 +++++++++++++++++++++++ .github/workflows/docker-hub-release.yml | 35 ++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 .github/workflows/docker-hub-latest.yml create mode 100644 .github/workflows/docker-hub-release.yml diff --git a/.github/workflows/docker-hub-latest.yml b/.github/workflows/docker-hub-latest.yml new file mode 100644 index 0000000..6a8845b --- /dev/null +++ b/.github/workflows/docker-hub-latest.yml @@ -0,0 +1,34 @@ +# Copied from https://github.com/matrix-org/matrix-bifrost/blob/develop/.github/workflows/docker-hub-latest.yml + +name: "Docker Hub - Latest" + +on: + push: + +env: + DOCKER_NAMESPACE: matrixdotorg + PLATFORMS: linux/amd64 + # Only push if this is main, otherwise we just want to build + PUSH: ${{ github.ref == 'refs/heads/main' }} + +jobs: + docker-latest: + runs-on: ubuntu-latest + steps: + - name: Check out + uses: actions/checkout@v2 + - name: Log in to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Build image + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile + platforms: ${{ env.PLATFORMS }} + push: ${{ env.PUSH }} + tags: | + ${{ env.DOCKER_NAMESPACE }}/mjolnir:latest diff --git a/.github/workflows/docker-hub-release.yml b/.github/workflows/docker-hub-release.yml new file mode 100644 index 0000000..7df6017 --- /dev/null +++ b/.github/workflows/docker-hub-release.yml @@ -0,0 +1,35 @@ +# Copied from https://github.com/matrix-org/matrix-bifrost/blob/develop/.github/workflows/docker-hub-release.yml + +name: "Docker Hub - Release" + +on: + release: + types: [published] + +env: + DOCKER_NAMESPACE: matrixdotorg + PLATFORMS: linux/amd64 + +jobs: + docker-release: + runs-on: ubuntu-latest + steps: + - name: Check out + uses: actions/checkout@v2 + - name: Get release tag + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + - name: Log in to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Build image + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile + platforms: ${{ env.PLATFORMS }} + push: true + tags: | + ${{ env.DOCKER_NAMESPACE }}/mjolnir:${{ env.RELEASE_VERSION }} From f63edbefa0b7532cef10f92a03297915e887985b Mon Sep 17 00:00:00 2001 From: Gnuxie <50846879+Gnuxie@users.noreply.github.com> Date: Fri, 1 Apr 2022 16:40:10 +0100 Subject: [PATCH 2/4] Make startup failures more controlled and understandable. (#270) There is no reason to call process.exit() from `index.ts` or in `Mjolnir.start()` because https://nodejs.org/api/process.html#warning-using-uncaughtexception-correctly >The 'uncaughtException' event is emitted when an uncaught JavaScript exception bubbles all the way back to the event loop. By default, Node.js handles such exceptions by printing the stack trace to stderr and exiting with code 1, overriding any previously set process.exitCode. Adding a handler for the 'uncaughtException' event overrides this default behaviour. --- src/Mjolnir.ts | 7 ++++--- src/index.ts | 9 +++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Mjolnir.ts b/src/Mjolnir.ts index d27292c..3c1c098 100644 --- a/src/Mjolnir.ts +++ b/src/Mjolnir.ts @@ -320,11 +320,12 @@ export class Mjolnir { try { LogService.error("Mjolnir", "Error during startup:"); LogService.error("Mjolnir", extractRequestError(err)); + this.stop(); await this.logMessage(LogLevel.ERROR, "Mjolnir@startup", "Startup failed due to error - see console"); + throw err; } catch (e) { - // If we failed to handle the error, just crash - console.error(e); - process.exit(1); + LogService.error("Mjolnir", `Failed to report startup error to the management room: ${e}`); + throw err; } } } diff --git a/src/index.ts b/src/index.ts index e6896a0..0ed071f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -57,9 +57,14 @@ if (config.health.healthz.enabled) { config.RUNTIME.client = client; bot = await Mjolnir.setupMjolnirFromConfig(client); + } catch (err) { + console.error(`Failed to setup mjolnir from the config ${config.dataPath}: ${err}`); + throw err; + } + try { await bot.start(); } catch (err) { - bot?.logMessage(LogLevel.ERROR, "index", err); - process.exit(1); + console.error(`Mjolnir failed to start: ${err}`); + throw err; } })(); From 4f070244ce84387551d4e9565fd0087571b0fe06 Mon Sep 17 00:00:00 2001 From: Marco Cirillo Date: Wed, 6 Apr 2022 18:20:49 +0200 Subject: [PATCH 3/4] Amend README.md for antispam config example. (#271) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c3977a..1c6280a 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ modules: # these rooms. ban_lists: - "!roomid:example.org" - message_max_length: + #message_max_length: # Limit the characters in a message (event body) that a client can send in an event on this server. # By default there is no limit (beyond the the limit the spec enforces on event size). # Uncomment if you want messages to be limited to 510 characters. From b8ee2fddbf7976ed8ff573c2c06769c1c7ef41bb Mon Sep 17 00:00:00 2001 From: Gnuxie <50846879+Gnuxie@users.noreply.github.com> Date: Tue, 12 Apr 2022 12:56:27 +0100 Subject: [PATCH 4/4] Synapse requires registration to be explicit (#275) --- mx-tester.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mx-tester.yml b/mx-tester.yml index 26ae0eb..d356f69 100644 --- a/mx-tester.yml +++ b/mx-tester.yml @@ -32,6 +32,7 @@ homeserver: registration_shared_secret: REGISTRATION_SHARED_SECRET # Make manual testing easier enable_registration: true + enable_registration_without_verification: true # We remove rc_message so we can test rate limiting, # but we keep the others because of https://github.com/matrix-org/synapse/issues/11785