I made this to bypass a Unity3D block when trying to run Unity3D with NordVPN connected. Connecting to NordVPN servers through OpenVPN GUI fixes this 'unity block' issue, but there are two major problems: OpenVPN GUI can't be configured to run and connect on startup, and there isn't a way to find the 'best' server to connect to. Open2Nord fixes these two issues!
Open2Nord does some light Python scripting to find the best NordVPN server for your location, and connects you to it automatically on logon through the OpenVPN GUI.
I also made sure that the code (and project itself) was short and sweet, so you can easily tell if anything fishy is going on. I'd like to say it's also easier for newbies to learn so they can do it themselves, but I can't say for certain! Let me know what to clear up so it's more understandable.
(Currently only supports Windows 10, maybe Windows 7)
Install OpenVPN from
Download and extract the compiled Open2Nord.zip versionhere
or build your own Open2Nord
a. make sure you extract it to a good place, like
DO NOT HAVE SPACES OR PARENTHESIS IN THE DIRECTORY!
Modify the data.txt folder accordingly. I recommendhttps://gps-coordinates.org/
for grabbing latitude and longitude (will eventually be automated)
a. also make sure your OpenVPN directory ends at OpenVPN e.g: C:\Program Files\OpenVPN as shown so 'OpenVPN directory' should point to this area of the OpenVPN install
Modify the login_info.txt with your NordVPN email and password. Keep in mind this is stored in plaintext on your device.
Run RunOnStartup (Run Me!).bat (will run Open2Nord every computer boot)
Run Open2Nord.exe (as admin) to connect right away
NOTE: Make sure to run
RunOnStartup (Run Me!).bat again if you change the project directory!
------------------Build It Yourself--------------
TODO cleanup, make more newbie friendly.
install python 3.x, most versions should be compatible
download source and extract source
pip install requests and pip install cx_freeze (or look up how to install requests and cx_freeze)
modify a couple lines in setup.py so they point to your python directory
run "python setup.py build" in terminal at the project directory (that has setup.py)
move all the files in
move_to_build_directoryto the newly made build directory (same path as Open2Nord.exe)
a. make sure you extract the config_files.zip so that the config_files folder appears in the same directory, and is full of .ovpn files
-------------------How It Works------------------
RunOnStartup (Run Me!).batcreates a windows Task Scheduler to run Open2Nord on every boot. It calls
XML_Stuff.batwhich does some batch modifications of
task_info.xmlso it's customized to your system, and then creates a new Task with this new XML named
StopStartup.batdeletes the task named Open2Nord. Basically stops Open2Nord from running on boot.
ScheduleFixer_donotrun.batis a quick fix for Task Scheduler so it runs in the proper directory
data.txttakes user input to modify how they want Open2Nord to run.
login_info.txttakes an email on the first line and password on the second; used to automatically connect to NordVPN's servers.
config_filesis a list of server config files given from NordVPN's website
Open2Nord.exe- view Open2Nord.py for more info
If you are getting config errors, replace the files inside the config_files folder with the .ovpn files from https://downloads.nordcdn.com/configs/archives/servers/ovpn.zip (might make a quick script to do this automatically later)
And you're done! Let me know if there are any problems.
- connect through 126.96.36.199 (see https://188.8.131.52/ ) to get Amazon and other sites working, if they aren't
- automatically grab latitude/longitude from current ip
- automatically refresh config files if outdated
- fix an issue when there are more than 50 config files in OpenVPN GUI config folder automatically (if you are experiencing this, just delete a bunch of them. OpenVPN GUI doesn't like more than 50 config files)
- change task to have 'onlogon for specific user' instead of all users (unsure if this affects anything. if you have this issue let me know, i'll see if I can fix it)
- fix time.sleep issue, needs to be put before the loop because it never gets reached.