141 lines
4.7 KiB
PHP
141 lines
4.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\API\v1;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use Illuminate\Http\Request;
|
|
use App\Mail\BackupWarning;
|
|
use App\Mail\BackupSuccess;
|
|
use App\Mail\BackupError;
|
|
use App\Mail\BackupDebug;
|
|
use Carbon\Carbon;
|
|
use App\Schedule;
|
|
use App\Backup;
|
|
use App\Client;
|
|
|
|
class BackupController extends Controller
|
|
{
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store($client_id, $schedule_name, Request $request)
|
|
{
|
|
$client = Client::where('id', '=', $client_id)->first();
|
|
$current_time = Carbon::now()->toDateTimeString();
|
|
|
|
$response = json_decode( file_get_contents('php://input') );
|
|
if( isset($response->Data->ParsedResult)){
|
|
$data = $response->Data;
|
|
}
|
|
else{
|
|
Mail::to('matthew@shillam.me.uk')
|
|
->send(new BackupDebug($client, $response));
|
|
return response()->json(['error' => 'A Problem with the data provided from Duplicati!'], 403);
|
|
}
|
|
|
|
$schedule = Schedule::updateOrCreate(
|
|
['client_id' => $client_id, 'name' => $schedule_name],
|
|
['last_backup_status' => $data->ParsedResult, 'last_backup_time' => $current_time]
|
|
);
|
|
|
|
// Create Backup DB entry
|
|
$backup = Backup::Create(array(
|
|
'schedule_id' => $schedule->id,
|
|
'schedule_name' => $schedule_name,
|
|
'status' => $data->ParsedResult,
|
|
'deleted_files' => $data->DeletedFiles,
|
|
'deleted_folders' => $data->DeletedFolders,
|
|
'modified_files' => $data->ModifiedFiles,
|
|
'examined_files' => $data->ExaminedFiles,
|
|
'opened_files' => $data->OpenedFiles,
|
|
'added_files' => $data->AddedFiles,
|
|
'size_of_modified_files' => $data->SizeOfModifiedFiles,
|
|
'size_of_added_files' => $data->SizeOfAddedFiles,
|
|
'size_of_examined_files' => $data->SizeOfExaminedFiles,
|
|
'size_of_opened_files' => $data->SizeOfOpenedFiles,
|
|
'not_processed_files' => $data->NotProcessedFiles,
|
|
'added_folders' => $data->AddedFolders,
|
|
'too_large_files' => $data->TooLargeFiles,
|
|
'files_with_error' => $data->FilesWithError,
|
|
'modified_folders' => $data->ModifiedFolders,
|
|
'modified_symlinks' => $data->ModifiedSymlinks,
|
|
'added_symlinks' => $data->AddedSymlinks,
|
|
'deleted_symlinks' => $data->DeletedSymlinks,
|
|
'partial_backup' => $data->PartialBackup,
|
|
'dryrun' => $data->Dryrun,
|
|
'main_operation' => $data->MainOperation,
|
|
'started_at' => date("Y-m-d\ G:i:s",strtotime($data->BeginTime)),
|
|
'finished_at' => date("Y-m-d\ G:i:s",strtotime($data->EndTime)),
|
|
'duration' => $data->Duration,
|
|
'version' => $data->Version
|
|
));
|
|
|
|
/**
|
|
* notify client by email
|
|
*/
|
|
if($backup->status == "Success")
|
|
{
|
|
Mail::to('reports@mydentalbackup.co.uk')
|
|
->send(new BackupSuccess($backup, $client));
|
|
}
|
|
elseif($backup->status == "Warning")
|
|
{
|
|
Mail::to('reports@mydentalbackup.co.uk')
|
|
->send(new BackupWarning($backup, $client));
|
|
}
|
|
elseif($backup->status == "Error")
|
|
{
|
|
Mail::to('reports@mydentalbackup.co.uk')
|
|
->send(new BackupError($backup, $client));
|
|
}
|
|
else{
|
|
Mail::to('matthew@shillam.me.uk')
|
|
->send(new BackupDebug($client, $response));
|
|
return response()->json(['error' => 'A Problem with the data provided from Duplicati!'], 403);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function show($id)
|
|
{
|
|
//
|
|
}
|
|
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function update(Request $request, $id)
|
|
{
|
|
//
|
|
}
|
|
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*
|
|
* @param int $id
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function destroy($id)
|
|
{
|
|
//
|
|
}
|
|
}
|