f98ad5d0ee
- Add push_notifications.py module for managing subscriptions and sending notifications - Create Flask API endpoints for subscription management (/api/push/*) - Integrate push sending with existing notification system (_create_notification) - Create frontend JavaScript library (push-notifications.js) for client-side subscription - Update base.html template with manifest link and Service Worker registration - Add manifest.json and service-worker.js for PWA support - Add pywebpush dependency to requirements.txt - Create generate-vapid-keys.sh script for VAPID key generation - Add comprehensive documentation (WEB_PUSH_NOTIFICATIONS.md) Features: - Subscribe/unsubscribe users from push notifications - Store subscriptions in MongoDB with automatic indexing - Send push to individual users or all admins - Notification deduplication and versioning - Service Worker handles offline caching and push events - Full PWA support for mobile app installation - VAPID authentication for secure push communication
82 lines
2.4 KiB
Bash
Executable File
82 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# VAPID Key Generation Script for Web Push Notifications
|
|
# Generates VAPID (Voluntary Application Server Identification) keys required for push notifications
|
|
|
|
echo "==========================================="
|
|
echo "VAPID Key Generation for Inventarsystem"
|
|
echo "==========================================="
|
|
echo ""
|
|
|
|
# Check if Python is available
|
|
if ! command -v python3 &> /dev/null; then
|
|
echo "❌ Error: Python 3 is required but not installed."
|
|
exit 1
|
|
fi
|
|
|
|
# Check if pywebpush is installed
|
|
echo "Checking for pywebpush..."
|
|
python3 -c "import pywebpush" 2>/dev/null
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Installing pywebpush..."
|
|
pip3 install pywebpush
|
|
if [ $? -ne 0 ]; then
|
|
echo "❌ Error: Failed to install pywebpush"
|
|
echo "Please install manually: pip3 install pywebpush"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "✓ pywebpush is installed"
|
|
echo ""
|
|
|
|
# Generate VAPID keys
|
|
echo "Generating VAPID keys..."
|
|
python3 << 'EOF'
|
|
from pywebpush import generate_keys
|
|
|
|
try:
|
|
keys = generate_keys()
|
|
print("✓ VAPID Keys generated successfully!")
|
|
print("")
|
|
print("PUBLIC KEY (share with browsers):")
|
|
print(keys['public_key'])
|
|
print("")
|
|
print("PRIVATE KEY (keep secret!):")
|
|
print(keys['private_key'])
|
|
print("")
|
|
print("==========================================="
|
|
print("Add these to your environment variables:")
|
|
print("==========================================="
|
|
print("")
|
|
print("export VAPID_PUBLIC_KEY='" + keys['public_key'] + "'")
|
|
print("export VAPID_PRIVATE_KEY='" + keys['private_key'] + "'")
|
|
print("export VAPID_SUBJECT='mailto:admin@yourdomain.com'")
|
|
print("")
|
|
print("Or add to your .env file:")
|
|
print("")
|
|
print("VAPID_PUBLIC_KEY=" + keys['public_key'])
|
|
print("VAPID_PRIVATE_KEY=" + keys['private_key'])
|
|
print("VAPID_SUBJECT=mailto:admin@yourdomain.com")
|
|
print("")
|
|
print("⚠️ IMPORTANT: Keep the PRIVATE KEY secret!")
|
|
print("==========================================="
|
|
|
|
except Exception as e:
|
|
print(f"❌ Error generating VAPID keys: {e}")
|
|
exit(1)
|
|
EOF
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo ""
|
|
echo "✓ Next steps:"
|
|
echo "1. Copy the PUBLIC KEY to your browser-side code"
|
|
echo "2. Set the PRIVATE KEY in your server environment"
|
|
echo "3. Update config.json with your email address"
|
|
echo "4. Test with: curl http://localhost:5000/api/push/vapid-key"
|
|
else
|
|
echo "❌ Error generating keys"
|
|
exit 1
|
|
fi
|