1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2025-07-06 15:54:57 +03:00
Commit Graph

2012 Commits

Author SHA1 Message Date
e8793a0098 Merge PR #1187: Find OpenSSL and zlib on Windows like we do on UNIX, use vcpkg on Azure Pipelines, remove Windows build on AppVeyor 2020-07-28 20:13:39 +02:00
5cdd2a4e4a Merge PR #1177: Implement options API in Proto 2020-07-28 01:35:50 +02:00
e1d9eaf590 .ci/start-se-openvpn.sh: use new vpncmd command to enable OpenVPN 2020-07-28 00:59:28 +02:00
6b3ac84ba2 Cedar: remove old commands and unused variables 2020-07-28 00:57:37 +02:00
18ad35ebfe Cedar/Admin: use Proto in StGetOpenVpnSstpConfig() and StSetOpenVpnSstpConfig()
For now Server Manager still uses the two RPC methods.
2020-07-28 00:57:36 +02:00
b853140626 Cedar: use Proto API for protocol options 2020-07-28 00:57:36 +02:00
5209b310e3 Cedar/Command: add ProtoOptionsGet and ProtoOptionsSet commands
ProtoOptionsGet command - Lists the options for the specified protocol
Help for command "ProtoOptionsGet"

Purpose:
  Lists the options for the specified protocol

Description:
  This command can be used to retrieve the options for a specific protocol.
  Detailed info (e.g. value type) will be shown.
  You can change an option's value with the ProtoOptionsSet command.

Usage:
  ProtoOptionsGet [protocol]

Parameters:
  protocol - Protocol name.

ProtoOptionsSet command - Sets an option's value for the specified protocol
Help for command "ProtoOptionsSet"

Purpose:
  Sets an option's value for the specified protocol

Description:
  This command can be used to change an option's value for a specific protocol.
  You can retrieve the options using the ProtoOptionsGet command.
  To execute this command, you must have VPN Server administrator privileges.

Usage:
  ProtoOptionsSet [protocol] [/NAME:option_name] [/VALUE:string/true/false]

Parameters:
  protocol - Protocol name.
  /NAME    - Option name.
  /VALUE   - Option value. Make sure to write a value that is accepted by the specified protocol!
2020-07-28 00:57:36 +02:00
3a275d7257 Cedar/Admin: implement RPC methods to get/set Proto options 2020-07-28 00:57:36 +02:00
aa65327e73 Mayaqua/Pack: add PackGetStrSize(), for strings with non-constant length 2020-07-28 00:57:36 +02:00
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
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
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
cd850c07ae Cedar: improve constness of PROTO_IMPL functions, move Name() at the top 2020-07-28 00:57:36 +02:00
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
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
60410accce Remove Windows libraries and zlib submodule from the repository 2020-07-27 21:35:54 +02:00
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
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
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
5bf08e63bb Azure Pipelines: build Windows installers and provide them as artifacts 2020-07-27 21:00:12 +02:00
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
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
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
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
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
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
35200a29ea CMake: build vpnsetup 2020-07-27 20:59:40 +02:00
c084ce30f9 CMake: build vpndrvinst 2020-07-27 20:59:40 +02:00
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
2cdffffa54 Merge PR #1186: Azure Pipelines: switch from MSVC 2017 to 2019 2020-07-27 20:59:31 +02:00
8e53b948c5 Azure Pipelines: switch from MSVC 2017 to 2019 2020-07-27 20:44:15 +02:00
ff247687ed Merge PR #1184: vpntest.c: add "setupapi" command to test SetupAPI (Windows only) 2020-07-27 08:36:51 +02:00
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
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
28d4a113dc CMake: add manifest for all targets that have it in the MSBuild project 2020-07-25 23:13:45 +02:00
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
0133682eb3 Merge PR #1180: Azure Pipelines: add macOS build 2020-07-22 00:26:31 +02:00
3747d2bf3f Azure Pipelines: add macOS build 2020-07-21 23:23:29 +02:00
3c99f64621 Merge PR #1179: Azure Pipelines: add Windows 32 bit build, templatize Windows steps 2020-07-21 22:32:28 +02:00
74a1e9bd1b Azure Pipelines: add Windows 32 bit build 2020-07-21 22:01:22 +02:00
59be67df25 Azure Pipelines: templatize Windows steps 2020-07-21 22:01:19 +02:00
5e0c036e39 Merge PR #1178: Azure Pipelines: use Ninja and designated build directory, naming improvement 2020-07-21 21:37:33 +02:00
6801e4b384 Azure Pipelines: improve steps, use Ninja and designated build directory 2020-07-21 21:11:57 +02:00
c948f65850 Azure Pipelines: remove submodules checkout step, it's in the pipeline 2020-07-21 02:46:37 +02:00
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
d074899fd8 Merge PR #1176: CMake: don't hardcode build directories 2020-07-20 20:56:44 +02:00
3c2f5a41ba Use "build" folder instead of "tmp" in CI scripts 2020-07-20 20:33:36 +02:00
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
7b042e53d2 Merge PR #1175: Remove all references to strtok() and wcstok(), implement and use alternatives 2020-07-20 18:17:35 +02:00
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