a little cleaning

This commit is contained in:
qo-op 2021-03-15 17:16:52 +01:00
parent 39200808a1
commit 02861744f5
16 changed files with 470 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

5
www/boris/cat.php Normal file
View File

@ -0,0 +1,5 @@
<?php
exec('cat ./{me,swarm}/.*/astroport/kodi/vstream/YASTRXBIAN | sort | uniq | tail -n +2', $files);
echo '<pre>'; print_r($files); echo '</pre>';

20
www/boris/conf.php Normal file
View File

@ -0,0 +1,20 @@
<?php
define('HOST', '127.0.0.1:8181');
/*
Youtube Thumbnails
maxresdefault Full resolution image matching the uploaded. This image will not always exist.
sddefault 640x480
hqdefault 480x360 Large Preview
mqdefault 320x180 Large Preview
default 120x 90 Large Preview
0 480x360 Large Preview
1 120x 90 First small thumbnail
2 120x 90 Second small thumbnail
3 120x 90 Third small thumbnail
*/
define('YOUTUBE_THUMB', 'https://i.ytimg.com/vi/%s/mqdefault.jpg');

104
www/boris/crowdbunker.css Normal file
View File

@ -0,0 +1,104 @@
:root {
--pink: hsl(338.5, 72.8%, 36.1%);
--canard: hsl(200.8, 100%, 9.6%);
}
body {
background: #121212;
color: white;
margin: 0;
padding: 0;
font-family: Roboto,sans-serif;
}
header {
background: var(--canard);
overflow: hidden;
margin-bottom: 2rem;
}
header * {
font-size: 1.5rem;
padding: 0.5rem;
margin: 0;
color: var(--pink);
text-decoration: none;
}
header span {
color: white;
}
main {
width: 80%;
margin: auto;
}
#videosList {
display: grid;
grid-gap: 1rem 1rem;
grid-auto-flow: row;
grid-template-columns: 322px 322px 322px;
list-style: none;
margin: 0;
padding: 0;
}
#videosList li {
background: var(--canard);
border-color: var(--pink);
border-radius: 0.25rem;
border-width: 1px;
border-style: solid;
overflow: hidden;
}
#videosList .video-title {
padding: 0.5rem 1rem;
}
.video-title,
.video-title a,
.video-title a:visited {
color: white;
font-weight: bold;
text-decoration: none;
}
article {
border-radius: 0.25rem;
background: hsl(200.8, 100%, 9.6%);
width: 58.3%;
margin: auto;
overflow: hidden;
}
article video {
width: 100%;
max-height: 50vh;
background: black;
}
article .video-title {
font-weight: bold;
padding: 1rem 1rem;
font-size: 1.25rem;
margin: 0;
}

66
www/boris/functions.php Normal file
View File

@ -0,0 +1,66 @@
<?php
function getCollectionType ($filename) {
switch (substr($filename, 0, 1)) {
case 'F': return 'Films';
case 'Y': return 'Youtube';
}
}
function pingFile ($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
//curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return ($httpcode>=200 && $httpcode<300);
}
function guessTypeFromFilename ($filename) {
$ext = substr($filename, (strrpos($filename, '.') + 1));
switch ($ext) {
case 'mkv':
$type = 'video/mkv';
break;
case 'flv':
$type = 'video/flv';
break;
case 'avi':
$type = 'video/x-msvideo';
break;
case 'webm':
$type = 'video/webm';
break;
case 'mkv':
$type = 'video/x-matroska';
break;
case '3gp':
$type = 'video/3gp';
break;
case 'ogv':
$type = 'video/ogv';
break;
default:
$type = 'video/mp4';
break;
}
return $type;
}

View File

@ -0,0 +1,3 @@
#!/bin/bash
cat ./{me,swarm}/.*/astroport/kodi/vstream/YASTRXBIAN | sort | uniq | tail -n +2

2
www/boris/index.php Normal file
View File

@ -0,0 +1,2 @@
<?php
header('Location: youtube.php');

71
www/boris/install.sh Executable file
View File

@ -0,0 +1,71 @@
#!/bin/bash
########################################################################
# Author: boris
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
########################################################################
MY_PATH="`dirname \"$0\"`" # relative
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
ME="${0##*/}"
YOU=$(ps auxf --sort=+utime | grep -w ipfs | grep -v -E 'color=auto|grep' | tail -n 1 | cut -d " " -f 1) && [[ ! $YOU ]] && echo "ipfs NOT RUNNING. EXIT" && exit 1
G1PUB=$(cat ~/.zen/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2) && [[ ! $G1PUB ]] && echo "ERREUR G1PUB. EXIT" && exit 1
IPFSNODEID=$(ipfs id -f='<id>\n')
[[ $(which apache2) ]] && echo "Apache est installé. Le plugin nécessite nginx. EXIT" && exit 1
[[ $(netstat -tan | grep ':10111 ') ]] && echo "Serveur web existant sur port 10111. Installation manuelle recommandée... EXIT" && exit 1
########################################################################
## INSTALL nginx + php + mariadb + ...
sudo apt-get update -y
sudo apt-get install mariadb-server nginx python3-certbot-nginx certbot ssl-cert php-imap php-cli php-curl php-sqlite3 php-gd php-json php-xml php-mbstring php-gettext php-mysql php-fpm -y
#######################################################################
## CREATE symlinks for ~/.zen/www/swarm & me
mkdir -p ~/.zen/www/boris && cd ~/.zen/www/boris
ln -s ../ipfs_swarm swarm
ln -s ../ipfs me
########################################################################
## ACTIVATE sites-available/astroport
cd /etc/nginx/sites-enabled
sudo ln -s ../sites-available/astroport astroport
########################################################################
## CREATE site config file
printf "
server {
listen 10111 default_server;
listen [::]:10111 default_server;
root " | sudo tee /etc/nginx/sites-available/astroport
printf ~/.zen/www/boris | sudo tee -a /etc/nginx/sites-available/astroport
printf ";
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files \$uri \$uri/ =404;
}
index index.php;
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
}
}
" | sudo tee -a /etc/nginx/sites-available/astroport

