0
0
mirror of https://github.com/OpenVPN/openvpn3.git synced 2024-09-19 19:52:15 +02:00
Commit Graph

244 Commits

Author SHA1 Message Date
James Yonan
0609c76c0b Refactored Mac OS X tun handler (tuncli.hpp) by moving tun
interface management code into TunMac::Setup()
(tunsetup.hpp).

Added TunBuilderSetup::Config, Base, and Factory for use
as a unix-portable abstraction layer for tun interface
management code.

Added Stop object pointer to Mac OS X tun config
(TunMac::ClientConfig), so that tun management code can
detect stop commands if it's blocking outside of outer
asio::io_context.
2015-11-20 19:16:39 -07:00
James Yonan
a9ed9d47f2 ovpn3 client API now supports adding user-defined peer-info
data to the OpenVPN handshake (peer-info is a client -> server
key/value list that is part of the OpenVPN protocol).  To
add peer-info key/value pairs, use ClientAPI::Config::peerInfo.

Incremented core OPENVPN_VERSION to "3.0.6".
2015-09-21 19:42:24 -07:00
James Yonan
16bde170c0 Don't use deprecated asio features. 2015-06-30 00:05:37 -06:00
James Yonan
c4ea9e90ca Forgot to initialize recently-added ClientAPI::Config::dco
to false.
2015-06-28 02:10:50 -06:00
James Yonan
5bfa1fc310 Added "DCO" to OpenVPNClient::platform() string when a DCO
provider is enabled.
2015-06-18 14:37:12 -06:00
James Yonan
496e797a21 Added client hooks for DCO (Data Channel offload).
Updated tun implementation on Linux.
2015-06-17 01:48:33 -06:00
James Yonan
142bcb0c44 OpenVPNClient::platform() method now returns
core build timestamp.
2015-06-07 00:52:02 -06:00
James Yonan
c6a21c827b Boost dependency elimination -- final removal of Boost
dependency.  Asio is now included as a standalone,
header-only dependency.
2015-06-06 10:59:18 -06:00
James Yonan
d466fb6cce Boost dependency elimination -- removed BOOST_DISABLE_ASSERTS 2015-06-05 00:47:54 -06:00
James Yonan
b75c780cab Renamed boost::intrusive_ptr<T> usage to RCPtr<T>. 2015-05-17 21:26:53 -06:00
James Yonan
35ac9f6229 Renamed types.hpp to size.hpp since it now only defines
size_t and ssize_t.
2015-05-17 13:27:34 -06:00
James Yonan
e494846f7d Moved count_t to its own header file. 2015-05-17 13:17:24 -06:00
James Yonan
fe6fcefa61 C++11 : rename NULL to nullptr 2015-05-17 02:53:37 -06:00
James Yonan
68b8f12b25 Refactored ScopedPtr usage to std::unique_ptr.
Removed ScopedPtr.
2015-05-17 01:41:16 -06:00
James Yonan
e4c2ab6c71 In cli.cpp, improve dynamic challenge/response support.
In client API, allow ClientAPI::ProvideCreds::dynamicChallengeCookie
to be set with either the dynamic challenge/response State ID
or the full cookie.
2015-05-10 15:39:57 -06:00
James Yonan
17057f5dc7 OpenVPN 3 client now supports compile-time overriding of
tun factory using OPENVPN_CUSTOM_TUN_FACTORY.
2015-04-15 22:31:22 -06:00
James Yonan
70d858aeec In client/ovpncli.cpp, allow ClientAPI::MySessionStats and
ClientAPI::MyClientEvents to be subclassed.
2015-04-13 23:42:23 -06:00
James Yonan
62b52557f5 Refactored OpenVPNClient::connect() to make it easier for
derived classes to modify behavior.
2015-04-12 11:27:58 -06:00
James Yonan
896347aabd For testing purposes, allow includer of ovpncli.cpp to define
their own OPENVPN_LOG() and OPENVPN_LOG_NTNL() methods to
override log macros in <openvpn/log/logthread.hpp>.
2015-04-10 23:50:07 -06:00
James Yonan
2ca397b513 Core: #define BOOST_DISABLE_ASSERTS because boost asserts on
null smart pointer dereferences are fairly useless
since a segfault will generate more actionable debug info.
2015-04-10 23:48:24 -06:00
James Yonan
8a983e730f When PRIVATE_TUNNEL_PROXY is enabled, append PT_PROXY
to the OpenVPNClient::platform() string.
2015-03-08 12:34:50 -07:00
James Yonan
8f4b17ce6a Add extension parameter to ProfileMerge constructor to allow
parsing of files with non-ovpn extensions.
2015-02-10 15:48:08 -07:00
James Yonan
5c31950852 Added TLS version min override parameter to ClientAPI::Config:
// Override the minimum TLS version:
  //   disabled -- don't specify a minimum, and disable any minimum
  //               specified in profile
  //   default or ""  -- use profile minimum
  //   tls_1_0  -- use TLS 1.0 minimum (overrides profile)
  //   tls_1_1  -- use TLS 1.1 minimum (overrides profile)
  //   tls_1_2  -- use TLS 1.2 minimum (overrides profile)
  std::string tlsVersionMinOverride;
