You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.7 KiB
94 lines
2.7 KiB
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(json => sub { |
|
require JSON; |
|
my $json = JSON->new->utf8; |
|
return $json; |
|
}); |
|
|
|
$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; |
|
|
|
{ # /comments |
|
my $comm = $r->route('/comments') -> to(controller => 'comments'); |
|
$comm->post('/add') ->to(action => 'add'); |
|
$comm->get ('/get') ->to(action => 'get'); |
|
$comm->get ('/new') ->to(action => 'create'); |
|
|
|
mkdir $self->app->home->rel_dir('data/comments'); |
|
} |
|
|
|
{ # /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;
|
|
|