diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index 5170a90c..00000000 --- a/.appveyor.yml +++ /dev/null @@ -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 - diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml deleted file mode 100644 index e4d8739a..00000000 --- a/.azure-pipelines.yml +++ /dev/null @@ -1,4 +0,0 @@ -jobs: - - template: .ci/azure-pipelines/linux.yml - - template: .ci/azure-pipelines/windows.yml - - template: .ci/azure-pipelines/macos.yml diff --git a/.ci/azure-pipelines/linux.yml b/.ci/azure-pipelines/linux.yml deleted file mode 100644 index fbb8aeb5..00000000 --- a/.ci/azure-pipelines/linux.yml +++ /dev/null @@ -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' diff --git a/.ci/azure-pipelines/macos.yml b/.ci/azure-pipelines/macos.yml deleted file mode 100644 index da8fa2f8..00000000 --- a/.ci/azure-pipelines/macos.yml +++ /dev/null @@ -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' diff --git a/.ci/azure-pipelines/windows-steps.yml b/.ci/azure-pipelines/windows-steps.yml deleted file mode 100644 index 79bd5fdf..00000000 --- a/.ci/azure-pipelines/windows-steps.yml +++ /dev/null @@ -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' diff --git a/.ci/azure-pipelines/windows.yml b/.ci/azure-pipelines/windows.yml deleted file mode 100644 index 6c6a75e8..00000000 --- a/.ci/azure-pipelines/windows.yml +++ /dev/null @@ -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" diff --git a/.ci/azure-pipelines/windows_build.bat b/.ci/azure-pipelines/windows_build.bat index 6f533c72..b8491266 100644 --- a/.ci/azure-pipelines/windows_build.bat +++ b/.ci/azure-pipelines/windows_build.bat @@ -14,6 +14,12 @@ if %SE_BUILD_NUMBER_TOKEN_LENGTH% equ 64 ( 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% 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 --build . +if "%BUILD_STAGINGDIRECTORY%"=="" (set BUILD_STAGINGDIRECTORY=%cd%) mkdir "%BUILD_STAGINGDIRECTORY%\installers" 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" diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 00000000..799f4b8f --- /dev/null +++ b/.github/workflows/linux.yml @@ -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 diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 00000000..66a32ccf --- /dev/null +++ b/.github/workflows/windows.yml @@ -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 \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..cad7657d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cmake.configureOnOpen": false +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index e1120daa..88278a43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.10) set(BUILD_NUMBER CACHE STRING "The number of the current build.") if ("${BUILD_NUMBER}" STREQUAL "") - set(BUILD_NUMBER "5182") + set(BUILD_NUMBER "5183") endif() if (BUILD_NUMBER LESS 5180) diff --git a/CMakeSettings.json b/CMakeSettings.json index 82a5e910..22cda99d 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -1,5 +1,5 @@ { - "environments": [ { "BuildNumber": "5182" } ], + "environments": [ { "BuildNumber": "5183" } ], "configurations": [ { "name": "x64-native", diff --git a/src/Cedar/Protocol.c b/src/Cedar/Protocol.c index 6075f3ff..a0da6c70 100644 --- a/src/Cedar/Protocol.c +++ b/src/Cedar/Protocol.c @@ -6773,7 +6773,6 @@ PACK *PackLoginWithOpenVPNCertificate(char *hubname, char *username, X *x) p = NewPack(); PackAddStr(p, "method", "login"); - PackAddStr(p, "hubname", hubname); if (IsEmptyStr(username)) { @@ -6782,12 +6781,26 @@ PACK *PackLoginWithOpenVPNCertificate(char *hubname, char *username, X *x) FreePack(p); return NULL; } + 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 { PackAddStr(p, "username", username); + PackAddStr(p, "hubname", hubname); } PackAddInt(p, "authtype", AUTHTYPE_OPENVPN_CERT);