mirror of
https://github.com/PR0M3TH3AN/VoxVera.git
synced 2026-10-27 09:40:40 +00:00
chore: Final project cleanup, import optimization, and full doc tokenization
This commit is contained in:
1 parent
b0ad915a62
commit
40f7efee38
10 files changed
+101
-74
No files matched your search
+4
-4
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
Vendored
+4
-4
@@ -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.
|
||||
|
||||
@@ -2,7 +2,6 @@ import os
|
||||
import sys
|
||||
import shutil
|
||||
import json
|
||||
import datetime
|
||||
from pathlib import Path
|
||||
import zipfile
|
||||
import time
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
@@ -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>
|
||||
Reference in new issue
Block a user