Mojo-UserAgent-SecureServer

Secure application server for Mojo::UserAgent


Keywords
cpan, perl
License
Artistic-2.0

Documentation

NAME

Mojo::UserAgent::SecureServer - Secure application server for Mojo::UserAgent

SYNOPSIS

# Construct from Mojo::UserAgent
my $ua = Mojo::UserAgent->new;
$ua->ca('ca.pem')->cert('cert.pem')->key('key.pem');
$ua->server(Mojo::UserAgent::SecureServer->from_ua($ua));

# Construct manually
my $ua     = Mojo::UserAgent->new;
my $server = Mojo::UserAgent::SecureServer->new;
$server->listen(Mojo::URL->new('https://127.0.0.1?cert=/x/server.crt&key=/y/server.key&ca=/z/ca.crt'));
$ua->server($server);

# Test::Mojo
my $app = Mojolicious->new;
$app->routes->get('/' => sub {
  my $c      = shift;
  my $handle = Mojo::IOLoop->stream($c->tx->connection)->handle;
  $c->render(json => {cn => $handle->peer_certificate('cn')});
});

my $t = Test::Mojo->new($app);
$t->ua->insecure(0);
$t->ua->ca('t/pki/certs/ca-chain.cert.pem')
  ->cert('t/pki/mojo.example.com.cert.pem')
  ->key('t/pki/mojo.example.com.key.pem');
$t->ua->server(Mojo::UserAgent::SecureServer->from_ua($t->ua));

$t->get_ok('/')->status_is(200)->json_is('/cn', 'mojo.example.com');

DESCRIPTION

Mojo::UserAgent::SecureServer allows you to test your Mojolicious web application with custom SSL/TLS key/cert/ca.

ATTRIBUTES

Mojo::UserAgent::SecureServer inherits all attributes from Mojo::UserAgent::Server and implements the following new ones.

listen

$url = $server->listen;
$server = $server->listen(Mojo::URL->new('https://127.0.0.1'));

The base listen URL for Mojo::Server::Daemon created by "nb_url" and "url". The "port" will be discarded, while other "listen" in Mojo::Server::Daemon parameters are kept.

METHODS

Mojo::UserAgent::SecureServer inherits all methods from Mojo::UserAgent::Server and implements the following new ones.

from_ua

$server = Mojo::UserAgent::SecureServer->from_ua($ua);
$server = $server->from_ua($ua);

Used to construct a new object and/or copy attributes from a Mojo::UserAgent object. Here is the long version:

$server->app($ua->server->app);
$server->ioloop($ua->server->ioloop);
$server->listen->query->param(ca     => $ua->ca);
$server->listen->query->param(cert   => $ua->cert);
$server->listen->query->param(key    => $ua->key);
$server->listen->query->param(verify => Net::SSLeay::VERIFY_PEER()) unless $ua->insecure

nb_url

$url = $server->nb_url;

Get absolute Mojo::URL object for server processing non-blocking requests with "app" in Mojo::UserAgent::Server.

url

$url = $server->url;

Get absolute Mojo::URL object for server processing non-blocking requests with "app" in Mojo::UserAgent::Server.

AUTHOR

Jan Henning Thorsen

COPYRIGHT AND LICENSE

Copyright (C) Jan Henning Thorsen.

This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.

SEE ALSO

Mojo::UserAgent, Mojo::UserAgent::Server and Test::Mojo.