54 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| session_start();
 | |
| require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/prerequisites.inc.php';
 | |
| if (!isset($_SESSION['mailcow_cc_role']) || $_SESSION['mailcow_cc_role'] != 'admin') {
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| if (preg_match('/^[a-z\-]{0,}-mailcow/', $_GET['service'])) {
 | |
|   if ($_GET['action'] == "start") {
 | |
|     header('Content-Type: text/html; charset=utf-8');
 | |
|     $retry = 0;
 | |
|     while (docker($_GET['service'], 'info')['State']['Running'] != 1 && $retry <= 3) {
 | |
|       $response = docker($_GET['service'], 'post', 'start');
 | |
|       $response = json_decode($response, true);
 | |
|       $last_response = ($response['type'] == "success") ? '<b><span class="pull-right text-success">OK</span></b>' : '<b><span class="pull-right text-danger">Error: ' . $response['msg'] . '</span></b>';
 | |
|       if ($response['type'] == "success") {
 | |
|         break;
 | |
|       }
 | |
|       usleep(1500000);
 | |
|       $retry++;
 | |
|     }
 | |
|     echo (!isset($last_response)) ? '<b><span class="pull-right text-warning">Already running</span></b>' : $last_response;
 | |
|   }
 | |
|   if ($_GET['action'] == "stop") {
 | |
|     header('Content-Type: text/html; charset=utf-8');
 | |
|     $retry = 0;
 | |
|     while (docker($_GET['service'], 'info')['State']['Running'] == 1 && $retry <= 3) {
 | |
|       $response = docker($_GET['service'], 'post', 'stop');
 | |
|       $response = json_decode($response, true);
 | |
|       $last_response = ($response['type'] == "success") ? '<b><span class="pull-right text-success">OK</span></b>' : '<b><span class="pull-right text-danger">Error: ' . $response['msg'] . '</span></b>';
 | |
|       if ($response['type'] == "success") {
 | |
|         break;
 | |
|       }
 | |
|       usleep(1500000);
 | |
|       $retry++;
 | |
|     }
 | |
|     echo (!isset($last_response)) ? '<b><span class="pull-right text-warning">Not running</span></b>' : $last_response;
 | |
|   }
 | |
|   if ($_GET['action'] == "restart") {
 | |
|     header('Content-Type: text/html; charset=utf-8');
 | |
|     $response = docker($_GET['service'], 'post', 'restart');
 | |
|     $response = json_decode($response, true);
 | |
|     $last_response = ($response['type'] == "success") ? '<b><span class="pull-right text-success">OK</span></b>' : '<b><span class="pull-right text-danger">Error: ' . $response['msg'] . '</span></b>';
 | |
|     echo (!isset($last_response)) ? '<b><span class="pull-right text-warning">Cannot restart container</span></b>' : $last_response;
 | |
|   }
 | |
|   if ($_GET['action'] == "logs") {
 | |
|     $lines = (empty($_GET['lines']) || !is_numeric($_GET['lines'])) ? 1000 : $_GET['lines'];
 | |
|     header('Content-Type: text/plain; charset=utf-8');
 | |
|     print_r(preg_split('/\n/', docker($_GET['service'], 'logs', $lines)));
 | |
|   }
 | |
| }
 | |
| 
 | |
| ?>
 | 
