diff options
Diffstat (limited to 'lib/JWebmail.pm')
-rw-r--r-- | lib/JWebmail.pm | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/lib/JWebmail.pm b/lib/JWebmail.pm new file mode 100644 index 0000000..7275891 --- /dev/null +++ b/lib/JWebmail.pm @@ -0,0 +1,108 @@ +package JWebmail v1.0.0; + +use Mojo::Base 'Mojolicious'; + +use JWebmail::Controller::Webmail; +use JWebmail::Model::ReadMails; +use JWebmail::Model::Driver::QMailAuthuser; +use JWebmail::Model::Driver::Mock; +use JWebmail::Model::WriteMails; + + +sub startup { + my $self = shift; + + $self->moniker('jwebmail'); + + # load plugins + push @{$self->plugins->namespaces}, 'JWebmail::Plugin'; + + $self->plugin('INIConfig'); + $self->plugin('ServerSideSessionData'); + $self->plugin('Helper'); + $self->plugin('I18N', $self->config('i18n') // {}); + + $self->secrets( [$self->config('secret')] ) if $self->config('secret'); + delete $self->config->{secret}; + + # initialize models + $self->helper(users => sub { + state $x = JWebmail::Model::ReadMails->new( + driver => $self->config->{development}{use_read_mock} + ? JWebmail::Model::Driver::Mock->new() + : JWebmail::Model::Driver::QMailAuthuser->new( + logfile => $self->home->child('log', 'extract.log'), + %{ $self->config->{model}{read}{driver} // {} }, + ) + ); + }); + $self->helper(send_mail => sub { my ($c, $mail) = @_; JWebmail::Model::WriteMails::sendmail($mail) }); + $JWebmail::Model::WriteMails::Block_Writes = 1 if $self->config->{development}{block_writes}; + + # add helper and stash values + $self->defaults(version => __PACKAGE__->VERSION); + + $self->route(); +} + + +sub route { + my $self = shift; + + my $r = shift || $self->routes; + + $r->get('/' => 'noaction')->to('Webmail#noaction'); + $r->get('/about')->to('Webmail#about'); + $r->post('/login')->to('Webmail#login'); + $r->get('/logout')->to('Webmail#logout'); + + my $a = $r->under('/')->to('Webmail#auth'); + $a->get('/home/:folder')->to('Webmail#displayheaders', folder => '')->name('displayheaders'); + $a->get('/read/#id' => 'read')->to('Webmail#readmail'); + $a->get('/write')->to('Webmail#writemail'); + $a->post('/write' => 'send')-> to('Webmail#sendmail'); + $a->post('/move')->to('Webmail#move'); + $a->get('/raw/#id')->to('Webmail#raw'); +} + + +1 + +__END__ + +=encoding utf-8 + +=head1 NAME + +JWebmail - Provides a web based e-mail client meant to be used with s/qmail. + +=head1 SYNOPSIS + + hypnotoad script/jwebmail + +And use a server in reverse proxy configuration. + +=head1 DESCRIPTION + +=head1 CONFIGURATION + +Use the jwebmail.conf file. + +=head1 AUTHORS + +Copyright (C) 2020 Jannis M. Hoffmann L<jannis@fehcom.de> + +=head1 BASED ON + +Copyright (C) 2001 Olivier Müller L<om@omnis.ch> (GPLv2+ project: oMail Webmail) + +Copyright (C) 2000 Ernie Miller (GPL project: Neomail) + +See the CREDITS file for project contributors. + +=head1 LICENSE + +This module is licensed under the terms of the GPLv3 or any later version at your option. +Please take a look at the provided LICENSE file shipped with this module. + +=cut
\ No newline at end of file |