diff --git a/.github/workflows/ubuntu.yaml b/.github/workflows/ubuntu.yaml deleted file mode 100644 index f322e64..0000000 --- a/.github/workflows/ubuntu.yaml +++ /dev/null @@ -1,287 +0,0 @@ -name: Build - Ubuntu -on: [workflow_dispatch, push, pull_request] -env: - TERM: xterm-256color - -jobs: - build: - name: ${{ matrix.name }} - runs-on: ${{ matrix.runs-on }} - strategy: - fail-fast: false - matrix: - include: - - name: Build - Ubuntu Clang - runs-on: ubuntu-latest - compiler: clang - cxx-compiler: clang++ - cmake-args: -G Ninja -D PROXYRES_CODE_COVERAGE=ON - gcov-exec: llvm-cov-14 gcov - codecov: ubuntu - - - name: Build - Ubuntu Clang (curl) - runs-on: ubuntu-latest - compiler: clang - cxx-compiler: clang++ - cmake-args: -G Ninja -D PROXYRES_CODE_COVERAGE=ON -D PROXYRES_CURL=ON - gcov-exec: llvm-cov-14 gcov - codecov: ubuntu_curl - - steps: - - name: Install dependencies - run: | - sudo apt update - sudo apt install -y llvm-14 ninja-build libgconf2-dev libjavascriptcoregtk-4.0-dev - - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Generate project - run: | - cmake -S . -B build ${{ matrix.cmake-args }} \ - -D CMAKE_BUILD_TYPE=RelWithDebInfo \ - -D BUILD_SHARED_LIBS=OFF - env: - CC: ${{ matrix.compiler }} - CXX: ${{ matrix.cxx-compiler }} - - - name: Build project - run: cmake --build build --config RelWithDebInfo - - - name: Setup node version - uses: actions/setup-node@v3 - with: - node-version: 18.18.0 - - - name: Install test dependencies - run: | - corepack enable - yarn install - working-directory: test - - - name: Run test http server - run: | - npx pm2 start http_server_cmd.js --output http_server.log - sleep 15 - working-directory: test - - - name: Run test dhcp server - # Used by wpad.dhcp googletest - run: | - npx pm2 start dhcp_server_cmd.js --output dhcp_server.log - sleep 15 - working-directory: test - - # Run as sudo to be able to bind to DHCP client port, then reset - # permissions to code coverage files if necessary - - name: Run tests - run: | - sudo ctest --verbose -C RelWithDebInfo - sudo chmod -R a+rw . - working-directory: build - env: - WPAD: true - - - name: Download pac from http server - run: curl -v http://127.0.0.1:8080/pac.js - working-directory: test - - - name: Dump proxy info (gsettings) - run: | - gsettings get org.gnome.system.proxy autoconfig-url - gsettings get org.gnome.system.proxy mode - gsettings get org.gnome.system.proxy.http host - gsettings get org.gnome.system.proxy.http port - gsettings get org.gnome.system.proxy.https host - gsettings get org.gnome.system.proxy.https port - gsettings get org.gnome.system.proxy ignore-hosts - - - name: Set auto proxy settings (gsettings) - run: | - gsettings set org.gnome.system.proxy autoconfig-url 'http://127.0.0.1:8080/pac.js' - gsettings set org.gnome.system.proxy mode 'auto' - - - name: Check auto proxy settings (gsettings) - shell: bash - run: | - out=$(./proxycli config auto_discover) - echo "Auto discovery: $out" - if [ "$out" = "enabled" ]; then - echo "Auto discovery set successfully" - else - echo "Auto discovery set failed" - exit 1 - fi - out=$(./proxycli config auto_config_url) - echo "Auto config url: $out" - if [ "$out" = "http://127.0.0.1:8080/pac.js" ]; then - echo "Auto config url set successfully" - else - echo "Auto config url set failed" - exit 1 - fi - working-directory: build/test - env: - XDG_CURRENT_DESKTOP: GNOME - - - name: Check auto proxy resolution (gsettings) - run: | - out=$(./proxycli resolve https://google.com/) - echo "Proxy for https://google.com/: $out" - if [ "$out" = "direct://" ]; then - echo "Proxy for https://google.com/ set successfully" - else - echo "Proxy for https://google.com/ set failed" - exit 1 - fi - out=$(./proxycli resolve http://simple.com/) - echo "Proxy for http://simple.com/: $out" - if [ "$out" = "http://no-such-proxy:80" ]; then - echo "Proxy for http://simple.com/ set successfully" - else - echo "Proxy for http://simple.com/ set failed" - exit 1 - fi - out=$(./proxycli resolve https://simple.com/) - echo "Proxy for https://simple.com/: $out" - if [ "$out" = "https://no-such-proxy:80" ]; then - echo "Proxy for https://simple.com/ set successfully" - else - echo "Proxy for https://simple.com/ set failed" - exit 1 - fi - out=$(./proxycli resolve https://multi.com/) - echo "Proxy for https://multi.com/: $out" - if [ "$out" = "https://some-such-proxy:443,https://any-such-proxy:41" ]; then - echo "Proxy for https://multi.com/ set successfully" - else - echo "Proxy for https://multi.com/ set failed" - exit 1 - fi - working-directory: build/test - env: - XDG_CURRENT_DESKTOP: GNOME - - - name: Set manual proxy settings (gsettings) - run: | - gsettings set org.gnome.system.proxy mode 'manual' - gsettings set org.gnome.system.proxy.http host 'my.proxy1.com' - gsettings set org.gnome.system.proxy.http port 8001 - gsettings set org.gnome.system.proxy.https host 'my.proxy2.com' - gsettings set org.gnome.system.proxy.https port 8002 - gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '127.0.0.0/8']" - gsettings set org.gnome.system.proxy use-same-proxy false - - - name: Check manual proxy settings (gsettings) - shell: bash - run: | - out=$(./proxycli config proxy http) - echo "Proxy (http): $out" - if [ "$out" = "my.proxy1.com:8001" ]; then - echo "Proxy (http) set successfully" - else - echo "Proxy (http) set failed" - exit 1 - fi - out=$(./proxycli config proxy https) - echo "Proxy (https): $out" - if [ "$out" = "my.proxy2.com:8002" ]; then - echo "Proxy (https) set successfully" - else - echo "Proxy (https) set failed" - exit 1 - fi - out=$(./proxycli config bypass_list) - echo "Proxy bypass: $out" - if [ "$out" = "localhost,127.0.0.0/8" ]; then - echo "Proxy bypass set successfully" - else - echo "Proxy bypass set failed" - exit 1 - fi - working-directory: build/test - env: - XDG_CURRENT_DESKTOP: GNOME - - - name: Reset proxy settings (gsettings) - run: gsettings set org.gnome.system.proxy mode 'none' - - # Run env tests after gsettings since environment variables are set for all - # subsequent steps. - - name: Set proxy settings (env) - run: | - echo "http_proxy=my.proxy3.com:8003" >> $GITHUB_ENV - echo "https_proxy=my.proxy4.com:8004" >> $GITHUB_ENV - echo "no_proxy=localhost,127.0.0.0/8" >> $GITHUB_ENV - - - name: Check proxy settings (env) - shell: bash - run: | - out=$(./proxycli config proxy http) - echo "Proxy (http): $out" - if [ "$out" = "my.proxy3.com:8003" ]; then - echo "Proxy (http) set successfully" - else - echo "Proxy (http) set failed" - exit 1 - fi - out=$(./proxycli config proxy https) - echo "Proxy (https): $out" - if [ "$out" = "my.proxy4.com:8004" ]; then - echo "Proxy (https) set successfully" - else - echo "Proxy (https) set failed" - exit 1 - fi - out=$(./proxycli config bypass_list) - echo "Proxy bypass: $out" - if [ "$out" = "localhost,127.0.0.0/8" ]; then - echo "Proxy bypass set successfully" - else - echo "Proxy bypass set failed" - exit 1 - fi - working-directory: build/test - - - name: Reset proxy settings (env) - run: | - echo "http_proxy=" >> $GITHUB_ENV - echo "https_proxy=" >> $GITHUB_ENV - echo "no_proxy=" >> $GITHUB_ENV - - - name: Generate coverage report - if: always() && matrix.codecov - run: | - python3 -u -m pip install --user gcovr - python3 -m gcovr \ - --exclude-unreachable-branches \ - --gcov-ignore-parse-errors \ - --gcov-executable "${{ matrix.gcov-exec || 'gcov' }}" \ - --root . \ - --xml \ - --output coverage.xml \ - --verbose - - - name: Upload coverage report - uses: codecov/codecov-action@v2 - if: always() && matrix.codecov && env.CODECOV_TOKEN != '' - with: - token: ${{ secrets.CODECOV_TOKEN }} - flags: ${{ matrix.codecov }} - name: ${{ matrix.name }} - verbose: false - fail_ci_if_error: true - env: - CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" - - - name: Upload build errors - uses: actions/upload-artifact@v2 - if: failure() - with: - name: Build Errors - ${{ matrix.name }} - path: | - **/CMakeFiles/CMakeOutput.log - **/CMakeFiles/CMakeError.log - **/Testing/Temporary/LastTest.log - **/*.log - retention-days: 3 diff --git a/.github/workflows/win32.yaml b/.github/workflows/win32.yaml deleted file mode 100644 index 3fa968b..0000000 --- a/.github/workflows/win32.yaml +++ /dev/null @@ -1,226 +0,0 @@ -name: Build - Windows -on: [workflow_dispatch, push, pull_request] -env: - TERM: xterm-256color - -jobs: - build: - name: ${{ matrix.name }} - runs-on: ${{ matrix.runs-on }} - strategy: - fail-fast: false - matrix: - include: - - name: Build - Windows Win32 - runs-on: windows-latest - cmake-args: -A Win32 - - - name: Build - Windows Win64 - runs-on: windows-latest - - - name: Build - Windows GCC - runs-on: windows-latest - cmake-args: -G Ninja -D PROXYRES_CODE_COVERAGE=ON - compiler: gcc - cxx-compiler: g++ - codecov: windows - binary-dir: build/test - - steps: - - name: Install dependencies - run: choco install curl - - - name: Install gcc dependencies - if: matrix.compiler == 'gcc' - run: | - # strawberryperl installs incompatible libraries so remove it - choco uninstall --no-progress strawberryperl - choco install ninja --no-progress - - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Generate project - shell: bash - run: | - cmake -S . -B build ${{ matrix.cmake-args }} \ - -D CMAKE_BUILD_TYPE=RelWithDebInfo \ - -D CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded \ - -D BUILD_SHARED_LIBS=OFF - env: - CC: ${{ matrix.compiler }} - CXX: ${{ matrix.cxx-compiler }} - - - name: Build project - run: cmake --build build --config RelWithDebInfo - - - name: Setup node version - uses: actions/setup-node@v3 - with: - node-version: 18.18.0 - - - name: Install test dependencies - run: | - corepack enable - yarn install - working-directory: test - - - name: Run test http server - shell: bash - run: | - npx pm2 start http_server_cmd.js - sleep 15 - working-directory: test - - - name: Run test dhcp server - # Used by wpad.dhcp googletest - run: | - npx pm2 start dhcp_server_cmd.js --output dhcp_server.log - sleep 15 - working-directory: test - - - name: Run tests - run: ctest --verbose -C RelWithDebInfo - working-directory: build - env: - WPAD: true - - - name: Download pac from http server - run: curl -v http://127.0.0.1:8080/pac.js - working-directory: test - - - name: Dump proxy info - run: netsh winhttp show proxy - - - name: Set proxy settings (IE) - run: | - reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /t REG_SZ /d "http://wpad/wpad2.dat" /f - reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoDetect /t REG_DWORD /d 1 /f - reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f - reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d "http=myproxy;https=sproxy:88" /f - reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride /t REG_SZ /d "*.foo.com;" /f - - - name: Check proxy settings (IE) - shell: bash - run: | - out=$(./proxycli config auto_discover) - echo "Auto discovery: $out" - if [ "$out" = "enabled" ]; then - echo "Auto discovery set successfully" - else - echo "Auto discovery set failed" - exit 1 - fi - out=$(./proxycli config auto_config_url) - echo "Auto config url: $out" - if [ "$out" = "http://wpad/wpad2.dat" ]; then - echo "Auto config url set successfully" - else - echo "Auto config url set failed" - exit 1 - fi - out=$(./proxycli config proxy http) - echo "Proxy (http): $out" - if [ "$out" = "myproxy" ]; then - echo "Proxy (http) set successfully" - else - echo "Proxy (http) set failed" - exit 1 - fi - out=$(./proxycli config proxy https) - echo "Proxy (https): $out" - if [ "$out" = "sproxy:88" ]; then - echo "Proxy (https) set successfully" - else - echo "Proxy (https) set failed" - exit 1 - fi - out=$(./proxycli config bypass_list) - echo "Proxy bypass: $out" - if [ "$out" = "*.foo.com," ]; then - echo "Proxy bypass set successfully" - else - echo "Proxy bypass set failed" - exit 1 - fi - working-directory: ${{ matrix.binary-dir || 'build/test/RelWithDebInfo' }} - - - name: Turn off proxy settings (IE) - run: | - reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /f - reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f - - - name: Set proxy auto config setting (IE) - run: | - reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /t REG_SZ /d "http://127.0.0.1:8080/pac.js" /f - - - name: Check proxy resolution (IE) - shell: bash - run: | - out=$(./proxycli resolve https://google.com/) - echo "Proxy for https://google.com/: $out" - if [ "$out" = "direct://" ]; then - echo "Proxy for https://google.com/ set successfully" - else - echo "Proxy for https://google.com/ set failed" - exit 1 - fi - out=$(./proxycli resolve https://simple.com/) - echo "Proxy for https://simple.com/: $out" - if [ "$out" = "http://no-such-proxy:80" ]; then - echo "Proxy for https://simple.com/ set successfully" - else - echo "Proxy for https://simple.com/ set failed" - exit 1 - fi - out=$(./proxycli resolve https://multi.com/) - echo "Proxy for https://multi.com/: $out" - if [ "$out" = "https://some-such-proxy:443,https://any-such-proxy:41" ]; then - echo "Proxy for https://multi.com/ set successfully" - else - echo "Proxy for https://multi.com/ set failed" - exit 1 - fi - working-directory: ${{ matrix.binary-dir || 'build/test/RelWithDebInfo' }} - - - name: Reset proxy settings (IE) - run: | - reg delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /f - reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f - - - name: Generate coverage report - shell: bash - if: always() && matrix.codecov - run: | - python3 -u -m pip install --user gcovr - python3 -m gcovr \ - --exclude-unreachable-branches \ - --gcov-ignore-parse-errors \ - --root . \ - --xml \ - --output coverage.xml \ - --verbose - - - name: Upload coverage report - uses: codecov/codecov-action@v2 - if: always() && matrix.codecov && env.CODECOV_TOKEN != '' - with: - token: ${{ secrets.CODECOV_TOKEN }} - flags: ${{ matrix.codecov }} - name: ${{ matrix.name }} - verbose: false - fail_ci_if_error: true - env: - CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" - - - name: Upload build errors - uses: actions/upload-artifact@v2 - if: failure() - with: - name: Build Errors - ${{ matrix.name }} - path: | - **/CMakeFiles/CMakeOutput.log - **/CMakeFiles/CMakeError.log - **/Testing/Temporary/LastTest.log - **/*.log - retention-days: 3 diff --git a/.github/workflows/winrt.yaml b/.github/workflows/winrt.yaml deleted file mode 100644 index 6afee31..0000000 --- a/.github/workflows/winrt.yaml +++ /dev/null @@ -1,45 +0,0 @@ -name: Build - Windows Store -on: [workflow_dispatch, push, pull_request] -env: - TERM: xterm-256color - -jobs: - build: - name: ${{ matrix.name }} - runs-on: ${{ matrix.runs-on }} - strategy: - fail-fast: false - matrix: - include: - - name: Build - Windows Store - runs-on: windows-latest - cmake-args: -D CMAKE_SYSTEM_NAME=WindowsStore -D CMAKE_SYSTEM_VERSION=10.0 - - steps: - - name: Install dependencies - run: choco install curl - - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Generate project - shell: bash - run: | - cmake -S . -B build ${{ matrix.cmake-args }} \ - -D CMAKE_BUILD_TYPE=RelWithDebInfo \ - -D BUILD_SHARED_LIBS=OFF - - - name: Build project - run: cmake --build build --config RelWithDebInfo - - - name: Upload build errors - uses: actions/upload-artifact@v2 - if: failure() - with: - name: Build Errors - ${{ matrix.name }} - path: | - **/CMakeFiles/CMakeOutput.log - **/CMakeFiles/CMakeError.log - **/Testing/Temporary/LastTest.log - **/*.log - retention-days: 3