2015-02-04 20:29:43 -07:00
James Yonan
557df02296 Added AltProxy API that allows for alternative proxy implementations
to be developed outside the core.
2015-02-02 23:11:51 -07:00
James Yonan
d4af03c205 Extended follow_references parameter of ProfileMerge class to allow
for full reference following (e.g. cert ssl/serv.crt) as is helpful
in server-side environments.
2015-01-19 14:30:37 -07:00
James Yonan
c2c7292a70 Updated copyright to 2015. 2015-01-06 12:56:21 -07:00
James Yonan
758ac9daa0 Templatized UTF-8 methods such as Unicode::utf8_printable to
work on arbitrary string types (such as upcoming SafeString).
2014-10-30 10:18:30 -06:00
James Yonan
255b71958f Reversed polymorphic ProtoContext performance degradation.
* Performance degradation from recent commit was occurring
  in PRNG.

* Allow RNG to be used in place of PRNG.  For PolarSSL
  at least, this change completely reverses the
  polymorphic ProtoContext performance degradation
  and turns it into a net performance gain.

* Added bool prng to RNG constructors to allow
  the implementation to optimize for PRNG
  (only PolarSSL currently supports this).

Documented different use-cases for RNG vs. PRNG
in ProtoContext:

  RNG -- Random number generator.
  Use-cases demand highest cryptographic strength
  such as key generation.

  PRNG -- Pseudo-random number generator.
  Use-cases demand cryptographic strength
  combined with high performance.  Used for
  IV and ProtoSessionID generation.
2014-10-21 16:45:20 -06:00
James Yonan
2f593bd2eb Added OpenVPNClient::uninit_process() API method that calls
InitProcess::uninit().

In test/ovpncli/cli.cpp, move boost::thread* to higher scope.
2014-08-10 16:44:09 -06:00
James Yonan
2c6d972ad6 Added AGPL copyright/licensing language. 2014-07-20 21:22:06 -06:00
James Yonan
11acfc6ca2 Implemented Mac connection lifecycle monitoring object
(MacLifeCycle).

Monitor connection lifecycle notifications, such as sleep, wakeup,
network-unavailable, and network-available.

Note that not all platforms define a lifecycle object.  Some
platforms such as Android and iOS manage lifecycle notifications at
the service level, and they call pause(), resume(), reconnect(),
etc. as needed using the main ovpncli API.

Also, added a reason string to Pause event.
2014-03-24 17:28:46 -06:00
James Yonan
e3388ff1ec On Mac, create a DNS watchdog thread to monitor for potential changes
to DNS settings by a foreign actor.  If changes are detected,
revert them.
2014-03-24 17:23:17 -06:00
James Yonan
28bf9b2a15 Added full support for OpenVPN 3 on Mac OS X (10.6 and higher)
including DNS and IPv6 support.
2014-02-27 18:34:17 -07:00
James Yonan
b84b48fb75 Ported to Windows.
Implemented full TunClient class for Windows with TAP driver
support.  For now, we use netsh (rather than TAP driver DHCP)
to set all tunnel adapter properties, as this appears to work
great on Windows 7.

IPv6 is fully supported.

Known isues:

