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

4167 Commits

Author SHA1 Message Date
Arne Schwabe
c07fb748a9
Fix IV_SSL and IV_HWADDR not reported
The previous commit restructured the way how peer info was built and
accidentally move those into its own method without calling the method.

Signed-off-by: Arne Schwabe <arne@openvpn.net>
2024-03-27 22:42:55 +01:00
David Sommerseth
43da4c8bc2
unittest: Don't include sys/socket.h unconditionally
The sys/socket.h header is not available on Windows.  This issue was
introduced in commit 1b4f736bb9, so the same fencing used in
that commit was also added around the #include statement.

Signed-off-by: David Sommerseth <davids@openvpn.net>
2024-03-22 22:15:11 +01:00
David Sommerseth
7f3e61089b
mac/gw: Fix incorrect additional )
In commit 1b4f736bb9, an additional parentheses was added to
the MacGatewayInfo constructor.  This results in code which cannot be
compiled.

Signed-off-by: David Sommerseth <davids@openvpn.net>
2024-03-22 22:15:10 +01:00
Lev Stipakov
4f1f22159f
Improve handling of unknown options
A few minor changes:

 - add ORGANIZATION meta option to ignore list

 - remove excessive OVPN_ACCESS_SERVER_ prefix from NO_WEB meta option

 - Increase status message length from 256 to 2048 to be able to show
   the full list of unsupported options

Signed-off-by: Lev Stipakov <lev@openvpn.net>
2024-03-22 21:25:48 +01:00
Mark Deric
18e92a823f Extend C2os to handle containers of pointers
Create a new cast to tell the ostreamer to dereference before
inserting.

Signed-off-by: Mark Deric <jmark@openvpn.net>
2024-03-22 15:15:10 +00:00
Illia Polishchuk
00bdf8ba8b Make profile errors clearer for users by reporting specific error codes.
ERR_INVALID_OPTION_DNS -- invalid value for some of DNS\Domain options
ERR_INVALID_OPTION_CRYPTO -- invalid value for some of SSL\Crypto option
ERR_INVALID_CONFIG -- missing option or not supported option
ERR_INVALID_OPTION_PUSHED -- pushed to server option error
ERR_INVALID_OPTION_VAL -- invalid value for some general option

Signed-off-by: Illia Polishchuk <illia.polishchuk@openvpn.com>
2024-03-22 15:15:09 +00:00
Illia Polishchuk
447c942395 Add codes support to option_error for clearer messages.
Signed-off-by: Illia Polishchuk <illia.polishchuk@openvpn.com>
2024-03-22 15:15:09 +00:00
Illia Polishchuk
c2b7a39a1b Simplify creation of exceptions with codes by a new macro
The OPENVPN_EXCEPTION_WITH_CODE(C, DEFAULT_CODE, ...)
macro creates enum C_code with __VA_ARGS__ codes
and constructor with the C_code as first argument which
adds label at the beginning of error message, other
constructors add DEFAULT_CODE label

Signed-off-by: Illia Polishchuk <illia.polishchuk@openvpn.com>
2024-03-22 15:15:09 +00:00
Frank Lichtenheld
9b63b1e3be Do not check for C++ <= 17
Code should now silently assume C++-17 semantics.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
2024-03-19 12:23:44 +01:00
Antonio Quartulli
1216f566e4 sitnl: allow user to configure custom metric for routes
Until now sitnl was just default to metric 0 when installing routes,
while ignoring any value that may have been passed by the user.

Extend logic to properly accept a user value.

Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
2024-03-15 13:27:14 +00:00
Antonio Quartulli
1e23850291 tunnetlink.hpp: remove unused include
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
2024-03-15 13:27:14 +00:00
Antonio Quartulli
56dbd2ceec TunBuilderCapture: use default route metric if none was specified
When the user specifies no metric (i.e. value is -1), the TunBuilder
should pass the default value down the stack.

Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
2024-03-15 13:27:14 +00:00
Arne Schwabe
1b4f736bb9
Make macOS gateway detection IPv6 aware and use actual server address
This also move the building IV_HWADDR peer info variable to the point
that the server address is actually available.

