mirror of
https://github.com/YGGverse/YGGstate.git
synced 2025-01-24 13:34:27 +00:00
init composer/psr-4 package
This commit is contained in:
parent
a8fbf29959
commit
ade3d281bf
12
.gitignore
vendored
12
.gitignore
vendored
@ -1,5 +1,9 @@
|
||||
.vscode
|
||||
.ftpignore
|
||||
/.vscode/
|
||||
/vendor/
|
||||
|
||||
/config/app.php
|
||||
/database/yggstate.mwb.bak
|
||||
/database/yggstate.mwb.bak
|
||||
|
||||
/src/config/app.php
|
||||
|
||||
.ftpignore
|
||||
composer.lock
|
||||
|
17
composer.json
Normal file
17
composer.json
Normal file
@ -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 @@
|
||||
<?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 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
@ -20,7 +20,7 @@ if (false === sem_acquire($semaphore, true)) {
|
||||
require_once(__DIR__ . '/../config/app.php');
|
||||
require_once(__DIR__ . '/../library/yggdrasil.php');
|
||||
require_once(__DIR__ . '/../library/mysql.php');
|
||||
require_once(__DIR__ . '/../library/url.php');
|
||||
require_once __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
// Check disk quota
|
||||
if (CRAWL_STOP_DISK_QUOTA_MB_LEFT > disk_free_space('/') / 1000000) {
|
||||
@ -63,7 +63,7 @@ try {
|
||||
}
|
||||
|
||||
// Collect connected peers
|
||||
if ($connectedPeers = Yggdrasil::getPeers()) {
|
||||
if ($connectedPeers = Yggverse\Yggdrasilctl\Yggdrasil::getPeers()) {
|
||||
|
||||
foreach ($connectedPeers as $connectedPeerAddress => $connectedPeerInfo) {
|
||||
|
||||
@ -84,7 +84,7 @@ if ($connectedPeers = Yggdrasil::getPeers()) {
|
||||
}
|
||||
|
||||
// Init peer data
|
||||
if ($connectedPeerRemoteUrl = URL::parse($connectedPeerInfo->remote)) {
|
||||
if ($connectedPeerRemoteUrl = Yggverse\parser\Url::parse($connectedPeerInfo->remote)) {
|
||||
|
||||
if ($dbPeerRemote = $db->findPeerRemote($dbPeerId,
|
||||
$connectedPeerRemoteUrl->host->scheme,
|
Loading…
x
Reference in New Issue
Block a user