beeper / imessage Goto Github PK
View Code? Open in Web Editor NEWA Matrix-iMessage puppeting bridge.
License: GNU Affero General Public License v3.0
A Matrix-iMessage puppeting bridge.
License: GNU Affero General Public License v3.0
Happy Holidays! I'm trying to connect imessages to my Matrix homeserver but whenever I login and send the authentication code I get this error in the logs: "ERR Panic in Matrix command handler error="invalid memory address or nil pointer dereference". Is there anything I can do?
When registering a phone number and providing a response, the bridge asks the user to send the response SMS from Apple directly to it. When this is done, it works as expected with registering the phone number with Apple. However, future invalid commands to the bridge helper bot are interpreted as invalid responses. Interestingly, if the phone number registration has expired, it logs in the chat Usage: register-phone-number-finish <sms_response>
. See the attached image:
This issue is considered resolved if there is a consistent response from the bridge when registering a phone number and either the register-phone-number-finish
command is used and expected, or removed.
Several hours after registering my phone number on the bridge, I get a notification on my iPhone (that beepserv runs on) that iMessage is now being used on another device. Then, I can no longer issue commands such as resolve-identifier
and the bridge bot shows a 6005 error. This is resolved with the command reregister-ids
, but this should be automated to ensure reliability of the bridge. Additionally, it seems like it should be reregistering based on what is in the log. The log is attached to this issue.
See this line specifically:
2023-12-22T22:37:13Z WRN Profile needs refresh, not re-registering event_id=$RvuHaJgPuktSepAbNXTzuqCk5h-1nkx3sN4pVip1N2I mx_command=resolve-identifier own_handle=tel:+{REDACTED my phone number} profile_id=D:{REDACTED profile ID} room_id=!dbfDZzZsPNkJADKpqp:{REDACTED matrix server} sender=@tech:{REDACTED matrix server}
This issue is resolved when the bridge no longer shows 6005 errors solely due to a reregistration being needed, because the bridge will have done it automatically.
As of right now, phone number registration has to be done through a tedious, manual process. I've only been able to get it work by modifying pypush sms registration code to work with the companion app and give me the response SMS. Though this could be made easier with a custom script, the best long-term solution would be communication through a self-hosted relay server with a companion Android app that sends the SMS reg-req message when necessary. This issue is likely blocked by #3, #4, and #5.
This issue is complete when phone number registration can be automated with no or trvial human interaction through an Android companion app with setup through the bridge bot.
iMessage bridge is no longer sending or receiving new messages. I am working on diagnosing why, and I want to collect as much info from others as possible to work towards a fix. This will need to come from the community as it has been abandoned by Beeper
I set up mautrix-imessage earlier, and got it fully working. But I noticed that edits and deletes didn't work. So I decided to switch to this bridge, which seems similar enough in terms of config, but when trying to setup the registration relay, where it says
The bridge and registration providers can then be pointed at the public address of the reverse proxy.
I can't find a way to use a websocket at all. There is an option to enable using a websocket, but nowhere to set the URL for one. This isn't exactly a bug report but there's no documentation in the generic Mautrix bridge troubleshooting page for this, and this was my next best option. What am I missing?
Add compatibility with contact key verification
On the iMessage bridge, I set up my own relay server, jailbroken iPhone with the beepserv tweak, and beeper imessage bridge. When attempting to register my phone number (and failing for some other reason, such as for example not running the right script), I may send the REG-REQ SMS to Apple and not catch the response. When running register-phone-number
on the bridge again, it suggests the same message to send. See the following image for an example:
Even deregistering and reregistering ids does not fix this. In my view, this issue is resolved once the iMessage bridge generates a new token for each call of register-phone-number
.
Apple can see the names of devices added to Apple IDs.
Please allow the user to input their own device_name so they can choose something more obscure than "beeper-imessage."
Today i try to add my apple account to beeper but i got this error :
Login failed: RegisterIDS failed: failed to register with IDS: unexpected status ActionDoNotRetry for user D:XXXXXXXXX in register response Get Help
I don't unerstand the errror and how can i troubleshot it
Add compatibility with physical security keys
Getting an error
Not delivered. [object Object],newValue => { if (!obj || !property) return; obj[property.name] = newValue; },read-write,[object Object].
In beeper
During phone number registration, the bridge currently shows no response when registering phone numbers (see #4). The bridge should send, after phone number registration, the time that it expires. This may not be properly recorded in the logs, however. See the below excerpt from my server log:
2023-12-22T00:48:00Z INF Got nacserv response error= event_id=$[redacted] mx_command=reg-resp?v=3;r=2812137454;n=[redacted];s=[redacted] name= room_id=![redacted] sender=@[redacted] valid_until=0001-01-01T00:00:00Z
The valid_until date at the end is broken. This is considered complete when the log reports the correct valid_until time and when the bridge responds to successful phone registration by stating the time until expiry.
{"level":"debug","user_id":"@RayManD:mx.grupotd.nat.cu","action":"start chat","method":"ids lookup","cache_result":{"tel:+5352526475":{"has_cache":true,"cache_time":"2024-01-23T15:30:48.538-05:00","identity_count":0,"will_lookup":false}},"server_lookup":null,"time":"2024-01-23T15:34:23.478367351-05:00","message":"Got lookup results from cache"}
{"level":"error","event_id":"$BuPGNfrjIfD1EPurfHwN9apz3aZ5T6-ZXZEugRVeV_A","room_id":"!EdfKVCUpniCoSkGqjk:mx.grupotd.nat.cu","sender":"@RayManD:mx.grupotd.nat.cu","mx_command":"start-chat","stack":"goroutine 215 [running]:\nruntime/debug.Stack()\n\t/usr/local/go/src/runtime/debug/stack.go:24 +0x5e\nmaunium.net/go/mautrix/bridge/commands.(*Processor).Handle.func1()\n\t/builds/mautrix/imessagego/.cache/pkg/mod/maunium.net/go/[email protected]/bridge/commands/processor.go:67 +0x5f\npanic({0xe8a840?, 0x17e4a50?})\n\t/usr/local/go/src/runtime/panic.go:914 +0x21f\nmain.(*User).startChat(0xc000586000, {{0xc0000744d0?, 0x7f4265e78e78?, 0x7f4265e6d108?}})\n\t/builds/mautrix/imessagego/user.go:596 +0x32f\nmain.fnStartChat(0xc0000745a0)\n\t/builds/mautrix/imessagego/commands.go:204 +0x50\nmain.init.wrapCommand.func4(0xc000586380)\n\t/builds/mautrix/imessagego/commands.go:43 +0xec\nmaunium.net/go/mautrix/bridge/commands.(*FullHandler).Run(0x17f4f20, 0xc000586380)\n\t/builds/mautrix/imessagego/.cache/pkg/mod/maunium.net/go/[email protected]/bridge/commands/handler.go:98 +0xfb\nmaunium.net/go/mautrix/bridge/commands.(*Processor).Handle(0xc00015ef20, {0x1270698, 0xc000708e40}, {0xc0005be480, 0x25}, {0xc0005be450, 0x2c}, {0x1273c58?, 0xc000586000}, {0xc000464c78, ...}, ...)\n\t/builds/mautrix/imessagego/.cache/pkg/mod/maunium.net/go/[email protected]/bridge/commands/processor.go:121 +0x99e\ncreated by maunium.net/go/mautrix/bridge.(*MatrixHandler).HandleMessage in goroutine 214\n\t/builds/mautrix/imessagego/.cache/pkg/mod/maunium.net/go/[email protected]/bridge/matrix.go:579 +0xa0c\n","error":"invalid memory address or nil pointer dereference","time":"2024-01-23T15:34:23.482065389-05:00","message":"Panic in Matrix command handler"}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.