1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2025-07-07 16:25:01 +03:00

20 Commits

Author SHA1 Message Date
465df16505 Merge pull request #1980 from Alexey-I/master
OpenVPN certificate authorization with cn_username in 'email' format
2024-04-14 10:58:27 +02:00
723d8e0682 Merge pull request #1979 from chipitsine/master
CI: drop app veyor in favour of GHA
2024-04-14 10:37:35 +02:00
6582955cfa Update src/Cedar/Protocol.c
Co-authored-by: Davide Beatrici <github@davidebeatrici.dev>
2024-04-14 10:36:55 +02:00
71d71e51db OpenVPN certificate authorization with cn_username in 'email' format 2024-04-12 23:08:24 +05:00
74ea87d725 CI: drop app veyor in favour of GHA 2024-04-12 12:44:19 +02:00
ca832a9cef Merge pull request #1977 from chipitsine/master
CI: move linux builds to GHA, drop ADO
2024-04-10 21:33:16 +02:00
23e9f74e7e CI: move linux builds to GHA, drop ADO 2024-04-07 17:16:45 +02:00
7b9fd5bdcd Merge pull request #1976 from chipitsine/master
Windows CI: migrate ADO --> Github Actions
2024-04-06 23:42:06 +02:00
53b7db3578 Merge pull request #1973 from hiura2023/master
Fix "RemoveDefGwOnDhcpForLocalhost" function: Change to exclude unplugged device from MAC address list.
2024-04-06 16:34:03 +02:00
4c1eeb717b CI: harden artifacts upload 2024-04-05 22:15:35 +02:00
7981e16e0b CI: add windows GitHub Actions 2024-04-05 22:09:39 +02:00
62e7f0ba8a CI: adopt windows_build.bat for GitHub actions 2024-04-05 22:08:51 +02:00
2dbebe271d Merge branch 'SoftEtherVPN:master' into master 2024-03-31 23:10:42 +09:00
eb793dc257 Merge branch 'master' of https://github.com/hiura2023/SoftEtherVPN 2024-03-31 23:08:12 +09:00
97203568e7 Fix 'RemoveDefGwOnDhcpForLocalhost' function: Change to exclude unplugged device from MAC address list. 2024-03-31 23:07:16 +09:00
9c0b5f7001 Merge pull request #1970 from chipitsine/master
bump version for upcoming 5183 release
2024-03-26 09:04:38 +01:00
a39560749d Merge pull request #1969 from hiura2023/master
Fix "Session Timeouted.":  Change the time for checking wether all the TCP connectins are alive or not.
2024-03-24 20:21:24 +01:00
495cddd518 bump version for upcoming 5183 release 2024-03-24 20:18:38 +01:00
0d9b4faae3 Merge branch 'SoftEtherVPN:master' into master 2024-03-24 19:13:07 +09:00
e8c14cba68 Fix 'Session Timeouted.': Change the time for checking wether all the TCP connectins are alive or not. 2024-03-24 19:11:24 +09:00
17 changed files with 119 additions and 144 deletions

View File

@ -1,33 +0,0 @@
version: '{build}'
image: Ubuntu2004
configuration: Release
skip_branch_with_pr: true
clone_depth: 1
skip_commits:
files:
- .travis.yml
- .gitlab-ci.yml
- .azure-pipelines.yml
- .cirrus.yml
init:
- ps: Update-AppveyorBuild -Version "build-$env:APPVEYOR_BUILD_NUMBER-$($env:APPVEYOR_REPO_COMMIT.substring(0,7))"
install:
- sudo apt-get -y install libsodium-dev libcap-ng-dev
before_build:
- git submodule update --init --recursive
- ./configure
build_script:
- make package -C build -j $(nproc || sysctl -n hw.ncpu || echo 4)
- .ci/memory-leak-test.sh
test_script:
- .ci/appveyor-deb-install-test.sh
- sudo apt-get update && sudo apt-get -y install autoconf libtool liblzo2-dev libpam-dev fping unzip liblz4-dev libnl-genl-3-dev # openvpn build deps
- sudo .ci/start-se-openvpn.sh
- sudo .ci/run-openvpn-tests.sh

View File

@ -1,4 +0,0 @@
jobs:
- template: .ci/azure-pipelines/linux.yml
- template: .ci/azure-pipelines/windows.yml
- template: .ci/azure-pipelines/macos.yml

View File

