From 40456fc4e02d8a7c614d9950ee8d2c58e9d75e35 Mon Sep 17 00:00:00 2001
From: Feng Yu <abcfy2@users.noreply.github.com>
Date: Wed, 23 Mar 2022 15:32:40 +0800
Subject: [PATCH] Fix https certificates issue in AppImage and static linked.
 (#352)

* update github action version

* Fix https certificates issue
---
 .github/workflows/build_and_release.yml | 12 ++++++------
 .github/workflows/build_appimage.sh     | 21 +++++++++++++++++++++
 .github/workflows/cross_build.sh        |  2 +-
 3 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/.github/workflows/build_and_release.yml b/.github/workflows/build_and_release.yml
index d82a965db09c..87454ef34392 100644
--- a/.github/workflows/build_and_release.yml
+++ b/.github/workflows/build_and_release.yml
@@ -17,8 +17,8 @@ jobs:
     container: "ubuntu:16.04"
     steps:
       - name: Checkout
-        uses: actions/checkout@v2
-      - uses: actions/cache@v2
+        uses: actions/checkout@v3
+      - uses: actions/cache@v3
         with:
           path: |
             /usr/src/
@@ -28,7 +28,7 @@ jobs:
             appimage-build-dependencies-cache-
       - name: Build AppImage
         run: .github/workflows/build_appimage.sh
-      - uses: actions/upload-artifact@v2
+      - uses: actions/upload-artifact@v3
         with:
           name: qBittorrent-Enhanced-Edition-x86_64.AppImage
           path: ".github/workflows/qBittorrent-Enhanced-Edition*.AppImage*"
@@ -63,8 +63,8 @@ jobs:
           - x86_64-linux-musl
     steps:
       - name: Checkout
-        uses: actions/checkout@v2
-      - uses: actions/cache@v2
+        uses: actions/checkout@v3
+      - uses: actions/cache@v3
         with:
           path: |
             /usr/src/
@@ -76,7 +76,7 @@ jobs:
         env:
           CROSS_HOST: "${{ matrix.cross_host }}"
         run: .github/workflows/cross_build.sh
-      - uses: actions/upload-artifact@v2
+      - uses: actions/upload-artifact@v3
         with:
           name: qbittorrent-enhanced-nox_${{ matrix.cross_host }}_static
           path: |
diff --git a/.github/workflows/build_appimage.sh b/.github/workflows/build_appimage.sh
index e3b304355cc1..1a21ba0124ec 100755
--- a/.github/workflows/build_appimage.sh
+++ b/.github/workflows/build_appimage.sh
@@ -322,6 +322,27 @@ export XDG_DATA_DIRS="\${this_dir}/usr/share:\${XDG_DATA_DIRS}:/usr/share:/usr/l
 export QT_QPA_PLATFORMTHEMES=gtk2
 export QT_STYLE_OVERRIDE=qt6gtk2
 
+# Find the system certificates location
+# https://gitlab.com/probono/platformissues/blob/master/README.md#certificates
+possible_locations=(
+  "/etc/ssl/certs/ca-certificates.crt"                # Debian/Ubuntu/Gentoo etc.
+  "/etc/pki/tls/certs/ca-bundle.crt"                  # Fedora/RHEL
+  "/etc/ssl/ca-bundle.pem"                            # OpenSUSE
+  "/etc/pki/tls/cacert.pem"                           # OpenELEC
+  "/etc/ssl/certs"                                    # SLES10/SLES11, https://golang.org/issue/12139
+  "/usr/share/ca-certs/.prebuilt-store/"              # Clear Linux OS; https://github.com/knapsu/plex-media-player-appimage/issues/17#issuecomment-437710032
+  "/system/etc/security/cacerts"                      # Android
+  "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" # CentOS/RHEL 7
+  "/etc/ssl/cert.pem"                                 # Alpine Linux
+)
+
+for location in "\${possible_locations[@]}"; do
+  if [ -r "\${location}" ]; then
+    export SSL_CERT_FILE="\${location}"
+    break
+  fi
+done
+
 exec "\${this_dir}/usr/bin/qbittorrent" "\$@"
 EOF
 chmod 755 -v /tmp/qbee/AppDir/AppRun
diff --git a/.github/workflows/cross_build.sh b/.github/workflows/cross_build.sh
index 6ab0259ff926..c8f2940fe339 100755
--- a/.github/workflows/cross_build.sh
+++ b/.github/workflows/cross_build.sh
@@ -252,7 +252,7 @@ prepare_ssl() {
     touch "/usr/src/openssl-${openssl_ver}/.unpack_ok"
   fi
   cd "/usr/src/openssl-${openssl_ver}/"
-  ./Configure -static --cross-compile-prefix="${CROSS_HOST}-" --prefix="${CROSS_PREFIX}" "${OPENSSL_COMPILER}"
+  ./Configure -static --openssldir=/etc/ssl --cross-compile-prefix="${CROSS_HOST}-" --prefix="${CROSS_PREFIX}" "${OPENSSL_COMPILER}"
   make -j$(nproc)
   make install_sw
   if [ -f "${CROSS_PREFIX}/lib64/libssl.a" ]; then