class Asperalm::FaspexGW

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

Public Class Methods

new(a_aoc_api_user,a_workspace_id) click to toggle source
# File lib/asperalm/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

Public Instance Methods

fill_self_signed_cert(options) click to toggle source
# File lib/asperalm/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_server() click to toggle source
# File lib/asperalm/faspex_gw.rb, line 192
def start_server
  @server.start
end