fanlin

module
v1.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2023 License: MIT

README

fanlin

MIT License

English | 日本語

abstract

fanlin is image proxy server in native Go language.

Support

OS
  • Linux (x86 and amd64)
  • macOS
Go Versions
  • go 1.19.x
Image Format
  • JPEG
  • PNG
  • GIF
  • WebP

Cross compile for amd64 Linux

go 1.19
$ GOOS=linux GOARCH=amd64 go build github.com/livesense-inc/fanlin/cmd/fanlin

testing

$ go test -cover ./...

configure

On Unix, Linux and macOS, fanlin programs read startup options from the following files, in the specified order(top files are read first, and precedence).

/etc/fanlin.json
/etc/fanlin.cnf
/etc/fanlin.conf
/usr/local/etc/fanlin.json
/usr/local/etc/fanlin.cnf
/usr/local/etc/fanlin.conf
./fanlin.json
./fanlin.cnf
./fanlin.conf
./conf.json
~/.fanlin.json
~/.fanlin.cnf
example
fanlin.json
{
    "port": 8080,
    "max_width": 1000,
    "max_height": 1000,
    "404_img_path": "/path/to/404/image",
    "access_log_path": "/path/to/access/log",
    "error_log_path": "/path/to/error/log",
    "use_server_timing": true,
    "providers": [
        {
            "alias/0" : {
                "type" : "web",
                "src" : "http://aaa.com/bbb",
                "priority" : 10
            }
        },
        {
            "alias/1" : {
                "type" : "web",
                "src" : "https://ccc.com",
                "priority" : 20
            }
        },
        {
            "alias/3" : {
                "type" : "s3",
                "src" : "s3://bucket/path",
                "region" : "ap-northeast-1",
                "priority" : 30,
                "use_env_credential": true
            }
        }
    ]
}

Controling where logs are output to

You can output each log to a file by specifying the path in access_log_path/error_log_path/debug_log_path. If you want to output logs to standard output, specify /dev/stdout.

Using WebP and Limitations

You can get WebP image format with GET parameter webp=true requeest.

Examples:

fanlin returns lossless WebP image in following conditions.

  • GET parameter quality=100 AND source image format is PNG / GIF / WebP
Limitations
  • Do not support animations

Server-Timing Support

Add "use_server_timing": true at Global parameters in config file. You will get Server-Timing output. Be careful, your system architecture or perfomance will be exposed to enduser with Server-Timing output.

fanlin outputs following timings:

  • f_load: The time for load source image.
  • f_decode: The time for decode and format source image.
  • f_encode: The time for encode to final image format.

LICENSE

Written in Go and licensed under the MIT License, it can also be used as a library.

Directories

Path Synopsis
cmd
lib

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL