You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Selva Nair 307bb34fa9 Do not add CRLF to base64 encoded output 5 years ago
res res/openvpn-gui-res-fi.rc: add missing IDS_MENU_RECONNECT translation 5 years ago
.appveyor.yml App Veyor: skip travis-ci builds 6 years ago
.editorconfig Add EditorConfig file 7 years ago
.gitignore File 'compile' now removed as well 9 years ago
.kateconfig add .kateconfig 15 years ago
.travis-build-openssl.sh travis-ci: add openssl-1.1.0 support 7 years ago
.travis.yml travis-ci: switch to xenial, disable cppcheck 6 years ago
BUILD.rst remove g++ from required cygwin packages 5 years ago
CHANGES.rst Add information about versions 2-7 to CHANGES.rst 9 years ago
COPYING
COPYRIGHT.GPL
Makefile.am add Chinese (Simplified) localization 7 years ago
README.rst Update README 7 years ago
access.c Close token handle in GetProcessTokenGroups() 8 years ago
access.h Handle interactive service policy restrictions 9 years ago
bootstrap use automake in build 13 years ago
chartable.h convert files to unix style end-of-line 13 years ago
configure.ac Bump version to 11.14.0.0 5 years ago
env_set.c env_set.c: remove redundant check 6 years ago
env_set.h Support for 'setenv name var' using echo 7 years ago
localization.c Fallback to default sublanguage when loading resources 6 years ago
localization.h Fix truncation of usage message shown when --help is used 8 years ago
main.c Add missing va_end() in MsgToEventLog() 6 years ago
main.h Group configs based on the directory structure to support a nested view 6 years ago
manage.c Subscribe to bytecount message from management interface 7 years ago
manage.h Support sending commands to running instance 7 years ago
misc.c Do not add CRLF to base64 encoded output 5 years ago
misc.h Promptly close pipe handles passed to child 5 years ago
openvpn-gui-res.h Remove service-only checkbox from settings menu 7 years ago
openvpn.c set focus to challenge when password already filled 5 years ago
openvpn.h Support for 'setenv name var' using echo 7 years ago
openvpn_config.c Bug fix config-group data structure 6 years ago
openvpn_config.h refactor option handling code 15 years ago
options.c Eliminate MAX_CONFIGS limit using a dynamic array 6 years ago
options.h Bug fix config-group data structure 6 years ago
passphrase.c Simplify some parameters and registry keys 8 years ago
passphrase.h Simplify some parameters and registry keys 8 years ago
proxy.c change "%S" to "%ls" to silence mingw warning: 8 years ago
proxy.h support SOCKS 5 proxy auth notifications from mgmt 13 years ago
registry.c Add a registry key for choosing config menu view 6 years ago
registry.h Make options saved in registry editable by user 8 years ago
save_pass.c Save username and optionally passwords 9 years ago
save_pass.h Save username and optionally passwords 9 years ago
scripts.c Support for 'setenv name var' using echo 7 years ago
scripts.h use managment interface 14 years ago
service.c Close open service handles after use 8 years ago
service.h Handle interactive service policy restrictions 9 years ago
tray.c Bug fix config-group data structure 6 years ago
tray.h Provide support for a hierarchical config menu listing 6 years ago
viewlog.c Use file associations to open config and log 8 years ago
viewlog.h convert files to unix style end-of-line 13 years ago

README.rst

OpenVPN GUI
#####################################################
.. image:: https://travis-ci.org/OpenVPN/openvpn-gui.svg?branch=master
:target: https://travis-ci.org/OpenVPN/openvpn-gui
:alt: TravisCI status
.. image:: https://ci.appveyor.com/api/projects/status/github/OpenVPN/openvpn-gui?branch=master&svg=true
:target: https://ci.appveyor.com/project/mattock/openvpn-gui
:alt: AppVeyor status

Installation Instructions for OpenVPN GUI for Windows
#####################################################

OpenVPN-GUI has been bundled with OpenVPN installers for a long time, so there
is rarely a need to install it separately. Bleeding-edge
versions of OpenVPN-GUI are available in `OpenVPN snapshot
installers <http://build.openvpn.net/downloads/snapshots/>`_ based on Git master
branch. OpenVPN-GUI gets installed by default in all OpenVPN installers.

Installation using the official OpenVPN installers
**************************************************

* Download an `OpenVPN installer <https://openvpn.net/index.php/open-source.html>`_
* If you have a previous version of OpenVPN GUI running, shut it down.
Make sure it's closed by ALL logged on users.

* Run the OpenVPN installer

Manual installation of OpenVPN GUI
**********************************

* `Download <https://openvpn.net/index.php/download/community-downloads.html>`_
and install OpenVPN

* Download OpenVPN GUI of your choice and save it in OpenVPN's bin folder.
Default is *C:\\Program Files\\OpenVPN\\bin\\*. You must put it in this folder
because OpenVPN GUI depends on the OpenSSL DLLs installed in this folder by
OpenVPN.

Configuring OpenVPN GUI to start on Windows logon
*************************************************

OpenVPN GUI can be configured to start automatically on logon to Windows from
its setting menu. This is default behavior for all users if OpenVPN GUI was
installed by an OpenVPN 2.4 installer using default installer options.

Adding an OpenVPN configuration file
************************************

To launch a VPN connections using OpenVPN GUI you need to add an OpenVPN
configuration file with .ovpn suffix. Any text editor (e.g. notepad.exe) can be
used to create a OpenVPN configuration files. Note that *log* and *log-append*
options are ignored as OpenVPN GUI redirects the normal output to a log file
itself. There are sample config files in the *sample-config* folder. Please
refer to the `OpenVPN project homepage <https://openvpn.net>`_ for more
information regarding creating the configuration file.

Once the configuration file is ready, you need to let OpenVPN GUI know about it.
There are three ways to do this:

* Place the file into the system-wide location, usually
*C:\\Program Files\\OpenVPN\\config\\*, or any of its immediate
subdirectories. This VPN connection will be visible for all users of the
system.
* Place the file into *C:\\Users\\username\\OpenVPN\\config\\*, or any of its
immediate subdirectories. The configuration file is only visible for the
user in question. If the user is not a member of the built-in "Administrators"
group or "OpenVPN Administrators" group and tries to launch such a connection,
OpenVPN GUI pops up a UAC, offering to create the latter group (if missing)
and to add the user to it. This will only work if admin-level credentials are
available.
* Use the "Import file" function in OpenVPN GUI itself

Using OpenVPN GUI
#################

When OpenVPN GUI is started your OpenVPN config folders
(*C:\\Users\\username\\OpenVPN\\config* and
*C:\\Program Files\\OpenVPN\\config*) will be scanned for .ovpn files and the
OpenVPN GUI icon will appear in the system tray. Each OpenVPN configuration
file shows up as a separate menu item in the OpenVPN GUI tray, allowing you to
selectively connect to and disconnect to your VPNs. The config dir will be
re-scanned for new config files every time you open the OpenVPN GUI menu by
right-clicking the icon.

When you choose to connect to a site OpenVPN GUI will launch openvpn with
the specified config file. If you use a passphrase protected key you will be
prompted for the passphrase.

If you want OpenVPN GUI to start a connection automatically when it's started,
you can use the --connect cmd-line option. The extension of the config file
may be optionally included. Example::

openvpn-gui --connect office.ovpn
OR
openvpn-gui --connect office

To get help with OpenVPN GUI please use one of the official `OpenVPN support
channels <https://community.openvpn.net/openvpn/wiki/GettingHelp>`_.

Running OpenVPN GUI as a Non-Admin user
***************************************

OpenVPN 2.3.x and earlier bundle an OpenVPN GUI version (< 11) which has to be
run as admin for two reasons

* OpenVPN GUI registry keys are stored in system-wide location
under HKEY_LOCAL_MACHINE, and they are generated when OpenVPN GUI was
launched the first time
* OpenVPN itself requires admin-level privileges to modify network settings

OpenVPN GUI 11 and later can make full use of the Interactive Service
functionality in recent versions of OpenVPN. This changes a number of
things:

* OpenVPN GUI can store its settings in user-specific part of the registry under
HKEY_CURRENT_USER
* OpenVPN is able to delegate certain privileged operations, such as adding
routes, to the Interactive service, removing the need to run OpenVPN with
admin privileges. Note that for this to work the *OpenVPNServiceInteractive*
system service has to be enabled and running.

Run Connect/Disconnect/Preconnect Scripts
*****************************************

There are three different scripts that OpenVPN GUI can execute to help
with different tasks like mapping network drives.

