Small changed

Updated README and Logo Change
This commit is contained in:
Tyler
2025-05-04 13:29:08 -10:00
committed by GitHub
parent 05a9ada8d9
commit db00538aee
2 changed files with 266 additions and 177 deletions
+266 -177
View File
@@ -1,177 +1,266 @@
# PacCrypt WebApp **PacCrypt** is a secure, feature-rich web app for encrypting and decrypting text and files — built with Flask, JavaScript, and AES-GCM encryption.
Now with an admin control panel, GitHub updater, and a built-in Pac-Man easter egg! 🕹️
**PacCrypt** is a secure, feature-rich web app for encrypting and decrypting text and files — built with Flask, JavaScript, and AES-GCM encryption.
Now with an admin control panel, GitHub updater, and a built-in Pac-Man easter egg! 🕹️ Officially Hosted Here: [paccrypt.unnaturalll.dev](http://paccrypt.unnaturalll.dev)
Offically Hosted: [paccrypt.unnaturalll.dev](http://paccrypt.unnaturalll.dev) ---
--- ## ✨ Features
## ✨ Features - 🔒 Basic and Advanced Encryption for Text & Files
- 📁 Secure File Uploads with Pickup Passwords
- 🔒 Basic and Advanced Encryption for Text & Files - 🔑 Random Password Generator
- 📁 Secure File Uploads with Pickup Passwords - 🎮 Hidden Pac-Man Game — type `pacman` to play
- 🔑 Random Password Generator - 🧠 Smart UI: Auto-switches input sections, toggles encryption labels
- 🎮 Hidden Pac-Man Game — type `pacman` to play - 📋 Clipboard Copy Feedback with styled status boxes
- 🧠 Smart UI: Auto-switches input sections, toggles encryption labels - 🧾 Admin Panel:
- 📋 Clipboard Copy Feedback with styled status boxes - Site map with live route list
- 🧾 Admin Panel: - Server restart & GitHub update button
- Site map with live route list - Secure admin credential management
- Server restart & GitHub update button - Server logs & upload cleanup
- Secure admin credential management - 🧩 System Settings Page for upload config
- Server logs & upload cleanup - 📜 Custom 403, 404, and 500 Error Pages
- 🧩 System Settings Page for upload config - 🤖 robots.txt and /sitemap for crawlers
- 📜 Custom 403, 404, and 500 Error Pages - 📱 Mobile-Responsive UI
- 🤖 robots.txt and /sitemap for crawlers
- 📱 Mobile-Responsive UI ---
--- ## 👨‍💻 Installation
## 👨‍💻 Installation ### 📋 Prerequisites
### 📋 Prerequisites - Python 3.7+
- Flask 3+
- Python 3.7+ - Cryptography 42+
- Flask 3+ - Waitress 2.1+
- Cryptography 42+ - Git (For update feature)
- Waitress 2.1+ - Nginx (Recommended)
- Git (for update feature) - Cockpit (Recommended if hosted on **Linux**)
- Nginx (recommended)
---
---
### ⚡ Quick Setup
### ⚡ Quick Setup
```bash
```bash git clone https://github.com/TySP-Dev/PacCrypt.git
git clone https://github.com/TySP-Dev/PacCrypt.git cd paccrypt-webapp-final
cd paccrypt-webapp-final python -m venv venv
python -m venv venv source venv/bin/activate # or venv\Scripts\activate on Windows
source venv/bin/activate # or venv\Scripts\activate on Windows pip install -r requirements.txt
pip install -r requirements.txt ```
```
Then run:
Then run:
- Development Mode:
- Development Mode: ```bash
```bash ./start_dev.sh #<-- start_dev.bat (Windows)
./start_dev.sh # or start_dev.bat ```
```
- Production Mode:
- Production Mode: ```bash
```bash ./start_prod.sh #<-- start_prod.bat (Windows)
./start_prod.sh # or start_prod.bat ```
```
Visit [http://127.0.0.1:5000](http://127.0.0.1:5000) or [http://localhost:5000](http://localhost:5000) - *If* you **are** on the host system
Visit [http://127.0.0.1:5000](http://127.0.0.1:5000) Visit http://hosts_private_ip - *If* you are **not** on the host system
--- ---
## 🧭 Navigation & Usage ## 🧭 Navigation & Usage
### 🔐 Encrypt & Decrypt ### 🔑 Generate Passwords
- Choose between Basic Cipher or Advanced AES - Click Generate
- Type your message or upload a file - Then hit `📋 Copy Password`
- Enter password (if AES) - **Note:** This is also used as a seed generator for the Pac-Man *like* game
- Select mode using toggle (Encrypt/Decrypt)
- Hit Execute ### 🔐 Encrypt & Decrypt
### 📤 Share Files - Choose between Basic Cipher or Advanced AES
- Select mode using toggle (Encrypt/Decrypt)
- Upload a file with two passwords: - Type your message or upload a file
- Encryption password - Enter password (Advanced AES)
- Pickup password - Hit Execute
- Get a shareable URL and click 📋 Copy Link - Then hit `📋 Copy Output`
### 🔑 Generate Passwords ### 📤 Share Files
- Click Generate - Upload a file with two passwords:
- Then hit 📋 Copy - Encryption password
- Pickup password
### 🎮 Pac-Man Game - Get a shareable URL and click `📋 Copy Link`
- Type `pacman` in the input box ### 🎮 Pac-Man *like* Game
- Game appears with Restart/Exit controls
- Classic arrow key controls 🕹️ - Type `pacman` in the input box
- Game appears with `Restart` and `Exit` buttons
--- - Arrow key and Swipe controls 🕹️
- Game restarts and a new seed is generated once all dots are eaten
## 🛠️ Admin Panel
---
Visit `/adminpage` after setting up credentials at `/admin-setup`.
## 🛠️ Admin Panel
Features:
- 🔄 Restart server Visit `/adminpage` after setting up credentials at `/admin-setup`.
- 🔃 Update from GitHub (git pull)
- 🧽 Clear uploads Features:
- 🔐 Change admin password - 🔄 Restart server
- 📝 View logs - 🔃 Update from GitHub (git pull)
- ⚙️ Adjust upload settings - 🧽 Clear uploads
- 🔐 Change admin password
--- - 📝 View logs
- ⚙️ Adjust upload settings
## 🛡️ Deployment Tips
---
Minimal Nginx config:
## 🛡️ Deployment Tips
```nginx ##### I recommend using Linux as the host server, the follow confs are Linux focused
server { The official PacCrypt host is **Debian** minimal install.
listen 80;
server_name yourdomain.com; **HTTP** Nginx config (Not recommended):
location / { ```nginx
proxy_pass http://127.0.0.1:5000; server {
proxy_set_header Host $host; listen 80;
proxy_set_header X-Real-IP $remote_addr; server_name yourdomain.com; #<-- Your URL here
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} # Basic Privacy-Respecting Logging
} access_log off; #<-- set to syslog:server=unix:/dev/log; for logging
``` error_log syslog:server=unix:/dev/log crit; #<-- Currently set for only critical logs, remove crit for all logs
Use Let's Encrypt to add SSL/TLS support. # Hardened Proxy Settings
location / {
--- proxy_pass http://127.0.0.1:5000;
## 🗂️ Project Structure proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
``` proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
paccrypt-webapp-final/
├── app.py proxy_http_version 1.1;
├── requirements.txt proxy_set_header Connection "";
├── README.md
├── templates/ # Timeouts
│ ├── index.html proxy_connect_timeout 5s;
│ ├── 404.html proxy_send_timeout 30s;
│ └── 403.html proxy_read_timeout 30s;
│ └── 500.html }
│ └── admin.html
│ └── admin_login.html # Basic Hardening Headers
│ └── admin_settings.html add_header X-Frame-Options "DENY" always;
│ └── admin_setup.html add_header X-Content-Type-Options "nosniff" always;
│ └── pickup.html add_header Referrer-Policy "no-referrer" always;
├── static/ add_header Permissions-Policy "geolocation=(), microphone=()" always;
│ ├── css/
│ │ └── styles.css # Prevent Abuse
│ ├── js/ client_max_body_size 10M;
│ │ └── ui.js keepalive_timeout 10;
│ │ └── pacman.js server_tokens off;
│ │ └── main.js }
│ │ └── fileops.js ```
│ │ └── encryption.js
│ ├── img/ **HTTPS** Nginx config (Recommended):
│ │ └── PacCrypt.png
│ │ └── Github_logo.png ```nginx
│ │ └── sitemap.png # Redirect HTTP to HTTPS
│ └── audio/ server {
│ └── chomp.mp3 listen 80;
├── start_dev.bat server_name yourdomain.com; #<-- Your URL here
├── start_prod.bat
├── start_dev.sh # Basic Privacy-Respecting Logging
├── start_prod.sh access_log off; #<-- set to syslog:server=unix:/dev/log; for logging
``` error_log syslog:server=unix:/dev/log crit; #<-- Currently set for only critical logs, remove crit for all logs
--- location / {
return 301 https://$host$request_uri;
## 📄 License }
}
MIT © [TySP-Dev](https://github.com/TySP-Dev)
# HTTPS Server Block
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate path/to/yourdomain.com.cert; #<-- Could also be .cert.pem
ssl_certificate_key path/to/yourdomain.com.key; #<-- Could also be .key.pem
# SSL Hardening
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# Strong security headers (adjust as needed)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options nosniff always;
add_header X-Frame-Options DENY always;
add_header Referrer-Policy "no-referrer" always;
add_header Permissions-Policy "geolocation=(), camera=()" always;
add_header X-XSS-Protection "1; mode=block" always;
# Basic Privacy-Respecting Logging
access_log off; #<-- set to syslog:server=unix:/dev/log; for logging
error_log syslog:server=unix:/dev/log crit; #<-- Currently set for only critical logs, remove crit for all logs
client_max_body_size xG; #<-- Change to what the max upload for PacCrypt Share
# Reverse proxy to Flask
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
# Comment these out if you want complete anonymity between client and app
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto $scheme;
# Optional privacy: strip identifying headers
proxy_hide_header X-Powered-By;
}
}
```
---
## 🗂️ Project Structure
```
paccrypt-webapp-final/
├── app.py
├── requirements.txt
├── README.md
├── templates/
│ ├── index.html
│ ├── 404.html
│ └── 403.html
│ └── 500.html
│ └── admin.html
│ └── admin_login.html
│ └── admin_settings.html
│ └── admin_setup.html
│ └── pickup.html
├── static/
│ ├── css/
│ │ └── styles.css
│ ├── js/
│ │ └── ui.js
│ │ └── pacman.js
│ │ └── main.js
│ │ └── fileops.js
│ │ └── encryption.js
│ ├── img/
│ │ └── PacCrypt.png
│ │ └── Github_logo.png
│ │ └── sitemap.png
│ └── audio/
│ └── chomp.mp3
├── start_dev.bat
├── start_prod.bat
├── start_dev.sh
├── start_prod.sh
```
---
## 📄 License
MIT © [TySP-Dev](https://github.com/TySP-Dev)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 1.4 MiB