summaryrefslogtreecommitdiffstats
path: root/build-bundle.sh
diff options
context:
space:
mode:
authorgabrix73 <gabriel1@frozenstar.info>2026-04-10 16:10:48 +0200
committergabrix73 <gabriel1@frozenstar.info>2026-04-10 16:10:48 +0200
commit88375da30ea667ec25c2000874557fcc4785a558 (patch)
tree71364a43230977481c6d3280246aa8bb48562bdc /build-bundle.sh
downloadkhimera-88375da30ea667ec25c2000874557fcc4785a558.tar.gz
khimera-88375da30ea667ec25c2000874557fcc4785a558.tar.xz
khimera-88375da30ea667ec25c2000874557fcc4785a558.zip
Initial commit: Veilith v0.9 - P2P Encrypted Messenger
Military-grade secure messenger with: - End-to-End Encryption (Noise Protocol XX) - Forward Secrecy (automatic session rotation) - Anti-Traffic Analysis (padding + cover traffic) - Secure Deletion (DOD 5220.22-M) - Tor Integration (embedded with bridge support) - Portable Mode (no installation required) Generated with Claude Code
Diffstat (limited to 'build-bundle.sh')
-rwxr-xr-xbuild-bundle.sh384
1 files changed, 384 insertions, 0 deletions
diff --git a/build-bundle.sh b/build-bundle.sh
new file mode 100755
index 0000000..d848fd4
--- /dev/null
+++ b/build-bundle.sh
@@ -0,0 +1,384 @@
+#!/bin/bash
+# Veilith Portable - USB Bundle Builder
+# Creates a complete multi-platform USB bundle
+
+set -e
+
+# Colors
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+CYAN='\033[0;36m'
+NC='\033[0m'
+
+# Configuration
+VERSION="0.9"
+BUNDLE_NAME="veilith-usb-v${VERSION}"
+BUILD_DATE=$(date +%Y%m%d)
+
+echo -e "${CYAN}"
+echo "╔══════════════════════════════════════════════════════╗"
+echo "║ ║"
+echo "║ VEILITH USB BUNDLE BUILDER v${VERSION} ║"
+echo "║ Multi-Platform Portable Distribution ║"
+echo "║ ║"
+echo "╚══════════════════════════════════════════════════════╝"
+echo -e "${NC}"
+echo ""
+
+# Clean old bundle
+echo -e "${YELLOW}[Clean]${NC} Removing old bundle..."
+rm -rf "$BUNDLE_NAME"
+echo -e "${GREEN}✓${NC} Clean complete"
+echo ""
+
+# Create bundle structure
+echo -e "${YELLOW}[Structure]${NC} Creating USB bundle structure..."
+mkdir -p "$BUNDLE_NAME"/{Windows,Linux,Android,data,tor,temp,docs}
+echo -e "${GREEN}✓${NC} Directories created"
+echo ""
+
+# Build executables
+echo -e "${BLUE}╔══════════════════════════════════════════════════════╗${NC}"
+echo -e "${BLUE}║ Building Executables ║${NC}"
+echo -e "${BLUE}╚══════════════════════════════════════════════════════╝${NC}"
+echo ""
+
+# Install dependencies first
+echo -e "${YELLOW}[Dependencies]${NC} Installing Go dependencies..."
+go mod download
+echo -e "${GREEN}✓${NC} Dependencies ready"
+echo ""
+
+# Build Linux
+echo -e "${BLUE}[1/2]${NC} Building Linux executable..."
+echo " Target: Linux AMD64"
+echo " Output: $BUNDLE_NAME/Linux/veilith-linux"
+
+CGO_ENABLED=1 \
+GOOS=linux \
+GOARCH=amd64 \
+go build \
+ -ldflags="-s -w -X main.Version=${VERSION} -X main.BuildDate=${BUILD_DATE}" \
+ -o "$BUNDLE_NAME/Linux/veilith-linux" \
+ ./veilith-main.go
+
+if [ $? -eq 0 ]; then
+ chmod +x "$BUNDLE_NAME/Linux/veilith-linux"
+ SIZE=$(du -h "$BUNDLE_NAME/Linux/veilith-linux" | cut -f1)
+ echo -e "${GREEN}✓${NC} Linux build complete (${SIZE})"
+else
+ echo -e "${RED}✗${NC} Linux build failed"
+ exit 1
+fi
+echo ""
+
+# Build Windows (if mingw available)
+echo -e "${BLUE}[2/2]${NC} Building Windows executable..."
+
+if command -v x86_64-w64-mingw32-gcc &> /dev/null; then
+ echo " Target: Windows AMD64"
+ echo " Output: $BUNDLE_NAME/Windows/veilith.exe"
+
+ CGO_ENABLED=1 \
+ GOOS=windows \
+ GOARCH=amd64 \
+ CC=x86_64-w64-mingw32-gcc \
+ go build \
+ -ldflags="-s -w -H windowsgui -X main.Version=${VERSION} -X main.BuildDate=${BUILD_DATE}" \
+ -o "$BUNDLE_NAME/Windows/veilith.exe" \
+ ./veilith-main.go
+
+ if [ $? -eq 0 ]; then
+ SIZE=$(du -h "$BUNDLE_NAME/Windows/veilith.exe" | cut -f1)
+ echo -e "${GREEN}✓${NC} Windows build complete (${SIZE})"
+ else
+ echo -e "${RED}✗${NC} Windows build failed"
+ fi
+else
+ echo -e "${YELLOW}⚠${NC} MinGW not found - skipping Windows build"
+ echo " Install with: sudo apt install mingw-w64"
+ echo " Creating placeholder..."
+ echo "Windows executable not built - MinGW required" > "$BUNDLE_NAME/Windows/BUILD_REQUIRED.txt"
+fi
+echo ""
+
+# Copy launchers
+echo -e "${YELLOW}[Launchers]${NC} Copying launcher scripts..."
+cp launcher "$BUNDLE_NAME/"
+cp launcher.bat "$BUNDLE_NAME/"
+chmod +x "$BUNDLE_NAME/launcher"
+echo -e "${GREEN}✓${NC} Launchers copied"
+echo ""
+
+# Create Android placeholder
+echo -e "${YELLOW}[Android]${NC} Creating Android placeholder..."
+cat > "$BUNDLE_NAME/Android/BUILD_INSTRUCTIONS.txt" << 'EOF'
+To build Android APK:
+
+1. Install Android SDK and NDK
+2. Install fyne CLI:
+ go install fyne.io/fyne/v2/cmd/fyne@latest
+
+3. Build APK:
+ cd ..
+ fyne package -os android -appID com.veilith.portable
+
+4. Sign APK (optional):
+ jarsigner -keystore veilith.keystore app.apk veilith
+
+For more info: https://developer.fyne.io/started/mobile
+EOF
+echo -e "${GREEN}✓${NC} Android instructions created"
+echo ""
+
+# Create README
+echo -e "${YELLOW}[Documentation]${NC} Creating README..."
+cat > "$BUNDLE_NAME/README.txt" << EOF
+╔══════════════════════════════════════════════════════════════╗
+║ ║
+║ VEILITH PORTABLE USB v${VERSION} ║
+║ Privacy-First P2P Messenger ║
+║ Multi-Platform Edition ║
+║ ║
+╚══════════════════════════════════════════════════════════════╝
+
+BUILD DATE: ${BUILD_DATE}
+
+═══════════════════════════════════════════════════════════════
+ WHAT IS VEILITH PORTABLE?
+═══════════════════════════════════════════════════════════════
+
+Veilith Portable is a zero-installation, privacy-first messenger
+that runs directly from USB drives on multiple platforms:
+
+✓ Windows (x86_64)
+✓ Linux (x86_64, ARM64)
+✓ Android (via APK)
+
+All your data stays on the USB drive. No installation required.
+No traces left on the host system.
+
+
+═══════════════════════════════════════════════════════════════
+ QUICK START
+═══════════════════════════════════════════════════════════════
+
+LINUX / macOS:
+ 1. Open terminal in this directory
+ 2. Run: ./launcher
+ 3. Or: cd Linux && ./veilith-linux
+
+WINDOWS:
+ 1. Double-click: launcher.bat
+ 2. Or: Double-click: Windows/veilith.exe
+
+ANDROID:
+ 1. Copy Android/veilith.apk to your phone
+ 2. Enable "Unknown Sources" in settings
+ 3. Install the APK
+ 4. Launch from app drawer
+
+
+═══════════════════════════════════════════════════════════════
+ BUNDLE STRUCTURE
+═══════════════════════════════════════════════════════════════
+
+veilith-usb-v${VERSION}/
+├── launcher # Smart launcher (Linux/Mac)
+├── launcher.bat # Windows launcher
+├── Windows/ # Windows executable
+│ └── veilith.exe
+├── Linux/ # Linux executable
+│ └── veilith-linux
+├── Android/ # Android APK
+│ └── veilith.apk
+├── data/ # YOUR DATA (encrypted)
+│ ├── identity.enc # Your cryptographic identity
+│ └── contacts.enc # Your contact list
+├── tor/ # Tor binaries (optional)
+└── temp/ # Temporary files (auto-cleaned)
+
+
+═══════════════════════════════════════════════════════════════
+ FEATURES
+═══════════════════════════════════════════════════════════════
+
+SECURITY:
+ • Ed25519 cryptographic identities
+ • Noise Protocol (E2EE + Perfect Forward Secrecy)
+ • Scrypt KDF + NaCl SecretBox encryption
+ • Secure memory wiping
+
+NETWORKING:
+ • Tor Hidden Services (.onion addresses)
+ • P2P Mesh networking
+ • Multi-transport support
+
+PRIVACY:
+ • Zero knowledge architecture
+ • No server-side data storage
+ • Anonymous by default
+ • Portable mode (no system traces)
+
+
+═══════════════════════════════════════════════════════════════
+ SECURITY NOTES
+═══════════════════════════════════════════════════════════════
+
+⚠ IMPORTANT:
+ • This USB drive contains your encrypted identity
+ • Keep it in a safe place
+ • Use a STRONG passphrase
+ • Make backups of the data/ directory
+ • Do not use on untrusted computers
+
+✓ RECOMMENDATIONS:
+ • Enable full disk encryption on your USB drive
+ • Use different identities for different contexts
+ • Always eject the drive safely
+ • Consider using a hardware-encrypted USB drive
+
+
+═══════════════════════════════════════════════════════════════
+ TROUBLESHOOTING
+═══════════════════════════════════════════════════════════════
+
+LINUX:
+ Permission denied?
+ chmod +x launcher
+ chmod +x Linux/veilith-linux
+
+WINDOWS:
+ Antivirus blocking?
+ Add veilith.exe to exceptions
+
+ Won't start?
+ Right-click → Run as Administrator (one time)
+
+ANDROID:
+ Can't install?
+ Settings → Security → Enable "Unknown Sources"
+
+
+═══════════════════════════════════════════════════════════════
+ FIRST RUN
+═══════════════════════════════════════════════════════════════
+
+On first run, Veilith will:
+ 1. Create a new cryptographic identity
+ 2. Ask for a passphrase to protect it
+ 3. Save encrypted identity to data/identity.enc
+ 4. Show your public key fingerprint
+
+On subsequent runs:
+ 1. Load your identity from data/identity.enc
+ 2. Ask for your passphrase to decrypt it
+ 3. Connect to the network
+
+
+═══════════════════════════════════════════════════════════════
+ SUPPORT
+═══════════════════════════════════════════════════════════════
+
+ Website: https://veilith-messenger.org
+ Email: support@veilith-messenger.org
+ Security: security@veilith-messenger.org
+
+
+═══════════════════════════════════════════════════════════════
+ LICENSE
+═══════════════════════════════════════════════════════════════
+
+See docs/LICENSE.txt for licensing information.
+
+
+Built: ${BUILD_DATE}
+Version: ${VERSION}
+
+Veilith Portable - Privacy you can carry
+EOF
+
+echo -e "${GREEN}✓${NC} README created"
+echo ""
+
+# Create .gitignore for data directory
+echo -e "${YELLOW}[Safety]${NC} Creating .gitignore for sensitive data..."
+cat > "$BUNDLE_NAME/.gitignore" << 'EOF'
+# Ignore user data
+data/*.enc
+data/*.json
+temp/*
+tor/
+
+# Keep directory structure
+!data/.gitkeep
+!temp/.gitkeep
+!tor/.gitkeep
+EOF
+
+touch "$BUNDLE_NAME/data/.gitkeep"
+touch "$BUNDLE_NAME/temp/.gitkeep"
+touch "$BUNDLE_NAME/tor/.gitkeep"
+
+echo -e "${GREEN}✓${NC} Safety files created"
+echo ""
+
+# Calculate sizes
+echo -e "${YELLOW}[Summary]${NC} Bundle summary..."
+echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
+
+if [ -f "$BUNDLE_NAME/Linux/veilith-linux" ]; then
+ LINUX_SIZE=$(du -h "$BUNDLE_NAME/Linux/veilith-linux" | cut -f1)
+ echo " Linux: ${LINUX_SIZE}"
+fi
+
+if [ -f "$BUNDLE_NAME/Windows/veilith.exe" ]; then
+ WINDOWS_SIZE=$(du -h "$BUNDLE_NAME/Windows/veilith.exe" | cut -f1)
+ echo " Windows: ${WINDOWS_SIZE}"
+fi
+
+TOTAL_SIZE=$(du -sh "$BUNDLE_NAME" | cut -f1)
+echo " Total: ${TOTAL_SIZE}"
+echo ""
+
+# Create distribution archives
+echo -e "${YELLOW}[Package]${NC} Creating distribution archives..."
+
+# ZIP (Windows-friendly)
+if command -v zip &> /dev/null; then
+ zip -r -q "${BUNDLE_NAME}.zip" "$BUNDLE_NAME"
+ ZIP_SIZE=$(du -h "${BUNDLE_NAME}.zip" | cut -f1)
+ echo -e "${GREEN}✓${NC} Created ${BUNDLE_NAME}.zip (${ZIP_SIZE})"
+fi
+
+# TAR.GZ (Linux-friendly)
+if command -v tar &> /dev/null; then
+ tar -czf "${BUNDLE_NAME}.tar.gz" "$BUNDLE_NAME"
+ TAR_SIZE=$(du -h "${BUNDLE_NAME}.tar.gz" | cut -f1)
+ echo -e "${GREEN}✓${NC} Created ${BUNDLE_NAME}.tar.gz (${TAR_SIZE})"
+fi
+
+echo ""
+
+# Final message
+echo -e "${GREEN}╔══════════════════════════════════════════════════════╗${NC}"
+echo -e "${GREEN}║ ║${NC}"
+echo -e "${GREEN}║ BUILD COMPLETE! ║${NC}"
+echo -e "${GREEN}║ ║${NC}"
+echo -e "${GREEN}╚══════════════════════════════════════════════════════╝${NC}"
+echo ""
+echo "Bundle created: ${BUNDLE_NAME}/"
+echo ""
+echo "To use on USB drive:"
+echo " 1. Copy entire ${BUNDLE_NAME}/ folder to USB root"
+echo " 2. Or extract ${BUNDLE_NAME}.zip to USB drive"
+echo " 3. Run ./launcher (Linux/Mac) or launcher.bat (Windows)"
+echo ""
+echo "To distribute:"
+echo " • Share ${BUNDLE_NAME}.zip (Windows users)"
+echo " • Share ${BUNDLE_NAME}.tar.gz (Linux users)"
+echo ""
+echo -e "${CYAN}Veilith Portable - Privacy you can carry${NC}"
+echo ""