diff --git a/README.md b/README.md index 88a269f..1180227 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Generate printable flyers with QR codes linking to Tor (.onion) hidden services, * **Interactive setup**: `voxvera init` prompts for metadata or extracts from a PDF form. When editing body text, a small Tkinter GUI window opens with existing content pre-filled, falling back to the user's `$EDITOR` if the GUI isn't available. * **Template support**: `voxvera init --template ` copies built-in templates (`blank`, `voxvera`). -* **Build assets**: `voxvera build [--pdf ] [--download ]` generates HTML, minified JS/CSS, QR codes, and bundles PDFs. +* **Build assets**: `voxvera build [--download ]` generates HTML, minified JS/CSS, QR codes, and optionally bundles a download zip. * **Batch import**: `voxvera import` processes all JSON configs in `imports/`. * **Automatic Tor hosting**: `voxvera serve` publishes via Tor/OnionShare. The .onion address is automatically derived from Tor keys and written into the flyer's tear-off links. Tor ports are auto-detected -- no manual configuration needed. * **All-in-one**: `voxvera quickstart` runs init, build, and serve in sequence. @@ -73,7 +73,7 @@ voxvera quickstart voxvera init # 2. Build flyer assets (HTML, QR codes, PDFs) -voxvera build --pdf form.pdf --download file.zip # optional flags +voxvera build --download file.zip # optional flags # 3. Host via Tor (auto-detects ports, generates .onion address) voxvera serve diff --git a/ci/test-e2e.sh b/ci/test-e2e.sh index 2ea5ecb..4642a0d 100755 --- a/ci/test-e2e.sh +++ b/ci/test-e2e.sh @@ -27,7 +27,7 @@ host_dir="voxvera/host/$subdomain" ls -R "$host_dir" >>"$LOG_DIR/tree.txt" # Verify essential files -for f in index.html config.json nostr.html; do +for f in index.html config.json; do [ -f "$host_dir/$f" ] || { echo "Missing $f in $host_dir" >&2; exit 1; } done echo "Build output verified in $host_dir" diff --git a/host/voxvera/config.json b/host/voxvera/config.json deleted file mode 100644 index 9822f0f..0000000 --- a/host/voxvera/config.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "Vox Vera Printable Flyers", - "subdomain": "voxvera", - "title": "TOP SECRET", - "subtitle": "DO NOT DISTRIBUTE", - "headline": "OPERATION VOX VERA", - "content": "Break free from censorship with VoxVera. An anonymous guerrilla marketing and message-spreading tool. Whether online or in the physical world, it can empower you to spread your ideas boldly, shielded by complete anonymity (if you host over Tor). Download the code, design a flyer site, host it online and amplify your message.\\n\\nUse memetic power to share your ideas in your school, workplace, online communities, or even globally. VoxVera ensures your message resonates far and wide, with tear-off sections featuring unique URLs and QR codes for easy reprinting.\\n\\nPrivacy can be maintained. Flyers can be shared via the Tor network, protecting hoster and users from censorship.\\n\\nJoin us in a revolution that values truth and transparency. Together, we can build a network of informed citizens who are unafraid to speak out.\n", - "url_message": "Follow this link to learn more. Use Tor Browser.", - "url": "https://voxvera.org/", - "tear_off_link": "https://voxvera.org/", - "binary_message": "0110010 0101011 0110010 0111101 0110100" -} diff --git a/host/voxvera/index.html b/host/voxvera/index.html deleted file mode 100644 index cb7bd8d..0000000 --- a/host/voxvera/index.html +++ /dev/null @@ -1 +0,0 @@ -Vox Vera Printable Flyers
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code

Loading...

Loading...


Loading...


Loading content...
Loading message...

Loading...
QR Code

diff --git a/host/voxvera/nostr.html b/host/voxvera/nostr.html deleted file mode 100644 index 41a75d6..0000000 --- a/host/voxvera/nostr.html +++ /dev/null @@ -1 +0,0 @@ -Connect with Me on KeyChat

