Haineko

 view release on metacpan or  search on metacpan

lib/Haineko/HTTPD.pm  view on Meta::CPAN


    unless( $mesg ) {
        # If the second argument is omitted, use "404 Not found" as a JSON.
        require Haineko::SMTPD::Response;
        $mesg = Haineko::SMTPD::Response->r( 'http', 'not-found' )->damn;
    }

    if( ref $mesg eq 'HASH' ) {
        # Respond as a JSON
        require Haineko::SMTPD::Session;
        my $addr = [ split( ',', $self->req->header('X-Forwarded-For') || q() ) ];
        my $sess = Haineko::SMTPD::Session->new( 
                        'referer'    => $self->req->referer // undef,
                        'response'   => [ $mesg ],
                        'remoteaddr' => pop @$addr || $self->req->address // undef,
                        'remoteport' => $self->req->env->{'REMOTE_ADDR'} // undef,
                        'useragent'  => $self->req->user_agent // undef,
                   )->damn;
        $sess->{'queueid'} = undef;
        return $self->response->json( $code, $sess );

lib/Haineko/Root.pm  view on Meta::CPAN

    my $neko1 = { 'name' => $httpd->name, 'version' => $Haineko::VERSION };

    return $httpd->res->json( 200, $neko1 );
}

sub info {
    # GET /dump, /conf
    my $class = shift;
    my $httpd = shift;

    my $xforwarded = [ split( ',', $httpd->req->header('X-Forwarded-For') || q() ) ];
    my $remoteaddr = pop @$xforwarded || $httpd->req->address // undef;
    my $ip4network = undef;

    # Only 127.0.0.1 is permitted
    use Net::CIDR::Lite;
    $ip4network = Net::CIDR::Lite->new( '127.0.0.1/32' );

    if( $ip4network->find( $remoteaddr ) ) {

        my $requesturl = $httpd->req->path_info;

lib/Haineko/Sample.pm  view on Meta::CPAN

package Haineko::Sample;
use feature ':5.10';
use strict;
use warnings;
use utf8;

sub mail {
    my $class = shift;
    my $httpd = shift;

    my $xforwarded = [ split( ',', $httpd->req->header('X-Forwarded-For') || q() ) ];
    my $remoteaddr = pop @$xforwarded || $httpd->req->address // undef;
    my $samplemail = [
        {
            'mail' => 'envelope-sender-address@example.org',
            'rcpt' => [ 'envelope-recipient-address-1@example.jp' ],
            'ehlo' => sprintf( "[%s]", $remoteaddr ),
            'body' => 'Email message body',
            'header' => {
                'from' => 'Your Name <email-from-addr@example.com>',
                'subject' => 'Email subject',

lib/Haineko/Sendmail.pm  view on Meta::CPAN

    my $defaultset = Haineko::Default->conf;
    my $responsecn = 'Haineko::SMTPD::Response';
    my $responsejk = 'response';    # (String) Response json key name
    my $exceptions = 0;             # (Integer) Flag, be set in try {...} catch { ... }
    my $tmpsession = undef;         # (Haineko::SMTPD::Session) Temporary session object

    # Create a queue id (session id)
    my $queueident = Haineko::SMTPD::Session->make_queueid;

    # Variables related user information such as hostname or port number.
    my $xforwarded = [ split( ',', $httpd->req->header('X-Forwarded-For') || q() ) ];
    my $remoteaddr = pop @$xforwarded || $httpd->req->address // undef;
    my $remoteport = $httpd->req->env->{'REMOTE_PORT'} // undef;
    my $remotehost = $httpd->req->env->{'REMOTE_HOST'} // undef;
    my $remoteuser = $httpd->req->env->{'REMOTE_USER'} // undef;
    my $useragent1 = $httpd->req->user_agent // undef;

    # Syslog object
    my $syslogargv = {
        'queueid'    => $queueident,
        'facility'   => $serverconf->{'syslog'}->{'facility'},



( run in 1.201 second using v1.01-cache-2.11-cpan-26ccb49234f )