Console: configurer le système destinataire
On peut désormais activer ou désactiver le contrôle SPF, DKIM et DMARC sur le système destinataire.
This commit is contained in:
		
							parent
							
								
									2ac52d0578
								
							
						
					
					
						commit
						23409b4d6f
					
				| @ -6,6 +6,37 @@ use REST::Client; | ||||
| 
 | ||||
| our $VERSION = '0.1'; | ||||
| 
 | ||||
| sub call_api { | ||||
|     my ($method, $target, $url, $body_parameters) = @_; | ||||
| 
 | ||||
|     my $host = config->{'api'}{$target}; | ||||
|     die "Invalid target: $target" unless defined $host; | ||||
| 
 | ||||
|     my $client = REST::Client->new(); | ||||
|     $client->setHost($host); | ||||
|     $client->setTimeout(5); | ||||
|     $client->addHeader('Accept' => 'application/json'); | ||||
|     $client->addHeader('Content-Type' => 'application/json'); | ||||
| 
 | ||||
|     my $body_data; | ||||
|     $body_data = encode_json($body_parameters) if defined $body_parameters; | ||||
| 
 | ||||
|     $client->request($method, $url, $body_data); | ||||
| 
 | ||||
|     my $status = $client->responseCode(); | ||||
|     if ($status =~ /^2\d\d$/) { | ||||
|         my $response; | ||||
|         if ($client->responseContent() ne '') { | ||||
|             $response = decode_json($client->responseContent()); | ||||
|         } | ||||
|         return ($response, $status); | ||||
|     } | ||||
|     else { | ||||
|         warn "API request returned $status"; | ||||
|         return ($client->responseContent(), $status); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| get '/' => sub { | ||||
|     template 'index' => { 'title' => 'Accueil' }; | ||||
| }; | ||||
| @ -59,6 +90,26 @@ post '/dns/zone-edit/:zone' => sub { | ||||
|     } | ||||
| 
 | ||||
|     redirect "/dns/zone-edit/$zone?success=$success", 303; | ||||
| get '/recipient/settings' => sub { | ||||
|     my ($system_status, $http_code) = call_api(GET => 'recipient', '/status'); | ||||
|     die if $http_code ne '200'; | ||||
| 
 | ||||
|     template 'recipient/settings' => { | ||||
|         title => 'Paramètres du système destinataire', | ||||
|         system_status => $system_status | ||||
|     }; | ||||
| }; | ||||
| 
 | ||||
| post '/recipient/settings' => sub { | ||||
|     my %api_params = map { | ||||
|         $_ => body_parameters->{"$_-status"} ? 'enabled' : 'disabled' | ||||
|     } qw(spf dkim dmarc); | ||||
| 
 | ||||
|     my (undef, $status) = call_api(PUT => 'recipient', '/status', \%api_params); | ||||
|     my $success = ($status eq 200) ? 'success' : 'failure'; | ||||
|     redirect "/recipient/settings?success=$success", 303; | ||||
| }; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| get '/recipient/webmail' => sub { | ||||
|  | ||||
| @ -30,6 +30,7 @@ | ||||
|         <li class="nav-item dropdown"> | ||||
|           [% PROCESS role id="recipient" label="Destinataire" %] | ||||
|           <ul class="dropdown-menu"> | ||||
|             <li><a class="dropdown-item" href="[% request.uri_base %]/recipient/settings">Paramétrer le système</a></li> | ||||
|             <li><a class="dropdown-item" href="[% request.uri_base %]/dns/zone-edit/destinataire.example">Éditer la zone DNS</a></li> | ||||
|             <li><a class="dropdown-item" href="[% request.uri_base %]/recipient/webmail">Relever les courriels</a></li> | ||||
|           </ul> | ||||
|  | ||||
							
								
								
									
										33
									
								
								console/web-api/views/recipient/settings.tt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								console/web-api/views/recipient/settings.tt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| <div class="container"> | ||||
|   <div class="row"> | ||||
|     <div class="col-sm-12"> | ||||
|       <h1>Paramètres du système destinataire</h1> | ||||
|       <h2>Vérifications SPF, DKIM et DMARC</h2> | ||||
|       <form method="POST" class="mt-3 container"> | ||||
|         [% FOR item IN ['spf', 'dkim', 'dmarc'] %] | ||||
|         <div class="row mb-2 border-bottom"> | ||||
|           <div class="col-sm-7 form-check form-switch"> | ||||
|             <label class="form-check-label" for="[% item %]-status">Activer le contrôle [% item.upper %]</label> | ||||
|             <input class="form-check-input" type="checkbox" role="switch" id="[% item %]-status" | ||||
|                    name="[% item %]-status" | ||||
|                    [%- IF system_status.item(item) == 'enabled' %] checked[% END -%]> | ||||
|           </div> | ||||
|           <div class="col-sm-5" for="[% item %]-status"> | ||||
|             État actuel : | ||||
|             [% IF system_status.item(item) == 'enabled' %] | ||||
|               <span class="text-success">activé</span> | ||||
|             [% ELSE %] | ||||
|               <span class="text-danger">inactif</span> | ||||
|             [% END %] | ||||
|           </div> | ||||
|         </div> | ||||
|         [% END %] | ||||
|         <div class="row mt-3"> | ||||
|           <div class="col"> | ||||
|             <button class="btn btn-primary" type="submit">Valider</button> | ||||
|           </div> | ||||
|         </div> | ||||
|       </form> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Marc van der Wal
						Marc van der Wal