mirror of
https://github.com/streamyfin/streamyfin.git
synced 2025-08-20 18:37:18 +02:00
[android] Trust android local CA store for self signed certificates
This commit is contained in:
9
plugins/network_security_config.xml
Normal file
9
plugins/network_security_config.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config>
|
||||
<base-config cleartextTrafficPermitted="false">
|
||||
<trust-anchors>
|
||||
<certificates src="system" />
|
||||
<certificates src="user" />
|
||||
</trust-anchors>
|
||||
</base-config>
|
||||
</network-security-config>
|
||||
44
plugins/withTrustLocalCerts.js
Normal file
44
plugins/withTrustLocalCerts.js
Normal file
@@ -0,0 +1,44 @@
|
||||
const { AndroidConfig, withAndroidManifest } = require("@expo/config-plugins");
|
||||
const { Paths } = require("@expo/config-plugins/build/android");
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
const fsPromises = fs.promises;
|
||||
|
||||
const { getMainApplicationOrThrow } = AndroidConfig.Manifest;
|
||||
|
||||
const withTrustLocalCerts = (config) => {
|
||||
return withAndroidManifest(config, async (config) => {
|
||||
config.modResults = await setCustomConfigAsync(config, config.modResults);
|
||||
return config;
|
||||
});
|
||||
};
|
||||
|
||||
async function setCustomConfigAsync(config, androidManifest) {
|
||||
const src_file_path = path.join(__dirname, "network_security_config.xml");
|
||||
const res_file_path = path.join(
|
||||
await Paths.getResourceFolderAsync(config.modRequest.projectRoot),
|
||||
"xml",
|
||||
"network_security_config.xml"
|
||||
);
|
||||
|
||||
const res_dir = path.resolve(res_file_path, "..");
|
||||
|
||||
if (!fs.existsSync(res_dir)) {
|
||||
await fsPromises.mkdir(res_dir);
|
||||
}
|
||||
|
||||
try {
|
||||
await fsPromises.copyFile(src_file_path, res_file_path);
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`Failed to copy network security config file from ${src_file_path} to ${res_file_path}: ${e.message}`
|
||||
);
|
||||
}
|
||||
const mainApplication = getMainApplicationOrThrow(androidManifest);
|
||||
mainApplication.$["android:networkSecurityConfig"] =
|
||||
"@xml/network_security_config";
|
||||
|
||||
return androidManifest;
|
||||
}
|
||||
|
||||
module.exports = withTrustLocalCerts;
|
||||
Reference in New Issue
Block a user