@ -1,20 +0,0 @@
jobs:
- job: Ubuntu_x64
pool:
vmImage: ubuntu-22.04
steps:
- checkout: self
submodules: true
persistCredentials: true
- script: sudo apt update && sudo apt-get -y install cmake gcc g++ ninja-build libncurses5-dev libreadline-dev libsodium-dev libssl-dev make zlib1g-dev liblz4-dev libnl-genl-3-dev
displayName: 'Prepare environment'
- script: "$(Build.SourcesDirectory)/.ci/azure-pipelines/linux_build.sh"
env:
SE_BUILD_NUMBER_TOKEN: $(BUILD_NUMBER_TOKEN)
displayName: 'Build'
- script: |
.ci/appveyor-deb-install-test.sh
sudo apt-get -y install autoconf libtool liblzo2-dev libpam-dev fping unzip libcap-ng-dev # To build OpenVPN
sudo BUILD_BINARIESDIRECTORY=$BUILD_BINARIESDIRECTORY .ci/start-se-openvpn.sh
sudo BUILD_BINARIESDIRECTORY=$BUILD_BINARIESDIRECTORY .ci/run-openvpn-tests.sh
displayName: 'Test'

View File

@ -1,14 +0,0 @@
jobs:
- job: macOS
pool:
vmImage: macOS-latest
steps:
- checkout: self
submodules: true
persistCredentials: true
- script: brew install pkg-config cmake ninja ncurses readline libsodium openssl zlib
displayName: 'Prepare environment'
- script: '$(Build.SourcesDirectory)/.ci/azure-pipelines/macos_build.sh'
env:
SE_BUILD_NUMBER_TOKEN: $(BUILD_NUMBER_TOKEN)
displayName: 'Build'

View File

@ -1,41 +0,0 @@
parameters:
- name: architecture
type: string
- name: compilerPath
type: string
- name: vcpkgTriplet
type: string
- name: vcvarsPath
type: string
steps:
- task: Cache@2
inputs:
key: '"vcpkg-manifest" | "$(Agent.OS)" | "${{parameters.vcpkgTriplet}}" | C:/vcpkg/.git/refs/heads/master'
path: '$(Build.BinariesDirectory)/vcpkg_installed'
displayName: 'Environment storage'
- script: '$(Build.SourcesDirectory)/.ci/azure-pipelines/windows_build.bat'
env:
ARCHITECTURE: ${{parameters.architecture}}
COMPILER_PATH: ${{parameters.compilerPath}}
VCPKG_TRIPLET: ${{parameters.vcpkgTriplet}}
VCVARS_PATH: ${{parameters.vcvarsPath}}
SE_BUILD_NUMBER_TOKEN: $(BUILD_NUMBER_TOKEN)
displayName: 'Build'
- powershell: |
. .ci/appveyor-vpntest.ps1
displayName: 'Test'
- task: CopyFiles@2
inputs:
sourceFolder: '$(Build.BinariesDirectory)'
contents: '?(*.exe|*.se2|*.pdb)'
TargetFolder: '$(Build.StagingDirectory)/binaries/${{parameters.architecture}}'
flattenFolders: true
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.StagingDirectory)/binaries/${{parameters.architecture}}'
artifactName: 'Binaries_${{parameters.architecture}}'
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.StagingDirectory)/installers'
artifactName: 'Installers'

View File

@ -1,27 +0,0 @@
jobs:
- job: Windows_x64
pool:
vmImage: windows-latest
steps:
- checkout: self
submodules: true
persistCredentials: true
- template: "windows-steps.yml"
parameters:
architecture: "x64"
compilerPath: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe"
vcpkgTriplet: "x64-windows-static"
vcvarsPath: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
- job: Windows_x86
pool:
vmImage: windows-latest
steps:
- checkout: self
submodules: true
persistCredentials: true
- template: "windows-steps.yml"
parameters:
architecture: "x86"
compilerPath: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/bin/clang-cl.exe"
vcpkgTriplet: "x86-windows-static"
vcvarsPath: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars32.bat"

View File

