Metadata-Version: 2.4
Name: simplelinks
Version: 1.2.2
Summary: A lightweight network connectivity solution based on secure HTTPS connections
Home-page: https://simplelinks.cn
Author: SimpleLinks Team
Author-email: contact@simplelinks.cn
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Internet :: Proxy Servers
Classifier: Topic :: System :: Networking
Classifier: Topic :: Security
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: websockets>=10.0
Requires-Dist: asyncio
Provides-Extra: dev
Requires-Dist: pytest>=6.0; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# SimpleLinks - Secure Network Connectivity

A lightweight network connectivity solution that creates encrypted connections between devices through a central server based on secure HTTPS.

## Features

- Secure encrypted communication with SSL/TLS protection
- Virtual network interface management
- Client-server architecture with group-based connectivity
- Cross-platform support (Linux/macOS)

## Requirements

- Python 3.7+
- Network connectivity libraries
- Administrative privileges (for network interface management)

## Installation

```bash
pip3 install simplelinks
```

## Usage

### Server

1. Place your SSL certificate files in `~/.simplelinks/certs/`:
   - `~/.simplelinks/certs/fullchain.pem` (certificate)
   - `~/.simplelinks/certs/privkey.pem` (private key)

2. Run the server:

```bash
slink-server start --secret your_secret
```

**Custom certificate paths:**
```bash
slink-server start --secret your_secret --ssl-cert /path/to/cert.pem --ssl-key /path/to/key.pem
```

**Without SSL (development only):**
```bash
# Server will run without SSL if certificates are not found
slink-server start --secret your_secret
```

### Client

#### Linux Client

Connect a Linux client to the server:

```bash
slink-client join your-server.com --secret mysecret
```

#### macOS Client

**Full Functionality (Recommended):**
Install network driver first, then use the standard client:
```bash
# Install network driver
brew install --cask tuntap
# Reboot required after installation

# Use standard client
slink-client join your-server.com --secret mysecret
```

**Testing Only (Limited functionality):**
```bash
python3 client/client_macos_minimal.py --host your-server.com:20001 -s mysecret -i 10.0.0.104
```

> 📖 See [MACOS_SETUP.md](MACOS_SETUP.md) for detailed setup instructions

#### Parameters:
- `--host`: Server address
- `-s, --secret`: Shared secret for group authentication
- `-i, --ip`: Virtual IP address for this client
- `-d, --debug`: Enable debug logging (optional)

## Platform Differences

### Linux
- Uses standard network interface devices
- Configures interface with system network tools
- Standard interface without additional headers

### macOS
- Uses system userspace network interfaces
- Configures interface with system network commands
- Includes protocol header in data packets
- Automatically assigns interface identifiers

## Architecture

- **Server**: Manages secure connections and routes traffic between clients in the same group
- **Client**: Creates network interface and forwards traffic through encrypted connection
- **Groups**: Clients with the same secret form a group and can communicate with each other

## Security Notes

- Development mode may skip certificate verification for testing
- Production deployment should enable full certificate validation
- Requires administrative privileges for network interface management

## License

SimpleLinks is dual-licensed:
- **Community Edition**: AGPL-3.0 (for open source projects, personal use, and non-commercial applications)
- **Commercial Edition**: Available for commercial use, proprietary applications, and when AGPL requirements cannot be met

For commercial licensing, please contact: contact@simplelinks.cn

See [LICENSE](LICENSE) for full details.