Nostr

Use a secure file shareing tool like Onion Share or WormHole to send your completed submission form PDF to the following Nostr npub account:

Back to Home

npub1ln8efl52vsyh6lg59c9v3kut56wev489lzcma0sv2mf8nm6jhwjqeteygt
diff --git a/pyproject.toml b/pyproject.toml index 7abbfb7..d281ed5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,6 @@ dependencies = [ "Pillow", "jsmin", "htmlmin2", - "pypdf", ] [project.optional-dependencies] diff --git a/site/example.pdf b/site/example.pdf deleted file mode 100644 index 219b366..0000000 Binary files a/site/example.pdf and /dev/null differ diff --git a/site/index.html b/site/index.html index 119b204..0ef7ebd 100644 --- a/site/index.html +++ b/site/index.html @@ -285,4 +285,11 @@ padding: 20px 0 30px; } -
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code

Loading...

Loading...


Loading...


Loading content...
Loading message...

Loading...
QR Code

Download
\ No newline at end of file +
Use Tor Browser

to help spread this message go to
https://voxvera.org/
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
https://voxvera.org/
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
https://voxvera.org/
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
https://voxvera.org/
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
https://voxvera.org/
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
https://voxvera.org/
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
https://voxvera.org/
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
https://voxvera.org/
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
https://voxvera.org/
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
https://voxvera.org/
click the button below to print
QR Code

TOP SECRET

DO NOT DISTRIBUTE


OPERATION VOX VERA


Break free from censorship with VoxVera. An anonymous guerrilla marketing and message-spreading tool. Whether online or in the physical world, it can empower you to spread your ideas boldly, shielded by complete anonymity (if you host over Tor). Download the code, design a flyer site, host it online and amplify your message. + +Use memetic power to share your ideas in your school, workplace, online communities, or even globally. VoxVera ensures your message resonates far and wide, with tear-off sections featuring unique URLs and QR codes for easy reprinting. + +Privacy can be maintained. Flyers can be shared via the Tor network, protecting hoster and users from censorship. + +Join us in a revolution that values truth and transparency. Together, we can build a network of informed citizens who are unafraid to speak out. +
Get VoxVera and start spreading your message.

https://github.com/PR0M3TH3AN/VoxVera
QR Code

Download
\ No newline at end of file diff --git a/site/nostr.html b/site/nostr.html deleted file mode 100644 index a6c24cc..0000000 --- a/site/nostr.html +++ /dev/null @@ -1,70 +0,0 @@ -Connect with Me on KeyChat

Nostr

Use a secure file shareing tool like Onion Share or WormHole to send your completed submission form PDF to the following Nostr npub account:

Back to Home

npub1ln8efl52vsyh6lg59c9v3kut56wev489lzcma0sv2mf8nm6jhwjqeteygt
\ No newline at end of file diff --git a/site/submission_form.pdf b/site/submission_form.pdf deleted file mode 100644 index d8704f6..0000000 Binary files a/site/submission_form.pdf and /dev/null differ diff --git a/voxvera/host/voxvera/index.html b/test_out.html similarity index 89% rename from voxvera/host/voxvera/index.html rename to test_out.html index a5e992c..4d979c3 100644 --- a/voxvera/host/voxvera/index.html +++ b/test_out.html @@ -285,4 +285,4 @@ padding: 20px 0 30px; } -
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code

Loading...

Loading...


Loading...


Loading content...
Loading message...

Loading...
QR Code

Download
\ No newline at end of file +
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code

Loading...

Loading...


Loading...


Loading content...
Loading message...

Loading...
QR Code

