Skip to main content

A secure networking extension with authentication, HMAC, and encryption.

Project description

🔐 Secure Network

A powerful and flexible networking extension for Python with built-in authentication, encryption, and HMAC security.


🚀 Features

Secure authentication with bcrypt and Multi-Factor Authentication (MFA).
Encrypted communication using HMAC verification.
Rate-limiting to prevent brute force attacks.
Event-driven architecture for handling network interactions.
Supports both authenticated and unauthenticated connections.


📦 Installation

Install Secure Network via PyPI:

pip install secure_network

⚡ Quick Start

1️⃣ Secure Authentication Server & Client

For authenticated connections, use the SERVER and CLIENT classes:

import secure_network

# 🔹 Initialize the server
server = secure_network.SERVER(
    key=None, hmac_key=None, 
    address=("0.0.0.0", 12345), 
    on_event=lambda event: print(event), 
    max_clients=10
)

# 🔹 Set the accounts file (default: accounts.json)
server.accounts_file = "accounts.json"

# 🔹 All MFA methods requires a sender!
server.GMAIL["gmail"] = "creatorGmail@example.com"
server.GMAIL["password"] = "YourPassword"
server.TEXT_LOCAL_API = "TEXT_LOCAL_API"

# 🔹 Create user accounts
server.create_account("admin", "adminpass", role="admin")
server.create_account("user", "userpass", role="user", mfa_method="email", contact="user@example.com")

# 🔹 Initialize client
client = secure_network.CLIENT(
    key=None, hmac_key=None, 
    address=("127.0.0.1", 12345), 
    on_event=lambda event: print(event)
)

# 🚀 Start server and client
server.init()
client.init()

2️⃣ Basic Server & Client (Without Authentication)

If authentication isn't needed, use the Server and Client classes directly:

import secure_network

# 🔹 Initialize server
server = secure_network.Server(
    key=None, hmac_key=None, 
    address=("0.0.0.0", 12345), 
    on_event=lambda event: print(event), 
    max_clients=10
)

# 🔹 Initialize client
client = secure_network.Client(
    key=None, hmac_key=None, 
    address=("127.0.0.1", 12345), 
    on_event=lambda event: print(event)
)

# 🚀 Start server and client
server.init()
client.init()

🎯 Handling Events

Events provide real-time feedback about network status. You can handle them like this:

import secure_network

def on_event(event: secure_network.Event):
    if event.type == secure_network.EventType.CONNECTION_REQUEST:
        event.accept()  # ✅ Accept connection
    elif event.type == secure_network.EventType.CONNECTION_SUCCESS:
        print(f"✅ Client connected: {event.data['address']}")
    elif event.type == secure_network.EventType.RECEIVED:
        print(f"📩 Received data: {event.data['data']}")
    else:
        print(f"ℹ️ Event: {event.type.id} - {event.type.description}")

# Generate secure keys
KEY, HMAC_KEY = secure_network.generate_key(), secure_network.generate_hmac_key() 

# Create server
server = secure_network.Server(
    key=KEY, hmac_key=HMAC_KEY, 
    address=("0.0.0.0", 12345), 
    on_event=on_event, 
    max_clients=10
)

# 🚀 Start server
server.init()

# Keep server running
while server.active:
    pass

🔥 Event Types

Secure Network provides several event types for handling different network interactions:

Event Type Description Data Fields
CONNECTION_REQUEST Someone is trying to connect {address, connection} (can accept/reject)
CONNECTION_SUCCESS A client has successfully connected {address, connection}
CONNECTED The client/server has started communication {}
DISCONNECTED A client/server has disconnected {}
RECEIVED Data received from a device {address, connection, data}
THREAD_WARNING A thread did not behave as expected {thread}
ERROR An error occurred {exception}

ℹ️ Additional Information

  • event.data contains event-specific details (e.g., client address, message data).
  • event.accept() and event.reject() can be used for CONNECTION_REQUEST events.
  • Addresses and connections appear only on the server side (clients do not see them).

📜 License

This project is licensed under the MIT License.

⭐ Like This Project?

If you find this useful, consider starring it on GitHub and contributing to its development! 🚀

Fixes...

  1. I've fixed many buggs and some simple best practises (further improvement)
  2. Fixed so data comes with the "PacketSizeError".
  3. Fixed README and much else.
  4. Implemented "passphrase" systems, so now you can easily implement passwords to represent different keys for both the fernet, and HMAC keys.
  5. Errors are implemented without directly accessing the network module or fernet.
  6. Further updates will be covered here...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

secure_network-1.0.13.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

secure_network-1.0.13-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file secure_network-1.0.13.tar.gz.

File metadata

  • Download URL: secure_network-1.0.13.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for secure_network-1.0.13.tar.gz
Algorithm Hash digest
SHA256 58b382744d384c8c9fc639638a5f4bf7ccdb30da7332acd3e9e057300888f409
MD5 7a2495e86ccd28979801783f87a122f0
BLAKE2b-256 232165a9b25b22584889e7fcdd7e0d377c052b8373ba8d3b456dc7fb40ce573f

See more details on using hashes here.

File details

Details for the file secure_network-1.0.13-py3-none-any.whl.

File metadata

File hashes

Hashes for secure_network-1.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 02a4f8e51ef0af6c6a6a2487a290438d1e8b0bd22938794fe530ee4e96e5f626
MD5 88ef82bb3d415f34acdf555c07d37678
BLAKE2b-256 39beed5bf5d65256081ef205296cf78ee2e9ff0e17aeb73187f47f09f5e7fa0e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page