diff --git a/Web/lib/MJB/Web.pm b/Web/lib/MJB/Web.pm index 28c2b8f..6ced3fd 100644 --- a/Web/lib/MJB/Web.pm +++ b/Web/lib/MJB/Web.pm @@ -21,13 +21,17 @@ sub startup ($self) { return state $db = MJB::DB->connect($config->{database}->{mjb}); }); - # Minion Plugin & Tasks - $self->plugin( Minion => { Pg => $self->config->{database}->{minion} } ); + # Minion plugin & tasks + $self->plugin( Minion => { Pg => $self->config->{database}->{minion} } ); - $self->minion->add_task( create_blog => 'MJB::Web::Task::CreateBlog' ); - $self->minion->add_task( purge_blog => 'MJB::Web::Task::PurgeBlog' ); - $self->minion->add_task( deploy_blog => 'MJB::Web::Task::DeployBlog' ); + # Blog deployment related jobs. + $self->minion->add_task( create_blog => 'MJB::Web::Task::CreateBlog' ); + $self->minion->add_task( purge_blog => 'MJB::Web::Task::PurgeBlog' ); + $self->minion->add_task( deploy_blog => 'MJB::Web::Task::DeployBlog' ); + + # SSL cert related jobs. $self->minion->add_task( create_ssl_cert => 'MJB::Web::Task::CreateSSLCert' ); + $self->minion->add_task( sync_ssl_certs => 'MJB::Web::Task::SyncSSLCerts' ); # Standard router. my $r = $self->routes->under( '/' => sub ($c) { @@ -105,9 +109,6 @@ sub startup ($self) { # Blog Management $auth->get ( '/blog/create' )->to('Blog#create' )->name('show_blog_create' ); $auth->post( '/blog/create' )->to('Blog#do_create' )->name('do_blog_create' ); - - - } 1; diff --git a/Web/lib/MJB/Web/Task/SyncSSLCerts.pm b/Web/lib/MJB/Web/Task/SyncSSLCerts.pm new file mode 100644 index 0000000..feddf12 --- /dev/null +++ b/Web/lib/MJB/Web/Task/SyncSSLCerts.pm @@ -0,0 +1,14 @@ +package MJB::Web::Task::SyncSSLCerts; +use Mojo::Base 'MJB::Web::Task', -signatures; +use IPC::Run3; + +sub run ( $job ) { + $job->note( _mds_template => 'build_static' ); + + # Push the SSL Certificates + my $result = $job->system_command( [ 'sudo', 'letsencrypt-cert-push' ] ); + + $job->finish(); +} + +1;