This also avoids failing to connect when push-peer-info is enabled and
there is no IPv4 default gateway. The new code will always pick the device
that holds the route to the current remote.

Signed-off-by: Arne Schwabe <arne@openvpn.net>
2024-03-14 14:10:53 +01:00
Frank Lichtenheld
763176ea70
Options: do not error out on client + pull
Config

    client
    pull

was not correctly handled like client + tls-client
since the code short-circuited if tls-client wasn't set
and so didn't touch pull option.

Github: #277
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
2024-03-13 16:51:33 +01:00
Frank Lichtenheld
458e5df1ab
test_cliopt: Refactor by using parameterized tests
This makes it easier to add other configuration
variants to test.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
2024-03-13 16:51:32 +01:00
Frank Lichtenheld
f8c7d0629f
Manage more parts of GHA with renovate
- Add custom rule for vcpkg
- Add custom rule for repository checkouts

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
2024-03-13 16:43:53 +01:00
Frank Lichtenheld
4a51628afe
Tweaking renovate config
- Group GHA updates and set them to monthly schedule to
  drastically reduce the numbers of PRs
- Notify about GoogleTest updates

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
2024-03-13 16:43:52 +01:00
RenovateBot
ad0e0f5e7a
Add renovate.json 2024-03-13 16:43:27 +01:00
Antonio Quartulli
9eeeb38c45
unit-test: fix sitnl systematic failure
It was noted that the SITNL unit test is always failing for no clear
reason.

It turned out that commit 22ba196429
("SITNL: revert change of sitnl_send return type, return int"),
that was supposed to be a simple revert of
ae663c573a ("Using new numeric
conversion tools") is actually converting two "return ret" into
return -1 and return -EINVAL accordingly.

This accidental change results in two functions always returning
an error despite terminating succesfully.

This behaviour was obviously fooling the unitest which failed in result.

Fix both functions by properly returning "ret" as it was originally.

Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
2024-03-12 09:47:54 +01:00
Frank Lichtenheld
3bd3915d0a CMake: Add USE_WCONVERSION option
Makes it easier to test with -Wconversion, e.g. in Jenkins.

For now disable -Wsign-conversion. That is the default in g++,
but not clang++. Once we have fixed all -Wsign-conversion
warnings, we can enable it for both.

For now disable -Wenum-enum-conversion. Only present in clang++.
Not clear whether cleaning those up will be worth the effort.

Disable -ferror-limit in clang++. This ensures that it always
displays all errors.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 6e7a98b5f4)
2024-03-07 00:29:36 +02:00
Frank Lichtenheld
53c35b1013 CMake: Refine CXX_STANDARD setting
- Set CXX_STANDARD_REQUIRED ON so that we error out early
  if CMake thinks that the compiler does not support the
  used standard.
- Set CXX_EXTENSIONS OFF so that we get less compiler
  specific behavior.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 9b8797fe5e)
2024-03-07 00:29:36 +02:00
Frank Lichtenheld
82d8dbb975 CMake: accept all NEW policies in released CMake versions
Using the <max> argument to cmake_minimum_required will
set all policies up to <max> to NEW. We might need to
fix some issues arising from that, but this means that
modern CMake can already behave like it wants even with
leaving <min> so that we can support old distros (currently
Debian 10).

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 268bf42b9e)
2024-03-07 00:29:36 +02:00
Frank Lichtenheld
61c0ab7f6b client: Switch to UseSWIG instead of manual custom command
On modern CMake this gets us swig dependency management,
which should reduce problems for incremental builds.
Also it is just cleaner.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 72275db1d5)
2024-03-07 00:29:36 +02:00
Frank Lichtenheld
ef3b290de6 CMake: replace FindPythonIntp with FindPython3
The earlier were deprecated since CMake 3.12.
Since CMake 3.27 this causes deprecation warnings.
Should be safe nowadays to require CMake 3.12.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit bb61350ae5)
2024-03-07 00:29:36 +02:00
Frank Lichtenheld
14136ee923 CMake: disable -Wmaybe-uninitialized for GCC builds
This is very noisy with lots of false positives, especially
in newer version of GCC. So for now disable this.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit d7e8375fc5)
2024-03-07 00:29:36 +02:00
Frank Lichtenheld
ce054c562c CMake: make doxygen generation work better
- Use CURRENT source and binary dir to make this work even
  if used as a sub-directory in another project.
