diff --git a/Gemfile b/Gemfile index 978044f08312f1500ad0115a050050c0f216de74..6cf59802f122cb4e3f472b3a2d4fe8207508bb6f 100644 --- a/Gemfile +++ b/Gemfile @@ -11,6 +11,8 @@ gem 'eventmachine' gem 'goliath' gem 'lazy_object' gem 'log4r' +gem 'multibases' +gem 'multihashes' gem 'rack', '< 2' gem 'redis' gem "sentry-ruby", "<= 4.3.1" diff --git a/sgx-bwmsgsv2.rb b/sgx-bwmsgsv2.rb index 97103ce63b9bbd5da538251143151a28ecc6d524..ac545d8b5155fd3ef6145276647bb3cb6e0aff47 100755 --- a/sgx-bwmsgsv2.rb +++ b/sgx-bwmsgsv2.rb @@ -23,6 +23,7 @@ require 'blather/client/dsl' require 'em-hiredis' require 'em-http-request' require 'json' +require 'multihashes' require 'securerandom' require "sentry-ruby" require 'time' @@ -310,13 +311,24 @@ module SGXbwmsgsv2 end def self.to_catapult(s, murl, num_dest, user_id, token, secret, usern) - body = s.respond_to?(:body) ? s.body : '' - if murl.to_s.empty? && body.to_s.strip.empty? + body = s.respond_to?(:body) ? s.body.to_s : '' + if murl.to_s.empty? && body.strip.empty? return EMPromise.reject( [:modify, 'policy-violation'] ) end + segment_size = body.ascii_only? ? 160 : 70 + if !murl && ENV["MMS_PATH"] && body.length > segment_size*3 + file = Multibases.pack( + 'base58btc', + Multihashes.encode(Digest::SHA256.digest(body), "sha2-256") + ).to_s + File.open("#{ENV['MMS_PATH']}/#{file}", "w") { |fh| fh.write body } + murl = "#{ENV['MMS_URL']}/#{file}" + body = "" + end + extra = {} extra[:media] = murl if murl