70
www/boris/swarm_files.php Normal file
View File

@ -0,0 +1,70 @@
<?php
require_once('conf.php');
require_once('functions.php');
$dir = scandir("swarm", SCANDIR_SORT_DESCENDING) or die('fail');
array_pop($dir); // .
array_pop($dir); // ..
$swarm = array();
foreach ($dir as $d) {
$fst = substr($d, 0, 1);
if ($fst == '.') {
$swarm[] = $d;
}
}
foreach ($swarm as $peer) {
$peerName = file_get_contents('swarm/' . $peer . '/G1SSB/_g1.astroport_title');
echo '<h2>'. $peerName . ' ['. substr($peer, 0, 5) . '…' . substr($peer, -4) . ']</h2>';
$files = scandir('swarm/' . $peer . '/astroport/kodi/vstream');
foreach ($files as $f) {
echo '<h3>' . getCollectionType($f) . '</h3>';
$collection = file_get_contents('swarm/' . $peer . '/astroport/kodi/vstream/' . $f);
$collection = trim($collection);
$videos = explode("\n", $collection);
$videos = array_reverse($videos);
array_pop($videos);
echo '<ul>';
foreach ($videos as $v) {
list($a, $b, $c, $videoName, $e, $g, $h, $m, $videoURI) = explode(";", $v);
$videoURL = 'http://'. HOST. $videoURI;
$mimeType = guessTypeFromFilename($videoURL);
if ($mimeType == 'video/mp4') {
echo '<li>';
echo '
<a href="'. $videoURL . '">' . $videoName . '</a><br />
('. $mimeType . ')<br />
<video controls width="320" height="240" preload="none">
<source src="'. $videoURL .'" type="'. $mimeType .'">
<a href="'. $videoURL . '">' . $videoName . '</a>
</video>';
echo '</li>';
}
}
}
}

80
www/boris/youtube.php Normal file
View File

@ -0,0 +1,80 @@
<?php
require_once('conf.php');
require_once('functions.php');
$videosList = array();
exec("/bin/bash -c './get_youtube_videos.sh'", $videos);
$videos = array_reverse($videos);
foreach ($videos as $v) {
list($a, $youtubeID, $c, $videoName, $e, $src, $h, $quality, $videoURI) = explode(";", $v);
$videoURL = 'http://'. HOST. $videoURI;
$mimeType = guessTypeFromFilename($videoURI);
if ($mimeType == 'video/mp4') {
$videosList[] = [
'mime' => $mimeType,
'url' => $videoURL,
'uri' => $videoURI,
'name' => $videoName,
'youtubeID' => $youtubeID
];
}
}
?><!DOCTYPE html>
<html>
<head>
<title>AstroCrowdBuster</title>
<link rel="stylesheet" href="crowdbunker.css" type="text/css" />
<link rel="icon" type="image/png" href="/astrocrowdbunker.png" />
</head>
<body>
<header>
<h1>
<a href="youtube.php"><span>Astroport</span> × <span>Crowdbunker</span></a>
</h1>
</header>
<main>
<?php
echo '<ul id="videosList">';
foreach ($videosList as $video) {
echo '<li>';
$href = 'youtube_watch.php?uri='. $video['uri'] . '&amp;name='. urlencode($video['name']) .'&mime='. $video['mime'];
echo '
<a href="'. $href .'">
<img src="'. sprintf(YOUTUBE_THUMB, $video['youtubeID']) . '" alt="'. $video['name'] . '" />
</a>
<p class="video-title">
<a href="'. $href .'">
' . $video['name'] . '
</a>
</p>';
echo '</li>';
}
echo '</ul>';
?>
</main>
</body>
</html>

View File

@ -0,0 +1,43 @@
<?php
require_once('functions.php');
require_once('conf.php');
$videoURL = 'http://'. HOST. htmlentities($_GET['uri']);
$videoName = htmlentities(urldecode($_GET['name']));
$videoMIME = htmlentities($_GET['mime']);
?><!DOCTYPE html>
<html>
<head>
<title>AstroCrowdBuster</title>
<link rel="stylesheet" href="crowdbunker.css" type="text/css" />
<link rel="icon" type="image/png" href="/astrocrowdbunker.png" />
</head>
<body>
<header>
<h6>
<a href="youtube.php"><span>Astroport</span> × <span>Crowdbunker</span></a>
</h6>
</header>
<main>
<?php
echo '
<article>
<video autoplay="autoplay" controls>
<source src="'. $videoURL .'" type="'. $videoMIME .'">
<a href="'. $videoURL . '">' . $videoName . '</a>
</video>
<h1 class="video-title">
' . $videoName . '
</h1>
</article>';
?>
</main>
</body>
</html>

0
www/multitube/index.php Normal file
View File

View File

@ -1,3 +1,9 @@
DEPRECATED - TO REMOVE
Maintenant les fichiers index sont accessibles par la passerelle IPFS
---
Ce répertoire contient les INDEX des liens de streaming utilisés par le plugin Vstream, site "ASTROPORT" Ce répertoire contient les INDEX des liens de streaming utilisés par le plugin Vstream, site "ASTROPORT"
Il est rendu accessible au travers de nginx http://localhost:10021/ tel que configuré dans ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py Il est rendu accessible au travers de nginx http://localhost:10021/ tel que configuré dans ~/.kodi/addons/plugin.video.vstream/resources/sites/astroport.py