mirror of
https://github.com/cp6/my-idlers.git
synced 2024-11-16 15:33:44 +01:00
commit
91a1466f09
33
README.md
33
README.md
@ -8,7 +8,7 @@ Despite what the name infers this self hosted web app isn't just for storing idl
|
|||||||
a [YABs](https://github.com/masonr/yet-another-bench-script) output you can get disk & network speed values along with
|
a [YABs](https://github.com/masonr/yet-another-bench-script) output you can get disk & network speed values along with
|
||||||
GeekBench 5 scores to do easier comparing and sorting.
|
GeekBench 5 scores to do easier comparing and sorting.
|
||||||
|
|
||||||
[![Generic badge](https://img.shields.io/badge/version-2.1.3-blue.svg)](https://shields.io/) [![Generic badge](https://img.shields.io/badge/Laravel-9.0-red.svg)](https://shields.io/) [![Generic badge](https://img.shields.io/badge/PHP-8.1-purple.svg)](https://shields.io/) [![Generic badge](https://img.shields.io/badge/Bootstrap-5.1-pink.svg)](https://shields.io/)
|
[![Generic badge](https://img.shields.io/badge/version-2.1.5-blue.svg)](https://shields.io/) [![Generic badge](https://img.shields.io/badge/Laravel-9.0-red.svg)](https://shields.io/) [![Generic badge](https://img.shields.io/badge/PHP-8.1-purple.svg)](https://shields.io/) [![Generic badge](https://img.shields.io/badge/Bootstrap-5.1-pink.svg)](https://shields.io/)
|
||||||
|
|
||||||
<img src="https://raw.githubusercontent.com/cp6/my-idlers/main/public/My%20Idlers%20logo.jpg" width="128" height="128" />
|
<img src="https://raw.githubusercontent.com/cp6/my-idlers/main/public/My%20Idlers%20logo.jpg" width="128" height="128" />
|
||||||
|
|
||||||
@ -20,26 +20,33 @@ GeekBench 5 scores to do easier comparing and sorting.
|
|||||||
|
|
||||||
[Cloud Five Limited](https://cloud-v.net/) for providing the hosting for demo installation.
|
[Cloud Five Limited](https://cloud-v.net/) for providing the hosting for demo installation.
|
||||||
|
|
||||||
## 2.1.3 changes (20th July 2022):
|
## 2.1.5 changes (7th September 2022):
|
||||||
|
|
||||||
|
#### Note:
|
||||||
|
yabs.sh now has JSON formatted response and it is possible to POST the output directly from calling the script.
|
||||||
|
|
||||||
|
This will become the only method to add YABS results but using the form method still works for now.
|
||||||
|
|
||||||
|
This version updates the yabs/ POST API to include the server id and your api key:
|
||||||
|
|
||||||
|
`http://domain.com/api/yabs/tnSJLyhz/USERAPIKEYISHERE`
|
||||||
|
|
||||||
|
Example yabs.sh call to POST the result
|
||||||
|
|
||||||
|
`curl -sL yabs.sh | bash -s -- -s "http://domain.com/api/yabs/tnSJLyhz/USERAPIKEYISHERE"`
|
||||||
|
|
||||||
#### Please run the following if updating from existing install:
|
#### Please run the following if updating from existing install:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
php artisan migrate
|
|
||||||
php artisan route:cache
|
php artisan route:cache
|
||||||
php artisan cache:clear
|
php artisan cache:clear
|
||||||
```
|
```
|
||||||
|
|
||||||
* Added YABs to JSON output page
|
* Added YABS JSON parsing
|
||||||
* Added uptime, distro and kernel to YABs inserting
|
* Updated store YABS API function (Uses yabs.sh JSON)
|
||||||
* Added memory swap values to YABs inserting
|
* Updated YABS POST API request (Uses yabs.sh JSON)
|
||||||
* Added save YABs as txt file (setting)
|
* Updated server show page to display code to run and post a YABS on server
|
||||||
* Added back and edit button component with icon
|
* Updated pricing model insertPricing() func
|
||||||
* Updated Reseller model to use relationships + caching
|
|
||||||
* Updated Misc model to use relationships + caching
|
|
||||||
* Updated SeedBoxes model to use relationships + caching
|
|
||||||
* Updated ApiController to use the new model relationship calling (& caching)
|
|
||||||
* Updated container large screen max width from 1320px to 1420px
|
|
||||||
|
|
||||||
## Requires
|
## Requires
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ use App\Models\Reseller;
|
|||||||
use App\Models\SeedBoxes;
|
use App\Models\SeedBoxes;
|
||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
use App\Models\Shared;
|
use App\Models\Shared;
|
||||||
|
use App\Models\User;
|
||||||
use App\Models\Yabs;
|
use App\Models\Yabs;
|
||||||
use App\Process;
|
use App\Process;
|
||||||
use DataTables;
|
use DataTables;
|
||||||
@ -310,10 +311,7 @@ class ApiController extends Controller
|
|||||||
$server_id = Str::random(8);
|
$server_id = Str::random(8);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
|
$pricing->insertPricing(1, $server_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
||||||
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
|
||||||
|
|
||||||
$pricing->insertPricing(1, $server_id, $request->currency, $request->price, $request->payment_term, $as_usd, $request->next_due_date);
|
|
||||||
|
|
||||||
if (!is_null($request->ip1)) {
|
if (!is_null($request->ip1)) {
|
||||||
IPs::insertIP($server_id, $request->ip1);
|
IPs::insertIP($server_id, $request->ip1);
|
||||||
@ -473,113 +471,23 @@ class ApiController extends Controller
|
|||||||
return response()->json(array('result' => 'fail', 'request' => $request->post()), 500);
|
return response()->json(array('result' => 'fail', 'request' => $request->post()), 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function storeYabs(Request $request)
|
public function storeYabs(Request $request, Server $server, string $key): \Illuminate\Http\JsonResponse
|
||||||
{
|
{
|
||||||
$rules = array(
|
$r = User::where('api_token', $key)->first();
|
||||||
'server_id' => 'required|string|size:8',
|
if (!isset($r->id)) {
|
||||||
'yabs_output' => 'required|string',
|
return response()->json(['error' => 'Unauthenticated'], 401);
|
||||||
);
|
|
||||||
|
|
||||||
$messages = array(
|
|
||||||
'required' => ':attribute is required',
|
|
||||||
'string' => ':attribute must be a string',
|
|
||||||
'size' => ':attribute must be exactly :size characters'
|
|
||||||
);
|
|
||||||
|
|
||||||
$validator = Validator::make($request->all(), $rules, $messages);
|
|
||||||
|
|
||||||
if ($validator->fails()) {
|
|
||||||
return response()->json(['result' => 'fail', 'messages' => $validator->messages()], 400);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//dd($request->all());
|
$insert = Yabs::insertFromJson($request, $server->id);
|
||||||
$process = new Process();
|
|
||||||
$yabs = $process->yabsOutputAsJson($request->server_id, $request->yabs_output);
|
|
||||||
//dd($yabs);
|
|
||||||
|
|
||||||
$yabs_id = Str::random(8);
|
|
||||||
|
|
||||||
$yabs_insert = Yabs::create([
|
|
||||||
'id' => $yabs_id,
|
|
||||||
'server_id' => $request->server_id,
|
|
||||||
'has_ipv6' => $yabs['has_ipv6'],
|
|
||||||
'aes' => $yabs['aes'],
|
|
||||||
'vm' => $yabs['vm'],
|
|
||||||
'output_date' => $yabs['output_date'],
|
|
||||||
'cpu_cores' => $yabs['cpu_cores'],
|
|
||||||
'cpu_freq' => $yabs['cpu_freq'],
|
|
||||||
'cpu_model' => $yabs['cpu'],
|
|
||||||
'ram' => $yabs['ram'],
|
|
||||||
'ram_type' => $yabs['ram_type'],
|
|
||||||
'ram_mb' => $yabs['ram_mb'],
|
|
||||||
'swap' => $yabs['swap'],
|
|
||||||
'swap_type' => $yabs['swap_type'],
|
|
||||||
'swap_mb' => $yabs['swap_mb'],
|
|
||||||
'disk' => $yabs['disk'],
|
|
||||||
'disk_type' => $yabs['disk_type'],
|
|
||||||
'disk_gb' => $yabs['disk_gb'],
|
|
||||||
'gb5_single' => $yabs['GB5_single'],
|
|
||||||
'gb5_multi' => $yabs['GB5_mult'],
|
|
||||||
'gb5_id' => $yabs['GB5_id'],
|
|
||||||
'uptime' => $yabs['uptime'],
|
|
||||||
'distro' => $yabs['distro'],
|
|
||||||
'kernel' => $yabs['kernel']
|
|
||||||
]);
|
|
||||||
|
|
||||||
DiskSpeed::create([
|
|
||||||
'id' => $yabs_id,
|
|
||||||
'server_id' => $request->server_id,
|
|
||||||
'd_4k' => $yabs['disk_speed']['4k_total'],
|
|
||||||
'd_4k_type' => $yabs['disk_speed']['4k_total_type'],
|
|
||||||
'd_4k_as_mbps' => $yabs['disk_speed']['4k_total_mbps'],
|
|
||||||
'd_64k' => $yabs['disk_speed']['64k_total'],
|
|
||||||
'd_64k_type' => $yabs['disk_speed']['64k_total_type'],
|
|
||||||
'd_64k_as_mbps' => $yabs['disk_speed']['64k_total_mbps'],
|
|
||||||
'd_512k' => $yabs['disk_speed']['512k_total'],
|
|
||||||
'd_512k_type' => $yabs['disk_speed']['512k_total_type'],
|
|
||||||
'd_512k_as_mbps' => $yabs['disk_speed']['512k_total_mbps'],
|
|
||||||
'd_1m' => $yabs['disk_speed']['1m_total'],
|
|
||||||
'd_1m_type' => $yabs['disk_speed']['1m_total_type'],
|
|
||||||
'd_1m_as_mbps' => $yabs['disk_speed']['1m_total_mbps']
|
|
||||||
]);
|
|
||||||
|
|
||||||
foreach ($yabs['network_speed'] as $y) {
|
|
||||||
NetworkSpeed::create([
|
|
||||||
'id' => $yabs_id,
|
|
||||||
'server_id' => $request->server_id,
|
|
||||||
'location' => $y['location'],
|
|
||||||
'send' => $y['send'],
|
|
||||||
'send_type' => $y['send_type'],
|
|
||||||
'send_as_mbps' => $y['send_type_mbps'],
|
|
||||||
'receive' => $y['receive'],
|
|
||||||
'receive_type' => $y['receive_type'],
|
|
||||||
'receive_as_mbps' => $y['receive_type_mbps']
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$update_server = DB::table('servers')
|
|
||||||
->where('id', $request->server_id)
|
|
||||||
->update([
|
|
||||||
'ram' => $yabs['ram'],
|
|
||||||
'ram_type' => $yabs['ram_type'],
|
|
||||||
'ram_as_mb' => ($yabs['ram_type'] === 'GB') ? ($yabs['ram'] * 1024) : $yabs['ram'],
|
|
||||||
'disk' => $yabs['disk'],
|
|
||||||
'disk_type' => $yabs['disk_type'],
|
|
||||||
'disk_as_gb' => ($yabs['disk_type'] === 'TB') ? ($yabs['disk'] * 1024) : $yabs['disk'],
|
|
||||||
'cpu' => $yabs['cpu_cores'],
|
|
||||||
'has_yabs' => 1
|
|
||||||
]);
|
|
||||||
|
|
||||||
|
if ($insert) {
|
||||||
Cache::forget('all_active_servers');//all servers cache
|
Cache::forget('all_active_servers');//all servers cache
|
||||||
Cache::forget('non_active_servers');//all servers cache
|
Cache::forget('non_active_servers');//all servers cache
|
||||||
Cache::forget('all_yabs');//Forget the all YABs cache
|
Cache::forget('all_yabs');//Forget the all YABs cache
|
||||||
|
return response()->json(array('message' => 'Successfully added YABS'), 200);
|
||||||
if ($yabs_insert) {
|
|
||||||
return response()->json(array('result' => 'success', 'yabs_id' => $yabs_id), 200);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return response()->json(array('result' => 'fail', 'request' => $request->post()), 500);
|
return response()->json(array('error' => 'Server error'), 500);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAllYabs()
|
public function getAllYabs()
|
||||||
|
@ -43,8 +43,7 @@ class DomainsController extends Controller
|
|||||||
|
|
||||||
$domain_id = Str::random(8);
|
$domain_id = Str::random(8);
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
$pricing->insertPricing(4, $domain_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
||||||
$pricing->insertPricing(4, $domain_id, $request->currency, $request->price, $request->payment_term, $as_usd, $request->next_due_date);
|
|
||||||
|
|
||||||
Domains::create([
|
Domains::create([
|
||||||
'id' => $domain_id,
|
'id' => $domain_id,
|
||||||
|
@ -41,8 +41,7 @@ class MiscController extends Controller
|
|||||||
$misc_id = Str::random(8);
|
$misc_id = Str::random(8);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
$pricing->insertPricing(5, $misc_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
||||||
$pricing->insertPricing(5, $misc_id, $request->currency, $request->price, $request->payment_term, $as_usd, $request->next_due_date);
|
|
||||||
|
|
||||||
Misc::create([
|
Misc::create([
|
||||||
'id' => $misc_id,
|
'id' => $misc_id,
|
||||||
|
@ -57,8 +57,7 @@ class ResellerController extends Controller
|
|||||||
$reseller_id = Str::random(8);
|
$reseller_id = Str::random(8);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
$pricing->insertPricing(3, $reseller_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
||||||
$pricing->insertPricing(3, $reseller_id, $request->currency, $request->price, $request->payment_term, $as_usd, $request->next_due_date);
|
|
||||||
|
|
||||||
if (!is_null($request->dedicated_ip)) {
|
if (!is_null($request->dedicated_ip)) {
|
||||||
IPs::insertIP($reseller_id, $request->dedicated_ip);
|
IPs::insertIP($reseller_id, $request->dedicated_ip);
|
||||||
|
@ -47,8 +47,7 @@ class SeedBoxesController extends Controller
|
|||||||
$seedbox_id = Str::random(8);
|
$seedbox_id = Str::random(8);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
$pricing->insertPricing(6, $seedbox_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
||||||
$pricing->insertPricing(6, $seedbox_id, $request->currency, $request->price, $request->payment_term, $as_usd, $request->next_due_date);
|
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($seedbox_id);
|
Labels::deleteLabelsAssignedTo($seedbox_id);
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $seedbox_id);
|
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $seedbox_id);
|
||||||
|
@ -75,10 +75,7 @@ class ServerController extends Controller
|
|||||||
$server_id = Str::random(8);
|
$server_id = Str::random(8);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
|
$pricing->insertPricing(1, $server_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
||||||
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
|
||||||
|
|
||||||
$pricing->insertPricing(1, $server_id, $request->currency, $request->price, $request->payment_term, $as_usd, $request->next_due_date);
|
|
||||||
|
|
||||||
if (!is_null($request->ip1)) {
|
if (!is_null($request->ip1)) {
|
||||||
IPs::insertIP($server_id, $request->ip1);
|
IPs::insertIP($server_id, $request->ip1);
|
||||||
|
@ -52,8 +52,7 @@ class SharedController extends Controller
|
|||||||
$shared_id = Str::random(8);
|
$shared_id = Str::random(8);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
$pricing->insertPricing(2, $shared_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
||||||
$pricing->insertPricing(2, $shared_id, $request->currency, $request->price, $request->payment_term, $as_usd, $request->next_due_date);
|
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($shared_id);
|
Labels::deleteLabelsAssignedTo($shared_id);
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $shared_id);
|
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $shared_id);
|
||||||
|
@ -109,8 +109,9 @@ class Pricing extends Model
|
|||||||
DB::table('pricings')->where('service_id', '=', $id)->delete();
|
DB::table('pricings')->where('service_id', '=', $id)->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function insertPricing(int $type, string $service_id, string $currency, float $price, int $term, float $as_usd, string $next_due_date, int $is_active = 1)
|
public function insertPricing(int $type, string $service_id, string $currency, float $price, int $term, string $next_due_date, int $is_active = 1)
|
||||||
{
|
{
|
||||||
|
$as_usd = $this->convertToUSD($price, $currency);
|
||||||
return self::create([
|
return self::create([
|
||||||
'service_type' => $type,
|
'service_type' => $type,
|
||||||
'service_id' => $service_id,
|
'service_id' => $service_id,
|
||||||
@ -120,7 +121,7 @@ class Pricing extends Model
|
|||||||
'as_usd' => $as_usd,
|
'as_usd' => $as_usd,
|
||||||
'usd_per_month' => $this->costAsPerMonth($as_usd, $term),
|
'usd_per_month' => $this->costAsPerMonth($as_usd, $term),
|
||||||
'next_due_date' => $next_due_date,
|
'next_due_date' => $next_due_date,
|
||||||
'active' => ($is_active) ? 1 : 0
|
'active' => $is_active
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,10 +2,14 @@
|
|||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
use Exception;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class Yabs extends Model
|
class Yabs extends Model
|
||||||
{
|
{
|
||||||
@ -101,4 +105,219 @@ class Yabs extends Model
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function speedAsMbps(string $string): float
|
||||||
|
{
|
||||||
|
$data = explode(" ", $string);
|
||||||
|
if ($data[0] === 'busy') {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if ($data[1] === "Gbits/sec") {
|
||||||
|
return $data[0] * 1000;
|
||||||
|
} else if ($data[1] === "Mbits/sec") {
|
||||||
|
return $data[0];
|
||||||
|
} else {//Kbps
|
||||||
|
return $data[0] / 1000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function speedType(string $string): string
|
||||||
|
{
|
||||||
|
$data = explode(" ", $string);
|
||||||
|
if ($data[0] === 'busy') {
|
||||||
|
return "MBps";
|
||||||
|
}
|
||||||
|
if ($data[1] === "Gbits/sec") {
|
||||||
|
return "GBps";
|
||||||
|
} else if ($data[1] === "Mbits/sec") {
|
||||||
|
return "MBps";
|
||||||
|
} else {//Kbps
|
||||||
|
return "KBps";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function speedAsFloat(string $string): float
|
||||||
|
{
|
||||||
|
$data = explode(" ", $string);
|
||||||
|
if ($data[0] === 'busy') {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return (float)$data[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function formatRunTime(string $date): string
|
||||||
|
{
|
||||||
|
return DateTime::createFromFormat('Ymd-His', $date)->format('Y-m-d H:i:s');
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function gb5IdFromURL(string $url): int
|
||||||
|
{
|
||||||
|
return str_replace("https://browser.geekbench.com/v5/cpu/", "", $url);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function KBstoMBs(int $kbs): float
|
||||||
|
{
|
||||||
|
return $kbs / 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function insertFromJson($data, string $server_id)
|
||||||
|
{
|
||||||
|
$data = (object)$data;
|
||||||
|
try {
|
||||||
|
$date_ran = self::formatRunTime($data->time);
|
||||||
|
$version = $data['version'];
|
||||||
|
$has_ipv4 = $data['net']['ipv4'];
|
||||||
|
$has_ipv6 = $data['net']['ipv6'];
|
||||||
|
//Os
|
||||||
|
$arch = $data['os']['arch'];
|
||||||
|
$distro = $data['os']['distro'];
|
||||||
|
$kernel = $data['os']['kernel'];
|
||||||
|
$uptime = $data['os']['uptime'];
|
||||||
|
//Cpu
|
||||||
|
$model = $data['cpu']['model'];
|
||||||
|
$cores = $data['cpu']['cores'];
|
||||||
|
$freq = $data['cpu']['freq'];
|
||||||
|
$aes = $data['cpu']['aes'];
|
||||||
|
$virt = $data['cpu']['virt'];
|
||||||
|
//Ram Disk
|
||||||
|
$ram = $data['mem']['ram'];
|
||||||
|
$swap = $data['mem']['swap'];
|
||||||
|
$disk = $data['mem']['disk'];
|
||||||
|
if (isset($data['geekbench'][0]) && $data['geekbench'][0]['version'] === 5) {
|
||||||
|
$gb5_single = $data['geekbench'][0]['single'];
|
||||||
|
$gb5_multi = $data['geekbench'][0]['multi'];
|
||||||
|
$gb5_id = self::gb5IdFromURL($data['geekbench'][0]['url']);
|
||||||
|
} elseif (isset($data['geekbench'][1]) && $data['geekbench'][1]['version'] === 5) {
|
||||||
|
$gb5_single = $data['geekbench'][1]['single'];
|
||||||
|
$gb5_multi = $data['geekbench'][1]['multi'];
|
||||||
|
$gb5_id = self::gb5IdFromURL($data['geekbench'][1]['url']);
|
||||||
|
} else {
|
||||||
|
$gb5_single = $gb5_multi = $gb5_id = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$yabs_id = Str::random(8);
|
||||||
|
|
||||||
|
if ($ram > 10) {
|
||||||
|
$ram_f = ($ram / 1024 / 1024);
|
||||||
|
$ram_type = 'GB';
|
||||||
|
} else {
|
||||||
|
$ram_f = ($ram / 1024);
|
||||||
|
$ram_type = 'MB';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($disk > 10000) {
|
||||||
|
$disk_f = ($ram / 1024 / 1024);
|
||||||
|
$disk_type = 'TB';
|
||||||
|
} else {
|
||||||
|
$disk_f = ($ram / 1024);
|
||||||
|
$disk_type = 'GB';
|
||||||
|
}
|
||||||
|
|
||||||
|
self::create([
|
||||||
|
'id' => $yabs_id,
|
||||||
|
'server_id' => $server_id,
|
||||||
|
'has_ipv6' => $has_ipv6,
|
||||||
|
'aes' => $aes,
|
||||||
|
'vm' => $virt,
|
||||||
|
'distro' => $distro,
|
||||||
|
'kernel' => $kernel,
|
||||||
|
'uptime' => $uptime,
|
||||||
|
'cpu_model' => $model,
|
||||||
|
'cpu_cores' => $cores,
|
||||||
|
'cpu_freq' => (float)$freq,
|
||||||
|
'ram' => $ram_f,
|
||||||
|
'ram_type' => $ram_type,
|
||||||
|
'ram_mb' => ($ram / 1024),
|
||||||
|
'swap' => $swap / 1024,
|
||||||
|
'swap_mb' => ($swap / 1024),
|
||||||
|
'swap_type' => 'MB',
|
||||||
|
'disk' => $disk_f,
|
||||||
|
'disk_gb' => ($disk / 1024 / 1024),
|
||||||
|
'disk_type' => $disk_type,
|
||||||
|
'output_date' => $date_ran,
|
||||||
|
'gb5_single' => $gb5_single,
|
||||||
|
'gb5_multi' => $gb5_multi,
|
||||||
|
'gb5_id' => $gb5_id
|
||||||
|
]);
|
||||||
|
|
||||||
|
//Fio
|
||||||
|
foreach ($data['fio'] as $ds) {
|
||||||
|
if ($ds['bs'] === '4k') {
|
||||||
|
$d4k = ($ds['speed_rw'] > 1000000) ? ($ds['speed_rw'] / 1000) : $ds['speed_rw'];
|
||||||
|
$d4k_type = ($ds['speed_rw'] > 1000000) ? 'GB/s' : 'MB/s';
|
||||||
|
$d4k_mbps = self::KBstoMBs($ds['speed_rw']);
|
||||||
|
}
|
||||||
|
if ($ds['bs'] === '64k') {
|
||||||
|
$d64k = ($ds['speed_rw'] > 1000000) ? ($ds['speed_rw'] / 1000) : $ds['speed_rw'];
|
||||||
|
$d64k_type = ($ds['speed_rw'] > 1000000) ? 'GB/s' : 'MB/s';
|
||||||
|
$d64k_mbps = self::KBstoMBs($ds['speed_rw']);
|
||||||
|
}
|
||||||
|
if ($ds['bs'] === '512k') {
|
||||||
|
$d512k = ($ds['speed_rw'] > 1000000) ? ($ds['speed_rw'] / 1000) : $ds['speed_rw'];
|
||||||
|
$d512k_type = ($ds['speed_rw'] > 1000000) ? 'GB/s' : 'MB/s';
|
||||||
|
$d512k_mbps = self::KBstoMBs($ds['speed_rw']);
|
||||||
|
}
|
||||||
|
if ($ds['bs'] === '1m') {
|
||||||
|
$d1m = ($ds['speed_rw'] > 1000000) ? ($ds['speed_rw'] / 1000) : $ds['speed_rw'];
|
||||||
|
$d1m_type = ($ds['speed_rw'] > 1000000) ? 'GB/s' : 'MB/s';
|
||||||
|
$d1m_mbps = self::KBstoMBs($ds['speed_rw']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DiskSpeed::create([
|
||||||
|
'id' => $yabs_id,
|
||||||
|
'server_id' => $server_id,
|
||||||
|
'd_4k' => $d4k,
|
||||||
|
'd_4k_type' => $d4k_type,
|
||||||
|
'd_4k_as_mbps' => $d4k_mbps,
|
||||||
|
'd_64k' => $d64k,
|
||||||
|
'd_64k_type' => $d64k_type,
|
||||||
|
'd_64k_as_mbps' => $d64k_mbps,
|
||||||
|
'd_512k' => $d512k,
|
||||||
|
'd_512k_type' => $d512k_type,
|
||||||
|
'd_512k_as_mbps' => $d512k_mbps,
|
||||||
|
'd_1m' => $d1m,
|
||||||
|
'd_1m_type' => $d1m_type,
|
||||||
|
'd_1m_as_mbps' => $d1m_mbps
|
||||||
|
]);
|
||||||
|
|
||||||
|
//Iperf
|
||||||
|
foreach ($data['iperf'] as $st) {
|
||||||
|
($has_ipv4) ? $match = 'IPv4' : $match = 'IPv6';
|
||||||
|
if ($st['mode'] === $match) {
|
||||||
|
if ($st['send'] !== "busy " || $st['recv'] !== "busy ") {
|
||||||
|
NetworkSpeed::create([
|
||||||
|
'id' => $yabs_id,
|
||||||
|
'server_id' => $server_id,
|
||||||
|
'location' => $st['loc'],
|
||||||
|
'send' => self::speedAsFloat($st['send']),
|
||||||
|
'send_type' => self::speedType($st['send']),
|
||||||
|
'send_as_mbps' => self::speedAsMbps($st['send']),
|
||||||
|
'receive' => self::speedAsFloat($st['recv']),
|
||||||
|
'receive_type' => self::speedType($st['recv']),
|
||||||
|
'receive_as_mbps' => self::speedAsMbps($st['recv'])
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update server
|
||||||
|
$update_server = DB::table('servers')
|
||||||
|
->where('id', $server_id)
|
||||||
|
->update([
|
||||||
|
'ram' => $ram_f,
|
||||||
|
'ram_type' => $ram_type,
|
||||||
|
'ram_as_mb' => ($ram / 1024),
|
||||||
|
'disk' => $disk_f,
|
||||||
|
'disk_as_gb' => ($disk / 1024 / 1024),
|
||||||
|
'disk_type' => $disk_type,
|
||||||
|
'cpu' => $cores,
|
||||||
|
'has_yabs' => 1
|
||||||
|
]);
|
||||||
|
|
||||||
|
} catch (Exception $e) {//Not valid JSON
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,7 @@ class Process
|
|||||||
|
|
||||||
public function yabsOutputAsJson(string $server_id, string $data_from_form): array
|
public function yabsOutputAsJson(string $server_id, string $data_from_form): array
|
||||||
{
|
{
|
||||||
$allowed_versions = ['v2021-12-28', 'v2022-02-18', 'v2022-04-30', 'v2022-05-06', 'v2022-06-11'];
|
$allowed_versions = ['v2021-12-28', 'v2022-02-18', 'v2022-04-30', 'v2022-05-06', 'v2022-06-11', 'v2022-08-20'];
|
||||||
|
|
||||||
$file_name = date('Y') . '/' . date('m') . '/' . time() . '.txt';
|
$file_name = date('Y') . '/' . date('m') . '/' . time() . '.txt';
|
||||||
|
|
||||||
|
@ -1,6 +1,14 @@
|
|||||||
@section('title')
|
@section('title')
|
||||||
{{$server_data->hostname}} {{'server'}}
|
{{$server_data->hostname}} {{'server'}}
|
||||||
@endsection
|
@endsection
|
||||||
|
@section('scripts')
|
||||||
|
<script>
|
||||||
|
function showYabsCode() {
|
||||||
|
const el = document.querySelector('#yabs_code');
|
||||||
|
el.classList.remove("d-none");
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
@endsection
|
||||||
<x-app-layout>
|
<x-app-layout>
|
||||||
<x-slot name="header">
|
<x-slot name="header">
|
||||||
{{ __('Server details') }}
|
{{ __('Server details') }}
|
||||||
@ -135,6 +143,9 @@
|
|||||||
<x-edit-btn>
|
<x-edit-btn>
|
||||||
<x-slot name="route">{{ route('servers.edit', $server_data->id) }}</x-slot>
|
<x-slot name="route">{{ route('servers.edit', $server_data->id) }}</x-slot>
|
||||||
</x-edit-btn>
|
</x-edit-btn>
|
||||||
|
<a href="#" class="btn btn-light btn-sm mx-1" onclick="showYabsCode()">
|
||||||
|
Show code to add a YABS
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-lg-6">
|
<div class="col-12 col-lg-6">
|
||||||
@if($server_data->has_yabs)
|
@if($server_data->has_yabs)
|
||||||
@ -199,6 +210,7 @@
|
|||||||
see Geekbench, disk and network speeds</p>
|
see Geekbench, disk and network speeds</p>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
|
<p id="yabs_code" class="d-none pt-3"><code>curl -sL yabs.sh | bash -s -- -s "{{route('api.store-yabs', [$server_data->id, \Illuminate\Support\Facades\Auth::user()->api_token])}}"</code></p>
|
||||||
</div>
|
</div>
|
||||||
</x-card>
|
</x-card>
|
||||||
@if(Session::has('timer_version_footer') && Session::get('timer_version_footer') === 1)
|
@if(Session::has('timer_version_footer') && Session::get('timer_version_footer') === 1)
|
||||||
|
@ -74,6 +74,6 @@ Route::middleware('auth:api')->get('online/{hostname}', 'App\Http\Controllers\Ap
|
|||||||
|
|
||||||
Route::middleware('auth:api')->get('dns/{domainName}/{type}', 'App\Http\Controllers\ApiController@getIpForDomain');
|
Route::middleware('auth:api')->get('dns/{domainName}/{type}', 'App\Http\Controllers\ApiController@getIpForDomain');
|
||||||
|
|
||||||
Route::middleware('auth:api')->post('yabs/', 'App\Http\Controllers\ApiController@storeYabs');
|
Route::middleware('throttle:4')->post('yabs/{server}/{key}', 'App\Http\Controllers\ApiController@storeYabs')->name('api.store-yabs');
|
||||||
Route::middleware('auth:api')->get('yabs/', 'App\Http\Controllers\ApiController@getAllYabs');
|
Route::middleware('auth:api')->get('yabs/', 'App\Http\Controllers\ApiController@getAllYabs');
|
||||||
Route::middleware('auth:api')->get('yabs/{id}', 'App\Http\Controllers\ApiController@getYabs');
|
Route::middleware('auth:api')->get('yabs/{id}', 'App\Http\Controllers\ApiController@getYabs');
|
||||||
|
Loading…
Reference in New Issue
Block a user