mirror of
https://github.com/woodchen-ink/webp_server_go.git
synced 2025-07-18 13:42:02 +08:00
Unify ENV (#289)
This commit is contained in:
parent
543af2415f
commit
4f39a1c0b4
@ -7,5 +7,8 @@
|
|||||||
"ALLOWED_TYPES": ["jpg","png","jpeg","bmp","gif","svg","heic"],
|
"ALLOWED_TYPES": ["jpg","png","jpeg","bmp","gif","svg","heic"],
|
||||||
"IMG_MAP": {},
|
"IMG_MAP": {},
|
||||||
"ENABLE_AVIF": false,
|
"ENABLE_AVIF": false,
|
||||||
"ENABLE_EXTRA_PARAMS": false
|
"ENABLE_EXTRA_PARAMS": false,
|
||||||
|
"READ_BUFFER_SIZE": 4096,
|
||||||
|
"CONCURRENCY": 262144,
|
||||||
|
"DISABLE_KEEPALIVE": false
|
||||||
}
|
}
|
||||||
|
@ -28,27 +28,13 @@ const (
|
|||||||
"IMG_PATH": "./pics",
|
"IMG_PATH": "./pics",
|
||||||
"EXHAUST_PATH": "./exhaust",
|
"EXHAUST_PATH": "./exhaust",
|
||||||
"IMG_MAP": {},
|
"IMG_MAP": {},
|
||||||
"ALLOWED_TYPES": ["jpg","png","jpeg","bmp","svg","nef"],
|
"ALLOWED_TYPES": ["jpg","png","jpeg","bmp","svg","heic","nef"],
|
||||||
"ENABLE_AVIF": false,
|
"ENABLE_AVIF": false,
|
||||||
"ENABLE_EXTRA_PARAMS": false
|
"ENABLE_EXTRA_PARAMS": false
|
||||||
|
"READ_BUFFER_SIZE": 4096,
|
||||||
|
"CONCURRENCY": 262144,
|
||||||
|
"DISABLE_KEEPALIVE": false
|
||||||
}`
|
}`
|
||||||
|
|
||||||
SampleSystemd = `
|
|
||||||
[Unit]
|
|
||||||
Description=WebP Server Go
|
|
||||||
Documentation=https://github.com/webp-sh/webp_server_go
|
|
||||||
After=nginx.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
StandardError=journal
|
|
||||||
WorkingDirectory=/opt/webps
|
|
||||||
ExecStart=/opt/webps/webp-server --config /opt/webps/config.json
|
|
||||||
Restart=always
|
|
||||||
RestartSec=3s
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target`
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -83,6 +69,9 @@ type WebpConfig struct {
|
|||||||
ExhaustPath string `json:"EXHAUST_PATH"`
|
ExhaustPath string `json:"EXHAUST_PATH"`
|
||||||
EnableAVIF bool `json:"ENABLE_AVIF"`
|
EnableAVIF bool `json:"ENABLE_AVIF"`
|
||||||
EnableExtraParams bool `json:"ENABLE_EXTRA_PARAMS"`
|
EnableExtraParams bool `json:"ENABLE_EXTRA_PARAMS"`
|
||||||
|
ReadBufferSize int `json:"READ_BUFFER_SIZE"`
|
||||||
|
Concurrency int `json:"CONCURRENCY"`
|
||||||
|
DisableKeepalive bool `json:"DISABLE_KEEPALIVE"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewWebPConfig() *WebpConfig {
|
func NewWebPConfig() *WebpConfig {
|
||||||
@ -96,6 +85,9 @@ func NewWebPConfig() *WebpConfig {
|
|||||||
ExhaustPath: "./exhaust",
|
ExhaustPath: "./exhaust",
|
||||||
EnableAVIF: false,
|
EnableAVIF: false,
|
||||||
EnableExtraParams: false,
|
EnableExtraParams: false,
|
||||||
|
ReadBufferSize: 4096,
|
||||||
|
Concurrency: 262144,
|
||||||
|
DisableKeepalive: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,7 +96,6 @@ func init() {
|
|||||||
flag.BoolVar(&Prefetch, "prefetch", false, "Prefetch and convert image to WebP format.")
|
flag.BoolVar(&Prefetch, "prefetch", false, "Prefetch and convert image to WebP format.")
|
||||||
flag.IntVar(&Jobs, "jobs", runtime.NumCPU(), "Prefetch thread, default is all.")
|
flag.IntVar(&Jobs, "jobs", runtime.NumCPU(), "Prefetch thread, default is all.")
|
||||||
flag.BoolVar(&DumpConfig, "dump-config", false, "Print sample config.json.")
|
flag.BoolVar(&DumpConfig, "dump-config", false, "Print sample config.json.")
|
||||||
flag.BoolVar(&DumpSystemd, "dump-systemd", false, "Print sample systemd service file.")
|
|
||||||
flag.BoolVar(&ShowVersion, "V", false, "Show version information.")
|
flag.BoolVar(&ShowVersion, "V", false, "Show version information.")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,6 +157,32 @@ func LoadConfig() {
|
|||||||
if os.Getenv("WEBP_IMG_MAP") != "" {
|
if os.Getenv("WEBP_IMG_MAP") != "" {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
if os.Getenv("WEBP_READ_BUFFER_SIZE") != "" {
|
||||||
|
readBufferSize, err := strconv.Atoi(os.Getenv("WEBP_READ_BUFFER_SIZE"))
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf("WEBP_READ_BUFFER_SIZE is not a valid integer, using value in config.json %d", Config.ReadBufferSize)
|
||||||
|
} else {
|
||||||
|
Config.ReadBufferSize = readBufferSize
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if os.Getenv("WEBP_CONCURRENCY") != "" {
|
||||||
|
concurrency, err := strconv.Atoi(os.Getenv("WEBP_CONCURRENCY"))
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf("WEBP_CONCURRENCY is not a valid integer, using value in config.json %d", Config.Concurrency)
|
||||||
|
} else {
|
||||||
|
Config.Concurrency = concurrency
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if os.Getenv("WEBP_DISABLE_KEEPALIVE") != "" {
|
||||||
|
disableKeepalive := os.Getenv("WEBP_DISABLE_KEEPALIVE")
|
||||||
|
if disableKeepalive == "true" {
|
||||||
|
Config.DisableKeepalive = true
|
||||||
|
} else if disableKeepalive == "false" {
|
||||||
|
Config.DisableKeepalive = false
|
||||||
|
} else {
|
||||||
|
log.Warnf("WEBP_DISABLE_KEEPALIVE is not a valid boolean, using value in config.json %t", Config.DisableKeepalive)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
log.Debugln("Config init complete")
|
log.Debugln("Config init complete")
|
||||||
log.Debugln("Config", Config)
|
log.Debugln("Config", Config)
|
||||||
|
@ -191,11 +191,3 @@ func HashFile(filepath string) string {
|
|||||||
buf, _ := os.ReadFile(filepath)
|
buf, _ := os.ReadFile(filepath)
|
||||||
return fmt.Sprintf("%x", xxhash.Sum64(buf))
|
return fmt.Sprintf("%x", xxhash.Sum64(buf))
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetEnv(key string, defaultVal ...string) string {
|
|
||||||
value := os.Getenv(key)
|
|
||||||
if value == "" && len(defaultVal) > 0 {
|
|
||||||
return defaultVal[0]
|
|
||||||
}
|
|
||||||
return value
|
|
||||||
}
|
|
||||||
|
@ -5,11 +5,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
|
||||||
"webp_server_go/config"
|
"webp_server_go/config"
|
||||||
"webp_server_go/encoder"
|
"webp_server_go/encoder"
|
||||||
"webp_server_go/handler"
|
"webp_server_go/handler"
|
||||||
"webp_server_go/helper"
|
|
||||||
|
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"github.com/gofiber/fiber/v2/middleware/etag"
|
"github.com/gofiber/fiber/v2/middleware/etag"
|
||||||
@ -18,24 +16,15 @@ import (
|
|||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
|
||||||
ReadBufferSizeStr = helper.GetEnv("READ_BUFFER_SIZE", "4096") // Default: 4096
|
|
||||||
ReadBufferSize, _ = strconv.Atoi(ReadBufferSizeStr)
|
|
||||||
ConcurrencyStr = helper.GetEnv("CONCURRENCY", "262144") // Default: 256 * 1024
|
|
||||||
Concurrency, _ = strconv.Atoi(ConcurrencyStr)
|
|
||||||
DisableKeepaliveStr = helper.GetEnv("DISABLE_KEEPALIVE", "false") // Default: false
|
|
||||||
DisableKeepalive, _ = strconv.ParseBool(DisableKeepaliveStr)
|
|
||||||
)
|
|
||||||
|
|
||||||
// https://docs.gofiber.io/api/fiber
|
// https://docs.gofiber.io/api/fiber
|
||||||
var app = fiber.New(fiber.Config{
|
var app = fiber.New(fiber.Config{
|
||||||
ServerHeader: "WebP Server Go",
|
ServerHeader: "WebP Server Go",
|
||||||
AppName: "WebP Server Go",
|
AppName: "WebP Server Go",
|
||||||
DisableStartupMessage: true,
|
DisableStartupMessage: true,
|
||||||
ProxyHeader: "X-Real-IP",
|
ProxyHeader: "X-Real-IP",
|
||||||
ReadBufferSize: ReadBufferSize, // per-connection buffer size for requests' reading. This also limits the maximum header size. Increase this buffer if your clients send multi-KB RequestURIs and/or multi-KB headers (for example, BIG cookies).
|
ReadBufferSize: config.Config.ReadBufferSize, // per-connection buffer size for requests' reading. This also limits the maximum header size. Increase this buffer if your clients send multi-KB RequestURIs and/or multi-KB headers (for example, BIG cookies).
|
||||||
Concurrency: Concurrency, // Maximum number of concurrent connections.
|
Concurrency: config.Config.Concurrency, // Maximum number of concurrent connections.
|
||||||
DisableKeepalive: DisableKeepalive, // Disable keep-alive connections, the server will close incoming connections after sending the first response to the client
|
DisableKeepalive: config.Config.DisableKeepalive, // Disable keep-alive connections, the server will close incoming connections after sending the first response to the client
|
||||||
})
|
})
|
||||||
|
|
||||||
func setupLogger() {
|
func setupLogger() {
|
||||||
@ -78,10 +67,6 @@ func init() {
|
|||||||
fmt.Println(config.SampleConfig)
|
fmt.Println(config.SampleConfig)
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
if config.DumpSystemd {
|
|
||||||
fmt.Println(config.SampleSystemd)
|
|
||||||
os.Exit(0)
|
|
||||||
}
|
|
||||||
if config.ShowVersion {
|
if config.ShowVersion {
|
||||||
fmt.Printf("\n %c[1;32m%s%c[0m\n\n", 0x1B, banner+"", 0x1B)
|
fmt.Printf("\n %c[1;32m%s%c[0m\n\n", 0x1B, banner+"", 0x1B)
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user