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'}); 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 $config = $self->app->config->{db} || []; require DBIx::Simple; my $dbh = DBIx::Simple->new(@{ $config }); 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_add'); } 1;