* netsh doesn't have a command for adding DNS search domains, so
  we don't support them yet.

* While we always try to remove routes and added properties from
  TAP adapter instance when we close out the session, for robustness,
  when we bring up TAP adapter, we should try to delete any stale
  routes on interface left over from previous session.

* Right now we call netsh with system().  For security and
  compatibility with Windows apps (not only console apps),
  we should use CreateProcess instead.
2014-02-16 01:13:26 -07:00
James Yonan
83e38b15d0 In ovpncli.cpp, provide a definition for OPENVPN_CLIENT_EXPORT
and include ovpncli.hpp for non-__GNUC__ compilers.
2014-02-08 00:13:23 -07:00
James Yonan
d20fb9a47f core: added platform info method to OpenVPN 3 API:
// Returns platform description string
  static std::string platform();
2014-01-14 16:28:29 -07:00
James Yonan
cd5d7bc1e9 Core: handle external PKI signature requests for non-RSA_RAW
signature types internally in the core, so that individual
platforms only see RSA_RAW requests.
2014-01-13 17:13:34 -07:00
James Yonan
1d854997c8 Changed IV_OPENVPN_GUI_VERSION -> IV_GUI_VER per community agreement. 2014-01-09 14:30:12 -07:00
James Yonan
f1a5fe699a Core creds changes:
* Added better API documentation in ovpncli.hpp about the meaning
  of replacePasswordWithSessionID and cachePassword.

* Log when creds are passed to server, including info about
  whether creds are blank and whether a Session ID was used
  in place of a password.  Also indicate when creds are a
  response to a static or dynamic challenge.

* Changed RESTART handling.  When receiving a RESTART, always
  attempt a restart, never halt.  When receiving a RESTART with
  psid==0, clear out any cached Session ID (if one exists) before
  doing the restart.

* If can_retry_auth_with_cached_password() is called and modifies
  the password, make sure to clear the
  did_replace_password_with_session_id flag.
2014-01-07 21:32:37 -07:00
James Yonan
b6df43fd88 Core: implemented IV_OPENVPN_GUI_VERSION.
Clients can set via guiVersion string in OpenVPN 3 API.
2014-01-07 11:49:48 -07:00
James Yonan
4e1279fe97 Core API change: External PKI sign requests now specify a signature
type string (sig_type) such as "RSA_RAW" or "RSA_SHA256".

iOS plugin has been modified to support sig_type as well.
2013-12-31 12:37:13 -07:00
James Yonan
6496230177 OpenVPN 1.0.4 build 113 (iOS)
Core: Added forceAesCbcCiphersuites config flag.  When enabled,
the TLS implementation will not set a minimum TLS version for
peer negotiation (even if tls-version-min is specified), but
will instead force one of these two ciphersuites:

1. TLS_DHE_RSA_WITH_AES_256_CBC_SHA, or
2. TLS_DHE_RSA_WITH_AES_128_CBC_SHA

When forceAesCbcCiphersuites is disabled, no explicit set of
ciphersuites will be forced, but the TLS minimum version will
be set to 1.0 or (or higher if tls-version-min is specified).

Also added iOS preference and cli.cpp option to control the
forceAesCbcCiphersuites flag.
2013-12-27 15:16:05 -07:00
James Yonan
1481327d72 OpenVPN 1.0.2 build 98 (iOS)
Ported iOS client and OpenVPN 3 core to ARM-64.
Now building a "fat binary" with Xcode 5.0.1 that
targets arm7, arm7s, and arm64.

Outstanding issues:

* IPv6 doesn't route through tunnel on iOS7
* Client doesn't install on iOS 5.1.1.
2013-11-11 12:33:35 -07:00
James Yonan
002a471b5a Commented-out debug symbol OPENVPN_SHOW_SESSION_TOKEN added. 2013-07-30 21:03:31 +00:00
James Yonan
7fe6fad18a Added crypto self test capability to core.
Added polarssl/bignum-arm.patch to resolve issue where
asm-optimized bignum code would crash on iOS.
2013-06-14 00:34:49 +00:00
James Yonan
cf39be0516 Log unused options, i.e. options specified in config file that were
unrecognized, ignored, or unused.

