Convos
view release on metacpan or search on metacpan
lib/Convos.pm view on Meta::CPAN
$core->log($self->log);
$core->archive->log_dir($ENV{CONVOS_ARCHIVE_DIR} || $self->home->rel_dir('irc_logs'));
$core;
};
has upgrader => sub { die "upgrader() is deprecated" };
=head1 METHODS
=head2 startup
This method will run once at server start
=cut
sub startup {
my $self = shift;
my $config;
$self->{convos_executable_path} = $0; # required to work from within toadfarm
$self->_from_cpan;
$config = $self->_config;
if (my $log = $config->{log}) {
$self->log->level($log->{level}) if $log->{level};
$self->log->path($log->{file}) if $log->{file} ||= $log->{path} || $ENV{CONVOS_FRONTEND_LOGFILE};
delete $self->log->{handle}; # make sure it's fresh to file
}
$self->ua->max_redirects(2); # support getting facebook pictures
$self->plugin('Convos::Plugin::Helpers');
$self->secrets([time]); # will be replaced by _set_secrets()
$self->_redis_url;
return if $ENV{CONVOS_BACKEND_ONLY}; # set script/convos when started as backend
# frontend code
$self->sessions->default_expiration(86400 * 30);
$self->sessions->secure(1) if $ENV{CONVOS_SECURE_COOKIES};
$self->_assets;
$self->_public_routes;
$self->_private_routes;
if (!$ENV{CONVOS_INVITE_CODE} and $config->{invite_code}) {
$self->log->warn(
"invite_code from config file will be deprecated. Set the CONVOS_INVITE_CODE env variable instead.");
$ENV{CONVOS_INVITE_CODE} = $config->{invite_code};
}
if ($ENV{CONVOS_TEMPLATES}) {
# Using push() since I don't think it's a good idea for allowing the user
# to customize every template, at least not when the application is still
# unstable.
push @{$self->renderer->paths}, $ENV{CONVOS_TEMPLATES};
}
$self->defaults(full_page => 1, organization_name => $self->config('name'));
$self->hook(before_dispatch => \&_before_dispatch);
$self->_embed_backend if $ENV{CONVOS_BACKEND_EMBEDDED};
Scalar::Util::weaken($self);
Mojo::IOLoop->timer(0 => sub { $self->_set_secrets });
}
sub _assets {
my $self = shift;
$self->plugin('AssetPack');
$self->plugin('FontAwesome4', css => []);
$self->asset('c.css' => qw( /scss/font-awesome.scss /sass/convos.scss ));
$self->asset(
'c.js' => qw(
https://platform.twitter.com/widgets.js
/js/globals.js
/js/jquery.js
/js/ws-reconnecting.js
/js/jquery.hotkeys.js
/js/jquery.finger.js
/js/jquery.pjax.js
/js/jquery.notify.js
/js/jquery.disableouterscroll.js
/js/convos.events.js
/js/convos.sidebar.js
/js/convos.socket.js
/js/convos.input.js
/js/convos.conversations.js
/js/convos.nicks.js
/js/convos.goto-anything.js
/js/convos.chat.js
)
);
}
sub _before_dispatch {
my $c = shift;
$c->stash(full_page => !($c->req->is_xhr || $c->param('_pjax')));
if (my $base = $c->req->headers->header('X-Request-Base')) {
$c->req->url->base(Mojo::URL->new($base));
}
if (!$c->app->config->{hostname_is_set}++) {
$c->redis->set('convos:frontend:url' => $c->req->url->base->to_abs->to_string);
}
}
sub _config {
my $self = shift;
my $config = $ENV{MOJO_CONFIG} ? $self->plugin('Config') : $self->config;
$config->{hypnotoad}{listen} ||= [split /,/, $ENV{MOJO_LISTEN} || 'http://*:8080'];
$config->{hypnotoad}{pid_file} = $ENV{CONVOS_FRONTEND_PID_FILE} if $ENV{CONVOS_FRONTEND_PID_FILE};
$config->{hypnotoad}{group} = $ENV{RUN_AS_GROUP} if $ENV{RUN_AS_GROUP};
$config->{hypnotoad}{user} = $ENV{RUN_AS_USER} if $ENV{RUN_AS_USER};
$config->{name} = $ENV{CONVOS_ORGANIZATION_NAME} if $ENV{CONVOS_ORGANIZATION_NAME};
$config->{name} ||= 'Nordaaker';
$config;
}
sub _embed_backend {
my $self = shift;
( run in 3.247 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )