A Matrix-iMessage puppeting bridge

mautrix-imessage

A Matrix-iMessage puppeting bridge. The bridge runs on a Mac or jailbroken iPhone (soon™). A websocket proxy is required to receive appservice events from the homeserver.

Wiki

All setup and usage instructions are located on docs.mau.fi:

Features & Roadmap

ROADMAP.md contains a general overview of what is supported by the bridge.

Discussion

Matrix room: #imessage:maunium.net

Owner
Tulir Asokan
Go/Python/JS developer, Ubuntu/GNOME user, Sysadmin, Star Trek, Stargate & Doctor Who fan
Tulir Asokan
Comments
  • Convert HEIF to JPEG.

    Convert HEIF to JPEG.

    No idea if this is even something you guys have an interest in (does Beeper handle HEIF better than my client?), but I figured I'd offer it upstream just in case.

  • Add the

    Add the "@" before any mention

    Basically I added the ablity to create a @ before the displayname. The displayname was already getting bridged so I really just made a complicated way to add "@". I know it a lot for only that but by the time I figured that all I did I was done. So it here, technically it should be the correct way of handling mentions but ehh. It here if you want. Really dont think there is much issue it was copied from whatsapp.

  • Unable to send messages to iMessage client

    Unable to send messages to iMessage client

    Firstly, this project is awesome! Thank you for providing this bridge!

    After setting this bridge up, all my iMessage came through properly (except messages sent by my apple id). However, when I tried to reply through Element.io to my home server (i.e. send a message to the iMessage application), the bridge did not seem to pick up the message. I did not see anything in the logs.

    Also, (maybe this is related and caused by a configuration issue) but none of my personal iMessages were backfilled into my home server. Nor can I send a message through the iMessage client (from my own apple id to a random iPhone user) and have it show up on my home server. None of my sent iMessages were backfilled into my home server either. Only messages sent from other apple iMessage users.

    Any thoughts on this?

    EDIT: Found this in the logs. I missed it before.

    [Mar 18, 2021 09:41:44] [Portal/iMessage;-;+1000000/DEBUG] Dropping own message in iMessage;-;+10000000 as double puppeting is not initialized
    

    So, my question now is, how can i enable double puppeting?

  • HEIF conversion not working with Gitlab binaries

    HEIF conversion not working with Gitlab binaries

    I was excited to use the HEIF conversion from https://github.com/mautrix/imessage/pull/46, but at least with the binaries from Gitlab for amd64 I'm receiving an error on conversion stating that mautrix-imessage was compiled without libheif. I'm not sure whether it affects the other Gitlab binaries, also not sure yet what steps to take in a manual compile to make sure this works.

  • iMessage contacts don't show up in Element

    iMessage contacts don't show up in Element

    In the console log of the bridge, I see:

    [Jun  4, 2022 22:01:40] [iMessage/Mac/INFO] Contact access is allowed
    

    However, when I attempt to start a chat with one of my iMessage contacts (by typing a part of their name) from Element, no suggestions show up.

  • Update permissions of temporary file because the native imessage agent on iOS doesn't have root permissions

    Update permissions of temporary file because the native imessage agent on iOS doesn't have root permissions

    Sorry for filing https://github.com/mautrix/imessage/pull/43, this turned out to be a red herring. After the PR was closed I had no other way of getting this build than setting up the local iMessage go build environment myself, so I went ahead and did that last night.

    When testing out, I learned that the deletion of the file isn't the issue, but rather that on iOS the IMFileTransferCenter daemon doesn't run as root user (obviously) and hence isn't able to read the temp folder with 700 permissions created as root.

    After changing both the temp folder permissions, as well as the file permissions sending images from matrix via Barcelona to iMessage works like a charm.

  • Use ~/Library/Messages as tmp on mac-nosip

    Use ~/Library/Messages as tmp on mac-nosip

    imagent on newer versions of big sur has difficult reading /tmp/mautrix-imessage due to tightened sandbox profiles. when on mac-nosip, this PR has mautrix-imessage use ~/Library/Messages/mautrix-imessage instead.

  • Fatal Error, homeserver outdated, but server is the latest build

    Fatal Error, homeserver outdated, but server is the latest build

    I'm getting a fatal error when trying to run ./mautrix-imessage "The homeserver is outdated (server supports r0.6.1, but the bridge requires at least v1.1). However, when I run curl http://localhost:8008/_synapse/admin/v1/server_version I see server version as 1.51.0. I'm not sure what the error is.

  • Matrix server linked in docs times out

    Matrix server linked in docs times out

    The doc links to https://matrix.to/#/#imessage:maunium.net, but when I attempt to connect to it using Element, I get an HTTP response saying that the gateway timed out.

  • set default permission to invite bots to matrix room of imessage-bridge

    set default permission to invite bots to matrix room of imessage-bridge

    This patch allow matrix user (which use whatsapp-bridge) invite to room any other bots, which can help matrix user. I don't know how to build it right now for mac but this should be a simple enough change that really it shouldn't fail. Based on change request (https://github.com/mautrix/whatsapp/pull/77)[https://github.com/mautrix/whatsapp/pull/77]

    Eventually want to implement relay but this is the first step

  • Auto Run on Login

    Auto Run on Login

    What is the correct way to run the bridge when my Mac boots? I've tried adding the executable as a Login Item, but the bridge doesn't start correctly.

  • Android: `./gradlew installDebug` fails

    Android: `./gradlew installDebug` fails

    sdfg@heracles ~/scratch/mautrix-imessage/android-sms $ ./gradlew installDebug --stacktrace                                                                                                                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
    > Task :buildSrc:compileKotlin FAILED                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
    e: java.lang.NoClassDefFoundError: Could not initialize class org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel                                                                                                                                                                                                                                                                                                                                                                                    
            at org.jetbrains.kotlin.com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)                                                                                                                                                                                                                                                                                                                                                                     
            at org.jetbrains.kotlin.com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)                                                                                                                                                                                                                                                                                                                                                                                   
            at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)                                                                                                                                                                                                                                                                                                                                                                                  
            at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)                                                                                                                                                                                                                                                                                                                                                                            
            at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:425)                                                                                                                                                                                                                                                                                                                                                                        
            at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(K2JVMCompiler.kt:226)                                                                                                                                                                                                                                                                                                                                                                                                         
            at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:152)                                                                                                                                                                                                                                                                                                                                                                                                                     
            at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)                                                                                                                                                                                                                                                                                                                                                                                                                      
            at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)                                                                                                                                                                                                                                                                                                                                                                                                                        
            at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)                                                                                                                                                                                                                                                                                                                                                                                                                        
            at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)                                                                                                                                                                                                                                                                                                                                                                                                                                    
            at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:386)                                                                                                                                                                                                                                                                                                                                                                                 
            at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:110)                                                                                                                                                                                                                                                                                                                                                                                 
            at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:286)                                                                                                                                                                                                                                                                                                                                                                              
            at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl$rebuild(IncrementalCompilerRunner.kt:99)                                                                                                                                                                                                                                                                                                                                                                                
            at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:114)                                                                                                                                                                                                                                                                                                                                                                                       
            at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:74)                                                                                                                                                                                                                                                                                                                                                                                            
            at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:607)                                                                                                                                                                                                                                                                                                                                                                                          
            at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:96)                                                                                                                                                                                                                                                                                                                                                                                    
            at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1659)                                                                                                                                                                                                                                                                                                                                                                                                             
            at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)                                                                                                                                                                                                                                                                                                                                                                                          
            at java.base/java.lang.reflect.Method.invoke(Method.java:578)                                                                                                                                                                                                                                                                                                                                                                                                                                     
            at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)                                                                                                                                                                                                                                                                                                                                                                                                                   
            at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)                                                                                                                                                                                                                                                                                                                                                                                                                                 
            at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)                                                                                                                                                                                                                                                                                                                                                                                                                                 
            at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)                                                                                                                                                                                                                                                                                                                                                                                                               
            at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)                                                                                                                                                                                                                                                                                                                                                                                                                           
            at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:598)                                                                                                                                                                                                                                                                                                                                                                                                              
            at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:844)                                                                                                                                                                                                                                                                                                                                                                                                      
            at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:721)       
            at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)                       
            at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:720)            
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)                                                                                                                                                 
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)                                                                                                                                                 
            at java.base/java.lang.Thread.run(Thread.java:1589)                                                        
    Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.ExceptionInInitializerError [in thread "RMI TCP Connection(2)-127.0.0.1"]
            at org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel.<clinit>(LanguageLevel.java:25)
            ... 35 more                                                                                                
                                                                                                                              
                                                                                                                              
    FAILURE: Build failed with an exception.                                                                       
                                                                                                                              
    * What went wrong:                   
    Execution failed for task ':buildSrc:compileKotlin'.                                                   
    > Internal compiler error. See log for more details                                                    
                                                                                                                              
    * Try:                                                                                                                                                                                                                                               
    Run with --info or --debug option to get more log output. Run with --scan to get full insights.                                                                                                                                                      
                                                                                                                              
    * Exception is:                                                                                                          
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':buildSrc:compileKotlin'.                                                                                                                                                    
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:187)
            at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:268)                                                                                                                                                                          
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:185)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)           
            at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)   
            at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)                                                                                                                    
            at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)                                                                                                                
            at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)                                                                                                                      
            at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) 
            at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)                                                                                                                            
            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)                                                                                                                                   
            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)                                                                                                                                   
            at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)                                                                                                     
            at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)                                                                                                     
            at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
            at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)                                                                                                                                 
            at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)                                                                                                                                  
            at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)                                                                                                                                   
            at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)    
            at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)                                                                                                                         
            at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)                                                                                                            
            at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)                                                                                                                                  
            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)                                                                                                                                  
            at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)                                                                                                                                                    
            at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)         
            at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)                                                                                                            
            at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)                                                                                                   
            at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)                                                                                                   
            at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
            at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)    
            at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
            at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)       
            at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)         
            at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)                          
            at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
    Caused by: org.gradle.api.GradleException: Internal compiler error. See log for more details                                                                                                                                                         
            at org.jetbrains.kotlin.gradle.tasks.TasksUtilsKt.throwGradleExceptionIfError(tasksUtils.kt:18)                                                                                                                                              
            at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:135)                                                                                                                                         
            at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.runCompilerAsync(GradleKotlinCompilerRunner.kt:173)                                                                                                                              
            at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.runCompilerAsync(GradleKotlinCompilerRunner.kt:168)                                                                                                                              
            at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.runJvmCompilerAsync(GradleKotlinCompilerRunner.kt:87)
            at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompilerAsync$kotlin_gradle_plugin(Tasks.kt:541)          
            at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompilerAsync$kotlin_gradle_plugin(Tasks.kt:465)                                                                                                                                                                                                                                                                                                                                                                                           
            at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.executeImpl(Tasks.kt:387)                              
            at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.execute(Tasks.kt:351)                          
            at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)                                                                                                                                     
            at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)                                                                                                                                                                        
            at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:47)                                                                                                            
            at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)           
            at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
            at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)                                                                                                                                        
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:498)
            at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)                                                                                                                                 
            at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)                                                                                                                                 
            at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
            at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
            at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
            at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)                                                                                                                                   
            at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)                                                                                                                                       
            at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)                       
            at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)          
            at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71) 
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:483)                                                                                                                     
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:466)                                                                                                                    
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:105)                                                                                                                        
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:270)                                                                                      
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:248)                                                                                                             
            at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:83)                 
            at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:37)
            at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
            at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
            at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)                                                                                                     
            at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)                                                                                                     
            at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
            at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
            at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
            at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
            at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
            at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
            at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
            at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
            at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:47)
            at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:37)
            at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
            at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
            at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:50)
            at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
            at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
            at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
            at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
            at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
            at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
            at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:54)
            at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:35)
            at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
            at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
            at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:174)
            at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:74)
            at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:45)
            at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:40)
            at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:29)
            at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
            at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
            at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:99)
            at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:92)
            at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
            at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
            at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:84)
            at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:41)
            at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
            at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
            at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:91)
            at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
            at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:78)
            at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:49)
            at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:105)
            at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:50)
            at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:86)
            at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:86)
            at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:32)
            at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
            at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:43)
            at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:31)
            at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$2.withWorkspace(ExecuteActionsTaskExecuter.java:283)
            at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
            at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
            at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
            at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
            at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:49)
            at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:35)
            at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:184)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173) 
            at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
            at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
            at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
            at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
            at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
            at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
            at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
            at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
            at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
            at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
            at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
            at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
            at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
            at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
            at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
            at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
            at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
            at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
            at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
            at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
            at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
            at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
            at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
            at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
            at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
            at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
            at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
            at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
    
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 467ms
    
  • End-to-End Encryption not working

    End-to-End Encryption not working

    I'm using several mautrix bridges, which work really good, but I'm unable to enable End-to-End Encryption for the imessage bridge. WhatsApp, Facebook, Instagram, Signal, Discord are working encrypted with the bridge set default:true.

    I'm running a Mac Mini M1 with the bridge running in Automator (works flawless), the synapse homeserver/wsproxy are another public server and they are connected via Wireguard and served as docker container. I'm receiving my chats as unencrypted even though I have enabled it as default.

    I tried creating a encrypted room by addin @imessage_34567890:my.matrix.server, which creates an encrypted chat, but everything written there goes into void. After a time, the unencrypted chat rooms reappear, those are working.

    The encryption part of the mautrix-imessage config.yaml

    encryption: # Allow encryption, work in group chat rooms with e2ee enabled allow: true # Default to encryption, force-enable encryption in all portals the bridge creates # This will cause the bridge bot to be in private chats for the encryption to work properly. default: true # Whether or not to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data. appservice: false # Require encryption, drop any unencrypted messages. require: false # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled. # You must use a client that supports requesting keys from other users to use this feature. allow_key_sharing: false

    Is there anything, I'm missing? wsproxy doesn't seem to be involved in the encryption part, so I thought the issue is the Mac setup.

  • Improve docs for wsproxy url in appservice registration

    Improve docs for wsproxy url in appservice registration

    This closes https://github.com/mautrix/wsproxy/issues/5 as discussed in https://github.com/mautrix/wsproxy/issues/5#issuecomment-1236223990 by making it more clear how to set this parameter correctly.

  • Feature Request:  Ability to Filter messages out of bridge

    Feature Request: Ability to Filter messages out of bridge

    The ability to have configuration options to filter a few categories of messages would be very useful.

    Various Options:

    1. Only bridge existing contacts. (Should grab messages if contact is created in iCloud account.)
    2. Block bridging of short number SMS
  • Mac-NoSIP Crashing - Runtime Error invalid memory address

    Mac-NoSIP Crashing - Runtime Error invalid memory address

    When running matrix-imessage on a Mac with SIP disabled, I keep getting this error and I cannot figure out why. Any help you can provide would be greatly appreciated, let me know what other information would be helpful for debugging!

    panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x451123b]

    goroutine 48 [running]: os.(*ProcessState).exited(...) /usr/local/Cellar/go/1.18/libexec/src/os/exec_posix.go:83 os.(*ProcessState).Exited(...) /usr/local/Cellar/go/1.18/libexec/src/os/exec.go:155 go.mau.fi/mautrix-imessage/imessage/mac-nosip.(*MacNoSIPConnector).Start.func1() /Users/tulir/builds/i2hvwHJ9/0/mautrix/imessage/imessage/mac-nosip/nosip.go:89 +0x3b created by go.mau.fi/mautrix-imessage/imessage/mac-nosip.(*MacNoSIPConnector).Start /Users/tulir/builds/i2hvwHJ9/0/mautrix/imessage/imessage/mac-nosip/nosip.go:87 +0x274

