blob: dc68bd2bbec74cf542073b64bc89f0b74a0bac35 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
package JWebmail v1.1.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');
my $i18n_route = $self->plugin('I18N2', $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($i18n_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
|