Preconnect If a file named "xxx_pre.bat" exist in the config folder
where xxx is the same as your OpenVPN config file name,
this will be executed BEFORE the OpenVPN tunnel is established.

Connect If a file named "xxx_up.bat" exist in the config folder
where xxx is the same as your OpenVPN config file name,
this will be executed AFTER the OpenVPN tunnel is established.

Disconnect If a file named "xxx_down.bat" exist in the config folder
where xxx is the same as your OpenVPN config file name,
this will be executed BEFORE the OpenVPN tunnel is closed.

Send Commands to a Running Instance of OpenVPN GUI
**************************************************

When an instance of the GUI is running, certain commands may be sent to
it using the command line interface using the following syntax::

openvpn-gui.exe --command *cmd* [*args*]

Currently supported *cmds* are

connect ``config-name``
Connect the configuration named *config-name* (excluding the
extension .ovpn). If already connected, show the status window.

disconnect ``config-name``
Disconnect the configuration named *config-name* if connected.

reconnect ``config-name``
Disconnect and then reconnect the configuration named *config-name*
if connected.

disconnect\_all
Disconnect all active connections.

silent\_connection 0 \| 1
Set the silent connection flag on (1) or off (0)

exit
Disconnect all active connections and terminate the GUI process

If no running instance of the GUI is found, these commands do nothing
except for *--command connect config-name* which gets interpreted
as *--connect config-name*

Registry Values affecting the OpenVPN GUI operation
***************************************************

Parameters taken from the global registry values in
*HKEY_LOCAL_MACHINE\\SOFTWARE\\OpenVPN\\* key

(Default)
The installation directory of openvpn (e.g., *C:\\Program Files\\OpenVPN*).
This value must be present.

config_dir
The global configuration file directory. Defaults to
*C:\\Program Files\\OpenVPN\\config*

exe_path
path to openvpn.exe, defaults to *C:\\Program Files\\OpenVPN\\bin\\openvpn.exe*

priority
the windows priority class for each instantiated OpenVPN process,
can be one of:

* IDLE_PRIORITY_CLASS
* BELOW_NORMAL_PRIORITY_CLASS
* NORMAL_PRIORITY_CLASS (default)
* ABOVE_NORMAL_PRIORITY_CLASS
* HIGH_PRIORITY_CLASS

ovpn_admin_group
The windows group whose membership allows the user to start any configuration file
in their profile (not just those installed by the administrator in the global
config directory). Default: "OpenVPN Administrators".

disable_save_passwords
Set to a nonzero value to disable the password save feature.
Default: 0

User Preferences
****************

All other OpenVPN GUI registry values are located below the
*HKEY_CURRENT_USER\\SOFTWARE\\OpenVPN-GUI\\* key. In a fresh
installation none of these values are present and are not
required for the operation of the program. These keys are only
used for persisting user's preferences, and the key names
and their values are subject to change.

The user is not expected to edit any of these values directly.
Instead, edit all preferences using the settings menu.

config_dir
The user-specific configuration file directory: defaults to
*C:\\Users\\username\\OpenVPN\\config*.
The GUI parses this directory for configuration files before
parsing the global config_dir.

config_ext
file extension on configuration files, defaults to *ovpn*

connectscript_timeout
Time in seconds to wait for the connect script to finish. If set to 0
the exitcode of the script is not checked.

disconnectscript_timeout
Time in seconds to wait for the disconnect script to finish. Must be a
value between 1-99.

preconnectscript_timeout
Time in seconds to wait for the preconnect script to finish. Must be a
value between 1-99.

log_dir
log file directory, defaults to *C:\\Users\\username\\OpenVPN\\log*

log_append
if set to "0", the log file will be truncated every time you start a
connection. If set to "1", the log will be appended to the log file.

silent_connection
If set to "1", the status window with the OpenVPN log output will
not be shown while connecting. Warnings such as interactive service
not started or multiple config files with same name are also suppressed.

service_only
If set to "1", OpenVPN GUI's normal "Connect" and "Disconnect"
actions are changed so they start/stop the OpenVPN service instead
of launching openvpn.exe directly.

show_balloon
0: Never show any connected balloon

1: Show balloon after initial connection is established

2: Show balloon even after re-connects

All of these registry options are also available as cmd-line options.
Use "openvpn-gui --help" for more info about cmd-line options.

Building OpenVPN GUI from source
################################

See `BUILD.rst <BUILD.rst>`_ for build instructions.