diff --git a/web/.env.example b/web/.env.example index f43be54f878a6699d925fa0e79cb091c62e3e812..d824b82bb946851fd383babbd1916fd39952e6ef 100644 --- a/web/.env.example +++ b/web/.env.example @@ -32,3 +32,7 @@ MAIL_ENCRYPTION=null PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= + +MONGO_URI= +MONGO_URI_OPTIONS= +MONGO_DRIVER_OPTIONS= diff --git a/web/app/Mongo/Facade.php b/web/app/Mongo/Facade.php new file mode 100644 index 0000000000000000000000000000000000000000..973c276a6a5db4b9bd55d0a5a7bcd09f2d9ad3bb --- /dev/null +++ b/web/app/Mongo/Facade.php @@ -0,0 +1,11 @@ +<?php + +namespace App\Mongo; + +class Facade extends \Illuminate\Support\Facades\Facade { + + protected static function getFacadeAccessor() { + return 'mongo'; + } + +} diff --git a/web/app/Mongo/Service.php b/web/app/Mongo/Service.php new file mode 100644 index 0000000000000000000000000000000000000000..9826cef0ab5f151f729db721279e086a345cb48f --- /dev/null +++ b/web/app/Mongo/Service.php @@ -0,0 +1,19 @@ +<?php + +namespace App\Mongo; + +use MongoDB\Client; + +class Service { + + private $mongo; + + public function __construct($uri, $uriOptions, $driverOptions) { + $this->mongo = new Client($uri = null, $uriOptions = [], $driverOptions = []); + } + + public function get() { + return $this->mongo; + } + +} diff --git a/web/app/Mongo/ServiceProvider.php b/web/app/Mongo/ServiceProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..48c1c53a648d2290459d78fe3af604f59aa5ee3a --- /dev/null +++ b/web/app/Mongo/ServiceProvider.php @@ -0,0 +1,23 @@ +<?php + +namespace App\Mongo; + +class ServiceProvider extends \Illuminate\Support\ServiceProvider { + + protected $defer = true; + + public function register() { + $this->app->singleton('mongo', function($app) { + $config = $app->make('config'); + $uri = $config->get('services.mongo.uri'); + $uriOptions = $config->get('services.mongo.uriOptions'); + $driverOptions = $config->get('services.mongo.driverOptions'); + return new Service($uri, $uriOptions, $driverOptions); + }); + } + + public function provides() { + return ['mongo']; + } + +} diff --git a/web/app/Server.php b/web/app/Server.php index b9d5e7707492a706ff4487982e8a591588c1db69..f0a3eefe2dbdcc0c1b56ec23b220ed9a81aa5269 100644 --- a/web/app/Server.php +++ b/web/app/Server.php @@ -26,11 +26,19 @@ class Server extends Model ["sort" => ["_id" => -1]]); } + /** + * + * @return \DateTimeZone + */ public function lastRecordTime() { - return $this->lastRecord()->time; + return \Carbon\Carbon::createFromTimestamp($this->lastRecord()->time); } public function clientVersion() { return $this->lastRecord()->version; } + + public function status() { + return "OK"; + } } diff --git a/web/config/app.php b/web/config/app.php index 4802148c9b984be28e1ca4d035006241bdfddcd2..15a44b0e3d4c1e1bfd4746a8fe9a295d9fef3c2e 100644 --- a/web/config/app.php +++ b/web/config/app.php @@ -176,6 +176,7 @@ return [ // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, + App\Mongo\ServiceProvider::class, ], /* @@ -224,6 +225,7 @@ return [ 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, + 'Mongo' => App\Mongo\Facade::class, ], ]; diff --git a/web/config/services.php b/web/config/services.php index 4460f0ec256990d01bddfdd7a048f6e8b0a87f39..21402f3a398240f935f5cfd8687a757266fb8740 100644 --- a/web/config/services.php +++ b/web/config/services.php @@ -35,4 +35,10 @@ return [ 'secret' => env('STRIPE_SECRET'), ], + 'mongo' => [ + 'uri' => env('MONGO_URI'), + 'uriOptions' => env('MONGO_URI_OPTIONS'), + 'driverOptions' => env('MONGO_DRIVER_OPTIONS'), + ], + ]; diff --git a/web/resources/views/organization/show.blade.php b/web/resources/views/organization/show.blade.php index 71d2afd132f54313cfee1026029d6447550527a2..7212dc53465f5fe84b8192d2fed2dcba00e15f8c 100644 --- a/web/resources/views/organization/show.blade.php +++ b/web/resources/views/organization/show.blade.php @@ -15,12 +15,14 @@ <th>ID</th> <th>Token</th> <th></th> + <th></th> </tr> @foreach($organization->servers as $server) <tr> <td>{{ $server->name }}</td> <td>{{ $server->id }}</td> <td>{{ $server->token }}</td> + <td>{{ $server->status() }}</td> <td class="text-right"> <a class="btn btn-primary btn-sm" href="{{ action('ServerController@show', ['Server' => $server]) }}"> diff --git a/web/resources/views/server/show.blade.php b/web/resources/views/server/show.blade.php index 2544ab655b8d61b591f0f7e6172edf6668b9d70e..c9a4395995a058438b4327a7aca770adc1f2b694 100644 --- a/web/resources/views/server/show.blade.php +++ b/web/resources/views/server/show.blade.php @@ -6,9 +6,13 @@ <div class="col-md-4"> <div class="card"> <div class="card-body"> - <p>Last heartbeet:<br> - {{ Carbon\Carbon::createFromTimestamp($server->lastRecordTime())->toDateTimeString() }}</p> + <p> + Last heartbeet:<br> + {{ $server->lastRecordTime()->toDateTimeString() }}<br> + ({{ $server->lastRecordTime()->diffForHumans() }}) + </p> + <p>Status: {{ $server->status() }}</p> <p>Client version: {{ $server->clientVersion() }}</p> </div> </div> diff --git a/web/routes/api.php b/web/routes/api.php index a1b182c7ee7597da8f8e22fd7d06114b04c73139..c44485132b5656fd04a213ac81f0126fcc82b4b1 100644 --- a/web/routes/api.php +++ b/web/routes/api.php @@ -1,7 +1,6 @@ <?php use Illuminate\Http\Request; -use MongoDB\Client as Mongo; use App\Server; /* @@ -24,7 +23,7 @@ Route::post('record/{server}', function(Request $request, Server $server) { $data["server_id"] = $server->id; $data["time"] = time(); - $collection = (new Mongo)->monitoring->records; + $collection = Mongo::get()->monitoring->records; $collection->insertOne($data); return "ok";