diff --git a/vripper-core/src/main/kotlin/me/vripper/host/Host.kt b/vripper-core/src/main/kotlin/me/vripper/host/Host.kt index 9fab3a0..cf1d868 100644 --- a/vripper-core/src/main/kotlin/me/vripper/host/Host.kt +++ b/vripper-core/src/main/kotlin/me/vripper/host/Host.kt @@ -171,9 +171,9 @@ internal abstract class Host( fun fetch( url: String, context: Context, - referer: String = "https://vipergirls.to/", transformer: (ClassicHttpResponse) -> T ): T { + val referer = context.headers["Referer"] ?: "https://vipergirls.to/" val httpGet = HttpGet(url).also { it.addHeader("Referer", referer) diff --git a/vripper-core/src/main/kotlin/me/vripper/host/ImageBamHost.kt b/vripper-core/src/main/kotlin/me/vripper/host/ImageBamHost.kt index 1bb0c28..375e67b 100644 --- a/vripper-core/src/main/kotlin/me/vripper/host/ImageBamHost.kt +++ b/vripper-core/src/main/kotlin/me/vripper/host/ImageBamHost.kt @@ -23,11 +23,18 @@ internal class ImageBamHost : Host("imagebam.com", 2) { val doc = try { log.debug(String.format("Looking for xpath expression %s in %s", CONTINUE_XPATH, context.imageEntity.url)) if (XpathUtils.getAsNode(document, CONTINUE_XPATH) != null) { - val sfwCookie = BasicClientCookie("sfw_inter", "1") - sfwCookie.domain = "www.imagebam.com" - sfwCookie.path = "/" - sfwCookie.setExpiryDate(LocalDateTime.now().plusDays(3).atZone(ZoneId.systemDefault()).toInstant()) + val nsfwCookie = BasicClientCookie("nsfw_inter", "1").apply { + domain = "www.imagebam.com" + path = "/" + setExpiryDate(LocalDateTime.now().plusDays(3).atZone(ZoneId.systemDefault()).toInstant()) + } + val sfwCookie = BasicClientCookie("sfw_inter", "1").apply { + domain = "www.imagebam.com" + path = "/" + setExpiryDate(LocalDateTime.now().plusDays(3).atZone(ZoneId.systemDefault()).toInstant()) + } + context.httpContext.cookieStore.addCookie(nsfwCookie) context.httpContext.cookieStore.addCookie(sfwCookie) fetch(context.imageEntity.url, context) { HtmlUtils.clean(it.entity.content) diff --git a/vripper-core/src/main/kotlin/me/vripper/host/ViprImHost.kt b/vripper-core/src/main/kotlin/me/vripper/host/ViprImHost.kt index 80ca9c1..070a57e 100644 --- a/vripper-core/src/main/kotlin/me/vripper/host/ViprImHost.kt +++ b/vripper-core/src/main/kotlin/me/vripper/host/ViprImHost.kt @@ -35,6 +35,7 @@ internal class ViprImHost : Host("vipr.im", 15) { .map { obj: Node -> obj.textContent } .map { obj: String -> obj.trim() }.orElse(null) val imgUrl = imgNode.attributes.getNamedItem("src").textContent.trim() + context.headers["Referer"] = "https://vipr.im/" Pair(imgTitle!!, imgUrl) } catch (e: Exception) { throw HostException("Unexpected error occurred", e) diff --git a/vripper-core/src/main/kotlin/me/vripper/services/download/ImageDownloadRunnable.kt b/vripper-core/src/main/kotlin/me/vripper/services/download/ImageDownloadRunnable.kt index 50fdd7b..6e45cbd 100644 --- a/vripper-core/src/main/kotlin/me/vripper/services/download/ImageDownloadRunnable.kt +++ b/vripper-core/src/main/kotlin/me/vripper/services/download/ImageDownloadRunnable.kt @@ -49,6 +49,7 @@ internal class ImageDownloadRunnable( cookieStore = HTTPService.cookieStore } val requests = mutableListOf() + val headers = mutableMapOf() init { ApplicationProperties.VRIPPER_DIR.listDirectoryEntries() diff --git a/vripper-web/src/main/kotlin/me/vripper/web/grpc/GrpcServerAppEndpointService.kt b/vripper-web/src/main/kotlin/me/vripper/web/grpc/GrpcServerAppEndpointService.kt index 88fb2dd..348a971 100644 --- a/vripper-web/src/main/kotlin/me/vripper/web/grpc/GrpcServerAppEndpointService.kt +++ b/vripper-web/src/main/kotlin/me/vripper/web/grpc/GrpcServerAppEndpointService.kt @@ -213,13 +213,15 @@ class GrpcServerAppEndpointService : EndpointServiceGrpcKt.EndpointServiceCorout enableClipboardMonitoring = request.systemSettings.enableClipboardMonitoring, clipboardPollingRate = request.systemSettings.clipboardPollingRate, maxEventLog = request.systemSettings.maxEventLog, - ), hostSettings = request.hostSettingsMap.entries.associate { hostSettings -> + ), + hostSettings = request.hostSettingsMap.entries.associate { hostSettings -> HostName.valueOf(hostSettings.key) to hostSettings.value.settingsMap.entries.associate { HostSettingKey.valueOf( it.key ) to it.value } - }) + } + ) ) return EndpointServiceOuterClass.EmptyResponse.getDefaultInstance() }