This behavior is somewhat different (by design) to 2.x branch, which
will raise a fatal exception if an unrecognized option is
encountered.
2013-06-10 00:42:19 +00:00
James Yonan
906584ba3b Support "setenv opt" prefix before directives, where
its presence indicates that the directive is optional,
i.e. if a client doesn't understand the directive, it
should simply ignore it.
2013-06-08 16:10:35 +00:00
James Yonan
d22631f741 For iOS build, added "Live Simulator" build configuration -- this
will build the app as if it was running on the simulator, i.e. with
null tun device, but will build for an actual iOS device.

OPENVPN_SSL_DEBUG defined in ovpncli.cpp is now a debug level and
can be set to an integer value (or 0 to disable).
2013-06-07 21:55:54 +00:00
James Yonan
d3c592c991 For iOS (and other platforms in the future), added the capability
for server to push proxy options, e.g.:

  push "dhcp-option PROXY_HTTP 10.144.5.14 3128"
  push "dhcp-option PROXY_HTTPS 10.144.5.14 3128"
  push "dhcp-option PROXY_BYPASS www.yonan.net staging.openvpn.net"
  push "dhcp-option PROXY_AUTO_CONFIG_URL http://www.yonan.net/proxy.pac"
2013-05-24 20:04:37 +00:00
James Yonan
82be8b0107 packet_id.hpp now logs errors to a SessionStats objects,
like the rest of the core.

Added verbose() method to class SessionStats so that clients can
know whether to pass extra text data to error() virtual method.
2013-05-22 05:13:11 +00:00
James Yonan
de0da474ef Revamp remote-list handling so that DNS names that resolve to
multiple addresses will be treated as if each address was an
individual remote directive.

Fixed issue where UDP transport driver was calling socket
connect method synchronously.  This can cause exceptions
to be thrown in corner cases, such as "No route to host"
on OSX/iOS for connections to IPv6 addresses when no default
IPv6 route exists on system.  Refactoring UDP connect
operation to be asychronous fixes the issue.

Implemented remote-random.
2013-03-12 19:20:37 +00:00
James Yonan
a5c05a8e65 Comment update. 2013-02-28 17:35:06 +00:00
James Yonan
ce8171fff1 Minor fixes related to open-sourcing process. 2013-01-30 20:17:30 +00:00
James Yonan
f8f5d86b2b Android 1.1.9 build 34
* key-direction default can now be set through the ovpncli API,
  but generally defaults to -1 (bidirectional).
2013-01-28 01:11:28 +00:00
James Yonan
dd377281a5 Added cachePassword boolean to ProvideCreds struct in core API.
Separated the functionality of replacePasswordWithSessionID
and cachePassword, and allow them to be used together,
in which case the session ID will be used as the password
until it expires or is invalidated, then the cached
password will be used to reauth.
2013-01-25 02:34:20 +00:00
James Yonan
6c0be1e1c0 iOS: 1.0.1 build 55
Android: 1.1.9 build 31

* Reverted key-direction back to a default of 1.

* Raise fatal error if "fragment" option is used.

* Made TunBuilderCapture more useful as a base class for
  tun construction on various platforms.

* Added disableClientCert flag at ovpncli.hpp API.

* Updated help FAQ with more details on how to
  properly set key-direction, and notes about
  possible network disconnect during voice calls.
2013-01-24 13:34:17 +00:00
James Yonan
b5611c7ac0 Core: add optional state debugging for proto.hpp.
In ovpncli.cpp:

#define OPENVPN_DEBUG_PROTO   2 // enable state debugging if >= 2
2013-01-20 04:18:34 +00:00
James Yonan
be454f3971 Core change: allow "proto tcp-client" usage for compatibility
with 2.x branch.
2013-01-19 03:40:40 +00:00
James Yonan
d5874f4684 Misc client and pre-server cleanup. 2012-11-26 01:51:24 +00:00
James Yonan
c3df841fa6 Core changes for password save support. 2012-11-18 18:53:10 +00:00
James Yonan
94680833e0 Implement options for allowPasswordSave:
setenv ALLOW_PASSWORD_SAVE 0|1
  allow-password-save 0|1