- Make USE_MDFILE_AS_MAINPAGE actually work. It is only
  used when part of the INPUT and does not automatically
  add it to INPUT.
- Make sure CMake uses the latest version of README.rst
  by using configure_file instead of file(COPY).
- Improve EXCLUDE_PATTERNS.
- Add NUM_PROC_THREADS.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 474de6c93f)
2024-03-07 00:29:36 +02:00
Frank Lichtenheld
c9939d271b CMake: Reorder includes to prefer asio
By adding the asio includes first we have a better
chance to force using "our" asio. This can be important
since some parts of the code require a patched version.

The actual "core" parts of the code work fine with
upstream asio however, so I also do not want to
force the patched asio by requiring a special header
name or directory structure.

So this is a compromise solution which hopefully works
for most use-cases.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit bc7f4be01b)
2024-03-07 00:29:36 +02:00
Frank Lichtenheld
38ef9f2786 mingw: disable VCPKG_APPLOCAL_DEPS in mingw presets
We do not want to force a dependency on powershell.
Copying the right dlls is rather trivial.

Same change as commit commit e9e49239ce
for build-vcpkg script.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 1f5aa58223)
2024-03-07 00:29:36 +02:00
Frank Lichtenheld
a830d1e09c lzo_asym_impl: fix unaligned access
Helpfully the comment above the code actually provided
a solution...

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit db7ea3d96a)
2024-03-07 00:29:36 +02:00
Frank Lichtenheld
8c007de79d client: Explicitely use int as socket type in SWIG
For some reason SWIG doesn't seem to pick this
up automatically from the typedefs.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
2024-03-06 13:00:04 +01:00
Frank Lichtenheld
37fb7c2efc CMake: clean up dependency handling
Always use find_package for all libraries.
Add missing Find*.cmake modules.
Always define an IMPORTED library in Find*

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit d7b3419f8e)
2024-03-04 12:58:23 +02:00
Frank Lichtenheld
25ca35d71d CMake: add CMakePresets.json and switch GHA to use it
For now define vcpkg builds for MSVC and MinGW

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 63499ba7ac)
2024-03-04 12:58:23 +02:00
Frank Lichtenheld
f845f7dd95 vcpkg-ports/asio: copy update asio-config.cmake from vcpkg
Fixes problems when calling find_package on asio multiple
times.

Originally fixed by commit cba75f1aa08374733dcc79abebeca262ae94118a
in vcpkg#28299.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 71cf5f48fe)
2024-03-04 12:58:23 +02:00
Frank Lichtenheld
ac01ae47e9 mingw: disable VCPKG_APPLOCAL_DEPS in build-vcpkg
We do not want to force a dependency on powershell.
Copying the right dlls is rather trivial.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit e9e49239ce)
2024-03-04 12:58:23 +02:00
Frank Lichtenheld
3614c1a004 CMake: move architecture detection closer to the actual executable
This makes it easier to see what is going on when looking at
individual CMakeLists.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 4c81069564)
2024-03-04 12:58:23 +02:00
Frank Lichtenheld
0dcae2690b CMake: support BUILD_TESTING option
This is important since it allows us to avoid
the JsonCPP dependency on non-Win/non-Apple
systems.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit a9570cb780)
2024-03-04 12:58:23 +02:00
Frank Lichtenheld
fa99c85cb9 CMake: Generalize add_json_library
Make sure we find vcpkg and system packages on all
platforms.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit e720bf3aba)
2024-03-04 12:58:23 +02:00
Frank Lichtenheld
4e0de88c03 CMake: Fix issues in FindmbedTLS
Use add_library to define a target so that we do not
need to apply all the setting manually.
Use find_package_message() to avoid printing the
message more than once.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 2fb5d08ea0)
2024-03-04 12:58:23 +02:00
Frank Lichtenheld
7c9eeca1ee vcpkg.json: Allow to use on Linux
- Fix PATCHES to work on Linux
- While here, fix version number

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit fb9bee5ad6)
2024-03-04 12:58:23 +02:00
Frank Lichtenheld
cdcf942c24 CMake: small improvements
- Increase required version to 3.10. That is the version in
  Ubuntu Bionic and currently the oldest one we still want
  to support.
