From 8fcda0586ac8ac567acf4e352140cf109a4ddd18 Mon Sep 17 00:00:00 2001 From: Thibault Debatty <thibault.debatty@gmail.com> Date: Thu, 15 Oct 2020 09:21:39 +0200 Subject: [PATCH] bump mark-php-client version, evidence is now an object => show human readable timestamp --- app/Http/Controllers/MarkController.php | 22 +++-- composer.json | 2 +- composer.lock | 112 ++++++++++++------------ resources/views/app/evidence.blade.php | 42 ++++----- resources/views/app/ranking.blade.php | 8 +- 5 files changed, 100 insertions(+), 86 deletions(-) diff --git a/app/Http/Controllers/MarkController.php b/app/Http/Controllers/MarkController.php index 790df70..8df9714 100644 --- a/app/Http/Controllers/MarkController.php +++ b/app/Http/Controllers/MarkController.php @@ -88,9 +88,19 @@ class MarkController extends Controller { $points = []; foreach ($evidences as $evidence) { - $points[] = new \App\TimePoint( - $evidence["time"], - $evidence[$field]); + + // used by status history + // this is dirty :-( + // status history should return an array of objects + if (is_array($evidence)) { + $points[] = new \App\TimePoint( + $evidence["time"], + $evidence[$field]); + } else { + $points[] = new \App\TimePoint( + $evidence->time, + $evidence->$field); + } } return $points; } @@ -100,14 +110,14 @@ class MarkController extends Controller $time_window = 3600; // in seconds $ev = $this->server->findEvidenceById($id); - $since = $ev["time"] - $time_window * 1000; + $since = $ev->time - $time_window * 1000; $references = []; - foreach ($ev["references"] as $id) { + foreach ($ev->references as $id) { $references[] = $this->server->findEvidenceById($id); } - $history = $this->server->findEvidenceSince($ev["label"], $ev["subject"], $since); + $history = $this->server->findEvidenceSince($ev->label, $ev->subject, $since); return view( 'app.evidence',[ diff --git a/composer.json b/composer.json index e9b15e9..be68063 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ "license": "MIT", "require": { "php": "^7.2.5", - "cylab/mark-php-client": "^1.0", + "cylab/mark-php-client": "^1.4.0", "fideloper/proxy": "^4.2", "fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^6.3", diff --git a/composer.lock b/composer.lock index 1889a8d..0f71c85 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6a81f85178e48999d31862b352111122", + "content-hash": "c7e38b8f986c30cb6281ffdb450e873f", "packages": [ { "name": "asm89/stack-cors", @@ -106,14 +106,15 @@ }, { "name": "cylab/mark-php-client", - "version": "1.0.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://gitlab.cylab.be/cylab/mark-php-client.git", - "reference": "5b98595aae2dede9a8c1b5883b08b9fbfd42859d" + "reference": "07c272a48dc44c86f4b12abfe354f30644df0f4c" }, "require": { - "fguillot/json-rpc": "^1.2" + "fguillot/json-rpc": "^1.2", + "nesbot/carbon": "^2.41.3" }, "require-dev": { "phpstan/phpstan": "^0.12.48", @@ -138,7 +139,7 @@ } ], "description": "A PHP client for the MARK framework", - "time": "2020-10-04T11:36:26+00:00" + "time": "2020-10-15T06:47:14+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -314,23 +315,23 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v2.3.0", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" + "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", - "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/65b2d8ee1f10915efb3b55597da3404f096acba2", + "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.0|^8.0" }, "require-dev": { - "phpunit/phpunit": "^6.4|^7.0" + "phpunit/phpunit": "^6.4|^7.0|^8.0|^9.0" }, "type": "library", "extra": { @@ -364,7 +365,7 @@ "cron", "schedule" ], - "time": "2019-03-31T00:38:28+00:00" + "time": "2020-10-13T00:52:37+00:00" }, { "name": "egulias/email-validator", @@ -775,16 +776,16 @@ }, { "name": "laravel/framework", - "version": "v7.28.3", + "version": "v7.28.4", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b0942c391975972b1a54b2dc983e33a239f169a9" + "reference": "de187e9200948bab6975167e480950abcd5efdac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b0942c391975972b1a54b2dc983e33a239f169a9", - "reference": "b0942c391975972b1a54b2dc983e33a239f169a9", + "url": "https://api.github.com/repos/laravel/framework/zipball/de187e9200948bab6975167e480950abcd5efdac", + "reference": "de187e9200948bab6975167e480950abcd5efdac", "shasum": "" }, "require": { @@ -929,7 +930,7 @@ "framework", "laravel" ], - "time": "2020-09-17T14:23:26+00:00" + "time": "2020-10-06T14:22:09+00:00" }, { "name": "laravel/tinker", @@ -1328,16 +1329,16 @@ }, { "name": "nesbot/carbon", - "version": "2.40.1", + "version": "2.41.3", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "d9a76d8b7eb0f97cf3a82529393245212f40ba3b" + "reference": "e148788eeae9b9b7b87996520358b86faad37b52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d9a76d8b7eb0f97cf3a82529393245212f40ba3b", - "reference": "d9a76d8b7eb0f97cf3a82529393245212f40ba3b", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e148788eeae9b9b7b87996520358b86faad37b52", + "reference": "e148788eeae9b9b7b87996520358b86faad37b52", "shasum": "" }, "require": { @@ -1403,7 +1404,7 @@ "datetime", "time" ], - "time": "2020-09-23T08:17:37+00:00" + "time": "2020-10-12T20:36:09+00:00" }, { "name": "nikic/php-parser", @@ -1459,29 +1460,29 @@ }, { "name": "opis/closure", - "version": "3.5.7", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/opis/closure.git", - "reference": "4531e53afe2fc660403e76fb7644e95998bff7bf" + "reference": "c547f8262a5fa9ff507bd06cc394067b83a75085" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/4531e53afe2fc660403e76fb7644e95998bff7bf", - "reference": "4531e53afe2fc660403e76fb7644e95998bff7bf", + "url": "https://api.github.com/repos/opis/closure/zipball/c547f8262a5fa9ff507bd06cc394067b83a75085", + "reference": "c547f8262a5fa9ff507bd06cc394067b83a75085", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0" + "php": "^5.4 || ^7.0 || ^8.0" }, "require-dev": { "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.5.x-dev" + "dev-master": "3.6.x-dev" } }, "autoload": { @@ -1516,7 +1517,7 @@ "serialization", "serialize" ], - "time": "2020-09-06T17:02:15+00:00" + "time": "2020-10-11T21:42:15+00:00" }, { "name": "paragonie/random_compat", @@ -2182,12 +2183,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "04c3a31fe8ea94b42c9e2d1acc93d19782133b00" + "reference": "ae789a8a2ad189ce7e8216942cdb9b77319f5eb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/04c3a31fe8ea94b42c9e2d1acc93d19782133b00", - "reference": "04c3a31fe8ea94b42c9e2d1acc93d19782133b00", + "url": "https://api.github.com/repos/symfony/console/zipball/ae789a8a2ad189ce7e8216942cdb9b77319f5eb8", + "reference": "ae789a8a2ad189ce7e8216942cdb9b77319f5eb8", "shasum": "" }, "require": { @@ -2601,16 +2602,16 @@ }, { "name": "symfony/http-client-contracts", - "version": "v2.2.0", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "3a5d0fe7908daaa23e3dbf4cee3ba4bfbb19fdd3" + "reference": "41db680a15018f9c1d4b23516059633ce280ca33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/3a5d0fe7908daaa23e3dbf4cee3ba4bfbb19fdd3", - "reference": "3a5d0fe7908daaa23e3dbf4cee3ba4bfbb19fdd3", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33", + "reference": "41db680a15018f9c1d4b23516059633ce280ca33", "shasum": "" }, "require": { @@ -2621,8 +2622,9 @@ }, "type": "library", "extra": { + "branch-version": "2.3", "branch-alias": { - "dev-master": "2.2-dev" + "dev-main": "2.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -2658,7 +2660,7 @@ "interoperability", "standards" ], - "time": "2020-09-07T11:33:47+00:00" + "time": "2020-10-14T17:08:19+00:00" }, { "name": "symfony/http-foundation", @@ -3865,16 +3867,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v2.2.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "77ce1c3627c9f39643acd9af086631f842c50c4d" + "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/77ce1c3627c9f39643acd9af086631f842c50c4d", - "reference": "77ce1c3627c9f39643acd9af086631f842c50c4d", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105", + "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105", "shasum": "" }, "require": { @@ -3886,7 +3888,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -3922,7 +3924,7 @@ "interoperability", "standards" ], - "time": "2020-09-07T11:33:47+00:00" + "time": "2020-09-28T13:05:58+00:00" }, { "name": "symfony/var-dumper", @@ -4415,16 +4417,16 @@ }, { "name": "composer/composer", - "version": "1.10.13", + "version": "1.10.15", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "47c841ba3b2d3fc0b4b13282cf029ea18b66d78b" + "reference": "547c9ee73fe26c77af09a0ea16419176b1cdbd12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/47c841ba3b2d3fc0b4b13282cf029ea18b66d78b", - "reference": "47c841ba3b2d3fc0b4b13282cf029ea18b66d78b", + "url": "https://api.github.com/repos/composer/composer/zipball/547c9ee73fe26c77af09a0ea16419176b1cdbd12", + "reference": "547c9ee73fe26c77af09a0ea16419176b1cdbd12", "shasum": "" }, "require": { @@ -4491,7 +4493,7 @@ "dependency", "package" ], - "time": "2020-09-09T09:46:34+00:00" + "time": "2020-10-13T13:59:09+00:00" }, { "name": "composer/semver", @@ -5024,16 +5026,16 @@ }, { "name": "facade/ignition", - "version": "2.3.8", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "e8fed9c382cd1d02b5606688576a35619afdf82c" + "reference": "9fc6c3d3de5271a1b94cff19dce2c9295abf0ffa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/e8fed9c382cd1d02b5606688576a35619afdf82c", - "reference": "e8fed9c382cd1d02b5606688576a35619afdf82c", + "url": "https://api.github.com/repos/facade/ignition/zipball/9fc6c3d3de5271a1b94cff19dce2c9295abf0ffa", + "reference": "9fc6c3d3de5271a1b94cff19dce2c9295abf0ffa", "shasum": "" }, "require": { @@ -5092,7 +5094,7 @@ "laravel", "page" ], - "time": "2020-10-01T23:01:14+00:00" + "time": "2020-10-14T08:59:59+00:00" }, { "name": "facade/ignition-contracts", diff --git a/resources/views/app/evidence.blade.php b/resources/views/app/evidence.blade.php index 38d5f8e..f5ed606 100644 --- a/resources/views/app/evidence.blade.php +++ b/resources/views/app/evidence.blade.php @@ -2,26 +2,26 @@ @section('content') <div class="container-fluid"> - <h1>{{ implode("", $evidence["subject"]) }}</h1> + <h1>{{ $evidence->subject() }}</h1> - <p>Report id: <b>{{ $evidence["id"] }}</b></p> - <p>Subject: <b>{{ implode("", $evidence["subject"]) }}</b></p> - <p>Score: <b>{{ $evidence["score"] }}</b></p> - <p>Timestamp: {{ $evidence["time"] }}</p> + <p>Report id: <b>{{ $evidence->id }}</b></p> + <p>Subject: <b>{{ $evidence->subject() }}</b></p> + <p>Score: <b>{{ $evidence->score }}</b></p> + <p>Timestamp: {{ $evidence->timeForHumans() }}</p> <div class="card my-4"> <div class="card-body"> - {!! $evidence["report"] !!} + {!! $evidence->report !!} </div> </div> - <h3>Detector : {{ $evidence["profile"]["label"] }}</h3> - <p>Algorithm: {{ $evidence["profile"]["className"] }}</p> - <p>Trigger label: {{ $evidence["profile"]["triggerLabel"] }}</p> + <h3>Detector : {{ $evidence->profile["label"] }}</h3> + <p>Algorithm: {{ $evidence->profile["className"] }}</p> + <p>Trigger label: {{ $evidence->profile["triggerLabel"] }}</p> <p>Parameters:</p> <ul> - @foreach ($evidence["profile"]["parameters"] as $key => $value) + @foreach ($evidence->profile["parameters"] as $key => $value) <li>{{ $key }} : {{ $value }}</li> @endforeach </ul> @@ -31,11 +31,11 @@ <p>This detector has queried following data:</p> <table class="table table-striped"> - @foreach ($evidence["requests"] as $r) + @foreach ($evidence->requests as $r) <tr> <td>{{ $r }}</td> <td class="text-right"> - <a href="/report/{{ $evidence["id"] }}/data/{{ 0 }} " class="btn btn-primary btn-sm"> + <a href="/report/{{ $evidence->id }}/data/{{ 0 }} " class="btn btn-primary btn-sm"> <i class="fas fa-search"></i> Inspect </a> </td> @@ -47,7 +47,7 @@ <p> This detector produced <b>{{ count($history) }}</b> reports for - <b>{{ implode("", $evidence["subject"]) }}</b> over the last hour. + <b>{{ $evidence->subject() }}</b> over the last hour. </p> <canvas id="chart-report-history"></canvas> @@ -61,10 +61,10 @@ <table class="table table-striped" style="display: none" id="history-table"> @foreach ($history as $r) <tr> - <td>{{ $r["score"] }}</td> - <td>{{ $r["time"] }}</td> + <td>{{ $r->score }}</td> + <td>{{ $r->time }}</td> <td class="text-right"> - <a href="/app/evidence/{{ $r["id"] }}" class="btn btn-sm btn-primary"> + <a href="/app/evidence/{{ $r->id }}" class="btn btn-sm btn-primary"> <i class="fas fa-search"></i> Inspect </a> </td> @@ -79,11 +79,13 @@ <table class="table table-striped"> @foreach ($references as $r) <tr> - <td>{{ $r["label"] }}</td> - <td>{{ $r["score"] }}</td> - <td>{{ $r["time"] }}</td> + <td>{{ $r->label }}</td> + <td>{{ $r->score }}</td> + <td>{{ $r->time }}</td> <td class="text-right"> - <a href="/app/evidence/{{ $r["id"] }}" class="btn btn-sm btn-primary"><i class="fas fa-search"></i> Inspect</a> + <a href="/app/evidence/{{ $r->id }}" class="btn btn-sm btn-primary"> + <i class="fas fa-search"></i> Inspect + </a> </td> </tr> @endforeach diff --git a/resources/views/app/ranking.blade.php b/resources/views/app/ranking.blade.php index 96fe2e3..f3fcf81 100644 --- a/resources/views/app/ranking.blade.php +++ b/resources/views/app/ranking.blade.php @@ -27,12 +27,12 @@ @foreach ($evidences as $evidence) <tr> <td> - {{ implode(' ', $evidence["subject"]) }} + {{ $evidence->subject() }} </td> - <td>{{ $evidence["score"] }}</td> - <td>{{ $evidence["time"] }}</td> + <td>{{ $evidence->score }}</td> + <td>{{ $evidence->timeForHumans() }}</td> <td class="text-right"> - <a href="/app/evidence/{{ $evidence["id"] }}" + <a href="/app/evidence/{{ $evidence->id }}" class="btn btn-primary btn-sm"> <i class="fas fa-search"></i> Inspect </a> -- GitLab