|
@@ -0,0 +1,89 @@
|
|
|
+<?php require "../top.inc.php"; ?>
|
|
|
+<p>
|
|
|
+ Ajouter un accès en .onion sur un dossier
|
|
|
+</p>
|
|
|
+
|
|
|
+<form method="post">
|
|
|
+ <label for="dir">Dossier ciblé</label><br>
|
|
|
+ <select required="" name="dir" id="dir">
|
|
|
+ <option value="" disabled="" selected="">---</option>
|
|
|
+
|
|
|
+ <?php
|
|
|
+
|
|
|
+ $fsDirs = listFsDirs($_SESSION['username']);
|
|
|
+ $dbUsedDirs = listDbDirs($_SESSION['username'], "onion", "gemini");
|
|
|
+ $i = 0;
|
|
|
+ $j = 0;
|
|
|
+ $alreadyEnabledDirs = NULL;
|
|
|
+ $notYetEnabledDirs = NULL;
|
|
|
+ foreach ($fsDirs as $fsDir) {
|
|
|
+ if ($dbUsedDirs AND in_array($fsDir, $dbUsedDirs)) {
|
|
|
+ $alreadyEnabledDirs[$i] = $fsDir;
|
|
|
+ $i++;
|
|
|
+ } else {
|
|
|
+ $notYetEnabledDirs[$j] = $fsDir;
|
|
|
+ $j++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!is_null($notYetEnabledDirs)) {
|
|
|
+ foreach ($notYetEnabledDirs as $dir) {
|
|
|
+ echo "<option value='" . $dir . "'>" . $dir . "</option>";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!is_null($alreadyEnabledDirs)) {
|
|
|
+ foreach ($alreadyEnabledDirs as $dir) {
|
|
|
+ echo "<option disabled='' value='" . $dir . "'>" . $dir . "</option>";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ?>
|
|
|
+ </select>
|
|
|
+ <br>
|
|
|
+ <input value="Valider" type="submit">
|
|
|
+</form>
|
|
|
+
|
|
|
+<?php
|
|
|
+
|
|
|
+if (isset($_POST['dir']) AND isset($_SESSION['username'])) {
|
|
|
+
|
|
|
+ if (!in_array($_POST['dir'], $notYetEnabledDirs))
|
|
|
+ exit("ERROR : Wrong value for dir");
|
|
|
+
|
|
|
+ // Generate a .onion address
|
|
|
+ $torConf = file_get_contents("/etc/tor/torrc");
|
|
|
+ $torConf = $torConf . "\nHiddenServiceDir /var/lib/tor/niver/" . $_POST['dir'] . "/\nHiddenServicePort 1965 [::1]:1965";
|
|
|
+ file_put_contents("/etc/tor/torrc", $torConf);
|
|
|
+
|
|
|
+ exec("sudo -u root " . MANIVER_PATH . " reload-tor", $output);
|
|
|
+ addNiverLog("Tor reloaded by " . $_SESSION['username'], $output);
|
|
|
+
|
|
|
+ // Copy generated address to a location readable by PHP
|
|
|
+ exec("sudo -u root " . MANIVER_PATH . " export-tor " . $_SESSION['username'] . " " . $_POST['dir'], $output);
|
|
|
+ addNiverLog("Tor data exported by " . $_SESSION['username'], $output);
|
|
|
+
|
|
|
+ // Get the address generated by Tor
|
|
|
+ $onion = file_get_contents("/srv/hyper/" . $_SESSION['username'] . "/hyper/" . $_POST['dir'] . "/hostname");
|
|
|
+ $onion = str_replace(array("\r","\n"), "", $onion);
|
|
|
+
|
|
|
+ // Store it in the database
|
|
|
+ addSite($_SESSION['username'], $_POST['dir'], $onion, "onion", "gemini");
|
|
|
+
|
|
|
+ $conf = "# START NIVERSITE
|
|
|
+[" . $onion . "]
|
|
|
+root=/srv/hyper/" . $_SESSION['username'] . "/hyper/" . $_POST['dir'] . "
|
|
|
+# STOP NIVERSITE
|
|
|
+";
|
|
|
+ file_put_contents("/etc/gmnisrv.ini", $conf, FILE_APPEND);
|
|
|
+
|
|
|
+ // Restart the gmnisrv daemon (as there is no reload support)
|
|
|
+ exec("sudo " . MANIVER_PATH . " restart-gmnisrv");
|
|
|
+
|
|
|
+ // Tell the user their site address
|
|
|
+ echo "<p>L'adresse de votre capsule Onion Gemini est :<br><a href='http://" . $onion . "'<code>http://" . $onion . "</code></a></p>";
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+?>
|
|
|
+
|
|
|
+<?php require "../bottom.inc.php"; ?>
|