By default, allowPasswordSave is true.
2012-11-18 08:55:27 +00:00
James Yonan
34a2fd7047 Add error code for PEM_PASSWORD_FAIL for conveying error up
through client API.
2012-11-16 04:13:48 +00:00
James Yonan
06acd86d29 Added core support for PEM private key passwords. 2012-11-15 22:48:13 +00:00
James Yonan
32a117242e More profile validation. 2012-11-14 02:35:50 +00:00
James Yonan
5a5a18942a Added parser size validation constants in
openvpn/client/cliconstants.hpp
2012-11-12 01:52:03 +00:00
James Yonan
4e6117a111 OpenVPN 1.0 Beta 25 (iOS)
* Added support for import of non-unified profiles via iTunes.

* Added Google DNS Fallback preference.
2012-11-07 22:03:10 +00:00
James Yonan
065b83263c Initial Apple VPN-On-Demand implementation:
* VoD profiles can be defined using the iPhone Configuration utility:

  1. Connection Type should be set to Custom SSL
  2. Identifier should be set to net.openvpn.OpenVPN-Connect.vpnplugin
  3. Server can be set to a hostname, or "DEFAULT" to use the
     hostname(s) from the OpenVPN configuration.
  4. User Authentication should be set to Certificate, and the client
     certificate+key should be attached as a PKCS#12 file.
  5. VPN On Demand should be enabled and match entries should be
     defined.

  In addition, the OpenVPN client configuration file may be defined
  via key/value pairs:

  1. VoD requires an autologin profile.
  2. Define each OpenVPN directive as a key, with arguments
     specified as the value.
  3. For Access server meta-directives such as
     OVPN_ACCESS_SERVER_USERNAME, remove the "OVPN_ACCESS_SERVER_"
     prefix, giving USERNAME as the directive.
  4. If no arguments are present, use "NOARGS" as the value.
  5. If multiple instances of the same directive are present,
     number the directives in the order they should be processed by
     appending .<n> to the directive, where n is an integer,
     such as remote.1 or remote.2
  6. For multi-line directives such as <ca> and <tls-auth>, you must
     convert the multi-line argument to a single line by specifying
     line breaks as \n -- also note that because of
     this escaping model, you must use \\ to pass backslash itself.

* VoD profiles are recognized and listed by the app.

* The app can disconnect but not connect a VoD profile.

* Most app-level functionality such as logging and preferences
  work correctly for VoD profiles.

Core changes:

* Added support for key-direction parameter in core.
2012-11-06 17:50:30 +00:00
James Yonan
1c7f9e2577 Completed HTTP proxy backend implementation
in new client core:

* Added NTLMv2 authentication
2012-10-28 10:07:32 +00:00
James Yonan
5564037b7e Added new preference for Android:
DNS Fallback (enabled by default) -- Use Google DNS servers as a
fallback for connections that route all internet traffic through
the VPN tunnel but don't define any VPN DNS servers.
2012-10-24 12:37:24 +00:00
James Yonan
3ca3a857bd Initial HTTP proxy implementation in core, with support for
non-authenticated proxies and Basic Auth.

Includes new PROXY_ERROR and PROXY_NEED_CREDS events.

Still to do: Digest and NTLM auth.
2012-10-24 06:38:20 +00:00
James Yonan
a79f88aebd Android:
* Implement a simple DNS cache to work around issue with
  Seamless Tunnel --  When Seamless Tunnel is enabled,
  reconnections are unable to send DNS requests because
  the internet is blocked.  This fix caches the IP address
  used for the initial connection, then reuses it
  over the lifetime of the Seamless Tunnel.

* Try to ensure that connections properly pause on device
  sleep (when sleep on screen blanking is NOT enabled) so
  that they will survive until wakeup.

iOS:

* Don't choke on foreign profiles (such as VPN On Demand) that are
  imported onto the device but lack critical info such as a
  config file.
2012-10-23 13:10:39 +00:00
James Yonan
3903810824 Implemented persistent tunnel, currently only working for
Android:

* Added a preference item tun_persist -- in the UI it is
  described as "Seamless Tunnel -- Block internet while VPN
  is paused or reconnecting"