- Enable CTest for test target

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com>
(cherry picked from commit 50271ee02a)
2024-03-04 12:58:23 +02:00
Arne Schwabe
10fe3b82d4
Change year 2018 in MD5 warning to "near future".
With the change to OpenSSL 3 and introducing insecure as profile we
actually allowed MD5 again. Update the warning to reflect this.

Signed-off-by: Arne Schwabe <arne@openvpn.net>
2024-02-29 15:31:37 +01:00
Arne Schwabe
282075fee9 Allow test_sslctx to work with mbed TLS
Signed-off-by: Arne Schwabe <arne@openvpn.net>
2024-02-23 15:32:58 +01:00
Arne Schwabe
c1bcf78d2e Add support for mbed TLS 3.0
This currently still depends on the mbed TLS compat API functionality.

Signed-off-by: Arne Schwabe <arne@openvpn.net>
2024-02-23 15:32:58 +01:00
Mark Deric
ade5f80f8a Add doxygen comments to simplified logging files
Signed-off-by: Mark Deric <jmark@openvpn.net>
2024-02-21 10:04:12 -08:00
Mark Deric
9ffa263bc8 Remove old and/or unneeded code from logging
Also, update copyright dates

Signed-off-by: Mark Deric <jmark@openvpn.net>
2024-02-21 08:58:43 -08:00
Mark Deric
e5c850cc82 Untangle log header macro/class globs
The purpose of this change is to allow headers that require the
logbase.hpp classes to compile in executables using logsimple.hpp.

By munging classes and macros into both headers, an avoidable conflict
of macro re-definition is created.  This commit separates the classes
from the macros into new headers. Then propagates the mistake into the
current headers so none of the existing code is broken. ;-)

Signed-off-by: Mark Deric <jmark@openvpn.net>
2024-02-21 07:27:38 -08:00
David Sommerseth
bae10062b3
Merging in changes from OpenVPN 3 Core version 3.8.4
Signed-off-by: David Sommerseth <davids@openvpn.net>
2024-02-19 22:46:53 +01:00
David Sommerseth
8f4cd953b2
Release: OpenVPN 3 Core Library, version 3.8.4
Signed-off-by: David Sommerseth <davids@openvpn.net>
2024-02-13 18:07:01 +01:00
Lev Stipakov
b4a400f6fe Improve handling of unknown options
Currently we error out on the first unsupported
option which belongs to the "fatal" category, such as
"removed deprecated option" or "Option allowed only to
be pushed by the server".

To improve user experice and allow application code
to display all problematic options and their categories,
collect options into a category->options map and then
serialize it into multiline string:

  cat1: opt1,opt2
  cat2: opt3

Introduce a new error code UNUSED_OPTIONS, which is
placed into ClientAPI::Status::status. The serialized
options map is placed into ClientAPI::Status::message.

Signed-off-by: Lev Stipakov <lev@openvpn.net>
2024-02-07 17:03:45 +02:00
Charlie Vigue
cb9ce3d71c
Add notes to sslctx and add unit tests
- Add notes regarding some unexpected behaviors in sslctx
- Add unit tests specifically for sslctx, including simple in-memory
handshaking with both success and failure examples.

Signed-off-by: Charlie Vigue <charlie.vigue@openvpn.com>
2024-02-01 13:29:21 +01:00