Download
\ No newline at end of file diff --git a/tests/test_cli.py b/tests/test_cli.py index 3f4a1ff..4b31658 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -151,11 +151,11 @@ def test_serve_updates_url(tmp_path, monkeypatch): monkeypatch.setattr(cli, "require_cmd", lambda c: True) orig_build = cli.build_assets - def safe_build_assets(cfg, pdf_path=None, download_path=None): + def safe_build_assets(cfg, download_path=None): dest = cli.ROOT / "host" / json.load(open(cfg))["subdomain"] / "config.json" if Path(cfg) == dest: return - return orig_build(cfg, pdf_path=pdf_path, download_path=download_path) + return orig_build(cfg, download_path=download_path) monkeypatch.setattr(cli, "build_assets", safe_build_assets) monkeypatch.setattr(time, "sleep", lambda x: None) @@ -199,11 +199,11 @@ def test_quickstart_noninteractive(tmp_path, monkeypatch): monkeypatch.setattr(cli, "require_cmd", lambda c: True) orig_build = cli.build_assets - def safe_build_assets(cfg, pdf_path=None, download_path=None): + def safe_build_assets(cfg, download_path=None): dest = cli.ROOT / "host" / json.load(open(cfg))["subdomain"] / "config.json" if Path(cfg) == dest: return - return orig_build(cfg, pdf_path=pdf_path, download_path=download_path) + return orig_build(cfg, download_path=download_path) monkeypatch.setattr(cli, "build_assets", safe_build_assets) monkeypatch.setattr(time, "sleep", lambda x: None) @@ -259,7 +259,7 @@ def test_get_tor_ports_auto_detect_defaults(monkeypatch): def test_build_without_url_skips_qr(tmp_path, monkeypatch, capsys): """Test that build works even without URLs configured initially.""" - repo_root = _setup_tmp(monkeypatch, tmp_path) + _setup_tmp(monkeypatch, tmp_path) # Remove URLs from config config = json.load(open(tmp_path / "src" / "config.json")) @@ -288,7 +288,7 @@ def test_build_without_url_skips_qr(tmp_path, monkeypatch, capsys): def test_build_with_only_url(tmp_path, monkeypatch): """Test that QR codes work when only url (content link) is set.""" - repo_root = _setup_tmp(monkeypatch, tmp_path) + _setup_tmp(monkeypatch, tmp_path) # Set only url (content link) config = json.load(open(tmp_path / "src" / "config.json")) diff --git a/tests/test_e2e.py b/tests/test_e2e.py index 9cbc6d3..f660011 100644 --- a/tests/test_e2e.py +++ b/tests/test_e2e.py @@ -345,11 +345,8 @@ class TestSiteFiles: # Check all expected files exist expected_files = [ "index.html", - "nostr.html", "config.json", "qrcode-content.png", - "example.pdf", - "submission_form.pdf", ] for filename in expected_files: diff --git a/voxvera/build.py b/voxvera/build.py index 76e215c..1b0e568 100644 --- a/voxvera/build.py +++ b/voxvera/build.py @@ -52,8 +52,7 @@ def generate_qr(config_path: Path, output_dir: Path) -> None: def obfuscate_html(input_file: Path, output_file: Path) -> None: """Minify JS inside \ No newline at end of file diff --git a/voxvera/host/voxvera/qrcode-content.png b/voxvera/host/voxvera/qrcode-content.png deleted file mode 100644 index da62055..0000000 Binary files a/voxvera/host/voxvera/qrcode-content.png and /dev/null differ diff --git a/voxvera/host/voxvera/qrcode-tear-offs.png b/voxvera/host/voxvera/qrcode-tear-offs.png deleted file mode 100644 index da62055..0000000 Binary files a/voxvera/host/voxvera/qrcode-tear-offs.png and /dev/null differ diff --git a/voxvera/host/voxvera/submission_form.pdf b/voxvera/host/voxvera/submission_form.pdf deleted file mode 100644 index d8704f6..0000000 Binary files a/voxvera/host/voxvera/submission_form.pdf and /dev/null differ diff --git a/voxvera/src/README.md b/voxvera/src/README.md index b606989..5e9c2e4 100644 --- a/voxvera/src/README.md +++ b/voxvera/src/README.md @@ -3,10 +3,7 @@ This directory contains the source assets used to build flyers: - `index-master.html` -- Main flyer template (HTML/CSS/JS) -- `nostr-master.html` -- Nostr sharing page template - `config.json` -- Default configuration values -- `example.pdf` -- Example PDF included with built flyers -- `submission_form.pdf` -- Submission form included with built flyers - `qrcode-content.png` -- Generated QR code for the content link - `qrcode-tear-offs.png` -- Generated QR code for the tear-off link diff --git a/voxvera/src/config.json b/voxvera/src/config.json deleted file mode 100644 index 7dcc4f3..0000000 --- a/voxvera/src/config.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "Vox Vera Printable Flyers", - "subdomain": "voxvera", - "title": "TOP SECRET", - "subtitle": "DO NOT DISTRIBUTE", - "headline": "OPERATION VOX VERA", - "content": "Break free from censorship with VoxVera. An anonymous guerrilla marketing and message-spreading tool. Whether online or in the physical world, it can empower you to spread your ideas boldly, shielded by complete anonymity (if you host over Tor). Download the code, design a flyer site, host it online and amplify your message. \n\nUse memetic power to share your ideas in your school, workplace, online communities, or even globally. VoxVera ensures your message resonates far and wide, with tear-off sections featuring unique URLs and QR codes for easy reprinting. \n\nPrivacy can be maintained. Flyers can be shared via the Tor network, protecting hoster and users from censorship.\n\nJoin us in a revolution that values truth and transparency. Together, we can build a network of informed citizens who are unafraid to speak out.\n", - "url_message": "Follow this link to learn more. Use Tor Browser.", - "url": "https://voxvera.org/", - "tear_off_link": "https://voxvera.org/", - "binary_message": "0110010 0101011 0110010 0111101 0110100" -} \ No newline at end of file diff --git a/voxvera/src/create_flyer.sh b/voxvera/src/create_flyer.sh deleted file mode 100644 index 3338b50..0000000 --- a/voxvera/src/create_flyer.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash -# Legacy wrapper for voxvera Python CLI - -set -e - -if command -v voxvera >/dev/null 2>&1; then - voxvera "$@" -else - python3 -m voxvera "$@" -fi diff --git a/voxvera/src/example.pdf b/voxvera/src/example.pdf deleted file mode 100644 index 219b366..0000000 Binary files a/voxvera/src/example.pdf and /dev/null differ diff --git a/voxvera/src/generate_qr.sh b/voxvera/src/generate_qr.sh deleted file mode 100644 index 51bf9ef..0000000 --- a/voxvera/src/generate_qr.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -set -e - -CONFIG="${1:-config.json}" - -# Ensure dependencies -command -v jq >/dev/null 2>&1 || { echo "jq is required" >&2; exit 1; } -command -v qrencode >/dev/null 2>&1 || { echo "qrencode is required" >&2; exit 1; } -command -v convert >/dev/null 2>&1 || { echo "ImageMagick convert is required" >&2; exit 1; } - -url=$(jq -r '.url' "$CONFIG") -tear=$(jq -r '.tear_off_link' "$CONFIG") - -[ -n "$url" ] || { echo "URL missing in $CONFIG" >&2; exit 1; } -[ -n "$tear" ] || { echo "tear_off_link missing in $CONFIG" >&2; exit 1; } - -tmp_content=$(mktemp) -tmp_tear=$(mktemp) - -cleanup() { - rm -f "$tmp_content" "$tmp_tear" -} - -trap cleanup EXIT - -qrencode -o "$tmp_content" -s 10 -m 0 "$url" -qrencode -o "$tmp_tear" -s 10 -m 0 "$tear" - -convert "$tmp_content" -resize 128x128 "qrcode-content.png" -convert "$tmp_tear" -resize 128x128 "qrcode-tear-offs.png" - -echo "QR codes generated" diff --git a/voxvera/src/import_from_json.sh b/voxvera/src/import_from_json.sh deleted file mode 100644 index be81d56..0000000 --- a/voxvera/src/import_from_json.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -IMPORT_DIR="imports" -shopt -s nullglob -files=("$IMPORT_DIR"/*.json) - -if [[ ${#files[@]} -eq 0 ]]; then - echo "No JSON files found in $IMPORT_DIR" - exit 0 -fi - -for json in "${files[@]}"; do - echo "Processing $json" - cp "$json" src/config.json - subdomain=$(jq -r '.subdomain' "$json") - dest="host/$subdomain" - rm -rf "$dest" - voxvera build --config src/config.json -done diff --git a/voxvera/src/index-master.html b/voxvera/src/index-master.html index 3080353..15de26b 100644 --- a/voxvera/src/index-master.html +++ b/voxvera/src/index-master.html @@ -4,7 +4,7 @@ - Vox Vera Printable Flyers + {{name}}
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code
Use Tor Browser

