All Projects → morpheusthewhite → Nordpy

morpheusthewhite / Nordpy

Licence: gpl-3.0
A gui application to connect automatically to the recommended NordVPN server

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Nordpy

Vycontrol
vyos frontend
Stars: ✭ 92 (-3.16%)
Mutual labels:  vpn, openvpn, gui
Lethean Vpn
Lethean Virtual Private Network (VPN)
Stars: ✭ 29 (-69.47%)
Mutual labels:  vpn, openvpn
Openvpn Bosh Release
A BOSH release to help manage an OpenVPN network.
Stars: ✭ 13 (-86.32%)
Mutual labels:  vpn, openvpn
Softethervpn
Cross-platform multi-protocol VPN software. Pull requests are welcome. The stable version is available at https://github.com/SoftEtherVPN/SoftEtherVPN_Stable.
Stars: ✭ 8,531 (+8880%)
Mutual labels:  vpn, openvpn
Openvpn Install
Set up your own OpenVPN server on Debian, Ubuntu, Fedora, CentOS or Arch Linux.
Stars: ✭ 7,142 (+7417.89%)
Mutual labels:  vpn, openvpn
Cloak
A censorship circumvention tool to evade detection against state adversaries
Stars: ✭ 942 (+891.58%)
Mutual labels:  vpn, openvpn
Linux Cli
Linux command-line client for ProtonVPN. Written in Python.
Stars: ✭ 1,047 (+1002.11%)
Mutual labels:  vpn, openvpn
Openpyn Nordvpn
Easily connect to and switch between, OpenVPN servers hosted by NordVPN on Linux (+patch leakes)
Stars: ✭ 544 (+472.63%)
Mutual labels:  vpn, openvpn
Vpn At Home
1-click, self-hosted deployment of OpenVPN with DNS ad blocking sinkhole
Stars: ✭ 1,106 (+1064.21%)
Mutual labels:  vpn, openvpn
Tunnelblickctl
🔒 Command-line interface for Tunnelblick
Stars: ✭ 64 (-32.63%)
Mutual labels:  vpn, openvpn
Pi Hole Pivpn On Google Compute Engine Free Tier With Full Tunnel And Split Tunnel Openvpn Configs
Run your own privacy-first ad blocking service in the cloud for free on Google Cloud Services.
Stars: ✭ 1,141 (+1101.05%)
Mutual labels:  vpn, openvpn
Appjar
Simple Tkinter GUIs in Python
Stars: ✭ 565 (+494.74%)
Mutual labels:  gui, tkinter
Android App
Official ProtonVPN Android app
Stars: ✭ 547 (+475.79%)
Mutual labels:  vpn, openvpn
Arf Converter
Bulk ARF file converter
Stars: ✭ 10 (-89.47%)
Mutual labels:  gui, tkinter
Streisand
Streisand sets up a new server running your choice of WireGuard, OpenConnect, OpenSSH, OpenVPN, Shadowsocks, sslh, Stunnel, or a Tor bridge. It also generates custom instructions for all of these services. At the end of the run you are given an HTML file with instructions that can be shared with friends, family members, and fellow activists.
Stars: ✭ 22,605 (+23694.74%)
Mutual labels:  vpn, openvpn
Openconnect Gui
Mirror - Graphical OpenConnect client (beta phase)
Stars: ✭ 993 (+945.26%)
Mutual labels:  vpn, gui
Arch Delugevpn
Docker build script for Arch Linux base with Deluge, Privoxy and OpenVPN
Stars: ✭ 404 (+325.26%)
Mutual labels:  vpn, openvpn
Easyvpn
Easily connect to a VPN in a country of your choice.
Stars: ✭ 492 (+417.89%)
Mutual labels:  vpn, openvpn
Ttkwidgets
A collection of widgets for Tkinter's ttk extensions by various authors
Stars: ✭ 57 (-40%)
Mutual labels:  gui, tkinter
Pyrustic
Lightweight framework and software suite to help develop, package, and publish Python desktop applications
Stars: ✭ 75 (-21.05%)
Mutual labels:  gui, tkinter

NordPy

release 1.3.4 contributions welcome contributions welcome

A python application with gui to connect automatically to the recommended NordVPN server (as of NordVPN site) of a certain type, in a certain country or to the specific chosen server (stats for each server are shown in the relative window).

All server types on NordVPN site are available to be selected in the window.

