diff options
author | Anton Luka Šijanec <anton@sijanec.eu> | 2023-01-10 11:53:56 +0100 |
---|---|---|
committer | Anton Luka Šijanec <anton@sijanec.eu> | 2023-01-10 11:53:56 +0100 |
commit | 458ca31cc617831dbe05d129fffa5e023c06d3e4 (patch) | |
tree | e57db0d055cd19085462d9f0a9af4bef2dc9eebb /www | |
parent | downloading metadata over tcp works, asan reports a memory leak about nodes (diff) | |
download | travnik-458ca31cc617831dbe05d129fffa5e023c06d3e4.tar travnik-458ca31cc617831dbe05d129fffa5e023c06d3e4.tar.gz travnik-458ca31cc617831dbe05d129fffa5e023c06d3e4.tar.bz2 travnik-458ca31cc617831dbe05d129fffa5e023c06d3e4.tar.lz travnik-458ca31cc617831dbe05d129fffa5e023c06d3e4.tar.xz travnik-458ca31cc617831dbe05d129fffa5e023c06d3e4.tar.zst travnik-458ca31cc617831dbe05d129fffa5e023c06d3e4.zip |
Diffstat (limited to '')
-rw-r--r-- | www/.gitignore | 3 | ||||
-rw-r--r-- | www/composer.json | 14 | ||||
-rw-r--r-- | www/index.php | 77 |
3 files changed, 94 insertions, 0 deletions
diff --git a/www/.gitignore b/www/.gitignore new file mode 100644 index 0000000..8796548 --- /dev/null +++ b/www/.gitignore @@ -0,0 +1,3 @@ +package-lock.json +default +vendor/ diff --git a/www/composer.json b/www/composer.json new file mode 100644 index 0000000..ed23328 --- /dev/null +++ b/www/composer.json @@ -0,0 +1,14 @@ +{ + "name": "sijanec/travnik", + "description": "web frontend for exploring metainfo files downloaded by travnik", + "type": "project", + "require": { + "rhilip/bencode": "^2.3" + }, + "authors": [ + { + "name": "Anton Luka Šijanec", + "email": "anton@sijanec.eu" + } + ] +} diff --git a/www/index.php b/www/index.php new file mode 100644 index 0000000..2fd5a92 --- /dev/null +++ b/www/index.php @@ -0,0 +1,77 @@ +<?php +require_once "vendor/autoload.php"; +use Rhilip\Bencode\TorrentFile; +use Rhilip\Bencode\ParseException; +if (empty($_REQUEST["h"])) { + if ($handle = opendir("..")) { + echo "<ul>"; + while (false !== ($entry = readdir($handle))) { + if (preg_match("/torrent$/", $entry)) { + $h = htmlspecialchars(explode(".", $entry)[0]); + echo '<li> <a href="?h=' . $h . '">' . $h . '</a>'; + } + } + die(); + closedir($handle); + } else { + die("ne morem brati direktorija"); + } +} +if (!preg_match("/^[a-f0-9A-F]{40}$/", $_REQUEST["h"])) + die('!preg_match("/^[a-f0-9A-F]{40}$/", $_REQUEST["h"])'); +$t = TorrentFile::load("../".$_REQUEST["h"].".torrent"); +?> +<meta charset=UTF-8 /> +<style> +table, td, tr, th { + border: 1px solid gray; +} +</style> +<h1><?= htmlspecialchars($t->getName()) ?></h1> +<title><?= htmlspecialchars($t->getName()) ?></title> +<table> + <tr> + <th>pridobljeno</th> + <td><?= date("d. m. Y. H:i:s", $t->getCreationDate()) ?></td> + <tr> + <th>tip</th> + <td><?= $t->getProtocol() ?></td> + <tr> + <th>datotečni način</th> + <td><?= $t->getFileMode() ?></td> + <?php if ($t->isPrivate()) echo "<tr colspan=2><th style=color:red>zaseben</th>"; ?> + <tr> + <th colspan=2><a href="<?= htmlspecialchars($t->getMagnetLink()) ?>">magnetna povezava</a></th> + <tr> + <th colspan=2><a href=/<?= $_REQUEST["h"] ?>.torrent>torrent datoteka</a></th> + <tr> + <th>velikost</th> + <td><?= number_format($t->getSize()/(1024*1024*1024), 6, ",", "") ?> GiB</td> + <tr> + <th>število datotek</th> + <td><?= $t->getFileCount() ?></td> + <tr> + <th>ip naslov vira</th> + <td><?= htmlspecialchars($t->getRootData()["source"]["ip"]) ?></td> +<?php if ($t->getRootData()["source"]["v"]) { ?> + <tr> + <th>odjemalec vira</th> + <td><?= htmlspecialchars($t->getRootData()["source"]["v"]) ?></td> +<?php } ?> +</table> +<?php +function p ($k, $v) { + if (is_array($v)) { + echo "<li> " . htmlspecialchars($k) . "<ul>"; + foreach ($v as $ke => $va) + p($ke, $va); + echo "</ul>"; + } else { + echo "<li> <b>" . htmlspecialchars($k) . "</b> (" . number_format($v/(1024*1024), 6, ",", "") . " MiB)"; + } +} +echo "<ul>"; +foreach ($t->getFileTree() as $k => $v) + p($k, $v); +echo "</ul>"; +?> |