@ -14,6 +14,12 @@ if %SE_BUILD_NUMBER_TOKEN_LENGTH% equ 64 (
set BUILD_NUMBER=0 set BUILD_NUMBER=0
) )
if "%BUILD_BINARIESDIRECTORY%"=="" (set BUILD_BINARIESDIRECTORY=build)
if "%BUILD_SOURCESDIRECTORY%"=="" (set BUILD_SOURCESDIRECTORY=%cd%)
if not exist %BUILD_BINARIESDIRECTORY% mkdir %BUILD_BINARIESDIRECTORY%
cd %BUILD_BINARIESDIRECTORY% cd %BUILD_BINARIESDIRECTORY%
call "%VCVARS_PATH%" call "%VCVARS_PATH%"
@ -21,6 +27,7 @@ call "%VCVARS_PATH%"
cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="C:\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=%VCPKG_TRIPLET% -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER="%COMPILER_PATH%" -DCMAKE_CXX_COMPILER="%COMPILER_PATH%" -DBUILD_NUMBER=%BUILD_NUMBER% "%BUILD_SOURCESDIRECTORY%" cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="C:\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=%VCPKG_TRIPLET% -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER="%COMPILER_PATH%" -DCMAKE_CXX_COMPILER="%COMPILER_PATH%" -DBUILD_NUMBER=%BUILD_NUMBER% "%BUILD_SOURCESDIRECTORY%"
cmake --build . cmake --build .
if "%BUILD_STAGINGDIRECTORY%"=="" (set BUILD_STAGINGDIRECTORY=%cd%)
mkdir "%BUILD_STAGINGDIRECTORY%\installers" mkdir "%BUILD_STAGINGDIRECTORY%\installers"
vpnsetup /SFXMODE:vpnclient /SFXOUT:"%BUILD_STAGINGDIRECTORY%\installers\softether-vpnclient-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" vpnsetup /SFXMODE:vpnclient /SFXOUT:"%BUILD_STAGINGDIRECTORY%\installers\softether-vpnclient-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe"
vpnsetup /SFXMODE:vpnserver_vpnbridge /SFXOUT:"%BUILD_STAGINGDIRECTORY%\installers\softether-vpnserver_vpnbridge-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe" vpnsetup /SFXMODE:vpnserver_vpnbridge /SFXOUT:"%BUILD_STAGINGDIRECTORY%\installers\softether-vpnserver_vpnbridge-%VERSION%.%BUILD_NUMBER%.%ARCHITECTURE%.exe"

34
.github/workflows/linux.yml vendored Normal file
View File

@ -0,0 +1,34 @@
on: [push, pull_request]
permissions:
contents: read
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install dependencies
run: sudo apt update && sudo apt-get -y install cmake gcc g++ ninja-build libncurses5-dev libreadline-dev libsodium-dev libssl-dev make zlib1g-dev liblz4-dev libnl-genl-3-dev
- name: Build
run: |
mkdir build
cd build
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
cmake --build .
- name: Build deb packages
run: |
cd build
cpack -C Release -G DEB
- name: Test
run: |
.ci/appveyor-deb-install-test.sh
sudo apt-get -y install autoconf libtool liblzo2-dev libpam-dev fping unzip libcap-ng-dev # To build OpenVPN
sudo .ci/start-se-openvpn.sh
sudo .ci/run-openvpn-tests.sh

48
.github/workflows/windows.yml vendored Normal file
View File

