No description
  • Go 85.8%
  • Shell 10.6%
  • Just 2.1%
  • Dockerfile 1.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
wuast94 22bb55b151
All checks were successful
CI / Quality (push) Successful in 5m34s
Release / Check if release needed (push) Successful in 9s
CI / Build (push) Successful in 35s
Release / Release checks (push) Successful in 1m27s
Release / Publish image (push) Successful in 1m44s
Release / Release (push) Successful in 39s
Merge pull request 'chore: update ci toolchain (v2.14.0 → v2.15.0)' (#71) from updatarr/ci-toolchain-63db05fe2e into main
2026-10-17 07:47:00 +02:00
.devcontainer chore: update ci toolchain (v2.14.0 → v2.15.0) 2026-10-17 06:54:56 +02:00
.forgejo/workflows chore: update ci toolchain (2.14.1 → 2.14.2) 2026-09-19 22:28:46 +02:00
.githooks chore: adopt Go quality standard 2026-09-02 04:13:59 +00:00
cmd/mautrix-lovoo fix(messages): Match Lovoo action form 2026-08-25 23:09:31 +02:00
docs/security build: Align golangci-lint tool pins 2026-08-25 20:25:08 +02:00
internal chore: adopt Go quality standard 2026-09-02 04:13:59 +00:00
scripts ci: remove obsolete SBOM release uploads 2026-09-06 12:26:29 +02:00
.air.toml feat(bridge): Add read-only Lovoo connector 2026-08-24 20:20:54 +02:00
.dockerignore feat(bridge): Add read-only Lovoo connector 2026-08-24 20:20:54 +02:00
.env.example feat(bridge): Add read-only Lovoo connector 2026-08-24 20:20:54 +02:00
.gitignore feat(bridge): Add read-only Lovoo connector 2026-08-24 20:20:54 +02:00
.golangci.yml chore: adopt Go quality standard 2026-09-02 04:13:59 +00:00
.updatarr.yaml chore: adopt Go quality standard 2026-09-02 04:13:59 +00:00
AGENTS.md docs: centralize agent rules and require explicit answers 2026-10-04 08:32:42 +02:00
CLAUDE.md docs: centralize agent rules and require explicit answers 2026-10-04 08:32:42 +02:00
cliff.toml fix: restore release version detection 2026-06-20 12:39:36 +02:00
docker-compose.yml chore: update postgres digest (18.6-alpine) 2026-09-21 03:43:14 +02:00
Dockerfile chore: update golang (1.27.1-bookworm → 1.27.2-bookworm) 2026-10-08 21:48:54 +02:00
go.mod chore: lock file maintenance 2026-10-16 21:15:58 +02:00
go.sum chore: lock file maintenance 2026-10-16 21:15:58 +02:00
Justfile chore: update ci toolchain (v2.14.0 → v2.15.0) 2026-10-17 06:54:56 +02:00
README.md feat(messages): Send plain text messages to Lovoo 2026-08-25 19:59:47 +02:00
renovate.json feat(bridge): Add read-only Lovoo connector 2026-08-24 20:20:54 +02:00

mautrix-lovoo

An experimental Lovoo-to-Matrix bridge using the mautrix bridgev2 framework.

The bridge imports an existing Lovoo browser session, discovers the current Next.js server actions, synchronizes conversations into Matrix portals, and sends plain-text Matrix messages to Lovoo. Other Lovoo mutations are intentionally disabled.

Status

The local protocol, credential encryption, connector, and polling implementation are under active development. Do not deploy this repository to production until live protocol verification and deployment approval are complete.

Build

The Matrix SDK's pure-Go crypto backend is selected with the goolm build tag:

go test -tags=goolm ./... -race -count=1
go build -tags=goolm ./cmd/mautrix-lovoo

The repository also provides isolated devcontainer recipes:

just test
just lint
just build
just check

Configuration

Generate a standard mautrix configuration and registration with the binary's -g mode, then configure the network section:

network:
  page_url: https://app.lovoo.com/chats
  poll_interval: 15s

Set LOVOO_CREDENTIAL_KEY to 32 random bytes encoded as base64. The key encrypts imported browser-session metadata before database storage.

openssl rand -base64 32

Provide the generated value through your secret manager. Never commit it to .env, configuration, fixtures, or source control.

Login

Start the bridge's browser-session login flow in a private, unfederated management room. In a browser where Lovoo is already signed in:

  1. Open Developer Tools > Network and load https://app.lovoo.com/chats.
  2. Select any request whose URL is exactly https://app.lovoo.com/chats.
  3. Choose Copy > Copy as cURL (bash).
  4. Paste the complete cURL into the bot's single login field.

The bridge parses the command as text and never executes it. It accepts only a request targeting HTTPS app.lovoo.com/chats, extracts the session cookie, retrieves the current CSRF token with its own authenticated read-only page request, and derives the stable Lovoo user ID from the returned conversations before storing encrypted credentials.

Security Boundaries

  • Matrix-to-Lovoo writes are limited to plain-text messages in existing conversations.
  • Credential-bearing requests are restricted to HTTPS app.lovoo.com.
  • Imported cURL text is size-bounded, cannot reference local files, and is never passed to a shell.
  • Cross-origin redirects and cross-origin action bundles are rejected.
  • Response sizes are bounded and remote bodies are excluded from errors.
  • Action IDs are discovered dynamically and are not persisted as secrets.

Limitations

  • Synchronization currently uses polling rather than Lovoo's realtime WebSocket transport.
  • Conversation, text, image, and voice-message data observed in sanitized fixtures are parsed.
  • The account needs at least one conversation so its stable Lovoo user ID can be derived without trusting manual identity input.
  • A live Lovoo session is required for end-to-end verification.