Class: Aspera::FaspexGW

Inherits:
Object
  • Object
show all
Defined in:
lib/aspera/faspex_gw.rb

Overview

this class answers the Faspex /send API and creates a package on Aspera on Cloud

Defined Under Namespace

Classes: FxGwServlet, NewUserServlet

Instance Method Summary collapse

Constructor Details

#initialize(a_aoc_api_user, a_workspace_id) ⇒ FaspexGW

Returns a new instance of FaspexGW.



165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'lib/aspera/faspex_gw.rb', line 165

def initialize(a_aoc_api_user,a_workspace_id)
  webrick_options = {
    :app                => FaspexGW,
    :Port               => 9443,
    :Logger             => Log.log,
    #:DocumentRoot       => Cli::Main.gem_root,
    :SSLEnable          => true,
    :SSLVerifyClient    => OpenSSL::SSL::VERIFY_NONE,
  }
  case 2
  when 0
    # generate self signed cert
    webrick_options[:SSLCertName]    = [ [ 'CN',WEBrick::Utils::getservername ] ]
    Log.log.error(">>>#{webrick_options[:SSLCertName]}")
  when 1
    fill_self_signed_cert(webrick_options)
  when 2
    webrick_options[:SSLPrivateKey] =OpenSSL::PKey::RSA.new(File.read('/Users/laurent/workspace/Tools/certificate/myserver.key'))
    webrick_options[:SSLCertificate] = OpenSSL::X509::Certificate.new(File.read('/Users/laurent/workspace/Tools/certificate/myserver.crt'))
  end
  Log.log.info("Server started on port #{webrick_options[:Port]}")
  @server = WEBrick::HTTPServer.new(webrick_options)
  @server.mount('/aspera/faspex', FxGwServlet,a_aoc_api_user,a_workspace_id)
  @server.mount('/newuser', NewUserServlet)
  trap('INT') {@server.shutdown}
end

Instance Method Details

#fill_self_signed_cert(options) ⇒ Object



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/aspera/faspex_gw.rb', line 142

def fill_self_signed_cert(options)
  key = OpenSSL::PKey::RSA.new(4096)
  cert = OpenSSL::X509::Certificate.new
  cert.subject = cert.issuer = OpenSSL::X509::Name.parse("/C=FR/O=Test/OU=Test/CN=Test")
  cert.not_before = Time.now
  cert.not_after = Time.now + 365 * 24 * 60 * 60
  cert.public_key = key.public_key
  cert.serial = 0x0
  cert.version = 2
  ef = OpenSSL::X509::ExtensionFactory.new
  ef.issuer_certificate = cert
  ef.subject_certificate = cert
  cert.extensions = [
    ef.create_extension("basicConstraints","CA:TRUE", true),
    ef.create_extension("subjectKeyIdentifier", "hash"),
    # ef.create_extension("keyUsage", "cRLSign,keyCertSign", true),
  ]
  cert.add_extension(ef.create_extension("authorityKeyIdentifier","keyid:always,issuer:always"))
  cert.sign(key, OpenSSL::Digest::SHA256.new)
  options[:SSLPrivateKey]  = key
  options[:SSLCertificate] = cert
end

#start_serverObject



192
193
194
# File 'lib/aspera/faspex_gw.rb', line 192

def start_server
  @server.start
end