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.
 
 
 
 

91 lines
2.5 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;
});
$self->app->attr(db => sub {
require LDV::DB;
my $db = LDV::DB->new($self->app->config->{db});
$db->connect;
return $db;
});
my $loop = Mojo::IOLoop->singleton;
$loop->recurring(60 => sub {
$self->app->db->ping;
$self->app->log->debug("db ping, process $$");
});
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');
$user->get('/eaccess') ->to(action => 'eaccess');
}
{ # /zerobin
my $zb = $r->route('/zerobin') -> 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');
}
{ # /filebin
my $conf = $self->app->config->{filebin};
my $fb = $r->route('/filebin') -> to(controller => 'filebin');
$fb->post('/') -> to(action => 'save');
$fb->get ('/') -> to(action => 'create');
$fb->route('/:time', time => qr/\d+/)
->via('GET') -> to(action => 'view');
$fb->get ('/prune') -> to(action => 'prune');
$fb->get ('/latest') -> to(action => 'latest')
if $conf->{show_latest};
mkdir $self->app->home->child('public', 'files');
$ENV{MOJO_MAX_MESSAGE_SIZE} = $conf->{file_maxsize} + 2 * 1024 * 1024; # +2Mb
}
}
1;