A VPN connection manager with custom config support
Project description
How Freedom Feels
So my college decided to block literally everything. YouTube? Blocked. Reddit? Blocked. Even Stack Overflow sometimes (yes, really).
TL;DR - Just Want It Working?
pip install how-freedom-feels
freedom --connect
That's it. If it works, you're done. If not, keep reading.
The Problem (aka My College IT Department Goes Too Far)
Not only did they block half the internet, they also blacklisted every VPN domain they could find. NordVPN? Blocked. ExpressVPN? Blocked. Even the small obscure ones. You can't even reach their websites to download configs. Big brain move by the IT department, honestly.
The Solution (aka How I Got My Internet Back)
Here's the thing - they can't blacklist domains that don't exist yet. So I made this tool that grabs VPN configs from random cloud servers (AWS, Linode, Google Cloud - wherever I feel like hosting that week).
By default, it connects to my servers. But fair warning: sometimes I forget to pay the AWS bill or just turn off the EC2 instance for fun. If it doesn't work, don't panic - just spin up your own server and use --url to point to it.
Installation & Quick Start
Install
pip install how-freedom-feels
Connect
freedom --connect
Want to Use Your Own Server?
freedom --connect --url https://your-domain.com/wg0.conf
What You Actually Need (Requirements)
First, you need WireGuard. Yeah, you actually have to install something. I know, shocking.
- WireGuard: https://www.wireguard.com/install/ (just click and install, it's not rocket science)
- Python 3.7+ (if you're in college and don't have Python installed, we need to talk)
Note: If you get an error about WireGuard not being installed, install it first, then run pip install how-freedom-feels again.
Want to Edit This and Use Your Own Domain?
Feel free to fork this, clone the source, and change the default domain to yours LOL. Just edit how_freedom_feels/core.py and change DEFAULT_CONFIG_URL to whatever you want.
class FreedomConnect:
DEFAULT_CONFIG_URL = "https://your-domain.com/your-config.conf" # Change this!
Then build and use it locally, or publish your own version. I don't care, it's MIT licensed.
Installation
pip install how-freedom-feels
That's it. No 47-step process, no "make sure to configure your DNS" nonsense. Just install and go.
Quick Start (For the Impatient)
# Connect to my server (if it's running, no promises)
freedom --connect
# Connect to your own server (recommended because trust issues)
freedom --connect --url https://your-domain.com/wg0.conf
# Disconnect (when you're done procrastinating)
freedom --disconnect
# Check if you're actually connected
freedom --status
Usage
Connect with default config
freedom --connect
Connect with custom domain/URL
freedom --connect --url https://your-domain.com/config.conf
Connect with custom parameters
freedom --connect --url https://your-domain.com/config.conf --timeout 30
Disconnect
freedom --disconnect
Check status
freedom --status
Python API
from how_freedom_feels import FreedomConnect
# Connect with default config
client = FreedomConnect()
client.connect()
# Connect with custom URL
client = FreedomConnect(config_url="https://your-domain.com/config.conf")
client.connect()
# Connect with custom parameters
client = FreedomConnect(
config_url="https://your-domain.com/config.conf",
timeout=30,
interface_name="wg0",
persist=True
)
client.connect()
# Disconnect
client.disconnect()
What It Does
- Installs in 2 seconds with pip (because your time is valuable)
- Connects to my servers by default (or yours, I'm not your boss)
- Actually cleans up after itself (looking at you, other VPN tools)
- Works from command line OR Python (flexibility, wow)
- Doesn't leave config files lying around like breadcrumbs
What You Actually Need
- Python 3.7 or newer (seriously, if you're on Python 2.7, what year is it?)
- WireGuard installed (https://www.wireguard.com/install/)
wg-quickin your PATH (the installer does this, don't panic)
All the Flags and Stuff
--connect, -c: Actually connect to the VPN (novel concept)--disconnect, -d: Turn it off when you're done--status, -s: Check if it's working (spoiler: it probably is)--url, -u: Point to your own server (trust no one, not even me)--timeout, -t: How long to wait before giving up (default: 10 seconds)--interface, -i: Custom interface name (if you're feeling fancy)--no-verify-ssl: Skip SSL checks (not recommended but hey, you do you)
Setting Up Your Own Server
You'll need to set up your own WireGuard server on AWS, Linode, Google Cloud, or any VPS provider.
Quick steps:
- Spin up a Linux server (Ubuntu recommended)
- Install WireGuard:
sudo apt install wireguard - Generate keys and create configs
- Host your config file on a web server
- Use
freedom --connect --url https://your-server.com/config.conf
For detailed instructions, check out EC2_SETUP_FOR_BEGINNERS.md in the GitHub repository or search for "WireGuard server setup" guides online.
How This Actually Works
- Downloads a WireGuard config from wherever you told it to
- Saves it temporarily (don't worry, it deletes it after)
- Runs
wg-quickto connect - Cleans up like a responsible program
Why Your College Can't Block This
Here's the secret: network admins blacklist known VPN domains. They've got NordVPN.com, ExpressVPN.com, all the big names. But your random AWS EC2 instance at ec2-54-123-45-67.compute.amazonaws.com? Yeah, that's not on their list. You're welcome.
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file how_freedom_feels-0.1.7.tar.gz.
File metadata
- Download URL: how_freedom_feels-0.1.7.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ae36ec293ab1be7823eea4c1304dde2f5432e70a6cd040cb220b849564e93d7
|
|
| MD5 |
6551390d1dd3eb8f7f2210c608d4cf4f
|
|
| BLAKE2b-256 |
5a8912a93e6a4cafe8bee74145b53e3eed5c8e1873a630c01d36615462d4a31c
|
File details
Details for the file how_freedom_feels-0.1.7-py3-none-any.whl.
File metadata
- Download URL: how_freedom_feels-0.1.7-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0306a0ae0746734ea615af24dc89a843325881e9914b482ddaffb3d72aedb4b
|
|
| MD5 |
8e97e6066c4ef8c973ffdaeef5e22c4e
|
|
| BLAKE2b-256 |
a9e0473f5ea13c3bc9a2114dfeb5077b074e6602413873d63a289bab464fdd7a
|