chore: Final project cleanup, import optimization, and full doc tokenization

This commit is contained in:
thePR0M3TH3AN committed 2026-03-13 15:44:30 -04:00
1 parent b0ad915a62
commit 40f7efee38
10 files changed
+101 -74

No files matched your search

+4 -4
View File
@@ -70,16 +70,16 @@ voxvera manage
```
Features:
- **--- Create New Site/Flyer ---**: Start the full setup sequence.
- **Start/Stop All Sites**: Launch or shut down every flyer in your fleet at once.
- **--- Neue Website/Flyer erstellen ---**: Start the full setup sequence.
- **--- Alle Websites starten ---**: Launch or shut down every flyer in your fleet at once.
- **Real-time Status**: View active `.onion` URLs and Tor bootstrapping progress indicators.
- **Individual Control**: Export specific sites to ZIP or delete them.
- **Individual Control**: Als Zip exportieren specific sites to ZIP or delete them.
## Universal Mirroring (Viral Distribution)
To ensure VoxVera remains accessible even if central repositories are censored, every flyer acts as a mirror for the tool.
When you host a flyer, the **"Download Tool & Source"** button on the landing page provides a `voxvera-portable.zip` containing:
When you host a flyer, the **"Tool & Quellcode herunterladen"** button on the landing page provides a `voxvera-portable.zip` containing:
- The full source code and all supported languages.
- All Python dependencies (pre-vendored).
- Cross-platform Tor binaries.
+2 -2
View File
@@ -71,9 +71,9 @@ voxvera manage
Features:
- **--- Create New Site/Flyer ---**: Start the full setup sequence.
- **Start/Stop All Sites**: Launch or shut down every flyer in your fleet at once.
- **--- Start All Sites ---**: Launch or shut down every flyer in your fleet at once.
- **Real-time Status**: View active `.onion` URLs and Tor bootstrapping progress indicators.
- **Individual Control**: Export specific sites to ZIP or delete them.
- **Individual Control**: Export to Zip specific sites to ZIP or delete them.
## Universal Mirroring (Viral Distribution)
+4 -4
View File
@@ -70,16 +70,16 @@ voxvera manage
```
Features:
- **--- Create New Site/Flyer ---**: Start the full setup sequence.
- **Start/Stop All Sites**: Launch or shut down every flyer in your fleet at once.
- **--- Crear Nuevo Sitio/Volante ---**: Start the full setup sequence.
- **--- Iniciar Todos los Sitios ---**: Launch or shut down every flyer in your fleet at once.
- **Real-time Status**: View active `.onion` URLs and Tor bootstrapping progress indicators.
- **Individual Control**: Export specific sites to ZIP or delete them.
- **Individual Control**: Exportar a Zip specific sites to ZIP or delete them.
## Universal Mirroring (Viral Distribution)
To ensure VoxVera remains accessible even if central repositories are censored, every flyer acts as a mirror for the tool.
When you host a flyer, the **"Download Tool & Source"** button on the landing page provides a `voxvera-portable.zip` containing:
When you host a flyer, the **"Descargar Herramienta y Código"** button on the landing page provides a `voxvera-portable.zip` containing:
- The full source code and all supported languages.
- All Python dependencies (pre-vendored).
- Cross-platform Tor binaries.
+4 -4
View File
@@ -70,16 +70,16 @@ voxvera manage
```
Features:
- **--- Create New Site/Flyer ---**: Start the full setup sequence.
- **Start/Stop All Sites**: Launch or shut down every flyer in your fleet at once.
- **{{t('cli.manage_create_new')}}**: Start the full setup sequence.
- **{{t('cli.manage_start_all')}}**: Launch or shut down every flyer in your fleet at once.
- **Real-time Status**: View active `.onion` URLs and Tor bootstrapping progress indicators.
- **Individual Control**: Export specific sites to ZIP or delete them.
- **Individual Control**: {{t('cli.manage_action_export')}} specific sites to ZIP or delete them.
## Universal Mirroring (Viral Distribution)
To ensure VoxVera remains accessible even if central repositories are censored, every flyer acts as a mirror for the tool.
When you host a flyer, the **"Download Tool & Source"** button on the landing page provides a `voxvera-portable.zip` containing:
When you host a flyer, the **"{{t('web.download_button')}}"** button on the landing page provides a `voxvera-portable.zip` containing:
- The full source code and all supported languages.
- All Python dependencies (pre-vendored).
- Cross-platform Tor binaries.
-1
View File
@@ -2,7 +2,6 @@ import os
import sys
import shutil
import json
import datetime
from pathlib import Path
import zipfile
import time
-1
View File
@@ -1,5 +1,4 @@
import sys
import os
from pathlib import Path
# Add the vendor directory to sys.path so we can run without pip install
-5
View File
@@ -479,7 +479,6 @@ def serve(config_path: str) -> str | None:
f.write(str(proc.pid))
try:
import time
import re as _re
onion_url = None
@@ -629,7 +628,6 @@ def import_site(zip_path: str):
def import_multiple_sites(source_dir: str = None):
"""Import all zip files from a directory (defaults to ~/voxvera-exports)."""
import glob
if not source_dir:
source_dir = get_export_dir()
@@ -779,8 +777,6 @@ def vendorize():
def batch_import_configs():
import glob
files = sorted(glob.glob(str(ROOT / "imports" / "*.json")))
if not files:
print("No JSON files found in imports")
@@ -1023,7 +1019,6 @@ def choose_language(current_lang: str = None) -> str:
def main(argv=None):
import glob
parser = argparse.ArgumentParser(prog="voxvera")
parser.add_argument(
"--config",
Whitespace-only changes.
Binary file not shown.
+87 -53
View File
@@ -53,7 +53,7 @@
margin-top: 20px;
}
.print-button {
.print-button, .download-button, .lang-select {
padding: 10px 20px;
font-size: 14px;
cursor: pointer;
@@ -61,23 +61,16 @@
color: #fff;
border: none;
border-radius: 0px;
font-family: 'Courier New', Courier, monospace;
}
.print-button:hover {
background-color: #444;
.lang-select {
background-color: #f0f0f0;
color: #000;
border: 1px solid #000;
}
.download-button {
padding: 10px 20px;
font-size: 14px;
cursor: pointer;
background-color: #000;
color: #fff;
border: none;
border-radius: 0px;
}
.download-button:hover {
.print-button:hover, .download-button:hover {
background-color: #444;
}
@@ -259,6 +252,7 @@
margin: 0;
padding: 0;
overflow: hidden;
display: block;
}
.container {
@@ -272,12 +266,8 @@
overflow: hidden;
}
.print-button {
display: none;
}
.download-button {
display: none;
.print-button, .download-button, .lang-select, .button-bar {
display: none !important;
}
body {
@@ -292,6 +282,48 @@
}
</style>
<script>
// VoxVera Multi-Language Engine
const locales = {"de": {"meta": {"language_name": "Deutsch", "flag": "\ud83c\udde9\ud83c\uddea"}, "web": {"tear_off_tor_browser": "Tor-Browser verwenden", "tear_off_desc": "um diese Nachricht zu verbreiten, gehen Sie zu", "tear_off_footer": "Klicken Sie auf die Schaltfl\u00e4che unten zum Drucken", "built_with": "erstellt mit", "print_button": "Flyer drucken", "download_button": "Tool & Quellcode herunterladen"}}, "en": {"meta": {"language_name": "English", "flag": "\ud83c\uddfa\ud83c\uddf8"}, "web": {"tear_off_tor_browser": "Use Tor Browser", "tear_off_desc": "to help spread this message go to", "tear_off_footer": "click the button below to print", "built_with": "built with", "print_button": "Print this page", "download_button": "Download Tool & Source"}}, "es": {"meta": {"language_name": "Espa\u00f1ol", "flag": "\ud83c\uddea\ud83c\uddf8"}, "web": {"tear_off_tor_browser": "Use el Navegador Tor", "tear_off_desc": "para ayudar a difundir este mensaje vaya a", "tear_off_footer": "haga clic en el bot\u00f3n de abajo para imprimir", "built_with": "construido con", "print_button": "Imprimir volante", "download_button": "Descargar Herramienta y C\u00f3digo"}}}; // Injected at build time
function t(path, lang) {
const parts = path.split('.');
let val = locales[lang];
for (const part of parts) {
if (!val) return path;
val = val[part];
}
return val || path;
}
function setLanguage(lang) {
if (!locales[lang]) lang = 'en';
localStorage.setItem('voxvera_lang', lang);
document.querySelectorAll('[data-i18n]').forEach(el => {
const path = el.getAttribute('data-i18n');
el.innerText = t(path, lang);
});
document.getElementById('lang-selector').value = lang;
document.documentElement.lang = lang;
}
window.onload = () => {
const selector = document.getElementById('lang-selector');
// Populate selector
Object.keys(locales).forEach(code => {
const opt = document.createElement('option');
opt.value = code;
opt.innerText = `${locales[code].meta.flag} ${locales[code].meta.language_name}`;
selector.appendChild(opt);
});
const savedLang = localStorage.getItem('voxvera_lang');
const browserLang = navigator.language.split('-')[0];
const defaultLang = savedLang || (locales[browserLang] ? browserLang : 'en');
setLanguage(defaultLang);
};
</script>
</head>
<body>
@@ -299,21 +331,22 @@
<div class="left-tear-offs">
<div class="tear-off">
<div class="tear-off-text">
Use Tor Browser<br><br>
to help spread this message go to<br>
<span data-i18n="web.tear_off_tor_browser">Use Tor Browser</span><br><br>
<span data-i18n="web.tear_off_desc">to help spread this message go to</span><br>
<a class="tear-off-link" href="http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion" target="_blank">http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion</a><br>
click the button below to print
<span data-i18n="web.tear_off_footer">click the button below to print</span>
</div>
<div class="qr-code">
<img src="qrcode-tear-offs.png" alt="QR Code">
</div>
</div>
<!-- Repeat for other tear-offs -->
<div class="tear-off">
<div class="tear-off-text">
Use Tor Browser<br><br>
to help spread this message go to<br>
<span data-i18n="web.tear_off_tor_browser">Use Tor Browser</span><br><br>
<span data-i18n="web.tear_off_desc">to help spread this message go to</span><br>
<a class="tear-off-link" href="http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion" target="_blank">http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion</a><br>
click the button below to print
<span data-i18n="web.tear_off_footer">click the button below to print</span>
</div>
<div class="qr-code">
<img src="qrcode-tear-offs.png" alt="QR Code">
@@ -321,10 +354,10 @@
</div>
<div class="tear-off">
<div class="tear-off-text">
Use Tor Browser<br><br>
to help spread this message go to<br>
<span data-i18n="web.tear_off_tor_browser">Use Tor Browser</span><br><br>
<span data-i18n="web.tear_off_desc">to help spread this message go to</span><br>
<a class="tear-off-link" href="http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion" target="_blank">http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion</a><br>
click the button below to print
<span data-i18n="web.tear_off_footer">click the button below to print</span>
</div>
<div class="qr-code">
<img src="qrcode-tear-offs.png" alt="QR Code">
@@ -332,10 +365,10 @@
</div>
<div class="tear-off">
<div class="tear-off-text">
Use Tor Browser<br><br>
to help spread this message go to<br>
<span data-i18n="web.tear_off_tor_browser">Use Tor Browser</span><br><br>
<span data-i18n="web.tear_off_desc">to help spread this message go to</span><br>
<a class="tear-off-link" href="http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion" target="_blank">http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion</a><br>
click the button below to print
<span data-i18n="web.tear_off_footer">click the button below to print</span>
</div>
<div class="qr-code">
<img src="qrcode-tear-offs.png" alt="QR Code">
@@ -343,10 +376,10 @@
</div>
<div class="tear-off">
<div class="tear-off-text">
Use Tor Browser<br><br>
to help spread this message go to<br>
<span data-i18n="web.tear_off_tor_browser">Use Tor Browser</span><br><br>
<span data-i18n="web.tear_off_desc">to help spread this message go to</span><br>
<a class="tear-off-link" href="http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion" target="_blank">http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion</a><br>
click the button below to print
<span data-i18n="web.tear_off_footer">click the button below to print</span>
</div>
<div class="qr-code">
<img src="qrcode-tear-offs.png" alt="QR Code">
@@ -354,10 +387,10 @@
</div>
<div class="tear-off">
<div class="tear-off-text">
Use Tor Browser<br><br>
to help spread this message go to<br>
<span data-i18n="web.tear_off_tor_browser">Use Tor Browser</span><br><br>
<span data-i18n="web.tear_off_desc">to help spread this message go to</span><br>
<a class="tear-off-link" href="http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion" target="_blank">http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion</a><br>
click the button below to print
<span data-i18n="web.tear_off_footer">click the button below to print</span>
</div>
<div class="qr-code">
<img src="qrcode-tear-offs.png" alt="QR Code">
@@ -365,10 +398,10 @@
</div>
<div class="tear-off">
<div class="tear-off-text">
Use Tor Browser<br><br>
to help spread this message go to<br>
<span data-i18n="web.tear_off_tor_browser">Use Tor Browser</span><br><br>
<span data-i18n="web.tear_off_desc">to help spread this message go to</span><br>
<a class="tear-off-link" href="http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion" target="_blank">http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion</a><br>
click the button below to print
<span data-i18n="web.tear_off_footer">click the button below to print</span>
</div>
<div class="qr-code">
<img src="qrcode-tear-offs.png" alt="QR Code">
@@ -376,10 +409,10 @@
</div>
<div class="tear-off">
<div class="tear-off-text">
Use Tor Browser<br><br>
to help spread this message go to<br>
<span data-i18n="web.tear_off_tor_browser">Use Tor Browser</span><br><br>
<span data-i18n="web.tear_off_desc">to help spread this message go to</span><br>
<a class="tear-off-link" href="http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion" target="_blank">http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion</a><br>
click the button below to print
<span data-i18n="web.tear_off_footer">click the button below to print</span>
</div>
<div class="qr-code">
<img src="qrcode-tear-offs.png" alt="QR Code">
@@ -387,10 +420,10 @@
</div>
<div class="tear-off">
<div class="tear-off-text">
Use Tor Browser<br><br>
to help spread this message go to<br>
<span data-i18n="web.tear_off_tor_browser">Use Tor Browser</span><br><br>
<span data-i18n="web.tear_off_desc">to help spread this message go to</span><br>
<a class="tear-off-link" href="http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion" target="_blank">http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion</a><br>
click the button below to print
<span data-i18n="web.tear_off_footer">click the button below to print</span>
</div>
<div class="qr-code">
<img src="qrcode-tear-offs.png" alt="QR Code">
@@ -398,10 +431,10 @@
</div>
<div class="tear-off">
<div class="tear-off-text">
Use Tor Browser<br><br>
to help spread this message go to<br>
<span data-i18n="web.tear_off_tor_browser">Use Tor Browser</span><br><br>
<span data-i18n="web.tear_off_desc">to help spread this message go to</span><br>
<a class="tear-off-link" href="http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion" target="_blank">http://5gwnlvdopooskthgkvgiwdrcmdgd5uv7yrkajpwa6jdrz6oxnhyjdeqd.onion</a><br>
click the button below to print
<span data-i18n="web.tear_off_footer">click the button below to print</span>
</div>
<div class="qr-code">
<img src="qrcode-tear-offs.png" alt="QR Code">
@@ -432,14 +465,15 @@ Join us in a revolution that values truth and transparency. Together, we can bui
</div>
<hr>
<div class="footer">
<p class="credit">built with <a href="https://github.com/PR0M3TH3AN/VoxVera">voxvera</a></p>
<p class="credit"><span data-i18n="web.built_with">built with</span> <a href="https://github.com/PR0M3TH3AN/VoxVera">voxvera</a></p>
<p class="binary" id="binary-message">0110010 0101011 0110010 0111101 0110100</p>
</div>
</div>
</div>
<div class="button-bar">
<button class="print-button" onclick="window.print()">Print this page</button>
<a class="download-button" href="download/download.zip" download>Download</a>
<button class="print-button" onclick="window.print()" data-i18n="web.print_button">Print Flyer</button>
<a class="download-button" href="download/voxvera-portable.zip" download data-i18n="web.download_button">Download</a>
<select class="lang-select" id="lang-selector" onchange="setLanguage(this.value)"></select>
</div>
</body>
</html>