mirror of https://github.com/YGGverse/YGGstate.git
ghost
1 year ago
8 changed files with 28 additions and 144 deletions
@ -1,5 +1,9 @@
@@ -1,5 +1,9 @@
|
||||
.vscode |
||||
.ftpignore |
||||
/.vscode/ |
||||
/vendor/ |
||||
|
||||
/config/app.php |
||||
/database/yggstate.mwb.bak |
||||
|
||||
/src/config/app.php |
||||
|
||||
.ftpignore |
||||
composer.lock |
||||
|
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
{ |
||||
"name": "yggverse/yggstate", |
||||
"description": "Yggdrasil Network Analytics", |
||||
"type": "project", |
||||
"require": { |
||||
"php": ">=8.1", |
||||
"yggverse/yggdrasilctl": ">=0.1.0", |
||||
"yggverse/parser": ">=0.1.0" |
||||
}, |
||||
"license": "MIT", |
||||
"autoload": { |
||||
"psr-4": { |
||||
"Yggverse\\Yggstate\\": "src/" |
||||
} |
||||
}, |
||||
"minimum-stability": "alpha" |
||||
} |
@ -1,82 +0,0 @@
@@ -1,82 +0,0 @@
|
||||
<?php |
||||
|
||||
class URL { |
||||
|
||||
public static function is(string $url) : bool { |
||||
|
||||
return filter_var($url, FILTER_VALIDATE_URL); |
||||
} |
||||
|
||||
public static function parse(string $url) : mixed { |
||||
|
||||
$result = (object) |
||||
[ |
||||
'host' => (object) |
||||
[ |
||||
'url' => null, |
||||
'scheme' => null, |
||||
'name' => null, |
||||
'port' => null, |
||||
], |
||||
'page' => (object) |
||||
[ |
||||
'url' => null, |
||||
'uri' => null, |
||||
'path' => null, |
||||
'query' => null, |
||||
] |
||||
]; |
||||
|
||||
// Validate URL |
||||
if (!self::is($url)) { |
||||
|
||||
return false; |
||||
} |
||||
|
||||
// Parse host |
||||
if ($scheme = parse_url($url, PHP_URL_SCHEME)) { |
||||
|
||||
$result->host->url = $scheme . '://'; |
||||
$result->host->scheme = $scheme; |
||||
|
||||
} else { |
||||
|
||||
return false; |
||||
} |
||||
|
||||
if ($host = parse_url($url, PHP_URL_HOST)) { |
||||
|
||||
$result->host->url .= $host; |
||||
$result->host->name = $host; |
||||
|
||||
} else { |
||||
|
||||
return false; |
||||
} |
||||
|
||||
if ($port = parse_url($url, PHP_URL_PORT)) { |
||||
|
||||
$result->host->url .= ':' . $port; |
||||
$result->host->port = $port; |
||||
|
||||
// port is optional |
||||
} |
||||
|
||||
// Parse page |
||||
if ($path = parse_url($url, PHP_URL_PATH)) { |
||||
|
||||
$result->page->uri = $path; |
||||
$result->page->path = $path; |
||||
} |
||||
|
||||
if ($query = parse_url($url, PHP_URL_QUERY)) { |
||||
|
||||
$result->page->uri .= '?' . $query; |
||||
$result->page->query = '?' . $query; |
||||
} |
||||
|
||||
$result->page->url = $result->host->url . $result->page->uri; |
||||
|
||||
return $result; |
||||
} |
||||
} |
@ -1,55 +0,0 @@
@@ -1,55 +0,0 @@
|
||||
<?php |
||||
|
||||
class Yggdrasil { |
||||
|
||||
private static function _exec(string $cmd) : mixed { |
||||
|
||||
if (false !== exec('yggdrasilctl -json getPeers', $output)) { |
||||
|
||||
$rows = []; |
||||
|
||||
foreach($output as $row){ |
||||
|
||||
$rows[] = $row; |
||||
} |
||||
|
||||
if ($result = @json_decode(implode(PHP_EOL, $rows))) { |
||||
|
||||
return $result; |
||||
} |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
public static function getPeers() : mixed { |
||||
|
||||
if (false === $result = self::_exec('yggdrasilctl -json getPeers')) { |
||||
|
||||
return false; |
||||
} |
||||
|
||||
if (empty($result->peers)) { |
||||
|
||||
return false; |
||||
} |
||||
|
||||
foreach ((object) $result->peers as $peer) { |
||||
|
||||
switch (false) { |
||||
|
||||
case isset($peer->bytes_recvd): |
||||
case isset($peer->bytes_sent): |
||||
case isset($peer->remote): |
||||
case isset($peer->port): |
||||
case isset($peer->key): |
||||
case isset($peer->uptime): |
||||
case !empty($peer->coords): |
||||
|
||||
return false; |
||||
} |
||||
} |
||||
|
||||
return $result->peers; |
||||
} |
||||
} |
Loading…
Reference in new issue