@ -0,0 +1,48 @@
on: [push, pull_request]
permissions:
contents: read
jobs:
build_and_test:
strategy:
matrix:
platform: [
{ ARCHITECTURE: x86, COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/bin/clang-cl.exe", VCPKG_TRIPLET: "x86-windows-static", VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars32.bat"},
{ ARCHITECTURE: x64, COMPILER_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/Llvm/x64/bin/clang-cl.exe", VCPKG_TRIPLET: "x64-windows-static", VCVARS_PATH: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat"}
]
runs-on: windows-latest
name: ${{ matrix.platform.ARCHITECTURE }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Cache vcpkg
uses: actions/cache@v4
with:
path: 'build/vcpkg_installed/'
key: vcpkg-${{ matrix.platform.VCPKG_TRIPLET }}
- name: Build
env:
ARCHITECTURE: ${{ matrix.platform.ARCHITECTURE }}
COMPILER_PATH: ${{ matrix.platform.COMPILER_PATH }}
VCPKG_TRIPLET: ${{ matrix.platform.VCPKG_TRIPLET }}
VCVARS_PATH: ${{ matrix.platform.VCVARS_PATH }}
run: .ci/azure-pipelines/windows_build.bat
- name: Test
shell: powershell
run: |
. .ci/appveyor-vpntest.ps1
- uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Binaries-${{ matrix.platform.ARCHITECTURE }}
path: |
build/*.exe
build/*.pdb
build/*.se2
- uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Installers-${{ matrix.platform.ARCHITECTURE }}
path: build/installers

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"cmake.configureOnOpen": false
}

View File

@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.10)
set(BUILD_NUMBER CACHE STRING "The number of the current build.") set(BUILD_NUMBER CACHE STRING "The number of the current build.")
if ("${BUILD_NUMBER}" STREQUAL "") if ("${BUILD_NUMBER}" STREQUAL "")
set(BUILD_NUMBER "5182") set(BUILD_NUMBER "5183")
endif() endif()
if (BUILD_NUMBER LESS 5180) if (BUILD_NUMBER LESS 5180)

View File

@ -1,5 +1,5 @@
{ {
"environments": [ { "BuildNumber": "5182" } ], "environments": [ { "BuildNumber": "5183" } ],
"configurations": [ "configurations": [
{ {
"name": "x64-native", "name": "x64-native",

View File

@ -6773,7 +6773,6 @@ PACK *PackLoginWithOpenVPNCertificate(char *hubname, char *username, X *x)
p = NewPack(); p = NewPack();
PackAddStr(p, "method", "login"); PackAddStr(p, "method", "login");
PackAddStr(p, "hubname", hubname);
if (IsEmptyStr(username)) if (IsEmptyStr(username))
{ {
@ -6782,12 +6781,26 @@ PACK *PackLoginWithOpenVPNCertificate(char *hubname, char *username, X *x)
FreePack(p); FreePack(p);
return NULL; return NULL;
} }
UniToStr(cn_username, sizeof(cn_username), x->subject_name->CommonName); UniToStr(cn_username, sizeof(cn_username), x->subject_name->CommonName);
PackAddStr(p, "username", cn_username);
if (strchr(cn_username, '@') != NULL)
{
PackAddStr(p, "username", strtok(cn_username, "@"));
PackAddStr(p, "hubname", strtok(NULL, ""));
}
else
{
PackAddStr(p, "username", cn_username);
PackAddStr(p, "hubname", hubname);
}
} }
else else
{ {
PackAddStr(p, "username", username); PackAddStr(p, "username", username);
PackAddStr(p, "hubname", hubname);
} }
PackAddInt(p, "authtype", AUTHTYPE_OPENVPN_CERT); PackAddInt(p, "authtype", AUTHTYPE_OPENVPN_CERT);

View File

@ -615,7 +615,7 @@ void SessionMain(SESSION *s)
UINT max_conn = s->ClientOption->MaxConnection; UINT max_conn = s->ClientOption->MaxConnection;
if ((s->CurrentConnectionEstablishTime + if ((s->CurrentConnectionEstablishTime +
(UINT64)(s->ClientOption->AdditionalConnectionInterval * 1000 * 2 + CONNECTING_TIMEOUT * 2)) (UINT64)(num_tcp_conn * s->ClientOption->AdditionalConnectionInterval * 1000 * 2 + CONNECTING_TIMEOUT * 2))
<= Tick64()) <= Tick64())
{ {
if (s->ClientOption->BindLocalPort != 0 || num_tcp_conn == 0) if (s->ClientOption->BindLocalPort != 0 || num_tcp_conn == 0)

View File

@ -2568,6 +2568,7 @@ MS_ADAPTER_LIST *MsCreateAdapterListInnerExVista(bool no_info)
UniStrCpy(a->TitleW, sizeof(a->TitleW), title); UniStrCpy(a->TitleW, sizeof(a->TitleW), title);
UniToStr(a->Title, sizeof(a->Title), title); UniToStr(a->Title, sizeof(a->Title), title);
a->Index = r->InterfaceIndex; a->Index = r->InterfaceIndex;
a->MediaConnectState = r->MediaConnectState;
a->Type = r->Type; a->Type = r->Type;
a->Status = ConvertMidStatusVistaToXp(r->OperStatus); a->Status = ConvertMidStatusVistaToXp(r->OperStatus);
a->Mtu = r->Mtu; a->Mtu = r->Mtu;

View File

@ -281,6 +281,7 @@ typedef struct MS_ADAPTER
char Title[MAX_PATH]; // Display name char Title[MAX_PATH]; // Display name
wchar_t TitleW[MAX_PATH]; // Display Name (Unicode) wchar_t TitleW[MAX_PATH]; // Display Name (Unicode)
UINT Index; // Index UINT Index; // Index
UINT MediaConnectState; // Media Connect State
UINT Type; // Type UINT Type; // Type
UINT Status; // Status UINT Status; // Status
UINT Mtu; // MTU UINT Mtu; // MTU

View File

@ -540,6 +540,13 @@ LIST *Win32GetNicList()
if (a->Type == 6 && a->AddressSize == 6) if (a->Type == 6 && a->AddressSize == 6)
{ {
// If the connection state of the interface is unknown, then exclude it.
// Unknown means that the device is not plugged into the local host.
if (a->MediaConnectState == MediaConnectStateUnknown)
{
continue;
}
NIC_ENTRY *e = ZeroMalloc(sizeof(NIC_ENTRY)); NIC_ENTRY *e = ZeroMalloc(sizeof(NIC_ENTRY));
StrCpy(e->IfName, sizeof(e->IfName), a->Title); StrCpy(e->IfName, sizeof(e->IfName), a->Title);