|
|
|
package LDV;
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
use utf8;
|
|
|
|
|
|
|
|
use Mojo::Base 'Mojolicious';
|
|
|
|
|
|
|
|
sub startup {
|
|
|
|
my ($self) = @_;
|
|
|
|
|
|
|
|
my $config = $self->app->home->rel_file('conf/ldv.conf');
|
|
|
|
$self->plugin(Config => {file => $config});
|
|
|
|
$self->plugin(I18N => {default => 'ru'});
|
|
|
|
$self->plugin('LDV::Helpers');
|
|
|
|
|
|
|
|
$self->app->mode('production');
|
|
|
|
$self->app->secrets([ $self->app->config->{secret} ]);
|
|
|
|
|
|
|
|
$self->app->attr(email => sub {
|
|
|
|
require LDV::Email;
|
|
|
|
my $email = LDV::Email->new($self->app->config->{email} // {});
|
|
|
|
return $email;
|
|
|
|
});
|
|
|
|
|
|
|
|
$self->app->attr(ldap => sub {
|
|
|
|
require LDV::LDAP;
|
|
|
|
my $ldap = LDV::LDAP->new($self->app->config->{ldap});
|
|
|
|
return $ldap;
|
|
|
|
});
|
|
|
|
|
|
|
|
my $r = $self->routes;
|
|
|
|
|
|
|
|
# /user
|
|
|
|
my $user = $r->route('/user') -> to(controller => 'user');
|
|
|
|
$user->get('/') ->to(cb => sub { shift->redirect_to('/user/login'); });
|
|
|
|
$user->get('/login') ->to(action => 'login');
|
|
|
|
$user->get('/register') ->to(action => 'register');
|
|
|
|
$user->get('/profile') ->to(action => 'profile');
|
|
|
|
|
|
|
|
$user->post('/auth') ->to(action => 'auth');
|
|
|
|
$user->get ('/logout') ->to(action => 'logout');
|
|
|
|
$user->post('/create') ->to(action => 'create');
|
|
|
|
$user->post('/update') ->to(action => 'update');
|
|
|
|
|
|
|
|
{ # /zerobin
|
|
|
|
my $zb = $r->route('/zerobin2') -> to(controller => 'zerobin');
|
|
|
|
$zb->post('/') -> to(action => 'save');
|
|
|
|
$zb->get ('/') -> to(action => 'create');
|
|
|
|
$zb->route('/:time', time => qr/\d+/)
|
|
|
|
->via('GET') -> to(action => 'view');
|
|
|
|
$zb->get('/prune') -> to(action => 'prune');
|
|
|
|
|
|
|
|
my $conf = $self->app->config->{zerobin};
|
|
|
|
mkdir $self->app->home->rel_dir($conf->{root});
|
|
|
|
}
|
|
|
|
|
|
|
|
{ # /imgbin
|
|
|
|
my $conf = $self->app->config->{imgbin};
|
|
|
|
my $ib = $r->route('/imgbin') -> to(controller => 'imgbin');
|
|
|
|
$ib->post('/') -> to(action => 'save');
|
|
|
|
$ib->get ('/') -> to(action => 'create');
|
|
|
|
$ib->route('/:time', time => qr/\d+/)
|
|
|
|
->via('GET') -> to(action => 'view');
|
|
|
|
$ib->get ('/prune') -> to(action => 'prune');
|
|
|
|
$ib->get ('/latest') -> to(action => 'latest')
|
|
|
|
if ($conf->{show_latest});
|
|
|
|
|
|
|
|
mkdir $self->app->home->rel_dir($conf->{root});
|
|
|
|
mkdir $self->app->home->rel_file('public/images');
|
|
|
|
mkdir $self->app->home->rel_file('public/images/full');
|
|
|
|
mkdir $self->app->home->rel_file('public/images/small');
|
|
|
|
|
|
|
|
$ENV{MOJO_MAX_MESSAGE_SIZE} = $conf->{maxsize} + 2 * 1024 * 1024; # +2Mb
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
1;
|