diff --git a/lib/outgoing_mms.rb b/lib/outgoing_mms.rb index 69a9d942a6a39cc3fccf4805b3fd4a752cc1a506..07c8de2f74abe3fd7021c0bded50dc62ed1e4653 100644 --- a/lib/outgoing_mms.rb +++ b/lib/outgoing_mms.rb @@ -2,7 +2,7 @@ class OutgoingMMS def self.for(m) - body = m.body.sub(m.oobs.first.url, "") + body = m.body.sub(m.oobs.first&.url.to_s, "") OutgoingMMS.new( addresses: m.addresses || [Addresses::Address.new(uri: "sms:#{m.to.node}")], diff --git a/lib/registration_repo.rb b/lib/registration_repo.rb index 15e08c816b6b107408759aedc6c4f81ac48f4a35..26a3c9beb100f12a960bab383bdd7c88f09b32f0 100644 --- a/lib/registration_repo.rb +++ b/lib/registration_repo.rb @@ -17,7 +17,7 @@ class RegistrationRepo def put(jid, *creds) setup_endstream_route(*creds, jid).then do |status| - next status unless status.first[:code].to_i.zero? + next status unless status[:code].to_i.zero? @redis.rpush( "endstream_registration-#{jid.stripped}", @@ -28,7 +28,7 @@ class RegistrationRepo def delete(jid) find(jid).then do |creds| - next { code: 0 } unless creds + next { code: 0 } unless creds&.length&.positive? EMPromise.all([ remove_endstream_route(*creds), diff --git a/sgx_endstream.rb b/sgx_endstream.rb index a687836d87352ed4eb71d2738e260715b53acb7c..87c712ccf031c80775be13f66fff18cd8b084472 100755 --- a/sgx_endstream.rb +++ b/sgx_endstream.rb @@ -10,6 +10,7 @@ require "json" require "ougai" require "sentry-ruby" +require_relative "lib/addresses" require_relative "lib/blather_client" require_relative "lib/blather_ext" require_relative "lib/em" @@ -148,17 +149,18 @@ ibr type: :set do |iq| self << if status[:code].to_i.zero? iq.reply else - iq.as_error("bad-request", :modify, r[:text]) + iq.as_error("bad-request", :modify, status[:text]) end } end message from: /@sms.chat.1pcom.net\Z/ do |m| tel = if m.from.node.length > 7 - "+{m.from.node}" + "+#{m.from.node}" else "#{m.from.node};phone-context=ca-us.phone-context.soprani.ca" end + m = m.dup m.from = Blather::JID.new(tel, CONFIG[:component][:jid]) m.to = ProxiedJID.new(m.to).unproxied m.subject = nil # They send a generic subject for some reason @@ -167,7 +169,7 @@ end message from: /@mms.chat.1pcom.net\Z/ do |m| json = JSON.parse(m.body) - if json["GlobalStatus"] + if json.is_a?(Hash) && json["GlobalStatus"] log.info("MMS Status", json["disposition"]) next end @@ -198,13 +200,13 @@ def too_long_for_sms(m) m.body.length > (m.body.ascii_only? ? 160 : 70) * 3 end -message :body, method(:too_long_for_sms), to: /\A\+?\d+@/ do |m| +message :body, method(:too_long_for_sms).to_proc, to: /\A\+?\d+@/ do |m| self << OutgoingMMS.for(m).to_stanza(id: m.id, from: m.from) end message( :body, - to: /(?:\A\+?\d+@)|(?:;phone-context=ca-us\.phone-context\.soprani\.ca\Z)/ + to: /(?:\A\+?\d+@)|(?:;phone-context=ca-us\.phone-context\.soprani\.ca@)/ ) do |m| m.to = Blather::JID.new( m.to.node.sub(/\A\+/, "").sub(/;phone-context=.*\Z/, ""),