Apex-api-bridge - Bridge between apexlegendsapi and ApeStats

apex-api-sync This app updates a mongo instance with the players most recent dat

Feb 17, 2022
Hummingbard is an experimental client for building decentralized communities on top of Matrix.

Hummingbard is an experimental client for building decentralized communities on top of Matrix.

Oct 11, 2022
A Golang Matrix client

A Golang Matrix client

Dec 24, 2022
Notifies you about new matrix messages on your LaMetric Time

Matrix -> LaMetric Time bridge This small golang app notifies you about new messages on your LaMetric Time. This should be run on a Raspberry Pi or so

Sep 29, 2022
vks is a Vulkan bridge for Go.

vks vks is a Vulkan bridge for Go. The header generator folder contains the code that is used to generate the vulkan bindings. It woks similar to c-fo

Sep 3, 2022
An inline buildpack for deploying a mattermost-irc bridge

Matterbridge-Heroku An inline buildpack for hosting Matterbridge on Heroku. Heroku is a platform for easily deploying applications. A buildpack provid

Nov 26, 2022
Bridge facebook messenger with any service supported by matterbridge

fbridge fbridge bridges facebook messenger with any service supported by matterbridge trough the API interface. fbridge is using fbchat to connect to

Oct 30, 2022
Facebook bridge used with matterbridge

