mirror of https://github.com/YGGverse/Yo.git
ghost
1 year ago
1 changed files with 319 additions and 0 deletions
@ -0,0 +1,319 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
// Debug |
||||||
|
ini_set('display_errors', '1'); |
||||||
|
ini_set('display_startup_errors', '1'); |
||||||
|
error_reporting(E_ALL); |
||||||
|
|
||||||
|
// Load dependencies |
||||||
|
require_once __DIR__ . '/../../vendor/autoload.php'; |
||||||
|
|
||||||
|
// Init config |
||||||
|
$config = json_decode( |
||||||
|
file_get_contents( |
||||||
|
__DIR__ . '/../../config.json' |
||||||
|
) |
||||||
|
); |
||||||
|
|
||||||
|
// Show totals in placeholder |
||||||
|
|
||||||
|
// Init |
||||||
|
$client = new \Manticoresearch\Client( |
||||||
|
[ |
||||||
|
'host' => $config->manticore->server->host, |
||||||
|
'port' => $config->manticore->server->port, |
||||||
|
] |
||||||
|
); |
||||||
|
|
||||||
|
// Init index |
||||||
|
$index = $client->index( |
||||||
|
$config->manticore->index->document->name |
||||||
|
); |
||||||
|
|
||||||
|
// Get totals |
||||||
|
$total = $index->search('') |
||||||
|
->option('cutoff', 0) |
||||||
|
->limit(0) |
||||||
|
->get() |
||||||
|
->getTotal(); |
||||||
|
|
||||||
|
$placeholder = sprintf( |
||||||
|
_('Search in %s documents %s'), |
||||||
|
number_format( |
||||||
|
$total |
||||||
|
), |
||||||
|
$config->webui->search->index->request->url->enabled ? _('or enter new address to crawl...') : false |
||||||
|
); |
||||||
|
|
||||||
|
// Get document data |
||||||
|
$document = $index->getDocumentById( |
||||||
|
isset($_GET['i']) ? $_GET['i'] : 0 |
||||||
|
); |
||||||
|
|
||||||
|
// Get icon |
||||||
|
$hostname = parse_url( |
||||||
|
$document->url, |
||||||
|
PHP_URL_HOST |
||||||
|
); |
||||||
|
|
||||||
|
$identicon = new \Jdenticon\Identicon(); |
||||||
|
|
||||||
|
$identicon->setValue( |
||||||
|
$hostname |
||||||
|
); |
||||||
|
|
||||||
|
$identicon->setSize(36); |
||||||
|
|
||||||
|
$identicon->setStyle( |
||||||
|
[ |
||||||
|
'backgroundColor' => 'rgba(255, 255, 255, 0)', |
||||||
|
'padding' => 0 |
||||||
|
] |
||||||
|
); |
||||||
|
|
||||||
|
$icon = $identicon->getImageDataUri('webp'); |
||||||
|
|
||||||
|
// Get snaps info |
||||||
|
$snaps = []; |
||||||
|
|
||||||
|
?> |
||||||
|
|
||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="<?php echo _('en-US'); ?>"> |
||||||
|
<head> |
||||||
|
<title><?php echo _('Yo! explore') ?></title> |
||||||
|
<meta charset="utf-8" /> |
||||||
|
<style> |
||||||
|
|
||||||
|
* { |
||||||
|
border: 0; |
||||||
|
margin: 0; |
||||||
|
padding: 0; |
||||||
|
font-family: Sans-serif; |
||||||
|
color: #ccc; |
||||||
|
} |
||||||
|
|
||||||
|
body { |
||||||
|
background-color: #2e3436; |
||||||
|
word-break: break-word; |
||||||
|
} |
||||||
|
|
||||||
|
header { |
||||||
|
background-color: #34393b; |
||||||
|
position: fixed; |
||||||
|
top: 0; |
||||||
|
left: 0; |
||||||
|
right: 0; |
||||||
|
z-index: 2; |
||||||
|
} |
||||||
|
|
||||||
|
main { |
||||||
|
margin-top: 80px; |
||||||
|
margin-bottom: 76px; |
||||||
|
padding: 0 20px; |
||||||
|
} |
||||||
|
|
||||||
|
h1 { |
||||||
|
position: fixed; |
||||||
|
top: 8px; |
||||||
|
left: 24px; |
||||||
|
} |
||||||
|
|
||||||
|
h1 > a, |
||||||
|
h1 > a:visited, |
||||||
|
h1 > a:active, |
||||||
|
h1 > a:hover { |
||||||
|
color: #fff; |
||||||
|
font-weight: normal; |
||||||
|
font-size: 24px; |
||||||
|
margin: 10px 0; |
||||||
|
text-decoration: none; |
||||||
|
} |
||||||
|
|
||||||
|
h2 { |
||||||
|
display: block; |
||||||
|
font-size: 15px; |
||||||
|
font-weight: normal; |
||||||
|
margin: 4px 0; |
||||||
|
color: #fff; |
||||||
|
} |
||||||
|
|
||||||
|
h3 { |
||||||
|
display: block; |
||||||
|
font-size: 13px; |
||||||
|
margin: 4px 0; |
||||||
|
} |
||||||
|
|
||||||
|
form { |
||||||
|
display: block; |
||||||
|
max-width: 678px; |
||||||
|
margin: 0 auto; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
input { |
||||||
|
width: 100%; |
||||||
|
margin: 12px 0; |
||||||
|
padding: 6px 0; |
||||||
|
border-radius: 32px; |
||||||
|
background-color: #000; |
||||||
|
color: #fff; |
||||||
|
font-size: 15px; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
input:hover { |
||||||
|
background-color: #111 |
||||||
|
} |
||||||
|
|
||||||
|
input:focus { |
||||||
|
outline: none; |
||||||
|
background-color: #111 |
||||||
|
} |
||||||
|
|
||||||
|
input:focus::placeholder { |
||||||
|
color: #090808 |
||||||
|
} |
||||||
|
|
||||||
|
label { |
||||||
|
font-size: 14px; |
||||||
|
color: #fff; |
||||||
|
float: left; |
||||||
|
margin-left: 16px; |
||||||
|
margin-bottom: 14px; |
||||||
|
} |
||||||
|
|
||||||
|
label > input { |
||||||
|
width: auto; |
||||||
|
margin: 0 4px; |
||||||
|
} |
||||||
|
|
||||||
|
button { |
||||||
|
padding: 6px 12px; |
||||||
|
border-radius: 4px; |
||||||
|
cursor: pointer; |
||||||
|
background-color: #3394fb; |
||||||
|
color: #fff; |
||||||
|
font-size: 14px; |
||||||
|
position: fixed; |
||||||
|
top: 12px; |
||||||
|
right: 24px; |
||||||
|
} |
||||||
|
|
||||||
|
button:hover { |
||||||
|
background-color: #4b9df4; |
||||||
|
} |
||||||
|
|
||||||
|
a, a:visited, a:active { |
||||||
|
color: #9ba2ac; |
||||||
|
display: inline-block; |
||||||
|
font-size: 12px; |
||||||
|
margin-top: 8px; |
||||||
|
} |
||||||
|
|
||||||
|
a:hover { |
||||||
|
color: #54a3f7; |
||||||
|
} |
||||||
|
|
||||||
|
div { |
||||||
|
max-width: 640px; |
||||||
|
margin: 0 auto; |
||||||
|
padding: 16px 0; |
||||||
|
border-top: 1px #000 dashed; |
||||||
|
font-size: 14px; |
||||||
|
} |
||||||
|
|
||||||
|
p { |
||||||
|
margin: 16px 0; |
||||||
|
font-size: 12px; |
||||||
|
} |
||||||
|
|
||||||
|
p > a, p > a:visited, p > a:active { |
||||||
|
font-size: 12px; |
||||||
|
} |
||||||
|
|
||||||
|
.text-warning { |
||||||
|
color: #db6161; |
||||||
|
} |
||||||
|
|
||||||
|
</style> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<header> |
||||||
|
<form name="search" method="GET" action="<?php echo $config->webui->url->base; ?>/search.php"> |
||||||
|
<h1><a href="<?php echo $config->webui->url->base; ?>"><?php echo _('Yo!') ?></a></h1> |
||||||
|
<input type="text" name="q" placeholder="<?php echo $placeholder ?>" value="" /> |
||||||
|
<button type="submit"> |
||||||
|
<sub> |
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="white" class="bi bi-search" viewBox="0 0 16 16"> |
||||||
|
<path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0"/> |
||||||
|
</svg> |
||||||
|
</sub> |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
</header> |
||||||
|
<main> |
||||||
|
<?php if ($document) { ?> |
||||||
|
<div> |
||||||
|
<?php if (empty($document->title) && empty($document->description) && empty($document->keywords)) { ?> |
||||||
|
<?php echo _('Document pending for crawler queue') ?> |
||||||
|
<?php } else { ?> |
||||||
|
<?php if (!empty($document->title)) { ?> |
||||||
|
<h2><?php echo htmlentities($document->title) ?></h2> |
||||||
|
<?php } ?> |
||||||
|
<?php if (!empty($document->description)) { ?> |
||||||
|
<span><?php echo htmlentities($document->description) ?></span> |
||||||
|
<?php } ?> |
||||||
|
<?php if (!empty($document->keywords)) { ?> |
||||||
|
<span><?php echo htmlentities($document->keywords) ?></span> |
||||||
|
<?php } ?> |
||||||
|
<?php } ?> |
||||||
|
<span> |
||||||
|
<a href="<?php echo $document->url ?>"><?php echo htmlentities(urldecode($document->url)) ?></a> |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
<div> |
||||||
|
<p> |
||||||
|
<img src="<?php echo $icon ?>" title="<?php echo $hostname ?>" alt="identicon" /> |
||||||
|
</p> |
||||||
|
<?php if (!empty($document->code)) { ?> |
||||||
|
<h3><?php echo _('HTTP') ?></h3> |
||||||
|
<?php if ($document->code == 200) { ?> |
||||||
|
<p><?php echo $document->code ?></p> |
||||||
|
<?php } else { ?> |
||||||
|
<p class="text-warning"> |
||||||
|
<?php echo $document->code ?> |
||||||
|
</p> |
||||||
|
<?php } ?> |
||||||
|
<?php } ?> |
||||||
|
<?php if (!empty($document->mime)) { ?> |
||||||
|
<h3><?php echo _('MIME') ?></h3> |
||||||
|
<p><?php echo $document->mime ?></p> |
||||||
|
<?php } ?> |
||||||
|
<?php if (!empty($document->size)) { ?> |
||||||
|
<h3><?php echo _('Size') ?></h3> |
||||||
|
<p><?php echo $document->size ?></p> |
||||||
|
<?php } ?> |
||||||
|
<?php if (!empty($document->time)) { ?> |
||||||
|
<h3><?php echo _('Time') ?></h3> |
||||||
|
<p><?php echo date('c', $document->time) ?> / <?php echo $document->time ?></p> |
||||||
|
<?php } ?> |
||||||
|
<?php if ($snaps) { ?> |
||||||
|
<h3><?php echo _('Snaps') ?></h3> |
||||||
|
<?php foreach ($snaps as $server => $snap) { ?> |
||||||
|
<p> |
||||||
|
<!--<a href="<?php echo WEBSITE_DOMAIN . '/api.php?action=snap&method=download&time=url=' . $url ?>">--> |
||||||
|
<?php echo date('c', $snap->time) ?> / <?php echo $snap->time ?> |
||||||
|
<!--</a>--> |
||||||
|
</p> |
||||||
|
<?php } ?> |
||||||
|
<?php } ?> |
||||||
|
</div> |
||||||
|
<?php } else { ?> |
||||||
|
<div style="text-align:center"> |
||||||
|
<span><?php echo _('URL not found') ?></span> |
||||||
|
</div> |
||||||
|
<?php } ?> |
||||||
|
</main> |
||||||
|
</body> |
||||||
|
</html> |
Loading…
Reference in new issue