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.
58 lines
1.4 KiB
58 lines
1.4 KiB
package CMTD; |
|
|
|
use strict; |
|
use warnings; |
|
|
|
use Mojo::Base 'Mojolicious'; |
|
|
|
sub startup { |
|
my $self = shift; |
|
|
|
$self->plugin('CMTD::Helpers'); |
|
$self->plugin(Config => {file => 'cmtd.conf'}); |
|
$self->plugin(I18N => {namespace => 'CMTD::I18N', default => 'en'}); |
|
if (my $s = $self->app->config->{secret}) { |
|
$self->app->secrets([ $s ]); |
|
} else { |
|
my $s = sprintf "%08X%08X%08X", time(), rand(), rand(); |
|
$self->app->log->warn("!!! You should set a sign key for cookies in config !!!"); |
|
$self->app->secrets([ $s ]); |
|
} |
|
|
|
$self->app->attr(captcha => sub { |
|
my $config = $self->app->config->{captcha}; |
|
require CMTD::Captcha; |
|
my $cap = CMTD::Captcha->new(%{ $config }); |
|
return $cap; |
|
}); |
|
$self->app->attr(db => sub { |
|
my $c = $self->app->config->{db} || {}; |
|
require DBIx::Simple; |
|
my %opts = (AutoCommit => 1, RaiseError => 1, sqlite_see_if_its_a_number => 1); |
|
my $dbh = DBIx::Simple->new($c->{dsn}, $c->{user}, $c->{pass}, \%opts); |
|
return $dbh; |
|
}); |
|
|
|
# initial |
|
$self->app->maintenance; |
|
# periodic |
|
my $loop = Mojo::IOLoop->singleton; |
|
$loop->recurring(60 => sub { |
|
$self->app->maintenance; |
|
}); |
|
|
|
my $r = $self->routes; |
|
|
|
$r->get('/') |
|
-> to('main#index'); |
|
$r->get('/captcha') |
|
-> to('main#captcha'); |
|
$r->get('/comments/list') |
|
-> to('main#c_list'); |
|
$r->get('/comments/add') |
|
-> to('main#c_form'); |
|
$r->post('/comments/add') |
|
-> to('main#c_add'); |
|
} |
|
|
|
1;
|
|
|