Skip to main content

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-quick in 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:

  1. Spin up a Linux server (Ubuntu recommended)
  2. Install WireGuard: sudo apt install wireguard
  3. Generate keys and create configs
  4. Host your config file on a web server
  5. 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

  1. Downloads a WireGuard config from wherever you told it to
  2. Saves it temporarily (don't worry, it deletes it after)
  3. Runs wg-quick to connect
  4. 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


Download files

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

Source Distribution

how_freedom_feels-0.1.7.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

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

how_freedom_feels-0.1.7-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

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

Hashes for how_freedom_feels-0.1.7.tar.gz
Algorithm Hash digest
SHA256 0ae36ec293ab1be7823eea4c1304dde2f5432e70a6cd040cb220b849564e93d7
MD5 6551390d1dd3eb8f7f2210c608d4cf4f
BLAKE2b-256 5a8912a93e6a4cafe8bee74145b53e3eed5c8e1873a630c01d36615462d4a31c

See more details on using hashes here.

File details

Details for the file how_freedom_feels-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for how_freedom_feels-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a0306a0ae0746734ea615af24dc89a843325881e9914b482ddaffb3d72aedb4b
MD5 8e97e6066c4ef8c973ffdaeef5e22c4e
BLAKE2b-256 a9e0473f5ea13c3bc9a2114dfeb5077b074e6602413873d63a289bab464fdd7a

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