fbridge-asyncio This repo is a fork of fbridge. If you log in to your facebook account from a browser, after you do, it's a good idea to restart fbrid

Aug 7, 2022
Grpc bridge to various mediabank related systems

Mediabank bridge This internal tool enables authenticated gRPC based endpoint for securely communicating with systems like: Telestream Vantage Workflo

Jan 7, 2022
Bridge REMOV will allow you to safely transfer NFT from RMRK to MOVR and backwards

remov Inspiration Our aim is to expand the capabilities of blockchain and make a secure way for transferring NFT between RMRK and MOVR blockchain. The

Dec 5, 2021
Celestia -> EVM bridge

Peggo Peggo is a Go implementation of the Peggy (Gravity Bridge) Orchestrator originally implemented by Injective Labs. Peggo itself is a fork of the

Dec 12, 2022
A REST API for the DN42 registry, written in Go, to provide a bridge between interactive applications and the registry.

dn42regsrv A REST API for the DN42 registry, written in Go, to provide a bridge between interactive applications and registry data. A public instance

Apr 21, 2022
The official repository of the Gravity Bridge Blockchain

Gravity bridge is Cosmos <-> Ethereum bridge designed to run on the Cosmos SDK blockchains like the Cosmos Hub focused on maximum design simplicity an

Dec 27, 2022
A bridge from the Stellar network to other blockchains
A bridge from the Stellar network to other blockchains

Creating equitable access to the global financial system Starbridge Starbridge is software that facilitates bridge builders who are connecting the Ste

Dec 9, 2022
RuuviBridge - Utility to bridge RuuviTag data between various sources and consumers

RuuviBridge RuuviBridge is designed to act as a "data bridge" between various so

Nov 19, 2022
🧙 High-performance PHP-to-Golang IPC/RPC bridge

High-performance PHP-to-Golang IPC bridge Goridge is high performance PHP-to-Golang codec library which works over native PHP sockets and Golang net/r

Dec 28, 2022
Bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API
Bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API

bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API (mattermost not required!)

Jan 4, 2023
Apex-api-bridge - Bridge between apexlegendsapi and ApeStats

apex-api-sync This app updates a mongo instance with the players most recent dat

Feb 17, 2022
Sparse matrix formats for linear algebra supporting scientific and machine learning applications

Sparse matrix formats Implementations of selected sparse matrix formats for linear algebra supporting scientific and machine learning applications. Co

Dec 12, 2022
Sparse matrix formats for linear algebra supporting scientific and machine learning applications

Sparse matrix formats Implementations of selected sparse matrix formats for linear algebra supporting scientific and machine learning applications. Co

Jan 8, 2023