improve (C deps): improve interaction with C code + various fix

This commit is contained in:
Mickael Kerjean 2019-04-30 03:02:45 +00:00
parent ca5198ac0b
commit b3dc3f04b3
6 changed files with 38 additions and 37 deletions

View file

@ -151,6 +151,7 @@ func FileCat(ctx App, res http.ResponseWriter, req *http.Request) {
SendErrorResult(res, err)
return
}
header.Set("Content-Type", GetMimeType(req.URL.Query().Get("path")))
if req.Header.Get("range") != "" {
needToCreateCache = true
}
@ -234,9 +235,6 @@ func FileCat(ctx App, res http.ResponseWriter, req *http.Request) {
if contentLength != -1 {
header.Set("Content-Length", fmt.Sprintf("%d", contentLength))
}
if header.Get("Content-Type") == "" {
header.Set("Content-Type", GetMimeType(req.URL.Query().Get("path")))
}
if header.Get("Content-Security-Policy") == "" {
header.Set("Content-Security-Policy", "default-src 'none'; img-src 'self'; style-src 'unsafe-inline'")
}

View file

@ -44,25 +44,20 @@ ar x /usr/lib/x86_64-linux-gnu/libjpeg.a
ar x /usr/lib/x86_64-linux-gnu/libgif.a
ar x /usr/lib/x86_64-linux-gnu/libdl.a
ar x /usr/lib/x86_64-linux-gnu/libicui18n.a
ar x /usr/lib/x86_64-linux-gnu/libthread.a
ar x /usr/lib/x86_64-linux-gnu/libgsf-1.a
ar x /usr/lib/x86_64-linux-gnu/libicuuc.a
ar x /usr/lib/x86_64-linux-gnu/libicudata.a
ar x /usr/lib/x86_64-linux-gnu/liblzma.a
ar x /usr/lib/x86_64-linux-gnu/libfreetype.a
ar x /usr/lib/x86_64-linux-gnu/liblqr-1.a
ar x /usr/lib/x86_64-linux-gnu/libfftw3.a
ar x /usr/lib/x86_64-linux-gnu/libfontconfig.a
ar x /usr/lib/x86_64-linux-gnu/libXext.a
ar x /usr/lib/x86_64-linux-gnu/libSM.a
ar x /usr/lib/x86_64-linux-gnu/liblXt.a
ar x /usr/lib/x86_64-linux-gnu/libX11.a
ar x /usr/lib/x86_64-linux-gnu/libgomp.a
ar x /usr/lib/x86_64-linux-gnu/liborc-0.4.a
ar x /usr/lib/x86_64-linux-gnu/libltdl.a
ar x /usr/lib/x86_64-linux-gnu/librt.a
ar x /usr/lib/x86_64-linux-gnu/libharfbuzz.a
ar x /usr/lib/x86_64-linux-gnu/libgraphite2.a
ar x /usr/lib/x86_64-linux-gnu/libexpat.a
ar x /usr/lib/x86_64-linux-gnu/libgio-2.0.a
ar x /usr/lib/x86_64-linux-gnu/libpng16.a
@ -70,18 +65,9 @@ ar x /usr/lib/x86_64-linux-gnu/libpixman-1.a
ar x /usr/lib/x86_64-linux-gnu/libxcb.a
ar x /usr/lib/x86_64-linux-gnu/libjbig.a
ar x /usr/lib/x86_64-linux-gnu/libexif.a
ar x /usr/lib/x86_64-linux-gnu/libxcb-shm
ar x /usr/lib/x86_64-linux-gnu/libxcb-render
ar x /usr/lib/x86_64-linux-gnu/libXrender
ar x /usr/lib/x86_64-linux-gnu/libpcre.a
ar x /usr/lib/x86_64-linux-gnu/libhdf5.a
ar x /usr/lib/x86_64-linux-gnu/libresolv
ar x /usr/lib/x86_64-linux-gnu/libXau
ar x /usr/lib/x86_64-linux-gnu/libXdmcp
ar x /usr/lib/x86_64-linux-gnu/libtiff.a
ar x /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.a
ar x /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.a
ar x /usr/lib/x86_64-linux-gnu/libIlmThread.a
ar x /usr/lib/x86_64-linux-gnu/libpoppler.a
ar rcs libresize.a *.o

View file

@ -2,7 +2,7 @@
# This script is run like this:
# docker run --name debian -ti -v /home/:/home/ debian bash
# cd /path/to/this/script
# ./create_libresize.sh
# ./create_libtranscode.sh
set -e
################################################
@ -14,7 +14,7 @@ export PATH=~/.local/bin:$PATH
################################################
# Stage 1: Get libraw and its dependencies
apt install libraw-dev
apt install -y libraw-dev
################################################
# Stage 2: Create our own library as a static build
@ -26,4 +26,4 @@ ar x /usr/lib/x86_64-linux-gnu/libraw.a
ar x /usr/lib/x86_64-linux-gnu/libjpeg.a
ar rcs libtranscode.a *.o
rm *.o *.ao
rm *.o

View file

@ -36,9 +36,12 @@ int image_resize(const char *filename, void **buf, size_t *len, int size, int cr
return err;
}
void null_log_handler (const gchar *a, GLogLevelFlags l, const gchar *m, gpointer ud){ }
void __attribute__ ((constructor)) initLibrary(void) {
VIPS_INIT("imagevips");
vips_cache_set_max(0);
g_log_set_handler( "VIPS", G_LOG_LEVEL_WARNING, null_log_handler, NULL);
}
void __attribute__ ((destructor)) cleanUpLibrary(void) {
vips_shutdown();

View file

@ -1,12 +1,13 @@
#include <stdlib.h>
#include <libraw/libraw.h>
int save_thumbnail(const char *filename, libraw_data_t *raw);
#define FALSE 0
#define TRUE !FALSE
int image_transcode_compute(const char* filename, int min_width) {
int err;
libraw_data_t *raw;
int thumbnail_working = 0;
int has_thumbnail = FALSE;
//////////////////////
// boot up libraw
@ -19,18 +20,26 @@ int image_transcode_compute(const char* filename, int min_width) {
//////////////////////
// use thumbnail if available
/*
if(libraw_unpack_thumb(raw) == 0){
thumbnail_working = 1;
has_thumbnail = TRUE;
if(raw->thumbnail.twidth > min_width && raw->thumbnail.tformat == LIBRAW_THUMBNAIL_JPEG){
return save_thumbnail(filename, raw);
err = libraw_dcraw_thumb_writer(raw, filename);
libraw_close(raw);
return err;
}
}
*/
fprintf(stdout, "HERE\n");
fflush(stdout);
//////////////////////
// transcode image
if(libraw_unpack(raw) != 0){
if(thumbnail_working == 1){
return save_thumbnail(filename, raw);
if(has_thumbnail == TRUE){
err = libraw_dcraw_thumb_writer(raw, filename);
libraw_close(raw);
return err;
}
libraw_close(raw);
return 0;
@ -42,16 +51,20 @@ int image_transcode_compute(const char* filename, int min_width) {
libraw_close(raw);
return -1;
}
if(thumbnail_working == 1){
return save_thumbnail(filename, raw);
if(has_thumbnail == TRUE){
err = libraw_dcraw_thumb_writer(raw, filename);
libraw_close(raw);
return err;
}
libraw_close(raw);
return 1;
}
if(libraw_dcraw_ppm_tiff_writer(raw, filename) != 0){
if(thumbnail_working == 1){
return save_thumbnail(filename, raw);
if(has_thumbnail == TRUE){
err = libraw_dcraw_thumb_writer(raw, filename);
libraw_close(raw);
return err;
}
libraw_close(raw);
return 1;
@ -60,10 +73,3 @@ int image_transcode_compute(const char* filename, int min_width) {
libraw_close(raw);
return 0;
}
int save_thumbnail(const char *filename, libraw_data_t *raw){
int err;
err = libraw_dcraw_thumb_writer(raw, filename);
libraw_close(raw);
return err;
}

View file

@ -0,0 +1,8 @@
#/bin/bash
set -e
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
cd "$(dirname "$0")"/deps
echo `pwd`
curl https://download.filestash.app/upload/libresize-linux-x86-64 > libresize.a
curl https://download.filestash.app/upload/libtranscode-linux-x86-64.a > libtranscode.a