1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-11-24 02:19:52 +03:00
Commit Graph

1753 Commits

Author SHA1 Message Date
Davide Beatrici
b352aa4cc3 Cedar/Server: load and save Proto settings
Snippet from the server configuration:

declare root
{
...
	declare ServerConfiguration
	{
	...
		declare Proto
		{
			declare OpenVPN
			{
				string DefaultClientOption dev-type$20tun,link-mtu$201500,tun-mtu$201500,cipher$20AES-128-CBC,auth$20SHA1,keysize$20128,key-method$202,tls-client
				bool Enabled true
				bool Obfuscation false
				string ObfuscationMask $
				bool PushDummyIPv4AddressOnL2Mode true
			}
			declare SSTP
			{
				bool Enabled true
			}
		}
	...
	}
...
}
2020-07-28 00:57:36 +02:00
Davide Beatrici
6d85fffdb5 Cedar: introduce options API in Proto
PROTO_OPTION is a structure that describes an option (who would've guessed?).

It's designed in a way that allows it to occupy as low memory as possible, while providing great flexibility.

The idea is similar to the one implemented in LIST for trivial types, with the difference that PROTO_OPTION doesn't require casting due to the use of union.
2020-07-28 00:57:36 +02:00
Davide Beatrici
8685fe0da1 Cedar/Proto: introduce PROTO_CONTAINER, to store data for each implementation
ProtoImplDetect() is renamed to ProtoDetect(), because it now returns a pointer to a PROTO_CONTAINER (if successful).
2020-07-28 00:57:36 +02:00
Davide Beatrici
cd850c07ae Cedar: improve constness of PROTO_IMPL functions, move Name() at the top 2020-07-28 00:57:36 +02:00
Davide Beatrici
14a410a179 AppVeyor: remove Windows build
AppVeyor provides vcpkg and a great guide explaining how to use it and cache the installed packages: https://www.appveyor.com/docs/lang/cpp/#vc-packaging-tool

However, we're currently relying on Azure Pipelines for the Windows builds and keeping one on AppVeyor would be a waste of CI resources.
2020-07-28 00:00:34 +02:00
Davide Beatrici
c865103795 Azure Pipelines: install OpenSSL and zlib through vcpkg on Windows
This commit also changes the x86 build so that it uses the "amd64_x86" toolchain, for potentially better build performance.

The architecture is now appended to the installers.
2020-07-27 23:34:34 +02:00
Davide Beatrici
60410accce Remove Windows libraries and zlib submodule from the repository 2020-07-27 21:35:54 +02:00
Davide Beatrici
352ed759b2 CMake: find OpenSSL and zlib on Windows like we do on UNIX
This allows the project to be built with the support of vcpkg.
2020-07-27 21:32:50 +02:00
Davide Beatrici
b57a4b051b
Merge PR #1185: Build vpndrvinst and vpnsetup, build installers on Azure Pipelines, remove MSVC 2008 build on AppVeyor 2020-07-27 21:26:56 +02:00
Davide Beatrici
6c665f889f AppVeyor: remove MSVC 2008 build
The purpose of the configuration was to build installers and continually verify that MSVC 2008 could still build the project.

MSVC 2008 was a requirement because we wanted to maintain support for very old versions of Windows (9x).

During the past few years we encountered many annoying limitations due to that requirement, such as the lack of support for designated initializers.

We ended up deciding to only keep support for operating systems older than 7 in the stable repository.

As for the installers, we now build them on Azure Pipelines (currently with MSVC 2019).
2020-07-27 21:00:13 +02:00
Davide Beatrici
5bf08e63bb Azure Pipelines: build Windows installers and provide them as artifacts 2020-07-27 21:00:12 +02:00
Davide Beatrici
4b9c33cd30 Cedar/SW.c: disable "vpninstall" and "vpnweb" tasks
The reason why we don't build these two targets is that they're not used.

More specifically: they require proper configuration to work correctly, which is currently missing.

While vpninstall may be worth salvaging, vpnweb is definitely a relict of the past because it relies on ActiveX.
2020-07-27 20:59:40 +02:00
Davide Beatrici
78dad1d568 Mayaqua/Microsoft.h: rename "driver_installer.exe" to "vpndrvinst.exe"
vpndrvinst is the name of the target and thus the default output name, let's use it.

`vpndrvinst.exe" also sounds less fishy than "driver_installer.exe"...
2020-07-27 20:59:40 +02:00
Davide Beatrici
6a472d827a Mayaqua: remove all references to binaries with "_x64" and "_ia64" suffix
See the previous commit's message for details.
2020-07-27 20:59:40 +02:00
Davide Beatrici
a3eb115b0a Cedar: remove all references to binaries with "_x64" and "_ia64" suffix
BuildUtil compiles the project as 32 bit and 64 bit, before building the installer package.

64 bit binaries have the "_x64" suffix and are added to the package alongside the 32 bit ones (that have no suffix).

The CMake project compiles the binaries for a single architecture and they have no suffix.

We decided that providing two separate installers is the best solution.

As for the binaries with the "_ia64" suffix: they never existed during the this repository's lifespan.
2020-07-27 20:59:40 +02:00
Davide Beatrici
24d64222ea Cedar/SW.c: load "vpnsetup.exe" directly instead of expecting it to be in "hamcore.se2"
The MSBuild project built the binary into "src/bin/hamcore", causing it to be added to "hamcore.se2".

As hinted by the name of the file ("vpnsetup_nosign.exe"), it is not signed by BuildUtil, possibly to save time (the setup package is signed).

The CMake project builds the binary in the same directory as the other ones, allowing the setup to install them without the need to build a package.
2020-07-27 20:59:40 +02:00
Davide Beatrici
cc61c90372 Cedar/SW.c: remove "install_src.dat" file check
Previously, the file needed to be present in order for the setup to work.

This commit removes the requirement so that the setup can be ran from the build directory without the need to copy the file (which is now removed from the repository).
2020-07-27 20:59:40 +02:00
Davide Beatrici
35200a29ea CMake: build vpnsetup 2020-07-27 20:59:40 +02:00
Davide Beatrici
c084ce30f9 CMake: build vpndrvinst 2020-07-27 20:59:40 +02:00
Davide Beatrici
755e09e5c1 Don't include OpenSSL headers in vpndrvinst.c
The inclusion of the headers is probably a very old leftover, from when OpenSSL was not encapsulated into Mayaqua yet.

In fact, there was a "HAM_C" (defined in vpndrvinst.c) definition check in Mayaqua/Encrypt.h preventing the redefinition of OpenSSL types.
2020-07-27 20:59:40 +02:00
Davide Beatrici
2cdffffa54
Merge PR #1186: Azure Pipelines: switch from MSVC 2017 to 2019 2020-07-27 20:59:31 +02:00
Davide Beatrici
8e53b948c5 Azure Pipelines: switch from MSVC 2017 to 2019 2020-07-27 20:44:15 +02:00
Davide Beatrici
ff247687ed
Merge PR #1184: vpntest.c: add "setupapi" command to test SetupAPI (Windows only) 2020-07-27 08:36:51 +02:00
Daiyuu Nobori
588d7539f4 vpntest.c: add "setupapi" command to test SetupAPI (Windows only)
Co-authored-by: Davide Beatrici <git@davidebeatrici.dev>
2020-07-27 05:31:02 +02:00
Davide Beatrici
112b4c2c67
Merge PR #1182: CMake: specify "WIN32" for targets that have WinMain(), add manifest for all targets that have it in the MSBuild project 2020-07-25 23:26:53 +02:00
Davide Beatrici
28d4a113dc CMake: add manifest for all targets that have it in the MSBuild project 2020-07-25 23:13:45 +02:00
Davide Beatrici
3732447571 CMake: specify "WIN32" for targets that have WinMain()
When "VPN_EXE" is defined, Mayaqua.h defines WinMain(), which handles arguments in a special way.

This commit passes "WIN32" to add_executable(), so that WinMain() is used as entry point instead of main().

The use of main() instead of WinMain() was causing service mode not to work due to the "/service" argument being discarded.
2020-07-25 23:13:38 +02:00
Davide Beatrici
0133682eb3
Merge PR #1180: Azure Pipelines: add macOS build 2020-07-22 00:26:31 +02:00
Davide Beatrici
3747d2bf3f Azure Pipelines: add macOS build 2020-07-21 23:23:29 +02:00
Davide Beatrici
3c99f64621
Merge PR #1179: Azure Pipelines: add Windows 32 bit build, templatize Windows steps 2020-07-21 22:32:28 +02:00
Davide Beatrici
74a1e9bd1b Azure Pipelines: add Windows 32 bit build 2020-07-21 22:01:22 +02:00
Davide Beatrici
59be67df25 Azure Pipelines: templatize Windows steps 2020-07-21 22:01:19 +02:00
Davide Beatrici
5e0c036e39
Merge PR #1178: Azure Pipelines: use Ninja and designated build directory, naming improvement 2020-07-21 21:37:33 +02:00
Davide Beatrici
6801e4b384 Azure Pipelines: improve steps, use Ninja and designated build directory 2020-07-21 21:11:57 +02:00
Davide Beatrici
c948f65850 Azure Pipelines: remove submodules checkout step, it's in the pipeline 2020-07-21 02:46:37 +02:00
Davide Beatrici
a9b30b829f Azure Pipelines: improve job names
"Ubuntu 16.04" -> "Ubuntu (x86_64)"

"Visual Studio 2017" -> "Windows (x86_64)"
2020-07-21 02:46:28 +02:00
Davide Beatrici
d074899fd8
Merge PR #1176: CMake: don't hardcode build directories 2020-07-20 20:56:44 +02:00
Davide Beatrici
3c2f5a41ba Use "build" folder instead of "tmp" in CI scripts 2020-07-20 20:33:36 +02:00
Davide Beatrici
369a8850c4 CMake: don't hardcode build directories
Our CMake project used to forcefully create and use two different build directories: "build" and "tmp".

This commit changes the behavior so that only the build directory CMake is ran in is used.

The "configure" script now runs CMake in "build" by default, instead of "tmp".
2020-07-20 18:31:41 +02:00
Davide Beatrici
7b042e53d2
Merge PR #1175: Remove all references to strtok() and wcstok(), implement and use alternatives 2020-07-20 18:17:35 +02:00
Daiyuu Nobori
844dcdb0af Remove all references to strtok() and wcstok(), implement and use alternatives
strtok() and wcstok() are considered unsafe functions.

A segmentation fault caused by the use of strtok() was recently reported.

Co-authored-by: Takuho NAKANO <takotakot@users.noreply.github.com>
2020-07-20 17:57:58 +02:00
dnobori
144392c587 Add Tls_Disable1_3
Add Tls_Disable1_3 like Tls_Disable1_2 etc.
This change is part of v4.34-9744-beta e3370fb62c31eb10d0d221e628161863358d4cc3 .
2020-07-19 12:25:47 +09:00
Davide Beatrici
3baf4674e7
Merge PR #1171: Cedar: handle SSTP through Proto, minor improvements 2020-07-17 02:43:02 +02:00
Davide Beatrici
869496be3e Cedar: handle SSTP through Proto 2020-07-17 02:00:30 +02:00
Davide Beatrici
d917b2ac73 Cedar/Proto.c: check whether IsPacketForMe() is available before calling it
The SSTP implementation doesn't provide packet identification, because it's not required: the protocol is identified by the HTTP header it sends to the server.
2020-07-17 01:59:41 +02:00
Davide Beatrici
96a2d5a124 src/Cedar: pass client hostname and cipher to Init() function in PROTO_IMPL
The SSTP implementation must be aware of the cipher in order to be able to report it to the server's internals (i.e. IPC).
2020-07-17 01:59:22 +02:00
Davide Beatrici
3090688506 Cedar/Proto.c: support secure sockets
This is required for SSTP, because the connection is established through TLS/SSL.
2020-07-12 03:16:02 +02:00
Davide Beatrici
19dbdf46be Cedar: move buffer limit handling from ProtoHandleConnection() to protocol implementation
This allows greater control, required by SSTP: the limit only applies to data packets.
2020-07-12 03:09:12 +02:00
Davide Beatrici
eb5150a002 Cedar: change ProtoHandleConnection() so that it supports direct protocol specification 2020-07-12 03:05:51 +02:00
Davide Beatrici
e0c6813d44
Merge PR #1170: Cedar: fix server crash in CleanupSession() 2020-07-11 00:59:55 +02:00