diff --git a/.forgejo/workflows/build-alpine.yml b/.forgejo/workflows/build-alpine.yml deleted file mode 100644 index b1757a60..00000000 --- a/.forgejo/workflows/build-alpine.yml +++ /dev/null @@ -1,49 +0,0 @@ -on: - - workflow-dispatch - - push - -jobs: - build: - runs-on: ubuntu-latest - container: - image: alpine:edge - - steps: - - name: set up dependencies - run: | - apk update - apk upgrade - apk add nodejs git alpine-sdk - - uses: actions/checkout@v4 - name: checkout the alpine dir - with: - sparse-checkout: "alpine/" - - # - uses: actions/checkout@v4 - # name: checkout the rest in the alpine dir - # with: - # path: 'alpine/continuwuity' - - name: set up user - run: adduser -DG abuild ci - - - name: set up keys - run: | - pwd - mkdir ~/.abuild - echo "${{ secrets.abuild_privkey }}" > ~/.abuild/ci@continuwuity.rsa - echo "${{ secrets.abuild_pubkey }}" > ~/.abuild/ci@continuwuity.rsa.pub - echo $HOME - echo 'PACKAGER_PRIVKEY="/root/.abuild/ci@continuwuity.rsa"' > ~/.abuild/abuild.conf - ls ~/.abuild - - - name: go go gadget abuild - run: | - cd alpine - # modify the APKBUILD to use the current branch instead of the release - # note that it seems to require the repo to be public (as you'll get - # a 404 even if the token is provided) - export ARCHIVE_URL="${{ github.server_url }}/${{ github.repository }}/archive/${{ github.ref_name }}.tar.gz" - echo $ARCHIVE_URL - sed -i '/^source=/c\source="'"$ARCHIVE_URL" APKBUILD - abuild -F checksum - abuild -Fr diff --git a/.forgejo/workflows/documentation.yml b/.forgejo/workflows/documentation.yml index 7d95a317..55f25058 100644 --- a/.forgejo/workflows/documentation.yml +++ b/.forgejo/workflows/documentation.yml @@ -57,17 +57,17 @@ jobs: run: npm install --save-dev wrangler@latest - name: Deploy to Cloudflare Pages (Production) - if: github.ref == 'refs/heads/main' && vars.CLOUDFLARE_PROJECT_NAME != '' + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} uses: https://github.com/cloudflare/wrangler-action@v3 with: accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - command: pages deploy ./public --branch="main" --commit-dirty=true --project-name="${{ vars.CLOUDFLARE_PROJECT_NAME }}" + command: pages deploy ./public --branch=main --commit-dirty=true --project-name=${{ vars.CLOUDFLARE_PROJECT_NAME }}" - name: Deploy to Cloudflare Pages (Preview) - if: github.ref != 'refs/heads/main' && vars.CLOUDFLARE_PROJECT_NAME != '' + if: ${{ github.event_name != 'push' || github.ref != 'refs/heads/main' }} uses: https://github.com/cloudflare/wrangler-action@v3 with: accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - command: pages deploy ./public --branch="${{ github.head_ref || github.ref_name }}" --commit-dirty=true --project-name="${{ vars.CLOUDFLARE_PROJECT_NAME }}" + command: pages deploy ./public --branch=${{ github.head_ref }} --commit-dirty=true --project-name=${{ vars.CLOUDFLARE_PROJECT_NAME }}" diff --git a/.forgejo/workflows/element.yml b/.forgejo/workflows/element.yml deleted file mode 100644 index db771197..00000000 --- a/.forgejo/workflows/element.yml +++ /dev/null @@ -1,127 +0,0 @@ -name: Deploy Element Web - -on: - schedule: - - cron: "0 0 * * *" - workflow_dispatch: - -concurrency: - group: "element-${{ github.ref }}" - cancel-in-progress: true - -jobs: - build-and-deploy: - name: Build and Deploy Element Web - runs-on: ubuntu-latest - - steps: - - name: Setup Node.js - uses: https://code.forgejo.org/actions/setup-node@v4 - with: - node-version: "20" - - - name: Clone, setup, and build Element Web - run: | - echo "Cloning Element Web..." - git clone https://github.com/maunium/element-web - cd element-web - git checkout develop - git pull - - echo "Cloning matrix-js-sdk..." - git clone https://github.com/matrix-org/matrix-js-sdk.git - - echo "Installing Yarn..." - npm install -g yarn - - echo "Installing dependencies..." - yarn install - - echo "Preparing build environment..." - mkdir -p .home - - echo "Cleaning up specific node_modules paths..." - rm -rf node_modules/@types/eslint-scope/ matrix-*-sdk/node_modules/@types/eslint-scope || echo "Cleanup paths not found, continuing." - - echo "Getting matrix-js-sdk commit hash..." - cd matrix-js-sdk - jsver=$(git rev-parse HEAD) - jsver=${jsver:0:12} - cd .. - echo "matrix-js-sdk version hash: $jsver" - - echo "Getting element-web commit hash..." - ver=$(git rev-parse HEAD) - ver=${ver:0:12} - echo "element-web version hash: $ver" - - chmod +x ./build-sh - - export VERSION="$ver-js-$jsver" - echo "Building Element Web version: $VERSION" - ./build-sh - - echo "Checking for build output..." - ls -la webapp/ - - - name: Create config.json - run: | - cat < ./element-web/webapp/config.json - { - "default_server_name": "continuwuity.org", - "default_server_config": { - "m.homeserver": { - "base_url": "https://matrix.continuwuity.org" - } - }, - "default_country_code": "GB", - "default_theme": "dark", - "mobile_guide_toast": false, - "show_labs_settings": true, - "room_directory": [ - "continuwuity.org", - "matrixrooms.info" - ], - "settings_defaults": { - "UIFeature.urlPreviews": true, - "UIFeature.feedback": false, - "UIFeature.voip": false, - "UIFeature.shareQrCode": false, - "UIFeature.shareSocial": false, - "UIFeature.locationSharing": false, - "enableSyntaxHighlightLanguageDetection": true - }, - "features": { - "feature_pinning": true, - "feature_custom_themes": true - } - } - EOF - echo "Created ./element-web/webapp/config.json" - cat ./element-web/webapp/config.json - - - name: Upload Artifact - uses: https://code.forgejo.org/actions/upload-artifact@v3 - with: - name: element-web - path: ./element-web/webapp/ - retention-days: 14 - - - name: Install Wrangler - run: npm install --save-dev wrangler@latest - - - name: Deploy to Cloudflare Pages (Production) - if: github.ref == 'refs/heads/main' && vars.CLOUDFLARE_PROJECT_NAME != '' - uses: https://github.com/cloudflare/wrangler-action@v3 - with: - accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - command: pages deploy ./element-web/webapp --branch="main" --commit-dirty=true --project-name="${{ vars.CLOUDFLARE_PROJECT_NAME }}-element" - - - name: Deploy to Cloudflare Pages (Preview) - if: github.ref != 'refs/heads/main' && vars.CLOUDFLARE_PROJECT_NAME != '' - uses: https://github.com/cloudflare/wrangler-action@v3 - with: - accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - command: pages deploy ./element-web/webapp --branch="${{ github.head_ref || github.ref_name }}" --commit-dirty=true --project-name="${{ vars.CLOUDFLARE_PROJECT_NAME }}-element" diff --git a/.forgejo/workflows/release-image.yml b/.forgejo/workflows/release-image.yml index 141bfef9..2cb6a329 100644 --- a/.forgejo/workflows/release-image.yml +++ b/.forgejo/workflows/release-image.yml @@ -1,25 +1,24 @@ name: Release Docker Image -concurrency: +concurrency: group: "release-image-${{ github.ref }}" on: pull_request: push: paths-ignore: - - "*.md" - - "**/*.md" - - ".gitlab-ci.yml" - - ".gitignore" - - "renovate.json" - - "debian/**" - - "docker/**" - - "docs/**" + - '.gitlab-ci.yml' + - '.gitignore' + - 'renovate.json' + - 'debian/**' + - 'docker/**' + - 'docs/**' # Allows you to run this workflow manually from the Actions tab workflow_dispatch: env: - BUILTIN_REGISTRY: forgejo.ellis.link - BUILTIN_REGISTRY_ENABLED: "${{ ((vars.BUILTIN_REGISTRY_USER && secrets.BUILTIN_REGISTRY_PASSWORD) || (github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)) && 'true' || 'false' }}" + BUILTIN_REGISTRY: forgejo.ellis.link + BUILTIN_REGISTRY_ENABLED: "${{ ((vars.BUILTIN_REGISTRY_USER && secrets.BUILTIN_REGISTRY_PASSWORD) || (github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)) && 'true' || 'false' }}" + jobs: define-variables: @@ -38,7 +37,7 @@ jobs: script: | const githubRepo = '${{ github.repository }}'.toLowerCase() const repoId = githubRepo.split('/')[1] - + core.setOutput('github_repository', githubRepo) const builtinImage = '${{ env.BUILTIN_REGISTRY }}/' + githubRepo let images = [] @@ -49,7 +48,7 @@ jobs: core.setOutput('images_list', images.join(",")) const platforms = ['linux/amd64', 'linux/arm64'] core.setOutput('build_matrix', JSON.stringify({ - platform: platforms, + platform: platforms, include: platforms.map(platform => { return { platform, slug: platform.replace('/', '-') @@ -66,15 +65,22 @@ jobs: attestations: write id-token: write strategy: - matrix: - { - "include": - [ - { "platform": "linux/amd64", "slug": "linux-amd64" }, - { "platform": "linux/arm64", "slug": "linux-arm64" }, - ], - "platform": ["linux/amd64", "linux/arm64"], - } + matrix: { + "include": [ + { + "platform": "linux/amd64", + "slug": "linux-amd64" + }, + { + "platform": "linux/arm64", + "slug": "linux-arm64" + } + ], + "platform": [ + "linux/amd64", + "linux/arm64" + ] + } steps: - name: Echo strategy run: echo '${{ toJSON(fromJSON(needs.define-variables.outputs.build_matrix)) }}' @@ -99,9 +105,9 @@ jobs: - name: Login to builtin registry uses: docker/login-action@v3 with: - registry: ${{ env.BUILTIN_REGISTRY }} - username: ${{ vars.BUILTIN_REGISTRY_USER || github.actor }} - password: ${{ secrets.BUILTIN_REGISTRY_PASSWORD || secrets.GITHUB_TOKEN }} + registry: ${{ env.BUILTIN_REGISTRY }} + username: ${{ vars.BUILTIN_REGISTRY_USER || github.actor }} + password: ${{ secrets.BUILTIN_REGISTRY_PASSWORD || secrets.GITHUB_TOKEN }} # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels. - name: Extract metadata (labels, annotations) for Docker @@ -159,7 +165,7 @@ jobs: run: | mkdir -p /tmp/digests digest="${{ steps.build.outputs.digest }}" - touch "/tmp/digests/${digest#sha256:}" + touch "/tmp/digests/${digest#sha256:}" - name: Upload digest uses: forgejo/upload-artifact@v4 @@ -168,7 +174,7 @@ jobs: path: /tmp/digests/* if-no-files-found: error retention-days: 1 - + merge: runs-on: dind container: ghcr.io/catthehacker/ubuntu:act-latest @@ -184,9 +190,9 @@ jobs: - name: Login to builtin registry uses: docker/login-action@v3 with: - registry: ${{ env.BUILTIN_REGISTRY }} - username: ${{ vars.BUILTIN_REGISTRY_USER || github.actor }} - password: ${{ secrets.BUILTIN_REGISTRY_PASSWORD || secrets.GITHUB_TOKEN }} + registry: ${{ env.BUILTIN_REGISTRY }} + username: ${{ vars.BUILTIN_REGISTRY_USER || github.actor }} + password: ${{ secrets.BUILTIN_REGISTRY_PASSWORD || secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -205,7 +211,7 @@ jobs: images: ${{needs.define-variables.outputs.images}} # default labels & annotations: https://github.com/docker/metadata-action/blob/master/src/meta.ts#L509 env: - DOCKER_METADATA_ANNOTATIONS_LEVELS: index + DOCKER_METADATA_ANNOTATIONS_LEVELS: index - name: Create manifest list and push working-directory: /tmp/digests diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 476e68fb..e77154e7 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,3 +1,4 @@ + # Contributor Covenant Code of Conduct ## Our Pledge @@ -59,7 +60,8 @@ representative at an online or offline event. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement over Matrix at [#continuwuity:continuwuity.org](https://matrix.to/#/#continuwuity:continuwuity.org) or email at , and respectively. +reported to the community leaders responsible for enforcement over email at + or over Matrix at @strawberry:puppygock.gay. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ecff7173..fb540011 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ This page is for about contributing to conduwuit. The [development](./development.md) page may be of interest for you as well. If you would like to work on an [issue][issues] that is not assigned, preferably -ask in the Matrix room first at [#continuwuity:continuwuity.org][continuwuity-matrix], +ask in the Matrix room first at [#conduwuit:puppygock.gay][conduwuit-matrix], and comment on it. ### Linting and Formatting @@ -23,9 +23,9 @@ suggestion, allow the lint and mention that in a comment. ### Running CI tests locally -continuwuity's CI for tests, linting, formatting, audit, etc use +conduwuit's CI for tests, linting, formatting, audit, etc use [`engage`][engage]. engage can be installed from nixpkgs or `cargo install -engage`. continuwuity's Nix flake devshell has the nixpkgs engage with `direnv`. +engage`. conduwuit's Nix flake devshell has the nixpkgs engage with `direnv`. Use `engage --help` for more usage details. To test, format, lint, etc that CI would do, install engage, allow the `.envrc` @@ -111,28 +111,33 @@ applies here. ### Creating pull requests -Please try to keep contributions to the Forgejo Instance. While the mirrors of continuwuity -allow for pull/merge requests, there is no guarantee the maintainers will see them in a timely +Please try to keep contributions to the GitHub. While the mirrors of conduwuit +allow for pull/merge requests, there is no guarantee I will see them in a timely manner. Additionally, please mark WIP or unfinished or incomplete PRs as drafts. -This prevents us from having to ping once in a while to double check the status +This prevents me from having to ping once in a while to double check the status of it, especially when the CI completed successfully and everything so it *looks* done. +If you open a pull request on one of the mirrors, it is your responsibility to +inform me about its existence. In the future I may try to solve this with more +repo bots in the conduwuit Matrix room. There is no mailing list or email-patch +support on the sr.ht mirror, but if you'd like to email me a git patch you can +do so at `strawberry@puppygock.gay`. Direct all PRs/MRs to the `main` branch. By sending a pull request or patch, you are agreeing that your changes are allowed to be licenced under the Apache-2.0 licence and all of your conduct is -in line with the Contributor's Covenant, and continuwuity's Code of Conduct. +in line with the Contributor's Covenant, and conduwuit's Code of Conduct. Contribution by users who violate either of these code of conducts will not have their contributions accepted. This includes users who have been banned from -continuwuityMatrix rooms for Code of Conduct violations. +conduwuit Matrix rooms for Code of Conduct violations. -[issues]: https://forgejo.ellis.link/continuwuation/continuwuity/issues -[continuwuity-matrix]: https://matrix.to/#/#continuwuity:continuwuity.org +[issues]: https://github.com/girlbossceo/conduwuit/issues +[conduwuit-matrix]: https://matrix.to/#/#conduwuit:puppygock.gay [complement]: https://github.com/matrix-org/complement/ -[engage.toml]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/engage.toml +[engage.toml]: https://github.com/girlbossceo/conduwuit/blob/main/engage.toml [engage]: https://charles.page.computer.surgery/engage/ [sytest]: https://github.com/matrix-org/sytest/ [cargo-deb]: https://github.com/kornelski/cargo-deb @@ -141,4 +146,4 @@ continuwuityMatrix rooms for Code of Conduct violations. [cargo-audit]: https://github.com/RustSec/rustsec/tree/main/cargo-audit [direnv]: https://direnv.net/ [mdbook]: https://rust-lang.github.io/mdBook/ -[documentation.yml]: https://forgejo.ellis.link/continuwuation/continuwuity/src/branch/main/.forgejo/workflows/documentation.yml +[documentation.yml]: https://github.com/girlbossceo/conduwuit/blob/main/.github/workflows/documentation.yml diff --git a/Cargo.lock b/Cargo.lock index 2d8a2d0f..d3c39aca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3652,7 +3652,7 @@ dependencies = [ [[package]] name = "ruma" version = "0.10.1" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "assign", "js_int", @@ -3672,7 +3672,7 @@ dependencies = [ [[package]] name = "ruma-appservice-api" version = "0.10.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "js_int", "ruma-common", @@ -3684,7 +3684,7 @@ dependencies = [ [[package]] name = "ruma-client-api" version = "0.18.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "as_variant", "assign", @@ -3707,7 +3707,7 @@ dependencies = [ [[package]] name = "ruma-common" version = "0.13.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "as_variant", "base64 0.22.1", @@ -3739,7 +3739,7 @@ dependencies = [ [[package]] name = "ruma-events" version = "0.28.1" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "as_variant", "indexmap 2.8.0", @@ -3764,7 +3764,7 @@ dependencies = [ [[package]] name = "ruma-federation-api" version = "0.9.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "bytes", "headers", @@ -3786,7 +3786,7 @@ dependencies = [ [[package]] name = "ruma-identifiers-validation" version = "0.9.5" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "js_int", "thiserror 2.0.12", @@ -3795,7 +3795,7 @@ dependencies = [ [[package]] name = "ruma-identity-service-api" version = "0.9.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "js_int", "ruma-common", @@ -3805,7 +3805,7 @@ dependencies = [ [[package]] name = "ruma-macros" version = "0.13.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "cfg-if", "proc-macro-crate", @@ -3820,7 +3820,7 @@ dependencies = [ [[package]] name = "ruma-push-gateway-api" version = "0.9.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "js_int", "ruma-common", @@ -3832,7 +3832,7 @@ dependencies = [ [[package]] name = "ruma-signatures" version = "0.15.0" -source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=d6870a7fb7f6cccff63f7fd0ff6c581bad80e983#d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +source = "git+https://forgejo.ellis.link/continuwuation/ruwuma?rev=b3cb85becae3c1ecabe2c93138312ebb3632b728#b3cb85becae3c1ecabe2c93138312ebb3632b728" dependencies = [ "base64 0.22.1", "ed25519-dalek", diff --git a/Cargo.toml b/Cargo.toml index 1ce5c1db..c5e70762 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -350,7 +350,7 @@ version = "0.1.2" [workspace.dependencies.ruma] git = "https://forgejo.ellis.link/continuwuation/ruwuma" #branch = "conduwuit-changes" -rev = "d6870a7fb7f6cccff63f7fd0ff6c581bad80e983" +rev = "b3cb85becae3c1ecabe2c93138312ebb3632b728" features = [ "compat", "rand", diff --git a/alpine/APKBUILD b/alpine/APKBUILD deleted file mode 100644 index 97f84f65..00000000 --- a/alpine/APKBUILD +++ /dev/null @@ -1,63 +0,0 @@ -# Contributor: magmaus3 -# Maintainer: magmaus3 -pkgname=continuwuity - -# abuild doesn't like the format of v0.5.0-rc.5, so i had to change it -# see https://wiki.alpinelinux.org/wiki/Package_policies -pkgver=0.5.0_rc5 -pkgrel=0 -pkgdesc="a continuwuation of a very cool, featureful fork of conduit" -url="https://continuwuity.org/" -arch="all" -license="Apache-2.0" -depends="liburing" - -# cargo version on alpine v3.21 is too old to use the 2024 edition -# i recommend either building everything on edge, or adding -# the edge repo as a tag -makedepends="cargo liburing-dev clang-dev linux-headers" -checkdepends="" -install="$pkgname.pre-install" -subpackages="$pkgname-openrc" -source="https://forgejo.ellis.link/continuwuation/continuwuity/archive/v0.5.0-rc.5.tar.gz -continuwuity.initd -continuwuity.confd -" -builddir="$srcdir/continuwuity" -options="net !check" - -prepare() { - default_prepare - cd $srcdir/continuwuity - - # add the default database path to the config (commented out) - cat conduwuit-example.toml \ - | sed '/#database_path/ s:$: "/var/lib/continuwuity":' \ - > "$srcdir"/continuwuity.toml - - cargo fetch --target="$CTARGET" --locked -} - -build() { - cargo build --frozen --release --all-features -} - -check() { - # TODO: make sure the tests work - #cargo test --frozen - return -} - -package() { - cd $srcdir - install -Dm755 continuwuity/target/release/conduwuit "$pkgdir"/usr/bin/continuwuity - install -Dm644 "$srcdir"/continuwuity.toml -t "$pkgdir"/etc/continuwuity - install -Dm755 "$srcdir"/continuwuity.initd "$pkgdir"/etc/init.d/continuwuity - install -Dm644 "$srcdir"/continuwuity.confd "$pkgdir"/etc/conf.d/continuwuity -} - -sha512sums=" -66f6da5e98b6f7bb8c1082500101d5c87b1b79955c139b44c6ef5123919fb05feb0dffc669a3af1bc8d571ddb9f3576660f08dc10a6b19eab6db9e391175436a v0.5.0-rc.5.tar.gz -0482674be24740496d70da256d4121c5a5e3b749f2445d2bbe0e8991f1449de052724f8427da21a6f55574bc53eac9ca1e47e5012b4c13049b2b39044734d80d continuwuity.initd -38e2576278b450d16ba804dd8f4a128f18cd793e6c3ce55aedee1e186905755b31ee23baaa6586b1ab0e25a1f29bf1ea86bfaae4185b0cb1a29203726a199426 continuwuity.confd -" diff --git a/alpine/README.md b/alpine/README.md deleted file mode 100644 index 5f26d772..00000000 --- a/alpine/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# building - -1. [set up your build - environment](https://wiki.alpinelinux.org/wiki/Include:Setup_your_system_and_account_for_building_packages) - -2. run `abuild` (or `abuild -K` if you want to keep the source directory to make - rebuilding faster) diff --git a/alpine/continuwuity.confd b/alpine/continuwuity.confd deleted file mode 100644 index 03d7b0a0..00000000 --- a/alpine/continuwuity.confd +++ /dev/null @@ -1,3 +0,0 @@ -supervisor=supervise-daemon -export CONTINUWUITY_CONFIG=/etc/continuwuity/continuwuity.toml - diff --git a/alpine/continuwuity.initd b/alpine/continuwuity.initd deleted file mode 100644 index 1354f4bd..00000000 --- a/alpine/continuwuity.initd +++ /dev/null @@ -1,19 +0,0 @@ -#!/sbin/openrc-run - -command="/usr/bin/continuwuity" -command_user="continuwuity:continuwuity" -command_args="--config ${CONTINUWUITY_CONFIG=/etc/continuwuity/continuwuity.toml}" -command_background=true -pidfile="/run/$RC_SVCNAME.pid" - -output_log="/var/log/continuwuity.log" -error_log="/var/log/continuwuity.log" - -depend() { - need net -} - -start_pre() { - checkpath -d -m 0755 -o "$command_user" /var/lib/continuwuity - checkpath -f -m 0644 -o "$command_user" "$output_log" -} diff --git a/alpine/continuwuity.pre-install b/alpine/continuwuity.pre-install deleted file mode 100644 index edac789f..00000000 --- a/alpine/continuwuity.pre-install +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -addgroup -S continuwuity 2>/dev/null -adduser -S -D -H -h /var/lib/continuwuity -s /sbin/nologin -G continuwuity -g continuwuity continuwuity 2>/dev/null -exit 0 diff --git a/conduwuit-example.toml b/conduwuit-example.toml index 3d92ab15..b6bfd092 100644 --- a/conduwuit-example.toml +++ b/conduwuit-example.toml @@ -116,7 +116,7 @@ # `https://continuwuity.org/.well-known/continuwuity/announcements` for any new # announcements or major updates. This is not an update check endpoint. # -#allow_announcements_check = true +#allow_announcements_check = # Set this to any float value to multiply conduwuit's in-memory LRU caches # with such as "auth_chain_cache_capacity". @@ -967,9 +967,9 @@ #rocksdb_compaction_ioprio_idle = true # Enables RocksDB compaction. You should never ever have to set this -# option to false. If you for some reason find yourself needing to use -# this option as part of troubleshooting or a bug, please reach out to us -# in the conduwuit Matrix room with information and details. +# option to false. If you for some reason find yourself needing to use this +# option as part of troubleshooting or a bug, please reach out to us in +# the conduwuit Matrix room with information and details. # # Disabling compaction will lead to a significantly bloated and # explosively large database, gradually poor performance, unnecessarily @@ -1182,13 +1182,23 @@ # #prune_missing_media = false +# Vector list of regex patterns of server names that conduwuit will refuse +# to download remote media from. +# +# example: ["badserver\.tld$", "badphrase", "19dollarfortnitecards"] +# +#prevent_media_downloads_from = [] + # List of forbidden server names via regex patterns that we will block # incoming AND outgoing federation with, and block client room joins / # remote user invites. # +# Additionally, it will hide messages from these servers for all users +# on this server. +# # Note that your messages can still make it to forbidden servers through -# backfilling. Events we receive from forbidden servers via backfill -# from servers we *do* federate with will be stored in the database. +# backfilling. Events we receive from forbidden servers via backfill will +# be stored in the database, but will not be sent to the client. # # This check is applied on the room ID, room alias, sender server name, # sender user's server name, inbound federation X-Matrix origin, and @@ -1197,7 +1207,7 @@ # You can set this to ["*"] to block all servers by default, and then # use `allowed_remote_server_names` to allow only specific servers. # -# example: ["badserver\\.tld$", "badphrase", "19dollarfortnitecards"] +# example: ["badserver\.tld$", "badphrase", "19dollarfortnitecards"] # #forbidden_remote_server_names = [] @@ -1206,17 +1216,10 @@ # # This option has no effect if `forbidden_remote_server_names` is empty. # -# example: ["goodserver\\.tld$", "goodphrase"] +# example: ["goodserver\.tld$", "goodphrase"] # #allowed_remote_server_names = [] -# Vector list of regex patterns of server names that conduwuit will refuse -# to download remote media from. -# -# example: ["badserver\.tld$", "badphrase", "19dollarfortnitecards"] -# -#prevent_media_downloads_from = [] - # List of forbidden server names via regex patterns that we will block all # outgoing federated room directory requests for. Useful for preventing # our users from wandering into bad servers or spaces. @@ -1225,29 +1228,6 @@ # #forbidden_remote_room_directory_server_names = [] -# Vector list of regex patterns of server names that conduwuit will not -# send messages to the client from. -# -# Note that there is no way for clients to receive messages once a server -# has become unignored without doing a full sync. This is a protocol -# limitation with the current sync protocols. This means this is somewhat -# of a nuclear option. -# -# example: ["reallybadserver\.tld$", "reallybadphrase", -# "69dollarfortnitecards"] -# -#ignore_messages_from_server_names = [] - -# Send messages from users that the user has ignored to the client. -# -# There is no way for clients to receive messages sent while a user was -# ignored without doing a full sync. This is a protocol limitation with -# the current sync protocols. Disabling this option will move -# responsibility of ignoring messages to the client, which can avoid this -# limitation. -# -#send_messages_from_ignored_users_to_client = false - # Vector list of IPv4 and IPv6 CIDR ranges / subnets *in quotes* that you # do not want conduwuit to send outbound requests to. Defaults to # RFC1918, unroutable, loopback, multicast, and testnet addresses for diff --git a/debian/conduwuit.service b/debian/conduwuit.service index 3d2fbc9b..a079499e 100644 --- a/debian/conduwuit.service +++ b/debian/conduwuit.service @@ -3,7 +3,7 @@ Description=conduwuit Matrix homeserver Wants=network-online.target After=network-online.target Alias=matrix-conduwuit.service -Documentation=https://continuwuity.org/ +Documentation=https://conduwuit.puppyirl.gay/ [Service] DynamicUser=yes diff --git a/src/api/client/membership.rs b/src/api/client/membership.rs index 2847d668..2424fd3b 100644 --- a/src/api/client/membership.rs +++ b/src/api/client/membership.rs @@ -1855,10 +1855,7 @@ pub async fn leave_room( // Ask a remote server if we don't have this room and are not knocking on it if dont_have_room.and(not_knocked).await { - if let Err(e) = remote_leave_room(services, user_id, room_id, reason.clone()) - .boxed() - .await - { + if let Err(e) = remote_leave_room(services, user_id, room_id, reason.clone()).boxed().await { warn!(%user_id, "Failed to leave room {room_id} remotely: {e}"); // Don't tell the client about this error } diff --git a/src/api/client/message.rs b/src/api/client/message.rs index 16b1796a..08887e18 100644 --- a/src/api/client/message.rs +++ b/src/api/client/message.rs @@ -1,5 +1,3 @@ -use core::panic; - use axum::extract::State; use conduwuit::{ Err, Result, at, @@ -134,6 +132,8 @@ pub(crate) async fn get_message_events_route( .take(limit) .collect() .await; + // let appservice_id = body.appservice_info.map(|appservice| + // appservice.registration.id); let lazy_loading_context = lazy_loading::Context { user_id: sender_user, @@ -143,7 +143,7 @@ pub(crate) async fn get_message_events_route( if let Some(registration) = body.appservice_info.as_ref() { <&DeviceId>::from(registration.registration.id.as_str()) } else { - panic!("No device_id provided and no appservice registration found, this should be unreachable"); + <&DeviceId>::from("") }, }, room_id, @@ -275,12 +275,10 @@ pub(crate) async fn is_ignored_pdu( let ignored_server = services .moderation - .is_remote_server_ignored(pdu.sender().server_name()); + .is_remote_server_forbidden(pdu.sender().server_name()); if ignored_type - && (ignored_server - || (!services.config.send_messages_from_ignored_users_to_client - && services.users.user_is_ignored(&pdu.sender, user_id).await)) + && (ignored_server || services.users.user_is_ignored(&pdu.sender, user_id).await) { return true; } diff --git a/src/api/client/room/create.rs b/src/api/client/room/create.rs index be3fd23b..f5f61784 100644 --- a/src/api/client/room/create.rs +++ b/src/api/client/room/create.rs @@ -614,31 +614,24 @@ fn custom_room_id_check(services: &Services, custom_room_id: &str) -> Result>, join_authorised_via_users_server: Option>, @@ -149,9 +149,9 @@ where Incoming: Event + Send + Sync, { debug!( - event_id = format!("{}", incoming_event.event_id()), - event_type = format!("{}", incoming_event.event_type()), - "auth_check beginning" + "auth_check beginning for {} ({})", + incoming_event.event_id(), + incoming_event.event_type() ); // [synapse] check that all the events are in the same room as `incoming_event` @@ -383,15 +383,10 @@ where let sender_membership_event_content: RoomMemberContentFields = from_json_str(sender_member_event.content().get())?; - let Some(membership_state) = sender_membership_event_content.membership else { - warn!( - sender_membership_event_content = format!("{sender_membership_event_content:?}"), - event_id = format!("{}", incoming_event.event_id()), - "Sender membership event content missing membership field" - ); - return Err(Error::InvalidPdu("Missing membership field".to_owned())); - }; - let membership_state = membership_state.deserialize()?; + let membership_state = sender_membership_event_content + .membership + .expect("we should test before that this field exists") + .deserialize()?; if !matches!(membership_state, MembershipState::Join) { warn!("sender's membership is not join"); diff --git a/src/main/Cargo.toml b/src/main/Cargo.toml index 0c5e2b6f..e2fed5d5 100644 --- a/src/main/Cargo.toml +++ b/src/main/Cargo.toml @@ -36,7 +36,6 @@ assets = [ [features] default = [ - "blurhashing", "brotli_compression", "element_hacks", "gzip_compression", diff --git a/src/service/moderation.rs b/src/service/moderation.rs index c3e55a1d..d571de88 100644 --- a/src/service/moderation.rs +++ b/src/service/moderation.rs @@ -1,57 +1,38 @@ use std::sync::Arc; -use conduwuit::{Result, implement}; +use conduwuit::{Result, Server, implement}; use ruma::ServerName; -use crate::{Dep, config}; - pub struct Service { services: Services, } struct Services { - // pub server: Arc, - pub config: Dep, + pub server: Arc, } impl crate::Service for Service { fn build(args: crate::Args<'_>) -> Result> { Ok(Arc::new(Self { - services: Services { - // server: args.server.clone(), - config: args.depend::("config"), - }, + services: Services { server: args.server.clone() }, })) } fn name(&self) -> &str { crate::service::make_name(std::module_path!()) } } -#[implement(Service)] -#[must_use] -pub fn is_remote_server_ignored(&self, server_name: &ServerName) -> bool { - // We must never block federating with ourselves - if server_name == self.services.config.server_name { - return false; - } - - self.services - .config - .ignore_messages_from_server_names - .is_match(server_name.host()) -} - #[implement(Service)] #[must_use] pub fn is_remote_server_forbidden(&self, server_name: &ServerName) -> bool { // We must never block federating with ourselves - if server_name == self.services.config.server_name { + if server_name == self.services.server.config.server_name { return false; } // Check if server is explicitly allowed if self .services + .server .config .allowed_remote_server_names .is_match(server_name.host()) @@ -61,6 +42,7 @@ pub fn is_remote_server_forbidden(&self, server_name: &ServerName) -> bool { // Check if server is explicitly forbidden self.services + .server .config .forbidden_remote_server_names .is_match(server_name.host()) @@ -74,6 +56,7 @@ pub fn is_remote_server_room_directory_forbidden(&self, server_name: &ServerName self.is_remote_server_forbidden(server_name) || self .services + .server .config .forbidden_remote_room_directory_server_names .is_match(server_name.host()) @@ -87,6 +70,7 @@ pub fn is_remote_server_media_downloads_forbidden(&self, server_name: &ServerNam self.is_remote_server_forbidden(server_name) || self .services + .server .config .prevent_media_downloads_from .is_match(server_name.host()) diff --git a/src/service/users/mod.rs b/src/service/users/mod.rs index 701561a8..1eb289fc 100644 --- a/src/service/users/mod.rs +++ b/src/service/users/mod.rs @@ -577,7 +577,7 @@ impl Service { self.db .userid_usersigningkeyid - .raw_put(user_id, user_signing_key_key); + .put(user_id, user_signing_key_key); } if notify {