to help spread this message go to
Loading...
click the button below to print
QR Code

Loading...

Loading...


Loading...


Loading content...
Loading message...

Loading...
QR Code

Download
\ No newline at end of file diff --git a/voxvera/src/nostr-master.html b/voxvera/src/nostr-master.html deleted file mode 100644 index 0608720..0000000 --- a/voxvera/src/nostr-master.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - Connect with Me on KeyChat - - - -
-

Nostr

-

Use a secure file shareing tool like Onion Share or WormHole to send your completed submission form PDF to the following Nostr npub account:

-

Back to Home

-
npub1ln8efl52vsyh6lg59c9v3kut56wev489lzcma0sv2mf8nm6jhwjqeteygt
- -
- - - - - diff --git a/voxvera/src/nostr.html b/voxvera/src/nostr.html deleted file mode 100644 index a6c24cc..0000000 --- a/voxvera/src/nostr.html +++ /dev/null @@ -1,70 +0,0 @@ -Connect with Me on KeyChat

Nostr

Use a secure file shareing tool like Onion Share or WormHole to send your completed submission form PDF to the following Nostr npub account:

Back to Home

npub1ln8efl52vsyh6lg59c9v3kut56wev489lzcma0sv2mf8nm6jhwjqeteygt
\ No newline at end of file diff --git a/voxvera/src/obfuscate_index.sh b/voxvera/src/obfuscate_index.sh deleted file mode 100644 index d0e3126..0000000 --- a/voxvera/src/obfuscate_index.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -CONFIG_PATH="${1:-config.json}" - -require_cmd() { - command -v "$1" >/dev/null 2>&1 || { - echo "Error: required command '$1' not found" >&2 - exit 1 - } -} - -for cmd in javascript-obfuscator html-minifier-terser node; do - require_cmd "$cmd" -done - -# Detect whether mktemp supports the --suffix option. If not, fall back to a -# portable template-based approach (e.g., on macOS). -if tmp=$(mktemp --suffix=.test 2>/dev/null); then - rm -f "$tmp" - mktemp_with_suffix() { mktemp --suffix="$1"; } -else - mktemp_with_suffix() { mktemp "${TMPDIR:-/tmp}/tmp.XXXXXX$1"; } -fi - -# Input and output file names -input_file="index-master.html" -output_file="index.html" -temp_js_file=$(mktemp_with_suffix .js) # Temporary .js file for extracting JavaScript -temp_js_obfuscated_file=$(mktemp_with_suffix .js) # Temporary file for obfuscated JavaScript -temp_html_file=$(mktemp) # Temporary file for processing HTML without JS - -cleanup() { - rm -f "$temp_js_file" "$temp_js_obfuscated_file" "$temp_html_file" -} - -trap cleanup EXIT - -# Check if the input file exists -if [ ! -f "$input_file" ]; then - echo "Input file $input_file does not exist." - exit 1 -fi - -# Extract embedded JavaScript into a temporary .js file -awk '/ diff --git a/voxvera/templates/voxvera/submission_form.pdf b/voxvera/templates/voxvera/submission_form.pdf deleted file mode 100644 index d8704f6..0000000 Binary files a/voxvera/templates/voxvera/submission_form.pdf and /dev/null differ