Implemented support for isUrlAllowed in HttpImp.

This commit is contained in:
Koen J
2025-11-25 12:44:57 +01:00
parent 0e5a87a911
commit 396e9f9f43
2 changed files with 10 additions and 1 deletions
@@ -23,6 +23,7 @@ import java.util.UUID
class JSHttpClient : ManagedHttpClient { class JSHttpClient : ManagedHttpClient {
private val _jsClient: JSClient?; private val _jsClient: JSClient?;
private val _jsConfig: SourcePluginConfig?; private val _jsConfig: SourcePluginConfig?;
val config get() = _jsConfig
private val _auth: SourceAuth?; private val _auth: SourceAuth?;
private val _captcha: SourceCaptchaData?; private val _captcha: SourceCaptchaData?;
@@ -17,6 +17,8 @@ import com.futo.platformplayer.api.media.platforms.js.SourcePluginConfig
import com.futo.platformplayer.api.media.platforms.js.internal.JSHttpClient import com.futo.platformplayer.api.media.platforms.js.internal.JSHttpClient
import com.futo.platformplayer.engine.IV8PluginConfig import com.futo.platformplayer.engine.IV8PluginConfig
import com.futo.platformplayer.engine.V8Plugin import com.futo.platformplayer.engine.V8Plugin
import com.futo.platformplayer.engine.exceptions.ScriptException
import com.futo.platformplayer.engine.exceptions.ScriptImplementationException
import com.futo.platformplayer.engine.internal.IV8Convertable import com.futo.platformplayer.engine.internal.IV8Convertable
import com.futo.platformplayer.engine.internal.V8BindObject import com.futo.platformplayer.engine.internal.V8BindObject
import com.futo.platformplayer.logging.Logger import com.futo.platformplayer.logging.Logger
@@ -1048,13 +1050,19 @@ class PackageHttpImp : V8Package {
useBuiltInHeadersOverride: Boolean? = null, useBuiltInHeadersOverride: Boolean? = null,
timeoutMsOverride: Int? = null timeoutMsOverride: Int? = null
): Libcurl.Response { ): Libcurl.Response {
val client = _client
if (client is JSHttpClient) {
if (!(client.config?.isUrlAllowed(url) ?: false)) {
throw Exception( "Attempted to access non-whitelisted url: $url\nAdd it to your config");
}
}
val finalImpersonateTarget = impersonateTargetOverride ?: this.impersonateTarget val finalImpersonateTarget = impersonateTargetOverride ?: this.impersonateTarget
val finalUseBuiltInHeaders = useBuiltInHeadersOverride ?: this.useBuiltInHeaders val finalUseBuiltInHeaders = useBuiltInHeadersOverride ?: this.useBuiltInHeaders
val finalTimeoutMs = timeoutMsOverride ?: this.timeoutMs val finalTimeoutMs = timeoutMsOverride ?: this.timeoutMs
val uri = url.toUri() val uri = url.toUri()
val headers = hs.toMutableMap() val headers = hs.toMutableMap()
val client = _client
if (client is JSHttpClient) { if (client is JSHttpClient) {
client.applyHeaders(uri, headers, _client.isLoggedIn, true) client.applyHeaders(uri, headers, _client.isLoggedIn, true)
} }