aboutsummaryrefslogtreecommitdiff
path: root/src/Routes/Images.c
diff options
context:
space:
mode:
authorfrosty <gabriel@bwaaa.monster>2026-02-24 12:01:02 -0500
committerfrosty <gabriel@bwaaa.monster>2026-02-24 12:01:02 -0500
commite116a5d1f558c14160afebbaeac969a53af6a089 (patch)
tree17d3ef4328e0456094b09a48c7b2b09d72545983 /src/Routes/Images.c
parent89c011d421f86e0b6a3414ea012bb198167f295a (diff)
downloadomnisearch-e116a5d1f558c14160afebbaeac969a53af6a089.tar.gz
add image proxying
Diffstat (limited to 'src/Routes/Images.c')
-rw-r--r--src/Routes/Images.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/Routes/Images.c b/src/Routes/Images.c
index f10554e..a4770c5 100644
--- a/src/Routes/Images.c
+++ b/src/Routes/Images.c
@@ -231,8 +231,23 @@ int images_handler(UrlParams *params) {
xmlChar *rurl = tit_node ? xmlGetProp(tit_node, (const xmlChar *)"href") : NULL;
if (iurl && strlen((char *)iurl) > 0) {
+ char *proxy_url = NULL;
+ CURL *esc_curl = curl_easy_init();
+ if (esc_curl) {
+ char *encoded = curl_easy_escape(esc_curl, (char *)iurl, 0);
+ if (encoded) {
+ size_t proxy_len = strlen("/proxy?url=") + strlen(encoded) + 1;
+ proxy_url = malloc(proxy_len);
+ if (proxy_url) {
+ snprintf(proxy_url, proxy_len, "/proxy?url=%s", encoded);
+ }
+ curl_free(encoded);
+ }
+ curl_easy_cleanup(esc_curl);
+ }
+
image_matrix[image_count] = malloc(sizeof(char *) * 4);
- image_matrix[image_count][0] = strdup((char *)iurl);
+ image_matrix[image_count][0] = proxy_url ? proxy_url : strdup((char *)iurl);
image_matrix[image_count][1] = strdup(title ? (char *)title : "Image");
image_matrix[image_count][2] = strdup(rurl ? (char *)rurl : "#");
image_matrix[image_count][3] = strdup(full_url ? (char *)full_url : "#");