diff --git a/commands.go b/commands.go index 3b323a3..a7b1433 100644 --- a/commands.go +++ b/commands.go @@ -90,7 +90,7 @@ var cmdToggleEncryption = &commands.FullHandler{ } func fnToggleEncryption(ce *WrappedCommandEvent) { - if !ce.Bridge.Config.Meta.Mode.IsMessenger() { + if !ce.Bridge.Config.Meta.Mode.IsMessenger() && !ce.Bridge.Config.Meta.IGE2EE { ce.Reply("Encryption support is not yet enabled in Instagram mode") return } else if !ce.Portal.IsPrivateChat() { diff --git a/config/config.go b/config/config.go index 49de7e9..8fea57a 100644 --- a/config/config.go +++ b/config/config.go @@ -52,6 +52,7 @@ type Config struct { Meta struct { Mode BridgeMode `yaml:"mode"` + IGE2EE bool `yaml:"ig_e2ee"` Proxy string `yaml:"proxy"` GetProxyFrom string `yaml:"get_proxy_from"` } `yaml:"meta"` diff --git a/config/upgrade.go b/config/upgrade.go index 3f92244..a3db980 100644 --- a/config/upgrade.go +++ b/config/upgrade.go @@ -70,6 +70,7 @@ func DoUpgrade(helper *up.Helper) { helper.Copy(up.Str, "metrics", "listen") helper.Copy(up.Str, "meta", "mode") + helper.Copy(up.Bool, "meta", "ig_e2ee") helper.Copy(up.Str|up.Null, "meta", "proxy") helper.Copy(up.Str|up.Null, "meta", "get_proxy_from") diff --git a/example-config.yaml b/example-config.yaml index 57aeadc..3a8236b 100644 --- a/example-config.yaml +++ b/example-config.yaml @@ -94,6 +94,9 @@ meta: # # Remember to change the appservice id, bot profile info, bridge username_template and management_room_text too. mode: instagram + # When in Instagram mode, should the bridge connect to WhatsApp servers for encrypted chats? + # In FB/Messenger mode encryption is always enabled, this option only affects Instagram mode. + ig_e2ee: false # Static proxy address (HTTP or SOCKS5) for connecting to Meta. proxy: # HTTP endpoint to request new proxy address from, for dynamically assigned proxies. diff --git a/user.go b/user.go index c16857a..3207a3e 100644 --- a/user.go +++ b/user.go @@ -935,7 +935,7 @@ func (user *User) eventHandler(rawEvt any) { user.BridgeState.Send(status.BridgeState{StateEvent: status.StateConnected}) user.tryAutomaticDoublePuppeting() user.handleTable(evt.Table) - if user.bridge.Config.Meta.Mode.IsMessenger() { + if user.bridge.Config.Meta.Mode.IsMessenger() || user.bridge.Config.Meta.IGE2EE { go func() { err := user.connectE2EE() if err != nil {