A modular, cross-platform chat server application with administrative controls, secure encryption, and both server and client interfaces.
- Multi-User Chat: Connect multiple clients to a centralized server (up to 25 concurrent connections)
- Client Commands:
/help,/online,/ip,/request,/exit- interactive chat features - Server Management: Root user access with full administrative commands
- Secure Authentication: HMAC-SHA256 (390,000 iterations) with encrypted IP addresses
- Cross-Platform: Works on Windows, Linux, and macOS
- Easy Distribution: Generate standalone packages for clients and administrators
- Windows: Standalone
.exeexecutables - Linux/Mac: ZIP packages with setup scripts
- Windows: Standalone
- Comprehensive Logging: Detailed server operation logs
- Thread-Safe: Handles multiple concurrent connections safely
- Python: 3.8 or higher
- OS: Windows, Linux, or macOS
- RAM: Minimum 128MB
- Network: Local network connectivity
Windows:
git clone https://github.com/vezz-z/party-pool.git
cd party-pool
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txtLinux / macOS:
git clone https://github.com/vezz-z/party-pool.git
cd party-pool
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtpython main.py
# Select option [1] Start ServerThe server will:
- Prompt for a passkey (this will be used by clients to connect)
- Generate an encrypted IP file
- Start listening on port 12345
python main.py
# Select option [2] Generate Distribution PackagesChoose to generate:
- Client Package - For users who want to chat
- Root Package - For administrators who need server control
- Both - Generate all packages at once
Output:
- Windows:
dist/client/PartyPoolClient-v1.0.0.exeanddist/root/PartyPoolRoot-v1.0.0.exe - Linux/Mac:
dist/client/PartyPoolClient-v1.0.0.zipanddist/root/PartyPoolRoot-v1.0.0.zip
Note: Packages are version-suffixed (e.g., -v1.0.0) to prevent accidental overwrites between releases.
Share the generated packages with your users:
- Clients receive the client package (EXE or ZIP)
- Administrators receive the root package (EXE or ZIP)
- Receive
PartyPoolClient-v1.0.0.exefrom the server administrator - Double-click to run
- Enter the passkey provided by the admin
- Enter your username
- Start chatting!
- Receive
PartyPoolClient-v1.0.0.zipfrom the server administrator - Extract the ZIP file
- Run setup to install dependencies:
chmod +x setup.sh ./setup.sh
- Start the client:
python3 client.py
- Receive
PartyPoolRoot-v1.0.0.exefrom the server administrator - Double-click to run
- Enter the server passkey (same as client passkey)
- Enter the root password
- Use commands to manage the server (type
listfor help)
- Receive
PartyPoolRoot-v1.0.0.zip - Extract the ZIP file
- Run setup to install dependencies:
chmod +x setup.sh ./setup.sh
- Start:
python3 root.py
party-pool/
βββ main.py # Entry point - Main menu & distribution generator
βββ config.py # Centralized configuration
βββ requirements.txt # Python dependencies
βββ setup.bat # Windows setup script (for server administrators)
βββ setup.sh # Linux/macOS setup script (for server administrators)
βββ LICENSE # CC BY-NC-SA 4.0 License
βββ README.md # This file
β
βββ server/
β βββ __init__.py
β βββ server.py # Server implementation with root commands
β βββ tmp/ # Temporary files
β
βββ client/
β βββ __init__.py
β βββ client.py # Client implementation
β
βββ root/
β βββ __init__.py
β βββ root.py # Root admin interface
β
βββ util/
β βββ __init__.py # Package exports
β βββ common.py # Shared utilities (encryption, display)
β βββ encrypt.py # IP encryption utility
β βββ logger.py # Logging configuration
β
βββ logs/ # Server logs directory
βββ dist/ # Generated distribution packages
βββ client/ # Client packages (EXE/ZIP)
βββ root/ # Root packages (EXE/ZIP)
| Script | Platform | Purpose |
|---|---|---|
setup.bat |
Windows | Automated setup for server administrators - creates venv and installs dependencies |
setup.sh |
Linux/macOS | Automated setup for server administrators - creates venv and installs dependencies |
Note: The setup scripts included in generated ZIP packages (for clients/root users) are different - they only install minimal dependencies needed to run the standalone scripts.
All settings are centralized in config.py:
# Networking
SERVER_HOST = "0.0.0.0"
SERVER_PORT = 12345
# Application Version
APP_VERSION = "1.0.0"
# Authentication (β οΈ CHANGE IN PRODUCTION!)
CLIENT_PASSKEY = "pass"
ROOT_PASSWORD = "toor"
# Encryption
KDF_ITERATIONS = 390000
SALT_SIZE = 16CLIENT_PASSKEY and ROOT_PASSWORD in config.py before starting the server!
Changes in the Networking section can be made as you please for further customization.
Once connected, clients can use these commands:
| Command | Description |
|---|---|
/help |
Display all available commands |
/online |
Show list of online users |
/ip |
Display your own IP address |
/request <message> |
Send a request/feedback to the admin |
/exit |
Disconnect and exit Party Pool |
Note: Requests are saved to client_requests.txt on the server with timestamp, username, and IP for admin review.
When logged in as root administrator:
| Command | Description |
|---|---|
list |
Show all available commands |
list-conn |
List all active connections (IP:Username) |
list-conn -ip |
List only IP addresses |
list-conn -u |
List only usernames |
remove -ip <ip> |
Kick user by IP address |
remove -u <username> |
Kick user by username |
send -all "message" |
Broadcast message to all clients |
send -ip <ip1> <ip2> "message" |
Send message to specific IPs |
close-server |
Shutdown server immediately |
close-server -t 30 |
Shutdown server in 30 seconds |
close-server -m "Maintenance" |
Shutdown with custom message |
exit |
Logout from root session |
Step 1: Server Admin starts the server
$ python main.py
[1] π₯οΈ Start Server β Select this
[2] π¦ Generate Distribution Packages
[3] π Login as Administrator (Root)
[4] π¬ Login as Client
[5] β Exit
Enter your choice (1-5): 1
Enter passkey: mySecretPass123
β Encrypted IP created and saved.
β Server started on 0.0.0.0:12345
Step 2: Generate packages for users
$ python main.py
[2] Generate Distribution Packages β Select this
[1] π¬ Client Package Only
[2] π Root/Admin Package Only
[3] π¦ Both Client & Root Packages β Select this
[4] π Back to Main Menu
Enter your choice (1-4): 3
[1] πͺ Windows β Generates .exe files
[2] π§ Linux/macOS β Generates .zip files
[3] π¦ Both β Generates all packages
[4] π Back to Main Menu
Enter your choice (1-4): 1
β Client EXE created: dist/client/PartyPoolClient-v1.0.0.exe
β Root EXE created: dist/root/PartyPoolRoot-v1.0.0.exe
Step 3: Share packages
- Send
PartyPoolClient-v1.0.0.exeto chat users - Send
PartyPoolRoot-v1.0.0.exeto trusted administrators - Tell them the passkey:
mySecretPass123(root also needs root password)
Step 4: Users connect
# User runs PartyPoolClient-v1.0.0.exe
Enter passkey: mySecretPass123
β Authenticated!
Enter username: Alice
β Connected as Alice
π¬ Connected and Ready!
π Type /help for available commands
$Alice: Hello everyone!
$Alice: /online
ββββββββββββββββββββββββββββββββββββββββββββ
β π₯ ONLINE USERS π₯ β
β βββββββββββββββββββββββββββββββββββββββββββ£
β Alice β
β Bob β
ββββββββββββββββββββββββββββββββββββββββββββ
- PBKDF2-HMAC-SHA256: 390,000 iterations for key derivation
- Fernet Encryption: AES-based symmetric encryption for IP addresses
- HMAC Authentication: Secure token verification for all connections
- Duplicate Prevention: Blocks multiple sessions from same IP
- Encrypted Credentials: Server IP is encrypted, not stored in plain text
- β
Change
CLIENT_PASSKEYandROOT_PASSWORDbefore deployment - β Use strong, unique passwords (12+ characters)
- β Only share distribution packages with trusted users
- β Keep the root password separate from client passkey
- β
Monitor
logs/server.logfor suspicious activity
This project is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
- β Share β copy and redistribute the material
- β Adapt β remix, transform, and build upon the material
β οΈ Attribution β You must give appropriate credit- π« NonCommercial β You may NOT use for commercial purposes
- π ShareAlike β Modifications must use the same license
For commercial licensing inquiries, contact: mohammedparvezofficial@gmail.com
See CHANGELOG.md for a history of all releases and updates.
Current version: v1.0.0 (Production Ready)
- Built with Python and modern networking practices
- Uses
cryptographylibrary for secure encryption - Inspired by classic chat room applications
Mohammed Parvez
- Email: mohammedparvezofficial@gmail.com
- GitHub: @vezz-z
Made with β€οΈ for the community