diff --git a/Services/RequestServer/CMakeLists.txt b/Services/RequestServer/CMakeLists.txt index b65c42f5101..59d862fed7d 100644 --- a/Services/RequestServer/CMakeLists.txt +++ b/Services/RequestServer/CMakeLists.txt @@ -44,3 +44,7 @@ if (HAIKU) # Haiku has networking related functions in the network library target_link_libraries(RequestServer PRIVATE network) endif() +if (ANDROID) + # We need s_ladybird_resource_root from LibWebView + target_link_libraries(requestserverservice PUBLIC LibWebView) +endif() diff --git a/UI/Android/src/main/cpp/RequestServerService.cpp b/UI/Android/src/main/cpp/RequestServerService.cpp index ed036ad07ac..7cbcf1c466b 100644 --- a/UI/Android/src/main/cpp/RequestServerService.cpp +++ b/UI/Android/src/main/cpp/RequestServerService.cpp @@ -27,7 +27,7 @@ extern ByteString g_default_certificate_path; ErrorOr service_main(int ipc_socket) { - RequestServer::g_default_certificate_path = ByteString::formatted("{}/res/ladybird/cacert.pem", WebView::s_ladybird_resource_root); + RequestServer::g_default_certificate_path = ByteString::formatted("{}/cacert.pem", WebView::s_ladybird_resource_root); Core::EventLoop event_loop; diff --git a/UI/Android/src/main/java/org/serenityos/ladybird/LadybirdActivity.kt b/UI/Android/src/main/java/org/serenityos/ladybird/LadybirdActivity.kt index 1286be37a74..48892475b86 100644 --- a/UI/Android/src/main/java/org/serenityos/ladybird/LadybirdActivity.kt +++ b/UI/Android/src/main/java/org/serenityos/ladybird/LadybirdActivity.kt @@ -17,7 +17,12 @@ import java.io.BufferedInputStream import java.io.BufferedOutputStream import java.io.File import java.io.FileOutputStream +import java.nio.file.Files import java.util.zip.ZipFile +import kotlin.io.path.Path +import kotlin.io.path.inputStream +import kotlin.io.path.isDirectory +import kotlin.io.path.outputStream class LadybirdActivity : AppCompatActivity() { @@ -51,6 +56,19 @@ class LadybirdActivity : AppCompatActivity() { } } } + + // curl has some issues with the Android's way of storing certificates. + // We need to do this in order to make curl happy. + val certMain = File("$resourceDir/cacert.pem") + certMain.outputStream().use { output -> + Files.walk(Path("/system/etc/security/cacerts")).forEach { certPath -> + if (!certPath.isDirectory()) { + certPath.inputStream().use { input -> + input.copyTo(output) + } + } + } + } } val userDir = applicationContext.getExternalFilesDir(null)!!.absolutePath; initNativeCode(resourceDir, "Ladybird", timerService, userDir)