* If tun_persist is enabled, hold onto tun socket during
  reconnects or pauses, and don't rebuild the tunnel
  on reconnect unless its controlling parameters have changed.
2012-10-21 09:43:03 +00:00
James Yonan
9bcdcd8da2 Deal with a corner case in time handling on 32 bit systems, where time
can wrap after ~48 days.
2012-10-20 06:05:51 +00:00
James Yonan
c23e2a8c64 Added pathway for External PKI sources to deliver the entire
cert chain to the core, rather than only the leaf cert.

This allows profiles to be used that lack "ca", "cert",
or "key" directives -- instead, these values are read from the
KeyChain.

If "ca" IS NOT defined in the profile, it will be set to
the chain of supporting certs assocated with the Keychain
leaf cert.

If "ca" IS defined by the profile, then the chain of supporting
certs will go into the "extra-certs" list, meaning that it
will support the client cert but not serve as an authority
to verify the server cert.
2012-10-19 10:29:12 +00:00
James Yonan
5f494621b1 Android and core fixes related to External PKI:
* Fixed core segfault that would occur if external_pki_cert_request
  returned an error status.

* More robust handling of External PKI alias invalidation.

* Minor fixes to allow jellybean_hack.cpp to build in
  debug mode.
2012-10-19 08:52:01 +00:00
James Yonan
cded2ca49e Android 1.1.1 build 9
* Fix attempt for java.lang.NullPointerException in
  net.openvpn.openvpn.OpenVPNService.onStartCommand(OpenVPNService.java:838)

* Allow non-unified profiles (i.e. profiles containing directives that
  reference other files) to be imported from SD card, as long
  as all referenced files are present in the same directory on the
  SD card as the profile.

* Relaxed parsing of "remote" directive to allow the port and/or
  protocol parameters to be omitted.  The port defaults to 1194
  and the protocol to UDP.  Either defaults can be changed with
  the "port" or "proto" directive.

* Fixed issue where profile parser was choking on files containing
  Windows-style line-endings.
2012-10-18 12:24:14 +00:00
James Yonan
4aa8345036 Implement "don't restart" flag so that EPKI errors will not
retry continuously until timeout.
2012-10-07 08:59:58 +00:00
James Yonan
4445ba1e76 OpenVPN 1.0 Beta 21 (iOS)
Implemented IPv6 in iOS client.

Added new flags to redirect-gateway to control whether redirection
occurs at IPv4 or IPv6 levels (or both):

* ipv4 (default)
* !ipv4
* ipv6
* !ipv6

Added new directive "redirect-dns yes|no".  If yes, all DNS requests
will be forwarded through pushed DNS servers.  If no, only DNS
requests that match domains enumerated in "dhcp-option DOMAIN"
directives will be forwarded.  If redirect-dns is omitted, it will
default to yes if redirect-gateway is specified at the IPv4 level
(this is the normal pre-existing behavior).

Allow the following aggregated options that are normally pushed by
the server to be defined in the config file as well.  These options
will be combined with server-pushed options:

* route
* route-ipv6
* redirect-gateway
* redirect-private
* dhcp-option

Allow the following singleton options (i.e. options that don't
aggregate), that are normally pushed, to be defined in the config
file (note that server-pushed singleton options will override the
config file setting):

* redirect-dns

The Connection Details section of the UI now displays VPN IP
addresses for IPv4 and IPv6.

Added new pushable option "client-ip IP_ADDR" that can be pushed
by the server with the client's IP address as seen by the server.
The client will then show the address in the Connection Details
section of the UI.
2012-10-03 09:03:02 +00:00
James Yonan
e64f429095 When reporting client compression capabilities to server, include
IV_COMP_STUB whenever IV_LZO_STUB is reported.
2012-09-17 21:41:41 +00:00
James Yonan
54a534d347 Fixed build script to work again on OS X.
Implement our own wrapper around ::system().
2012-09-11 23:51:37 +00:00
James Yonan
0caeeb533e Turned on snappy compression support in mobile clients. 2012-09-08 23:02:09 +00:00
James Yonan
4136c1d618 Compression selector in mobile clients is now 3-state:
yes -- support compression on both uplink and downlink
asym -- support compression on downlink only
no (default) -- no compression (stubs only)

