Browse Source

Pass arguments via CLI instead of via HTTP

pull/5/head
Miraty 11 months ago
parent
commit
3bf94da058
  1. 18
      README.md
  2. 33
      compil.php
  3. 18
      inc/debut.php
  4. 8
      inc/footer.php
  5. 4
      inc/url.php
  6. 3
      mdp.template.php

18
README.md

@ -6,18 +6,14 @@ Ceci est le code source du générateur de sites statiques qui créé le [site w
Placer les pages dans `<site>/md/<page>.md`. Le format est principalement du Markdown Extra mais il est aussi possible de rajouter de l'HTML et du PHP. Elles sont ensuite transformées par `compil.php` en pages HTML statiques, placées dans `<site>/<page>.html`
`compil.php` prend 2 arguments :
* `pw`, mot de passe définit dans mdp.php
* `site`, nom du dossier du site
* `as`, qui dépend de l'endroit où sera déployé le site
`compil.php <site> <destination>`
Pour déployer en DNS en liant vers `page`, utiliser `as=dns`.
Pour déployer en Onion en liant vert `page`, utiliser `as=onion`.
Pour déployer en DNS en liant vert `page.html`, ignorer `as`.
Avec `site` qui est le dossier contenant le site et pour `destination` :
* Pour déployer en DNS en liant vers `page`, utiliser `dns`.
* Pour déployer en Onion en liant vert `page`, utiliser `onion`.
* Pour déployer en DNS en liant vert `page.html`, ignorer ce dernier argument.
Exemple : http://tructructruc.onion/web/compil.php?as=onion&pw=change-moi&site=antopie
Les droits d'écriture sont requis sur <site>/css et temp/ par l'user qui exécute PHP.
Les droits d'écriture sont requis sur `<site>/css` et `temp/` par l'user qui exécute PHP.
`compil.php` va chercher à utiliser [static-compress](https://github.com/neosmart/static-compress) dans `/usr/local/bin/static-compress` pour compresser les fichiers CSS et HTML créés.
@ -26,6 +22,8 @@ $ cargo install static-compress
$ sudo mv ~/.cargo/bin/static-compress /usr/local/bin/
```
Exemple de commande pour tester le développement en local après avoir modifié le site : `php compil.php antopie local && python3 -m http.server -b 127.0.0.1 -d antopie`
# Bibliothèques utilisées
Le dossier `bibli` contient les dépendances incluses dans le générateur de sites :

33
compil.php

@ -1,32 +1,32 @@
<?php
require "mdp.php";
if (isset($_GET['pw']) AND $_GET['pw'] == $mdp AND isset($_GET['site'])) {
$site = $_GET['site'];
if (php_sapi_name() === "cli") {
define("SITE", $argv[1]);
define("DESTINATION", $argv[2]);
require "bibli/parsedown/Parsedown.php";
require "bibli/parsedown-extra/ParsedownExtra.php";
require "bibli/parsedown-extra-plugin/ParsedownExtraPlugin.php";
$nomsPages = array_diff(scandir($site . "/md"), array('..', '.'));
$nomsPages = array_diff(scandir(SITE . "/md"), array('..', '.'));
require $site . "/pages.inc.php";
require "inc/url.php";
require SITE . "/pages.inc.php";
foreach ($nomsPages as $pageId) {
$pageId = basename($pageId, ".md");
if (!file_exists("temp/" . $site))
mkdir("temp/" . $site, 555);
if (!file_exists("temp/" . SITE))
mkdir("temp/" . SITE, 555);
// pages/exemple.md > temp/exemple.temp
// Exécute le PHP vers du HTML
ob_start();
require $site . "/md/" . $pageId . ".md";
file_put_contents("temp/" . $site . "/" . $pageId . ".temp", ob_get_contents());
require SITE . "/md/" . $pageId . ".md";
file_put_contents("temp/" . SITE . "/" . $pageId . ".temp", ob_get_contents());
ob_end_clean();
// temp/exemple.temp > temp2/exemple.temp2
// Compile le Markdown vers du HTML
$contenuPage = file_get_contents("temp/" . $site . "/" . $pageId . ".temp");
$contenuPage = file_get_contents("temp/" . SITE . "/" . $pageId . ".temp");
$Parsedown = new ParsedownExtraPlugin;
$Parsedown = $Parsedown->setUrlsLinked(false);
@ -34,7 +34,7 @@ if (isset($_GET['pw']) AND $_GET['pw'] == $mdp AND isset($_GET['site'])) {
$Parsedown = $Parsedown->setBreaksEnabled(true);
$contenuPage = $Parsedown->text($contenuPage);
file_put_contents("temp/" . $site . "/" . $pageId . ".temp2", $contenuPage);
file_put_contents("temp/" . SITE . "/" . $pageId . ".temp2", $contenuPage);
// temp2/exemple.temp2 > exemple.html
// Ajoute header et footer au HTML
@ -49,22 +49,21 @@ if (isset($_GET['pw']) AND $_GET['pw'] == $mdp AND isset($_GET['site'])) {
} else if ($pageMetas['type'] == "centré") {
echo "<div class='centre'>";
}
require "temp/" . $site . "/" . $pageId . ".temp2";
require "temp/" . SITE . "/" . $pageId . ".temp2";
if ($pageMetas['type'] == "article") {
echo "</article>";
} else if ($pageMetas['type'] == "centré") {
echo "</div>";
}
require "inc/footer.php";
file_put_contents($site . "/" . $pageId . ".html", ob_get_contents());
file_put_contents(SITE . "/" . $pageId . ".html", ob_get_contents());
ob_end_clean();
}
// exemple.html > exemple.html.gz
// Compresse les fichiers textes statiques HTML & CSS
exec('/usr/local/bin/static-compress -c zopfli "' . $site . '/*.html" "' . $site . '/css/*.css"');
exec('/usr/local/bin/static-compress -c zopfli "' . SITE . '/*.html" "' . SITE . '/*.js" "' . SITE . '/css/*.css"');
} else {
echo "Non authentifié·e, ou pas de site définit";
exit("Must be run from CLI");
}

18
inc/debut.php

@ -1,11 +1,3 @@
<?php
$adresse = basename($_SERVER['PHP_SELF'], '.php');
require_once "url.php";
?>
<!DOCTYPE html>
<html lang="fr">
<head>
@ -19,12 +11,12 @@
require_once 'bibli/less.php/lib/Less/Autoloader.php';
Less_Autoloader::register();
$options = array('cache_dir' => $site . '/css', 'compress' => true);
$options = array('cache_dir' => SITE . '/css', 'compress' => true);
$lessFiles = array('style.less' => '');
$cssFileName = Less_Cache::Get($lessFiles, $options);
?>
<link type="text/css" rel="stylesheet" href="css/<?= $cssFileName ?>">
<?php if ($site == "antopie") { ?>
<?php if (SITE == "antopie") { ?>
<link rel="icon" type="image/webp" href="img/icons/16.webp" sizes="16x16">
<link rel="icon" type="image/webp" href="img/icons/32.webp" sizes="32x32">
<link rel="icon" type="image/webp" href="img/icons/64.webp" sizes="64x64">
@ -41,16 +33,16 @@
<header>
<?php
if ($site == "docs") {
if (SITE == "docs") {
?>
<a id="lienHeader" href=".">
<div class="logo"><?= $site ?></div>
<div class="logo"><?= SITE ?></div>
</a>
<?php
} else if ($site == "antopie") {
} else if (SITE == "antopie") {
?>
<a id="lienHeader" href=".">

8
inc/footer.php

@ -1,6 +1,6 @@
</main>
<?php if ($site == "antopie") { ?>
<?php if (SITE === "antopie") { ?>
<footer class="antopie">
<div class="liensfooter centre">
<div class="lienfooter">
@ -9,7 +9,7 @@
</a>
</div>
<?php if ($_GET['as'] == "onion") { ?>
<?php if (DESTINATION === "onion") { ?>
<div class="lienfooter">
<a href="https://antopie.org/<?= $pageId ?>" class="bouton">
@ -45,13 +45,13 @@
<span class="gomez run"></span>
</div>
</footer>
<?php } else if ($site == "docs") { ?>
<?php } else if (SITE === "docs") { ?>
<footer>
Site créé avec Base Antopie
<br>
Documentation sous <abbr title="Creative Commons Attribution et Partage dans les mêmes conditions">CC BY-SA</abbr>.
<br>
<a href="md/<?= $pageId ?>.md">Source du document</a> Kopimi
<a href="md/<?= $pageId ?>.md">Source du contenu</a> | Kopimi
</footer>
<?php } ?>

4
inc/url.php

@ -1,7 +1,7 @@
<?php
// Les URL n'ont pas le .php sur le site d'Antopie
function formerUrlLocale($page) {
if ($_GET['as'] == "dns" OR $_GET['as'] == "onion") {
if (DESTINATION === "dns" OR DESTINATION === "onion") {
echo $page;
} else {
echo $page . ".html";
@ -10,7 +10,7 @@ function formerUrlLocale($page) {
// Détermine si il faut utiliser les liens en .onion ou pas
function clearnetOrOnion($clearnetUrl, $onionUrl) {
if ($_GET['as'] == "onion") {
if (DESTINATION === "onion") {
return $onionUrl;
} else {
return $clearnetUrl;

3
mdp.template.php

@ -1,3 +0,0 @@
<?php
// Le fichier mdp.php doit être créé sur le modèle de mdp.template.php
$mdp = "change-moi";