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.
178 lines
5.3 KiB
178 lines
5.3 KiB
package NGCP::Panel;
|
|
use Moose;
|
|
|
|
use Catalyst::Runtime 5.80;
|
|
|
|
# Set flags and add plugins for the application.
|
|
#
|
|
# Note that ORDERING IS IMPORTANT here as plugins are initialized in order,
|
|
# therefore you almost certainly want to keep ConfigLoader at the head of the
|
|
# list if you're using it.
|
|
#
|
|
# -Debug: activates the debug mode for very useful log messages
|
|
# ConfigLoader: will load the configuration from a Config::General file in the
|
|
# application's home directory
|
|
# Static::Simple: will serve static files from the application's root
|
|
# directory
|
|
|
|
use Catalyst qw/
|
|
ConfigLoader
|
|
Static::Simple
|
|
Authentication
|
|
Authorization::Roles
|
|
EnableMiddleware
|
|
Session
|
|
Session::Store::FastMmap
|
|
Session::State::Cookie
|
|
/;
|
|
use Log::Log4perl::Catalyst qw();
|
|
use NGCP::Panel::Cache::Serializer qw();
|
|
use NGCP::Panel::Middleware::HSTS qw();
|
|
#use NGCP::Panel::Middleware::TEgzip qw();
|
|
extends 'Catalyst';
|
|
|
|
our $VERSION = '0.01';
|
|
|
|
my $panel_config;
|
|
for my $path(qw#/etc/ngcp-panel/ngcp_panel.conf etc/ngcp_panel.conf ngcp_panel.conf#) {
|
|
if(-f $path) {
|
|
$panel_config = $path;
|
|
last;
|
|
}
|
|
}
|
|
$panel_config //= 'ngcp_panel.conf';
|
|
|
|
my $logger_config = '/etc/ngcp-ossbss/logging.conf';
|
|
$logger_config = $panel_config unless(-f $logger_config);
|
|
|
|
__PACKAGE__->config(
|
|
name => 'NGCP::Panel',
|
|
# Disable deprecated behavior needed by old applications
|
|
disable_component_resolution_regex_fallback => 1,
|
|
enable_catalyst_header => 1, # Send X-Catalyst header
|
|
encoding => 'UTF-8',
|
|
'Plugin::ConfigLoader' => {
|
|
file => $panel_config,
|
|
},
|
|
'View::HTML' => {
|
|
INCLUDE_PATH => [
|
|
'/usr/share/ngcp-panel/templates',
|
|
'/usr/share/ngcp-panel/layout',
|
|
'/usr/share/ngcp-panel/static',
|
|
__PACKAGE__->path_to('share', 'templates'),
|
|
__PACKAGE__->path_to('share', 'layout'),
|
|
__PACKAGE__->path_to('share', 'static'),
|
|
],
|
|
ABSOLUTE => 1,
|
|
EVAL_PERL => 1,
|
|
},
|
|
'View::JSON' => {
|
|
#Set the stash keys to be exposed to a JSON response
|
|
#(sEcho iTotalRecords iTotalDisplayRecords aaData) for datatables
|
|
expose_stash => [ qw(sEcho iTotalRecords iTotalDisplayRecords aaData) ],
|
|
},
|
|
|
|
'Plugin::Static::Simple' => {
|
|
include_path => [
|
|
'/usr/share/ngcp-panel/static',
|
|
__PACKAGE__->path_to('share', 'static'),
|
|
],
|
|
mime_types => {
|
|
woff => 'application/x-font-woff',
|
|
},
|
|
},
|
|
|
|
session => {
|
|
flash_to_stash => 1,
|
|
expires => 3600,
|
|
},
|
|
|
|
'Plugin::Authentication' => {
|
|
default => {
|
|
credential => {
|
|
class => 'Password',
|
|
password_field => 'password',
|
|
password_type => 'clear'
|
|
},
|
|
store => {
|
|
class => 'Minimal',
|
|
users => {
|
|
}
|
|
}
|
|
},
|
|
reseller => {
|
|
credential => {
|
|
class => 'Password',
|
|
password_field => 'md5pass',
|
|
password_type => 'hashed',
|
|
password_hash_type => 'MD5'
|
|
},
|
|
store => {
|
|
class => 'DBIx::Class',
|
|
user_model => 'DB::admins',
|
|
id_field => 'id',
|
|
store_user_class => 'NGCP::Panel::AuthenticationStore::RoleFromRealm',
|
|
use_userdata_from_session => 1,
|
|
}
|
|
},
|
|
admin => {
|
|
credential => {
|
|
class => 'Password',
|
|
password_field => 'md5pass',
|
|
password_type => 'hashed',
|
|
password_hash_type => 'MD5'
|
|
},
|
|
store => {
|
|
class => 'DBIx::Class',
|
|
user_model => 'DB::admins',
|
|
id_field => 'id',
|
|
store_user_class => 'NGCP::Panel::AuthenticationStore::RoleFromRealm',
|
|
use_userdata_from_session => 1,
|
|
}
|
|
},
|
|
api_admin => {
|
|
# TODO: should be NoPassword, but it's not available in our catalyst version yet
|
|
credential => {
|
|
class => 'Password',
|
|
password_field => 'is_superuser',
|
|
password_type => 'clear',
|
|
},
|
|
store => {
|
|
class => 'DBIx::Class',
|
|
user_model => 'DB::admins',
|
|
id_field => 'id',
|
|
store_user_class => 'NGCP::Panel::AuthenticationStore::RoleFromRealm',
|
|
},
|
|
use_session => 0,
|
|
},
|
|
subscriber => {
|
|
credential => {
|
|
class => 'Password',
|
|
password_field => 'webpassword',
|
|
password_type => 'clear',
|
|
},
|
|
store => {
|
|
class => 'DBIx::Class',
|
|
user_model => 'DB::provisioning_voip_subscribers',
|
|
id_field => 'id',
|
|
store_user_class => 'NGCP::Panel::AuthenticationStore::RoleFromRealm',
|
|
use_userdata_from_session => 1,
|
|
}
|
|
}
|
|
},
|
|
'Plugin::EnableMiddleware' => [
|
|
#NGCP::Panel::Middleware::TEgzip->new,
|
|
NGCP::Panel::Middleware::HSTS->new,
|
|
],
|
|
);
|
|
__PACKAGE__->config( default_view => 'HTML' );
|
|
|
|
__PACKAGE__->log(Log::Log4perl::Catalyst->new($logger_config));
|
|
|
|
# Start the application
|
|
__PACKAGE__->setup();
|
|
|
|
1;
|
|
|
|
# vim: set tabstop=4 expandtab:
|