diff --git a/backend/app/clients/websocket.php b/backend/app/clients/websocket.php index d758750..666dfd5 100644 --- a/backend/app/clients/websocket.php +++ b/backend/app/clients/websocket.php @@ -84,6 +84,7 @@ class Websocket private function doPing($ticket, $domain) { + if (!env('UTILITIES_PING', true)) { return; } $host = gethostbyname($domain); if ($host === false || ($host == $domain && !ip2long($domain))) { $this->send("1|{$ticket}|0"); @@ -118,6 +119,7 @@ class Websocket public function doTraceroute($ticket, $domain) { + if (!env('UTILITIES_TRACEROUTE', true)) { return; } /** @var MaxMind\Db\Reader $reader */ global $reader; @@ -238,6 +240,7 @@ class Websocket public function startIperf3($ticket) { + if (!env('UTILITIES_IPERF3', true)) { return; } $timeout = 60; $port = rand(env('UTILITIES_IPERF3_PORT_MIN', '30000'), env('UTILITIES_IPERF3_PORT_MAX', '31000')); while (in_array($port, self::$ports)) { diff --git a/backend/app/components/00-speedtest_static.php b/backend/app/components/00-speedtest_static.php index 3f0ee88..2d69b7d 100644 --- a/backend/app/components/00-speedtest_static.php +++ b/backend/app/components/00-speedtest_static.php @@ -1,33 +1,35 @@ = $baseBufferSize) { - $readSize = $baseBufferSize; - } else { - $readSize = $targetSize; + preg_match('/(\d+)(KB|MB|GB|TB)/m', $speedtestSize, $matches, PREG_OFFSET_CAPTURE, 0); + if (empty($matches)) continue; + $targetSize = $matches[1][0] * pow($multiplier, array_search($matches[2][0], $sizeMap) + 1); + $path = '/app/webspaces/speedtest-static/' . $speedtestSize . '.test'; + if (file_exists($path) && filesize($path) == $targetSize) { + applog('Skip create speedtest file with size: ' . $speedtestSize . ', File exists and size match'); + continue; } - $targetSize -= $readSize; - fwrite($speedtestFd, fread($random, $readSize)); + applog('Creating speedtest file with size: ' . $speedtestSize . ' ...'); + $random = fopen('/dev/urandom', 'r'); + $speedtestFd = fopen($path, 'w+'); + while ($targetSize != 0) { + if ($targetSize >= $baseBufferSize) { + $readSize = $baseBufferSize; + } else { + $readSize = $targetSize; + } + $targetSize -= $readSize; + fwrite($speedtestFd, fread($random, $readSize)); + } + fclose($speedtestFd); + fclose($random); } - fclose($speedtestFd); - fclose($random); -} +} \ No newline at end of file diff --git a/backend/app/components/01-fake_file_server.php b/backend/app/components/01-fake_file_server.php index 350594e..d1289b2 100644 --- a/backend/app/components/01-fake_file_server.php +++ b/backend/app/components/01-fake_file_server.php @@ -1,5 +1,6 @@ handle('/upload', function ($request, $response) { $response->header('server', 'webserver/1.0'); diff --git a/backend/app/components/99-fix-server-permission.php b/backend/app/components/99-fix-server-permission.php index 2c45e53..21e8a73 100644 --- a/backend/app/components/99-fix-server-permission.php +++ b/backend/app/components/99-fix-server-permission.php @@ -2,7 +2,7 @@ go(function () { do { foreach (['/tmp/speedtest.sock', '/tmp/speedtest-api.sock'] as $file) { - if (!file_exists($file)) break; + if (!file_exists($file)) continue; chmod($file, 0777); } } while (false); diff --git a/ui/src/components/Information.vue b/ui/src/components/Information.vue index 8840e77..365d106 100644 --- a/ui/src/components/Information.vue +++ b/ui/src/components/Information.vue @@ -74,6 +74,9 @@ export default defineComponent({ this.componentConfig.testFiles = data.testfiles this.componentConfig.display_traffic = data.display_traffic this.componentConfig.display_speedtest = data.display_speedtest + this.componentConfig.utilities_ping = data.utilities_ping + this.componentConfig.utilities_traceroute = data.utilities_traceroute + this.componentConfig.utilities_iperf3 = data.utilities_iperf3 this.tableData = [] this.tableData.push({ diff --git a/ui/src/components/Utilities.vue b/ui/src/components/Utilities.vue index 362c414..92d84da 100644 --- a/ui/src/components/Utilities.vue +++ b/ui/src/components/Utilities.vue @@ -1,12 +1,13 @@