Added our own internal LZO decompressor, which is enabled when
HAVE_LZO is undefined and the standard LZO library is not linked.
This allows clients to support LZO in downlink mode only
if the library isn't available.
2012-09-08 01:36:54 +00:00
James Yonan
f31040f059 "last packet received n seconds ago" stat is now provided by core. 2012-09-05 22:03:26 +00:00
James Yonan
8b7b797ef5 iOS version: 1.0 Beta 17
Android version: 1.1 beta 1

More alignment of iOS and Android clients:

* Normalized building of dependencies for Android and iOS:

  This build adds some new library dependencies:
  The library versions required are enumerated in
  ovpn3/lib-versions, currently:

    export BOOST_VERSION=boost_1_51_0
    export OPENSSL_VERSION=openssl-1.0.1c
    export POLARSSL_VERSION=polarssl-1.1.4
    export LZO_VERSION=lzo-2.06

  To build, first mkdir ~/src/android and ~/src/mac if they don't
  already exist.  Set the env var O3 to point to the ovpn3 dir,
  usually ~/src/ovpn3.

  Build on iOS:

    [set PATH to include NDK]
    cd ~/src/android
    $O3/scripts/android/build-boost
    $O3/scripts/android/build-minicrypto
    $O3/scripts/android/build-polarssl
    $O3/scripts/android/build-lzo

  Build on Android:

    [set PATH to include NDK]
    cd ~/src/android
    $O3/scripts/android/build-boost
    $O3/scripts/android/build-minicrypto
    $O3/scripts/android/build-polarssl
    $O3/scripts/android/build-lzo

* Integrated Minicrypto library (an assembly language library
  of low-level crypto functions adapted from OpenSSL).

* Added LZO compression with a preference/settings item
  to enable or disable.

* Added special compression handling to support older servers
  that ignore compression handshake -- this will handle receiving
  compressed packets even if we didn't ask for them.

* Normalized profile naming conventions.

iOS changes:

* Log tunnel performance stats immediately on disconnection
  of tunnel.

Android changes:

* Client now supports loading profiles as attachments
  opened from other apps.

* Added Import Private Tunnel menu item, however current
  Private Tunnel download page needs to be adapted to fit
  requirements of Android download manager.

* Enter key should advance to the next input field,
  or connect if entered from the last field.

* Import from Access Server now provides the option to
  download autologin vs. userlogin profiles.

* "About" page now shows copyright text for included
  libraries/content (except for LZO and PolarSSL
  which will presumably be commercially licensed).
2012-09-05 01:09:34 +00:00
James Yonan
a6b6d487ef Global edit to add copyright notice at head of each source file. 2012-08-24 21:13:42 +00:00
James Yonan
582c8f3977 OpenVPN 1.0 Beta 13 (iOS)
* Fixed issue with non-pushed "comp-lzo" statically declared in
  config file.

* Show Peer info in log.

* Increment core version number to 1.0.
2012-08-23 14:25:50 +00:00
James Yonan
6d05850322 OpenVPN core addition -- allow session token to be recovered
from connected session.
2012-08-21 21:32:51 +00:00
James Yonan
7331ee349b Full iOS beta for OpenVPN Connect. 2012-08-01 12:28:13 +00:00
James Yonan
42f98baec7 Added transport_stats method to OpenVPN Core API. 2012-07-24 09:16:43 +00:00
James Yonan
ce9de34975 For iOS, allow client apps to subscribe to event and log notifications.
Add capability for iOS client apps (in Objective-C) to call directly
into core for static methods such as eval_profile.
2012-07-02 20:52:58 +00:00
James Yonan
f91339e739 First working iOS build. 2012-07-01 15:37:46 +00:00
James Yonan
1f7d3ac4ef Added Objective-C wrapper for client core. 2012-05-25 17:54:53 +00:00
James Yonan
ce1431f3c2 Added clilib:
* scripts to build ovpncli shared library for C++ clients
* test client test/clilib/test.cpp
2012-05-23 13:50:41 +00:00
James Yonan
ce9820fed5 Moved ovpncli.hpp and ovpncli.cpp to client/ so that they can be used
by library wrappings other than javacli.
2012-05-23 05:05:42 +00:00