KDE Plasma users can also find the relative plasmoid.

Tested against DNS leaks (NetworkManager use is discouraged (and disabled by default) as it may leak DNS)

NOTE : ikev2 support is tested on Debian, Arch and derivatives (if something's not right button won't show up)

Features

  • Automatic connection to recommended server (according to nordvpn.com)
  • TCP, UDP and IKEv2/IPsec protocols are available
  • Connection (TCP and UDP) can be established with either openvpn or NetworkManager-openvpn (will show connection in the system interface)
  • No DNS leak (when using openvpn)
  • Killswitch (when using openvpn)
  • Quick connection/disconnection from command line (according to last chosen server type)
  • Easy to setup for autoconnection at startup
  • Integrated with its own plasmoid

Installation and requirements

Arch Linux users can find this project on the AUR.

For Debian/Ubuntu, Fedora/Red Hat users:

To install all dependencies, download config files and to add a desktop entry in the main menu just run install.sh

For other distros:

install the following packages:

python3 python3-tk python3-requests openvpn wget unzip net-tools iproute2

and

strongswan libstrongswan-standard-plugins libstrongswan-extra-plugins libcharon-extra-plugins

to support ikev2 (facultative)

networkmanager-openvpn

to support Network Manager (facultative).

Then run install.sh

If you have a dual monitor setup you may also want to install screeninfo (pip3 install --user screeninfo) to correct window centering.

Installing with support for obfuscated servers

At the launch of the installation script you will be asked

Do you want to install support for obfuscated servers (it will reinstall openvpn)?[y/n] (Recommended: n)

if you answer is y then openvpn will be built from source (version 2.4.4) applying patch for obfuscation. If you do not run Debian/Ubuntu, Fedora or Arch, you should provide the following packages and then run install.sh

automake autoconf perl gnupg quilt libtool openssl-devel lzo-devel pam-devel net-tools

Note: Installing support for obfuscated servers breaks Network Manager openvpn support in some distros (in that case you should disable it in the advanced options)

Usage

Open the application, select your preferred server type (also manually) and protocol and just press connect. Once you are connected you can even close the application and reopen it when you want to disconnect the VPN. If the size of the window does not fit entirely the gui components change the scale factor in the advanced settings.

Additional info

The button "Reset settings" resets only the settings of the connection (each time a VPN connection is established the used options are saved and restored at the next start). The percent associated to each server in the window for manual choice is the load (a big load implies a slower connection)

Advanced Settings

Alt text

Scale Factor: this parameter affects the size of a window (will be restored at each start) Network Manager: if checked NordPy will try to connect through networkmanager-openvpn plugin (disabled by default). Works only if network manager is enabled. It is discouraged the use, as it leaks DNS.

Command line interface

nordpy can be called with 3 different commands (in this case the gui isn't opened):

  • --quick-connect starts a connection according to the last chosen preferences (you must first start a connection using the gui)
  • --quick-disconnect shuts down any connection that nordpy previously started
  • --status checks if any VPN is already running

All options can be listed with nordpy --help

Autostart

You can easily configure nordpy to establish VPN connection at the start of your system. You just need to

  1. Install a cron implementation (I usually use cronie)
  2. Edit the root crontab (sudo crontab -e) and add the following line to it
@reboot PATH/TO/nordpy.py --quick-connect --wait-connection

(you can easily obtain your path to nordpy with which nordpy).

You can disable it just by deleting the line you added to the crontab.

Previews

Alt text

When pressed "Select":

Alt text

After connection has been established:

Alt text

Once closed and restarted:
Alt text

Development

Tests

Before running the tests you need to install needed dependencies with

# pip install -r tests/requirements.txt

Make sure you also connected at least once with the gui (in order to store the credentials). Then tests can be started with

$ python -m pytest tests

Environment

You can also easily setup a test environment with vagrant (so you will need to install before proceeding with the following steps): the project contains a minimalistic Vagrantfile to initialize it.

  1. Start the nordpy gui and connect to any server in order to store the password

  2. Change the permissions of the credentials file. WARNING: this will the expose the password of your NordVPN account to anyone which has access to your machine.

# chmod +r credentials
  1. Create the environment
$ vagrant up
  1. Open a shell into the vm
$ vagrant ssh
  1. Move to the shared folder and install nordpy
$ cd /Vagrant && ./install.sh
  1. Start testing as said above!
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].