Updated files to v1.7.17

This commit is contained in:
Henry Whitaker
2020-08-08 23:18:16 +01:00
parent 840c8d7249
commit e709239dc8
33 changed files with 888 additions and 193 deletions

View File

@@ -1,6 +1,6 @@
# Speedtest Tracker
[![Docker pulls](https://img.shields.io/docker/pulls/henrywhitaker3/speedtest-tracker?style=flat-square)](https://hub.docker.com/r/henrywhitaker3/speedtest-tracker) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Stable?label=master&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Dev?label=dev&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![last_commit](https://img.shields.io/github/last-commit/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) [![issues](https://img.shields.io/github/issues/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/issues) [![commit_freq](https://img.shields.io/github/commit-activity/m/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) ![version](https://img.shields.io/badge/version-v1.7.16-success?style=flat-square) [![license](https://img.shields.io/github/license/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/blob/master/LICENSE)
[![Docker pulls](https://img.shields.io/docker/pulls/henrywhitaker3/speedtest-tracker?style=flat-square)](https://hub.docker.com/r/henrywhitaker3/speedtest-tracker) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Stable?label=master&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Dev?label=dev&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![last_commit](https://img.shields.io/github/last-commit/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) [![issues](https://img.shields.io/github/issues/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/issues) [![commit_freq](https://img.shields.io/github/commit-activity/m/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) ![version](https://img.shields.io/badge/version-v1.7.17-success?style=flat-square) [![license](https://img.shields.io/github/license/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/blob/master/LICENSE)
This program runs a speedtest check every hour and graphs the results. The back-end is written in [Laravel](https://laravel.com/) and the front-end uses [React](https://reactjs.org/). It uses [Ookla's Speedtest cli](https://www.speedtest.net/apps/cli) to get the data and uses [Chart.js](https://www.chartjs.org/) to plot the results.

View File

@@ -1,6 +1,6 @@
# Speedtest Tracker
[![Docker pulls](https://img.shields.io/docker/pulls/henrywhitaker3/speedtest-tracker?style=flat-square)](https://hub.docker.com/r/henrywhitaker3/speedtest-tracker) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Stable?label=master&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Dev?label=dev&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![last_commit](https://img.shields.io/github/last-commit/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) [![issues](https://img.shields.io/github/issues/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/issues) [![commit_freq](https://img.shields.io/github/commit-activity/m/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) ![version](https://img.shields.io/badge/version-v1.7.16-success?style=flat-square) [![license](https://img.shields.io/github/license/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/blob/master/LICENSE)
[![Docker pulls](https://img.shields.io/docker/pulls/henrywhitaker3/speedtest-tracker?style=flat-square)](https://hub.docker.com/r/henrywhitaker3/speedtest-tracker) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Stable?label=master&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/henrywhitaker3/Speedtest-Tracker/Dev?label=dev&logo=github&style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/actions) [![last_commit](https://img.shields.io/github/last-commit/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) [![issues](https://img.shields.io/github/issues/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/issues) [![commit_freq](https://img.shields.io/github/commit-activity/m/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) ![version](https://img.shields.io/badge/version-v1.7.17-success?style=flat-square) [![license](https://img.shields.io/github/license/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/blob/master/LICENSE)
This program runs a speedtest check every hour and graphs the results. The back-end is written in [Laravel](https://laravel.com/) and the front-end uses [React](https://reactjs.org/). It uses the [Ookla's speedtest cli](https://www.speedtest.net/apps/cli) package to get the data and uses [Chart.js](https://www.chartjs.org/) to plot the results.

View File

@@ -34,7 +34,7 @@ class AcceptEULACommand extends Command
/**
* Execute the console command.
*
* @return int
* @return void
*/
public function handle()
{

View File

@@ -34,7 +34,7 @@ class ClearQueueCommand extends Command
/**
* Execute the console command.
*
* @return int
* @return void
*/
public function handle()
{

View File

@@ -34,7 +34,7 @@ class GetConfig extends Command
/**
* Execute the console command.
*
* @return int
* @return void
*/
public function handle()
{

View File

@@ -34,7 +34,7 @@ class SetSlackWebhook extends Command
/**
* Execute the console command.
*
* @return int
* @return void
*/
public function handle()
{

View File

@@ -36,7 +36,7 @@ class SetTelegramOptions extends Command
/**
* Execute the console command.
*
* @return int
* @return void
*/
public function handle()
{

View File

@@ -34,7 +34,7 @@ class SpeedtestCommand extends Command
/**
* Runs a speedtest synchroonously and displays the results..
*
* @return null
* @return void
*/
public function handle()
{

View File

@@ -35,7 +35,7 @@ class SpeedtestLatestCommand extends Command
/**
* Prints the latest speedtest values.
*
* @return null
* @return void
*/
public function handle()
{

View File

@@ -33,7 +33,7 @@ class SpeedtestVersionCommand extends Command
/**
* Execute the console command.
*
* @return mixed
* @return void
*/
public function handle()
{

View File

@@ -34,7 +34,7 @@ class TestNotification extends Command
/**
* Execute the console command.
*
* @return int
* @return void
*/
public function handle()
{

View File

@@ -15,6 +15,8 @@ class SpeedtestCompleteEvent
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $speedtest;
/**
* Create a new event instance.
*

View File

@@ -55,7 +55,7 @@ class BackupHelper {
*
* @param array|string $array Backup data
* @param string $format json|csv
* @return boolean
* @return bool
*/
public static function restore($array, $format)
{
@@ -101,5 +101,7 @@ class BackupHelper {
return true;
}
return false;
}
}

View File

@@ -12,7 +12,7 @@ class SettingsHelper {
* Get a Setting object by name
*
* @param String $name The name field in the setting table
* @return \App\Setting|boolean $name The Setting object. Returns false if no mathcing obj.
* @return \App\Setting|bool|array $name The Setting object. Returns false if no mathcing obj.
*/
public static function get(String $name)
{
@@ -32,7 +32,7 @@ class SettingsHelper {
* Create / update value for Setting object.
*
* @param String $name Name of setting
* @param String $value Value of setting
* @param String|bool $value Value of setting
* @return \App\Setting
*/
public static function set(String $name, $value)
@@ -153,7 +153,7 @@ class SettingsHelper {
* Send test notification to agents
*
* @param boolean|string $agent
* @return void
* @return bool
*/
public static function testNotification($agent = true)
{
@@ -168,5 +168,7 @@ class SettingsHelper {
event(new TestNotificationEvent([ $agent ]));
return true;
}
return false;
}
}

View File

@@ -17,7 +17,7 @@ class SpeedtestHelper {
* Runs/processes speedtest output to created a Speedtest object
*
* @param boolean|string $output If false, new speedtest runs. If anything else, will try to parse as JSON for speedtest results.
* @return \App\Speedtest|boolean
* @return \App\Speedtest|bool
*/
public static function runSpeedtest($output = false, $scheduled = true)
{
@@ -61,7 +61,7 @@ class SpeedtestHelper {
]);
}
if(!isset($test) || $test == false) {
if($test == false) {
return false;
}
@@ -142,14 +142,14 @@ class SpeedtestHelper {
/**
* Parses network speeds and return converted to Mbps
*
* @param array $input
* @param string $input
* @return array
*/
public static function parseUnits($input)
{
$input = explode(' ', $input);
$val = $input[0];
$val = (float)$input[0];
$unit = explode('/', $input[1])[0];
switch($unit) {
@@ -256,7 +256,7 @@ class SpeedtestHelper {
/**
* Create a backup of the SQLite database
*
* @return boolean
* @return null|boolean
*/
public static function dbBackup()
{
@@ -277,7 +277,7 @@ class SpeedtestHelper {
/**
* Delete all speedtests from the database
*
* @return boolean|string
* @return array
*/
public static function deleteAll()
{
@@ -290,7 +290,6 @@ class SpeedtestHelper {
'success' => true,
];
}
}
return [

View File

@@ -13,38 +13,52 @@ class UpdateHelper {
/**
* URL of updates
*
* @var string
* @var string|bool
*/
public $url;
/**
* Current app version number
*
* @var string
* @var string|bool
*/
public $currentVersion;
/**
* Latest app version number
*
* @var string|bool
*/
public $latestVersion;
/**
* Username of GitHub repo
*
* @var string
* @var string|bool
*/
public $user;
/**
* Name of GitHub repo
*
* @var string
* @var string|bool
*/
public $repo;
/**
* Branch of GitHub repo
*
* @var string
* @var string|bool
*/
public $branch;
/**
* Store download
*
* @var string|null
*/
public $download;
function __construct() {
$this->currentVersion = config('speedtest.version');
$this->user = config('speedtest.user');
@@ -87,7 +101,7 @@ class UpdateHelper {
/**
* Gets the latest version number from GitHub
*
* @return array [ repo, branch, version ]
* @return array|bool [ repo, branch, version ]
*/
public function checkLatestVersion()
{
@@ -256,7 +270,6 @@ class UpdateHelper {
$zip->open($backupZip, ZipArchive::CREATE | ZipArchive::OVERWRITE);
// Create recursive directory iterator
/** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY

View File

@@ -7,6 +7,7 @@ use DateTime;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\JsonResponse;
class BackupController extends Controller
{
@@ -15,7 +16,7 @@ class BackupController extends Controller
* Get backup of speedtests
*
* @param Request $request
* @return file
* @return mixed|JsonResponse
*/
public function backup(Request $request)
{
@@ -36,7 +37,7 @@ class BackupController extends Controller
* Retore from a backup
*
* @param Request $request
* @return Response
* @return JsonResponse
*/
public function restore(Request $request)
{

View File

@@ -8,6 +8,8 @@ use App\Setting;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Collection;
class SettingsController extends Controller
{
@@ -15,7 +17,7 @@ class SettingsController extends Controller
/**
* Return all settings
*
* @return array
* @return Collection
*/
public function index()
{
@@ -37,7 +39,7 @@ class SettingsController extends Controller
* Store/update a setting
*
* @param Request $request
* @return Response
* @return JsonResponse
*/
public function store(Request $request)
{
@@ -72,7 +74,7 @@ class SettingsController extends Controller
* Bulk store/update a setting
*
* @param Request $request
* @return Response
* @return JsonResponse
*/
public function bulkStore(Request $request)
{
@@ -92,11 +94,10 @@ class SettingsController extends Controller
$settings = [];
foreach($request->data as $d) {
if(!isset($d['value']) || $d['value'] == null) {
$d['value'] = '';
$d['value'] = '';
}
if($d['name'] == 'speedtest_overview_time') {
$ok = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23' ];
if(!in_array($d['value'], $ok)) {
return response()->json([
@@ -135,6 +136,12 @@ class SettingsController extends Controller
return SettingsHelper::getConfig();
}
/**
* Trigger a test of all notification agents
*
* @return JsonResponse
*/
public function testNotification()
{
SettingsHelper::testNotification();

View File

@@ -11,6 +11,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\JsonResponse;
class SpeedtestController extends Controller
{
@@ -18,7 +19,7 @@ class SpeedtestController extends Controller
/**
* Returns paginated list of speedtests
*
* @return Response
* @return JsonResponse
*/
public function index()
{
@@ -35,7 +36,7 @@ class SpeedtestController extends Controller
* Returns speedtest going back 'x' days
*
* @param int $days
* @return void
* @return JsonResponse
*/
public function time($days)
{
@@ -71,7 +72,7 @@ class SpeedtestController extends Controller
* Returns speedtest failure rate going back 'x' days
*
* @param int $days
* @return void
* @return JsonResponse
*/
public function fail($days)
{
@@ -100,7 +101,7 @@ class SpeedtestController extends Controller
/**
* Return latest speedtest
*
* @return Response
* @return JsonResponse
*/
public function latest()
{
@@ -130,7 +131,7 @@ class SpeedtestController extends Controller
/**
* Queue a new speedtest
*
* @return Response
* @return JsonResponse
*/
public function run()
{
@@ -151,7 +152,7 @@ class SpeedtestController extends Controller
/**
* Delete all speedtests from db
*
* @return Response
* @return JsonResponse
*/
public function deleteAll()
{
@@ -175,7 +176,7 @@ class SpeedtestController extends Controller
* Delete a specific speedtest from the database
*
* @param Speedtest $speedtest
* @return boolean
* @return JsonResponse
*/
public function delete(Speedtest $speedtest)
{

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use Exception;
use Updater;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
class UpdateController extends Controller
{
@@ -12,7 +13,7 @@ class UpdateController extends Controller
/**
* Check for new update
*
* @return Response
* @return JsonResponse
*/
public function checkForUpdate()
{
@@ -25,7 +26,7 @@ class UpdateController extends Controller
/**
* Download new update
*
* @return Response
* @return JsonResponse
*/
public function downloadUpdate()
{
@@ -47,7 +48,7 @@ class UpdateController extends Controller
/**
* Trigger update extraction
*
* @return Response
* @return JsonResponse
*/
public function extractUpdate()
{
@@ -69,22 +70,22 @@ class UpdateController extends Controller
/**
* Trigger update file move
*
* @return Response
* @return JsonResponse
*/
public function moveUpdate()
{
$cp = Updater::updateFiles();
Updater::updateFiles();
return response()->json([
'method' => 'copy latest version',
'success' => $cp,
'success' => null,
], 200);
}
/**
* Get local changelog
*
* @return Response
* @return JsonResponse
*/
public function changelog()
{

View File

@@ -17,5 +17,7 @@ class Authenticate extends Middleware
if (! $request->expectsJson()) {
return route('auth.login');
}
return null;
}
}

View File

@@ -10,6 +10,7 @@ use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Notification;
use NotificationChannels\Telegram\TelegramChannel;
class SpeedtestFailedListener
{

View File

@@ -14,6 +14,8 @@ class SpeedtestCompleteTelegram extends Notification
{
use Queueable;
public $speedtest;
/**
* Create a new notification instance.
*

View File

@@ -12,6 +12,8 @@ class SpeedtestOverviewSlack extends Notification
{
use Queueable;
public $data;
/**
* Create a new notification instance.
*

View File

@@ -14,6 +14,8 @@ class SpeedtestOverviewTelegram extends Notification
{
use Queueable;
public $data;
/**
* Create a new notification instance.
*

View File

@@ -78,7 +78,7 @@ class User extends Authenticatable implements JWTSubject
/**
* Returns a user's login sessions
*
* @return array
* @return mixed
*/
public function sessions()
{

View File

@@ -1,4 +1,10 @@
{
"1.7.17": [
{
"description": "Updated dependencies.",
"link": ""
}
],
"1.7.16": [
{
"description": "Updated dependencies.",

View File

@@ -26,6 +26,7 @@
"fzaninotto/faker": "^1.9.1",
"mockery/mockery": "^1.3.1",
"nunomaduro/collision": "^4.1",
"nunomaduro/larastan": "^0.6.2",
"phpunit/phpunit": "^8.5"
},
"config": {

883
conf/site/composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ return [
|--------------------------------------------------------------------------
*/
'version' => '1.7.16',
'version' => '1.7.17',
/*
|--------------------------------------------------------------------------
@@ -15,7 +15,7 @@ return [
|--------------------------------------------------------------------------
*/
'install' => 'docker',
'install' => 'manual',
/*
|--------------------------------------------------------------------------
@@ -23,7 +23,7 @@ return [
|--------------------------------------------------------------------------
*/
'home' => 'HOME=/config',
'home' => 'HOME=' . base_path() . DIRECTORY_SEPARATOR,
/*
|--------------------------------------------------------------------------

View File

@@ -2317,9 +2317,9 @@
"dev": true
},
"bootstrap": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.0.tgz",
"integrity": "sha512-Z93QoXvodoVslA+PWNdk23Hze4RBYIkpb5h8I2HY2Tu2h7A0LpAgLcyrhrSUyo2/Oxm2l1fRZPs1e5hnxnliXA==",
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.2.tgz",
"integrity": "sha512-vlGn0bcySYl/iV+BGA544JkkZP5LB3jsmkeKLFQakCOwCM3AOk7VkldBz4jrzSe+Z0Ezn99NVXa1o45cQY4R6A==",
"dev": true
},
"brace-expansion": {
@@ -8956,14 +8956,14 @@
}
},
"sass-loader": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-9.0.2.tgz",
"integrity": "sha512-nphcum3jNI442njnrZ5wJgSNX5lfEOHOKHCLf+PrTIaleploKqAMUuT9CVKjf+lyi6c2MCGPHh1vb9nGsjnZJA==",
"version": "9.0.3",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-9.0.3.tgz",
"integrity": "sha512-fOwsP98ac1VMme+V3+o0HaaMHp8Q/C9P+MUazLFVi3Jl7ORGHQXL1XeRZt3zLSGZQQPC8xE42Y2WptItvGjDQg==",
"dev": true,
"requires": {
"klona": "^1.1.1",
"klona": "^1.1.2",
"loader-utils": "^2.0.0",
"neo-async": "^2.6.1",
"neo-async": "^2.6.2",
"schema-utils": "^2.7.0",
"semver": "^7.3.2"
},
@@ -8991,6 +8991,12 @@
"json5": "^2.1.2"
}
},
"neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
"schema-utils": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",

View File

@@ -12,7 +12,7 @@
"devDependencies": {
"@babel/preset-react": "^7.10.4",
"axios": "^0.19",
"bootstrap": "^4.5.0",
"bootstrap": "^4.5.2",
"cross-env": "^7.0",
"jquery": "^3.5",
"laravel-mix": "^5.0.1",
@@ -22,14 +22,14 @@
"react-dom": "^16.2.0",
"resolve-url-loader": "^3.1.0",
"sass": "^1.26.10",
"sass-loader": "^9.0.2"
"sass-loader": "^9.0.3"
},
"dependencies": {
"@babel/plugin-proposal-class-properties": "^7.10.4",
"chart.js": "^2.9.3",
"csv-file-validator": "^1.8.0",
"react-bootstrap": "^1.3.0",
"react-chartjs-2": "^2.9.0",
"react-chartjs-2": "^2.10.0",
"react-router": "^5.2.0",
"react-router-dom": "^5.2.0",
"react-toastify": "^6.0.8"

18
conf/site/phpstan.neon Normal file
View File

@@ -0,0 +1,18 @@
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
paths:
- app
# The level 8 is the highest level
level: 5
ignoreErrors:
- '#Unsafe usage of new static#'
excludes_analyse:
- ./*/*/FileToBeExcluded.php
checkMissingIterableValueType: false