mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-15 00:32:40 +00:00
Two things, entangled in the working tree because 20d1f92 was mislabeled
(its message claimed "device grant" but it only deleted registration.yaml.example
and left the failed appservice+/sync hybrid in client.go):
1. Land the MAS OAuth 2.0 device grant that was running in prod but never
committed: masauth.go + client.go rewrite. Bot stays a normal user so /sync
works; refresh token persisted in data/mas_auth.json.
2. Add "appservice" as an alternate transport behind AUTH_MODE (default
"masdevice" = unchanged device-grant path, instant rollback):
- internal/bot/session.go: Session abstraction unifying both transports
(OnEventType/Run/Stop); NewSession dispatches on AuthMode.
- internal/bot/appservice.go: as_token auth (MAS-durable, no login/MFA/expiry),
cryptohelper MSC4190 device creation, crypto machine fed from Synapse
transaction pushes (to-device/device-lists/OTK) instead of /sync, inbound
decrypt+redispatch, and lazy per-room StateStore backfill (encryption +
members) so replies in encrypted rooms encrypt to the right recipients.
- main.go: NewSession/sess.OnEventType/sess.Run in place of the /sync loop.
- .env.example: AUTH_MODE, AS_REGISTRATION, AS_LISTEN_HOST/PORT, HOMESERVER_DOMAIN.
The appservice path fixes the earlier hybrid's fatal flaw (Synapse forbids AS
users from /sync) by using the transaction/push model. Bot-side only; Synapse
registration + experimental_features (msc2409/msc3202/msc4190) and E2EE cutover
are the next steps. Build + vet green (CGO=1 -tags goolm).
50 lines
1.8 KiB
Modula-2
50 lines
1.8 KiB
Modula-2
module gogobee
|
|
|
|
go 1.25.0
|
|
|
|
require (
|
|
github.com/PuerkitoBio/goquery v1.12.0
|
|
github.com/chehsunliu/poker v0.1.0
|
|
github.com/expr-lang/expr v1.17.8
|
|
github.com/fogleman/gg v1.3.0
|
|
github.com/google/uuid v1.6.0
|
|
github.com/joho/godotenv v1.5.1
|
|
github.com/olebedev/when v1.1.0
|
|
github.com/robfig/cron/v3 v3.0.1
|
|
github.com/rs/zerolog v1.35.1
|
|
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
|
|
golang.org/x/image v0.40.0
|
|
maunium.net/go/mautrix v0.28.1
|
|
modernc.org/sqlite v1.50.1
|
|
)
|
|
|
|
require (
|
|
filippo.io/edwards25519 v1.2.0 // indirect
|
|
github.com/AlekSi/pointer v1.0.0 // indirect
|
|
github.com/andybalholm/cascadia v1.3.3 // indirect
|
|
github.com/coder/websocket v1.8.15 // indirect
|
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
|
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
|
github.com/mattn/go-colorable v0.1.14 // indirect
|
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
|
github.com/mattn/go-sqlite3 v1.14.45 // indirect
|
|
github.com/ncruces/go-strftime v1.0.0 // indirect
|
|
github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81 // indirect
|
|
github.com/pkg/errors v0.9.1 // indirect
|
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
|
github.com/tidwall/gjson v1.19.0 // indirect
|
|
github.com/tidwall/match v1.1.1 // indirect
|
|
github.com/tidwall/pretty v1.2.1 // indirect
|
|
github.com/tidwall/sjson v1.2.5 // indirect
|
|
go.mau.fi/util v0.9.10 // indirect
|
|
golang.org/x/crypto v0.53.0 // indirect
|
|
golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect
|
|
golang.org/x/net v0.56.0 // indirect
|
|
golang.org/x/sys v0.46.0 // indirect
|
|
golang.org/x/text v0.38.0 // indirect
|
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
modernc.org/libc v1.72.3 // indirect
|
|
modernc.org/mathutil v1.7.1 // indirect
|
|
modernc.org/memory v1.11.0 // indirect
|
|
)
|